; 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.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" }
%"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 }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%struct.M = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.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.97 = type { ptr, ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%class.anon.124 = type { ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr.76" = type { %"struct.std::__uniq_ptr_data.77" }
%"struct.std::__uniq_ptr_data.77" = type { %"class.std::__uniq_ptr_impl.78" }
%"class.std::__uniq_ptr_impl.78" = type { %"class.std::tuple.79" }
%"class.std::tuple.79" = type { %"struct.std::_Tuple_impl.80" }
%"struct.std::_Tuple_impl.80" = type { %"struct.std::_Head_base.83" }
%"struct.std::_Head_base.83" = type { ptr }
%class.anon.125 = type { ptr }
%"class.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.92" }
%class.anon.141 = type { ptr }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.84", [8 x i8] }
%"class.std::unique_ptr.84" = type { %"struct.std::__uniq_ptr_data.85" }
%"struct.std::__uniq_ptr_data.85" = type { %"class.std::__uniq_ptr_impl.86" }
%"class.std::__uniq_ptr_impl.86" = type { %"class.std::tuple.87" }
%"class.std::tuple.87" = type { %"struct.std::_Tuple_impl.88" }
%"struct.std::_Tuple_impl.88" = type { %"struct.std::_Head_base.91" }
%"struct.std::_Head_base.91" = type { ptr }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.92" }
%class.anon.142 = type { ptr }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%"struct.std::pair.143" = type <{ i32, i8, [3 x i8] }>
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.92" }
%class.anon.161 = type { i8 }
%class.U128 = type { i64, i64 }
%class.anon.162 = type { ptr, ptr, ptr }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%class.anon.163 = type { ptr, ptr, ptr, ptr }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%"struct.MIR::Constant::Data_Int" = type <{ %class.S128, i32, [4 x i8] }>
%class.S128 = type { %class.U128 }
%"struct.MIR::Constant::Data_Float" = type { double, i32 }
%"struct.MIR::Constant::Data_Bool" = type { i8 }
%class.anon.164 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%class.anon.165 = type { ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%class.anon.166 = type { ptr }
%class.anon.167 = type { ptr }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%class.anon.168 = type { i8 }
%class.anon.170 = type { ptr, ptr }
%class.anon.171 = type { i8 }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.173" = type { ptr }
%class.anon.174 = type { i8 }
%class.anon.176 = type { i8 }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%struct.TypeRepr = type { i64, i64, %"class.TypeRepr::VariantMode", %"class.std::vector.131" }
%"class.TypeRepr::VariantMode" = type { i32, %"union.TypeRepr::VariantMode::DataUnion" }
%"union.TypeRepr::VariantMode::DataUnion" = type { %"struct.TypeRepr::VariantMode::Data_Values" }
%"struct.TypeRepr::VariantMode::Data_Values" = type { %"struct.TypeRepr::FieldPath", %"class.std::vector.126" }
%"struct.TypeRepr::FieldPath" = type { i64, i64, %"class.std::vector.126" }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.TypeRepr::Field" = type { i64, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::GenericParams" = type { %"class.std::vector.24", %"class.std::vector.29", %"class.std::vector.34", %"class.std::vector.39" }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.145", [8 x i8] }
%"class.std::vector.145" = type { %"struct.std::_Vector_base.146" }
%"struct.std::_Vector_base.146" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.155" }
%"class.std::map.155" = type { %"class.std::_Rb_tree.156" }
%"class.std::_Rb_tree.156" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%struct.Reloc = type { i64, i64, %"class.std::unique_ptr.76", %"class.std::__cxx11::basic_string" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.109", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.98", %"class.std::map.104", ptr }
%"class.std::map.98" = type { %"class.std::_Rb_tree.99" }
%"class.std::_Rb_tree.99" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.104" = type { %"class.std::_Rb_tree.105" }
%"class.std::_Rb_tree.105" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE = external hidden unnamed_addr constant [28 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE = external hidden unnamed_addr constant [158 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef %6) #3 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 %struct.M, align 8
  %15 = alloca %class.TraceLog, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.97, align 8
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca %"class.HIR::Path", align 8
  %24 = alloca %"class.HIR::GenericPath", align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.124, align 8
  %27 = alloca %"class.MIR::Constant", align 8
  %28 = alloca %"class.std::unique_ptr.76", align 8
  %29 = alloca i8, align 1
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.125, align 8
  %34 = alloca %"class.std::vector.92", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.MIR::RValue", align 8
  %40 = alloca %struct.EncodedLiteralSlice, align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::Path", align 8
  %43 = alloca %"class.HIR::GenericPath", align 8
  %44 = alloca %"class.MIR::Param", align 8
  %45 = alloca %"struct.MIR::LValue", align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %"class.MIR::RValue", align 8
  %48 = alloca %"struct.MIR::RValue::Data_Tuple", align 8
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca i64, align 8
  %52 = alloca %"class.std::function", align 8
  %53 = alloca %class.anon.141, align 8
  %54 = alloca i64, align 8
  %55 = alloca i8, align 1
  %56 = alloca i64, align 8
  %57 = alloca %struct.EncodedLiteralSlice, align 8
  %58 = alloca i32, align 4
  %59 = alloca %struct.EncodedLiteralSlice, align 8
  %60 = alloca %"class.MIR::RValue", align 8
  %61 = alloca %struct.EncodedLiteralSlice, align 8
  %62 = alloca %"class.HIR::TypeRef", align 8
  %63 = alloca %"class.HIR::Path", align 8
  %64 = alloca %"class.HIR::GenericPath", align 8
  %65 = alloca %"struct.MIR::LValue", align 8
  %66 = alloca %"class.HIR::TypeRef", align 8
  %67 = alloca %"class.MIR::RValue", align 8
  %68 = alloca %"struct.MIR::RValue::Data_SizedArray", align 8
  %69 = alloca %"struct.MIR::LValue", align 8
  %70 = alloca %"class.std::vector.92", align 8
  %71 = alloca i64, align 8
  %72 = alloca i32, align 4
  %73 = alloca %"class.MIR::RValue", align 8
  %74 = alloca %struct.EncodedLiteralSlice, align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"class.HIR::Path", align 8
  %77 = alloca %"class.HIR::GenericPath", align 8
  %78 = alloca %"class.MIR::Param", align 8
  %79 = alloca %"struct.MIR::LValue", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.MIR::RValue", align 8
  %82 = alloca %"struct.MIR::RValue::Data_Array", align 8
  %83 = alloca i8, align 1
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca %"class.std::function", align 8
  %87 = alloca %class.anon.142, align 8
  %88 = alloca %"class.std::vector.92", align 8
  %89 = alloca ptr, align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"class.MIR::RValue", align 8
  %94 = alloca %struct.EncodedLiteralSlice, align 8
  %95 = alloca %"class.HIR::TypeRef", align 8
  %96 = alloca %"class.HIR::Path", align 8
  %97 = alloca %"class.HIR::GenericPath", align 8
  %98 = alloca %"class.MIR::Param", align 8
  %99 = alloca %"struct.MIR::LValue", align 8
  %100 = alloca %"class.HIR::TypeRef", align 8
  %101 = alloca %"class.MIR::RValue", align 8
  %102 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %103 = alloca %"struct.std::pair.143", align 4
  %104 = alloca i32, align 4
  %105 = alloca i8, align 1
  %106 = alloca ptr, align 8
  %107 = alloca %"class.std::vector.92", align 8
  %108 = alloca ptr, align 8
  %109 = alloca i64, align 8
  %110 = alloca ptr, align 8
  %111 = alloca ptr, align 8
  %112 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %113 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %114 = alloca ptr, align 8
  %115 = alloca %"class.MIR::RValue", align 8
  %116 = alloca %struct.EncodedLiteralSlice, align 8
  %117 = alloca %"class.HIR::TypeRef", align 8
  %118 = alloca %"class.HIR::Path", align 8
  %119 = alloca %"class.HIR::GenericPath", align 8
  %120 = alloca %"class.MIR::Param", align 8
  %121 = alloca %"struct.MIR::LValue", align 8
  %122 = alloca %"class.HIR::TypeRef", align 8
  %123 = alloca %"class.MIR::RValue", align 8
  %124 = alloca %"struct.MIR::RValue::Data_EnumVariant", align 8
  %125 = alloca i32, align 4
  %126 = alloca ptr, align 8
  %127 = alloca %"class.std::function", align 8
  %128 = alloca %class.anon.161, align 1
  %129 = alloca ptr, align 8
  %130 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %131 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %132 = alloca ptr, align 8
  %133 = alloca i32, align 4
  %134 = alloca %"class.HIR::TypeRef", align 8
  %135 = alloca i1, align 1
  %136 = alloca i1, align 1
  %137 = alloca i8, align 1
  %138 = alloca i64, align 8
  %139 = alloca %class.U128, align 8
  %140 = alloca %struct.EncodedLiteralSlice, align 8
  %141 = alloca ptr, align 8
  %142 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %143 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %144 = alloca ptr, align 8
  %145 = alloca i64, align 8
  %146 = alloca %"class.std::function", align 8
  %147 = alloca %class.anon.162, align 8
  %148 = alloca %"class.MIR::RValue", align 8
  %149 = alloca %struct.EncodedLiteralSlice, align 8
  %150 = alloca %"class.HIR::TypeRef", align 8
  %151 = alloca %"class.HIR::Path", align 8
  %152 = alloca %"struct.MIR::LValue", align 8
  %153 = alloca %"class.HIR::TypeRef", align 8
  %154 = alloca %"class.MIR::RValue", align 8
  %155 = alloca %"struct.MIR::RValue::Data_UnionVariant", align 8
  %156 = alloca %"struct.MIR::LValue", align 8
  %157 = alloca i1, align 1
  %158 = alloca ptr, align 8
  %159 = alloca %"class.std::function", align 8
  %160 = alloca %class.anon.163, align 8
  %161 = alloca i8, align 1
  %162 = alloca ptr, align 8
  %163 = alloca %"class.MIR::Constant", align 8
  %164 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %165 = alloca %"class.MIR::Constant", align 8
  %166 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %167 = alloca %"class.MIR::Constant", align 8
  %168 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %169 = alloca %"class.MIR::Constant", align 8
  %170 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %171 = alloca %"class.MIR::Constant", align 8
  %172 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %173 = alloca %"class.MIR::Constant", align 8
  %174 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %175 = alloca %"class.MIR::Constant", align 8
  %176 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %177 = alloca %"class.MIR::Constant", align 8
  %178 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %179 = alloca %"class.MIR::Constant", align 8
  %180 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %181 = alloca %"class.MIR::Constant", align 8
  %182 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %183 = alloca %"class.MIR::Constant", align 8
  %184 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %185 = alloca %"class.MIR::Constant", align 8
  %186 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %187 = alloca %"class.MIR::Constant", align 8
  %188 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %189 = alloca %"class.MIR::Constant", align 8
  %190 = alloca %"struct.MIR::Constant::Data_Float", align 8
  %191 = alloca %"class.MIR::Constant", align 8
  %192 = alloca %"struct.MIR::Constant::Data_Float", align 8
  %193 = alloca %"class.MIR::Constant", align 8
  %194 = alloca %"struct.MIR::Constant::Data_Bool", align 1
  %195 = alloca %class.U128, align 8
  %196 = alloca ptr, align 8
  %197 = alloca %"class.std::function", align 8
  %198 = alloca %class.anon.164, align 8
  %199 = alloca i8, align 1
  %200 = alloca ptr, align 8
  %201 = alloca %"class.HIR::TypeRef", align 8
  %202 = alloca %"class.HIR::TypeRef", align 8
  %203 = alloca %"class.MIR::RValue", align 8
  %204 = alloca %struct.EncodedLiteralSlice, align 8
  %205 = alloca %"class.HIR::TypeRef", align 8
  %206 = alloca %"class.HIR::Path", align 8
  %207 = alloca %"struct.MIR::LValue", align 8
  %208 = alloca %"class.HIR::TypeRef", align 8
  %209 = alloca %"class.MIR::RValue", align 8
  %210 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %211 = alloca %class.U128, align 8
  %212 = alloca %"struct.MIR::LValue", align 8
  %213 = alloca %"class.HIR::TypeRef", align 8
  %214 = alloca %"class.MIR::RValue", align 8
  %215 = alloca %"class.MIR::Constant", align 8
  %216 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %217 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %218 = alloca i8, align 1
  %219 = alloca ptr, align 8
  %220 = alloca ptr, align 8
  %221 = alloca %class.U128, align 8
  %222 = alloca %"class.std::function", align 8
  %223 = alloca %class.anon.165, align 8
  %224 = alloca ptr, align 8
  %225 = alloca %"class.MIR::Constant", align 8
  %226 = alloca %"class.std::unique_ptr.76", align 8
  %227 = alloca %"class.HIR::Path", align 8
  %228 = alloca %"class.HIR::TypeRef", align 8
  %229 = alloca ptr, align 8
  %230 = alloca i32, align 4
  %231 = alloca %"struct.MIR::LValue", align 8
  %232 = alloca %"class.HIR::TypeRef", align 8
  %233 = alloca %"class.HIR::TypeRef", align 8
  %234 = alloca %"class.MIR::RValue", align 8
  %235 = alloca %"class.MIR::Constant", align 8
  %236 = alloca %"struct.MIR::LValue", align 8
  %237 = alloca %"class.HIR::TypeRef", align 8
  %238 = alloca %"class.HIR::TypeRef", align 8
  %239 = alloca %"class.MIR::RValue", align 8
  %240 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %241 = alloca %"class.HIR::TypeRef", align 8
  %242 = alloca i1, align 1
  %243 = alloca %"struct.MIR::LValue", align 8
  %244 = alloca %"class.HIR::TypeRef", align 8
  %245 = alloca %"class.HIR::TypeRef", align 8
  %246 = alloca %"class.MIR::RValue", align 8
  %247 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %248 = alloca %"class.HIR::TypeRef", align 8
  %249 = alloca i1, align 1
  %250 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %251 = alloca %"struct.MIR::LValue", align 8
  %252 = alloca %"class.MIR::Constant", align 8
  %253 = alloca %"class.std::function", align 8
  %254 = alloca %class.anon.166, align 8
  %255 = alloca ptr, align 8
  %256 = alloca %"class.std::function", align 8
  %257 = alloca %class.anon.167, align 8
  %258 = alloca i32, align 4
  %259 = alloca %"class.MIR::Param", align 8
  %260 = alloca %"class.MIR::Constant", align 8
  %261 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %262 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %263 = alloca %"class.MIR::Constant", align 8
  %264 = alloca ptr, align 8
  %265 = alloca %"class.std::function", align 8
  %266 = alloca %class.anon.168, align 1
  %267 = alloca %"class.MIR::Param", align 8
  %268 = alloca %"class.MIR::Constant", align 8
  %269 = alloca %"class.HIR::TypeRef", align 8
  %270 = alloca i1, align 1
  %271 = alloca i1, align 1
  %272 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %273 = alloca %"class.MIR::Constant", align 8
  %274 = alloca ptr, align 8
  %275 = alloca %"class.std::function", align 8
  %276 = alloca %class.anon.170, align 8
  %277 = alloca %"class.std::function", align 8
  %278 = alloca %class.anon.171, align 1
  %279 = alloca i32, align 4
  %280 = alloca %"class.std::vector.49", align 8
  %281 = alloca ptr, align 8
  %282 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %283 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %284 = alloca i8, align 1
  %285 = alloca i8, align 1
  %286 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %287 = alloca %"class.MIR::Constant", align 8
  %288 = alloca %"class.std::vector.49", align 8
  %289 = alloca %"class.MIR::Constant", align 8
  %290 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %291 = alloca i1, align 1
  %292 = alloca i32, align 4
  %293 = alloca %"class.std::vector.49", align 8
  %294 = alloca ptr, align 8
  %295 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %296 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %297 = alloca i8, align 1
  %298 = alloca i8, align 1
  %299 = alloca %"class.MIR::Constant", align 8
  %300 = alloca %"class.std::vector.49", align 8
  %301 = alloca i32, align 4
  %302 = alloca %"class.MIR::Constant", align 8
  %303 = alloca %"class.std::__cxx11::basic_string", align 8
  %304 = alloca %"class.std::vector.49", align 8
  %305 = alloca ptr, align 8
  %306 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %307 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %308 = alloca i8, align 1
  %309 = alloca i8, align 1
  %310 = alloca %"class.MIR::RValue", align 8
  %311 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %312 = alloca %"class.MIR::Constant", align 8
  %313 = alloca %"class.std::vector.49", align 8
  %314 = alloca %"class.MIR::Constant", align 8
  %315 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %316 = alloca i1, align 1
  %317 = alloca %"struct.MIR::LValue", align 8
  %318 = alloca %"class.HIR::TypeRef", align 8
  %319 = alloca %"class.HIR::TypeRef", align 8
  %320 = alloca %"class.HIR::TypeRef", align 8
  %321 = alloca %"class.MIR::RValue", align 8
  %322 = alloca %"class.HIR::TypeRef", align 8
  %323 = alloca %"class.HIR::TypeRef", align 8
  %324 = alloca %"struct.MIR::LValue", align 8
  %325 = alloca %"class.HIR::TypeRef", align 8
  %326 = alloca %"class.MIR::RValue", align 8
  %327 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %328 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %329 = alloca %"struct.MIR::LValue", align 8
  %330 = alloca i8, align 1
  %331 = alloca ptr, align 8
  %332 = alloca ptr, align 8
  %333 = alloca %"class.std::function", align 8
  %334 = alloca %class.anon.174, align 1
  %335 = alloca %"class.std::function", align 8
  %336 = alloca %class.anon.176, align 1
  %337 = alloca %"class.MIR::Constant", align 8
  %338 = alloca %"class.std::unique_ptr.76", align 8
  %339 = alloca %"class.HIR::Path", 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 %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  store ptr %6, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #9
  call void @_ZZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathEEN1MC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14)
  call void @llvm.lifetime.start.p0(i64 40, ptr %15) #9
  %340 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %341 unwind label %351

341:                                              ; preds = %7
  %342 = zext i1 %340 to i64
  %343 = select i1 %340, ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #9
  %344 = getelementptr inbounds %class.anon.97, ptr %19, i32 0, i32 0
  store ptr %4, ptr %344, align 8, !tbaa !5
  %345 = getelementptr inbounds %class.anon.97, ptr %19, i32 0, i32 1
  store ptr %3, ptr %345, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %343, ptr noundef %18)
          to label %346 unwind label %355

346:                                              ; preds = %341
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  store i8 1, ptr %20, align 1, !tbaa !9
  br label %347

347:                                              ; preds = %3095, %346
  %348 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %349 = trunc i8 %348 to i1
  br i1 %349, label %359, label %350

350:                                              ; preds = %347
  store i32 2, ptr %21, align 4
  br label %3096

351:                                              ; preds = %7
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %16, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %17, align 4
  br label %3106

355:                                              ; preds = %341
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %16, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  br label %3106

359:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %360 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %361 unwind label %366

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

362:                                              ; preds = %3090, %361
  %363 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %364 = trunc i8 %363 to i1
  br i1 %364, label %370, label %365

365:                                              ; preds = %362
  store i32 5, ptr %21, align 4
  br label %3091

366:                                              ; preds = %429, %424, %422, %420, %418, %416, %414, %411, %408, %385, %370, %359
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %16, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %17, align 4
  br label %3093

370:                                              ; preds = %362
  %371 = load ptr, ptr %22, align 8, !tbaa !5
  %372 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %371)
          to label %373 unwind label %366

373:                                              ; preds = %370
  switch i32 %372, label %375 [
    i32 0, label %374
    i32 10, label %442
    i32 8, label %592
    i32 4, label %865
    i32 3, label %1654
    i32 12, label %1997
    i32 11, label %2149
    i32 14, label %3001
  ]

374:                                              ; preds = %373
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 189, ptr noundef @__PRETTY_FUNCTION__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE) #10
  unreachable

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %376 unwind label %387

376:                                              ; preds = %375
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %23, ptr noundef %24)
          to label %377 unwind label %391

377:                                              ; preds = %376
  %378 = invoke noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %23)
          to label %379 unwind label %395

379:                                              ; preds = %377
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #9
  br i1 %378, label %380, label %407

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380
  %382 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #9
  %383 = getelementptr inbounds %class.anon.124, ptr %26, i32 0, i32 0
  store ptr %4, ptr %383, align 8, !tbaa !5
  %384 = getelementptr inbounds %class.anon.124, ptr %26, i32 0, i32 1
  store ptr %3, ptr %384, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %382, ptr noundef %25)
          to label %385 unwind label %401

385:                                              ; preds = %381
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  %386 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %386, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %386, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %366

387:                                              ; preds = %375
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %16, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %17, align 4
  br label %400

391:                                              ; preds = %376
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %16, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %17, align 4
  br label %399

395:                                              ; preds = %377
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %16, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  br label %399

399:                                              ; preds = %395, %391
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %400

400:                                              ; preds = %399, %387
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #9
  br label %3093

401:                                              ; preds = %381
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %16, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  br label %3093

405:                                              ; No predecessors!
  br label %406

406:                                              ; preds = %405
  br label %407

407:                                              ; preds = %406, %379
  br label %408

408:                                              ; preds = %407
  %409 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %410 unwind label %366

410:                                              ; preds = %408
  br i1 %409, label %411, label %427

411:                                              ; preds = %410
  %412 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %412, ptr noundef @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %414 unwind label %366

414:                                              ; preds = %411
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef @.str.5)
          to label %416 unwind label %366

416:                                              ; preds = %414
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %418 unwind label %366

418:                                              ; preds = %416
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef @.str.6)
          to label %420 unwind label %366

420:                                              ; preds = %418
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %422 unwind label %366

422:                                              ; preds = %420
  %423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef @_ZSt3decRSt8ios_base)
          to label %424 unwind label %366

424:                                              ; preds = %422
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %426 unwind label %366

426:                                              ; preds = %424
  br label %427

427:                                              ; preds = %426, %410
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.76") align 8 %28, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %430 unwind label %366

430:                                              ; preds = %429
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %27, ptr noundef %28)
          to label %431 unwind label %433

431:                                              ; preds = %430
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %27)
          to label %432 unwind label %437

432:                                              ; preds = %431
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #9
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  store i32 1, ptr %21, align 4
  br label %3091

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

437:                                              ; preds = %431
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %16, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #9
  br label %441

441:                                              ; preds = %437, %433
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br label %3093

442:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #9
  store i8 1, ptr %29, align 1, !tbaa !9
  br label %443

443:                                              ; preds = %588, %442
  %444 = load i8, ptr %29, align 1, !tbaa !9, !range !11, !noundef !12
  %445 = trunc i8 %444 to i1
  br i1 %445, label %447, label %446

446:                                              ; preds = %443
  store i32 13, ptr %21, align 4
  br label %589

447:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %448 = load ptr, ptr %22, align 8, !tbaa !5
  %449 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %448)
          to label %450 unwind label %456

450:                                              ; preds = %447
  store ptr %449, ptr %30, align 8, !tbaa !5
  br label %451

451:                                              ; preds = %583, %450
  %452 = load ptr, ptr %30, align 8, !tbaa !5
  %453 = load i8, ptr %29, align 1, !tbaa !9, !range !11, !noundef !12
  %454 = trunc i8 %453 to i1
  br i1 %454, label %460, label %455

455:                                              ; preds = %451
  store i32 16, ptr %21, align 4
  br label %584

456:                                              ; preds = %447
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %16, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %17, align 4
  br label %586

460:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %461 = load ptr, ptr %9, align 8, !tbaa !5
  %462 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %461, i32 0, i32 1
  %463 = load ptr, ptr %462, align 8, !tbaa !15
  %464 = load ptr, ptr %9, align 8, !tbaa !5
  %465 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %464, i32 0, i32 2
  %466 = load ptr, ptr %465, align 8, !tbaa !20
  %467 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(424) %466, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %468 unwind label %476

468:                                              ; preds = %460
  store ptr %467, ptr %31, align 8, !tbaa !5
  br label %469

469:                                              ; preds = %468
  %470 = load ptr, ptr %31, align 8, !tbaa !5
  %471 = icmp ne ptr %470, null
  br i1 %471, label %484, label %472

472:                                              ; preds = %469
  %473 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %474 = getelementptr inbounds %class.anon.125, ptr %33, i32 0, i32 0
  store ptr %4, ptr %474, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %473, ptr noundef %32)
          to label %475 unwind label %480

475:                                              ; preds = %472
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %484

476:                                              ; preds = %460
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %16, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %17, align 4
  br label %582

480:                                              ; preds = %472
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %16, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %582

484:                                              ; preds = %475, %469
  br label %485

485:                                              ; preds = %484
  br label %486

486:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  %487 = load ptr, ptr %31, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.TypeRepr, ptr %487, i32 0, i32 3
  %489 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %488) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %489)
          to label %490 unwind label %502

490:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %491 = load ptr, ptr %31, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.TypeRepr, ptr %491, i32 0, i32 3
  store ptr %492, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %493 = load ptr, ptr %35, align 8, !tbaa !5
  %494 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %493) #9
  %495 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %494, ptr %495, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %496 = load ptr, ptr %35, align 8, !tbaa !5
  %497 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %496) #9
  %498 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %497, ptr %498, align 8
  br label %499

499:                                              ; preds = %534, %490
  %500 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %500, label %506, label %501

501:                                              ; preds = %499
  store i32 21, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %574

502:                                              ; preds = %486
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %16, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %17, align 4
  br label %581

506:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %507 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  store ptr %507, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 112, ptr %39) #9
  %508 = load ptr, ptr %9, align 8, !tbaa !5
  %509 = load ptr, ptr %10, align 8, !tbaa !5
  %510 = load ptr, ptr %38, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %510, i32 0, i32 0
  %512 = load i64, ptr %511, align 8, !tbaa !21
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %40, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %512)
          to label %513 unwind label %536

513:                                              ; preds = %506
  %514 = load ptr, ptr %9, align 8, !tbaa !5
  %515 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %514, i32 0, i32 1
  %516 = load ptr, ptr %515, align 8, !tbaa !15
  %517 = load ptr, ptr %38, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %517, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %516, ptr noundef nonnull align 8 dereferenceable(8) %518, i1 noundef zeroext true)
          to label %519 unwind label %536

519:                                              ; preds = %513
  %520 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %521 unwind label %540

521:                                              ; preds = %519
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %42, ptr noundef %43)
          to label %522 unwind label %544

522:                                              ; preds = %521
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(120) %508, ptr noundef nonnull align 8 dereferenceable(40) %509, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %40, ptr noundef %41, ptr noundef nonnull align 8 dereferenceable(144) %520, ptr noundef %42)
          to label %523 unwind label %548

523:                                              ; preds = %522
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %44) #9
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  %525 = load ptr, ptr %9, align 8, !tbaa !5
  %526 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %525, i32 0, i32 1
  %527 = load ptr, ptr %526, align 8, !tbaa !15
  %528 = load ptr, ptr %38, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %528, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull align 8 dereferenceable(8) %529, i1 noundef zeroext true)
          to label %530 unwind label %554

530:                                              ; preds = %523
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %47, ptr noundef nonnull align 8 dereferenceable(112) %39) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %45, ptr noundef nonnull align 8 dereferenceable(40) %524, ptr noundef %46, ptr noundef %47)
          to label %531 unwind label %558

531:                                              ; preds = %530
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %44, ptr noundef %45)
          to label %532 unwind label %562

532:                                              ; preds = %531
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(48) %44)
          to label %533 unwind label %566

533:                                              ; preds = %532
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %39) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %534

534:                                              ; preds = %533
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %499

536:                                              ; preds = %513, %506
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %16, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %17, align 4
  br label %573

540:                                              ; preds = %519
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %16, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %17, align 4
  br label %553

544:                                              ; preds = %521
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %16, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %17, align 4
  br label %552

548:                                              ; preds = %522
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %16, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #9
  br label %552

552:                                              ; preds = %548, %544
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %553

553:                                              ; preds = %552, %540
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br label %573

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

558:                                              ; preds = %530
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %16, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %17, align 4
  br label %571

562:                                              ; preds = %531
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %16, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %17, align 4
  br label %570

566:                                              ; preds = %532
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %16, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #9
  br label %570

570:                                              ; preds = %566, %562
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %571

571:                                              ; preds = %570, %558
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %572

572:                                              ; preds = %571, %554
  call void @llvm.lifetime.end.p0(i64 48, ptr %44) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %39) #9
  br label %573

573:                                              ; preds = %572, %553, %536
  call void @llvm.lifetime.end.p0(i64 112, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %581

574:                                              ; preds = %501
  %575 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %48, i32 0, i32 0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %575, ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %48)
          to label %576 unwind label %577

576:                                              ; preds = %574
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  store i32 1, ptr %21, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %584

577:                                              ; preds = %574
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %16, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %17, align 4
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  br label %581

581:                                              ; preds = %577, %573, %502
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #9
  br label %582

582:                                              ; preds = %581, %480, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %586

583:                                              ; No predecessors!
  store i8 0, ptr %29, align 1, !tbaa !9
  br label %451, !llvm.loop !25

584:                                              ; preds = %576, %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  %585 = load i32, ptr %21, align 4
  switch i32 %585, label %589 [
    i32 16, label %587
  ]

586:                                              ; preds = %582, %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #9
  br label %3093

587:                                              ; preds = %584
  br label %588

588:                                              ; preds = %587
  store i8 0, ptr %29, align 1, !tbaa !9
  br label %443, !llvm.loop !27

589:                                              ; preds = %584, %446
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #9
  %590 = load i32, ptr %21, align 4
  switch i32 %590, label %3091 [
    i32 13, label %591
  ]

591:                                              ; preds = %589
  br label %3089

592:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #9
  store i8 1, ptr %49, align 1, !tbaa !9
  br label %593

593:                                              ; preds = %861, %592
  %594 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %595 = trunc i8 %594 to i1
  br i1 %595, label %597, label %596

596:                                              ; preds = %593
  store i32 23, ptr %21, align 4
  br label %862

597:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %598)
          to label %600 unwind label %606

600:                                              ; preds = %597
  store ptr %599, ptr %50, align 8, !tbaa !5
  br label %601

601:                                              ; preds = %856, %600
  %602 = load ptr, ptr %50, align 8, !tbaa !5
  %603 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %604 = trunc i8 %603 to i1
  br i1 %604, label %610, label %605

605:                                              ; preds = %601
  store i32 26, ptr %21, align 4
  br label %857

606:                                              ; preds = %597
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %16, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %17, align 4
  br label %859

610:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  store i64 0, ptr %51, align 8, !tbaa !28
  br label %611

611:                                              ; preds = %610
  %612 = load ptr, ptr %9, align 8, !tbaa !5
  %613 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %612, i32 0, i32 1
  %614 = load ptr, ptr %613, align 8, !tbaa !15
  %615 = load ptr, ptr %9, align 8, !tbaa !5
  %616 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %615, i32 0, i32 2
  %617 = load ptr, ptr %616, align 8, !tbaa !20
  %618 = load ptr, ptr %50, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %618, i32 0, i32 0
  %620 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull align 8 dereferenceable(424) %617, ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %621 unwind label %626

621:                                              ; preds = %611
  br i1 %620, label %634, label %622

622:                                              ; preds = %621
  %623 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %624 = getelementptr inbounds %class.anon.141, ptr %53, i32 0, i32 0
  store ptr %4, ptr %624, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %623, ptr noundef %52)
          to label %625 unwind label %630

625:                                              ; preds = %622
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %634

626:                                              ; preds = %611
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %16, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %17, align 4
  br label %855

630:                                              ; preds = %622
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %16, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %855

634:                                              ; preds = %625, %621
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %637 = load ptr, ptr %50, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %637, i32 0, i32 1
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %638)
          to label %640 unwind label %654

640:                                              ; preds = %636
  %641 = load i64, ptr %639, align 8, !tbaa !28
  store i64 %641, ptr %54, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #9
  %642 = load i64, ptr %54, align 8, !tbaa !28
  %643 = icmp ugt i64 %642, 1
  br i1 %643, label %644, label %686

644:                                              ; preds = %640
  store i8 1, ptr %55, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %645 = load i64, ptr %51, align 8, !tbaa !28
  store i64 %645, ptr %56, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #9
  %646 = load i64, ptr %51, align 8, !tbaa !28
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %57, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0, i64 noundef %646)
          to label %647 unwind label %658

647:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  store i32 1, ptr %58, align 4, !tbaa !13
  br label %648

648:                                              ; preds = %680, %647
  %649 = load i32, ptr %58, align 4, !tbaa !13
  %650 = zext i32 %649 to i64
  %651 = load i64, ptr %54, align 8, !tbaa !28
  %652 = icmp ult i64 %650, %651
  br i1 %652, label %662, label %653

653:                                              ; preds = %648
  store i32 31, ptr %21, align 4
  br label %683

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

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

662:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #9
  %663 = load i64, ptr %56, align 8, !tbaa !28
  %664 = load i64, ptr %51, align 8, !tbaa !28
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %59, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %663, i64 noundef %664)
          to label %665 unwind label %669

665:                                              ; preds = %662
  %666 = invoke noundef zeroext i1 @_ZNK19EncodedLiteralSliceneERKS_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(24) %59)
          to label %667 unwind label %669

667:                                              ; preds = %665
  br i1 %666, label %668, label %673

668:                                              ; preds = %667
  store i8 0, ptr %55, align 1, !tbaa !9
  store i32 31, ptr %21, align 4
  br label %677

669:                                              ; preds = %665, %662
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %16, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %685

673:                                              ; preds = %667
  %674 = load i64, ptr %51, align 8, !tbaa !28
  %675 = load i64, ptr %56, align 8, !tbaa !28
  %676 = add i64 %675, %674
  store i64 %676, ptr %56, align 8, !tbaa !28
  store i32 0, ptr %21, align 4
  br label %677

677:                                              ; preds = %673, %668
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #9
  %678 = load i32, ptr %21, align 4
  switch i32 %678, label %683 [
    i32 0, label %679
  ]

679:                                              ; preds = %677
  br label %680

680:                                              ; preds = %679
  %681 = load i32, ptr %58, align 4, !tbaa !13
  %682 = add i32 %681, 1
  store i32 %682, ptr %58, align 4, !tbaa !13
  br label %648, !llvm.loop !29

683:                                              ; preds = %677, %653
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %684

684:                                              ; preds = %683
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %687

685:                                              ; preds = %669, %658
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %853

686:                                              ; preds = %640
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %687

687:                                              ; preds = %686, %684
  %688 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %689 = trunc i8 %688 to i1
  br i1 %689, label %690, label %762

690:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 112, ptr %60) #9
  %691 = load ptr, ptr %9, align 8, !tbaa !5
  %692 = load ptr, ptr %10, align 8, !tbaa !5
  %693 = load i64, ptr %51, align 8, !tbaa !28
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %61, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0, i64 noundef %693)
          to label %694 unwind label %716

694:                                              ; preds = %690
  %695 = load ptr, ptr %50, align 8, !tbaa !5
  %696 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %695, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %62, ptr noundef nonnull align 8 dereferenceable(8) %696)
          to label %697 unwind label %716

697:                                              ; preds = %694
  %698 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %699 unwind label %720

699:                                              ; preds = %697
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %63, ptr noundef %64)
          to label %700 unwind label %724

700:                                              ; preds = %699
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %60, ptr noundef nonnull align 8 dereferenceable(120) %691, ptr noundef nonnull align 8 dereferenceable(40) %692, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %61, ptr noundef %62, ptr noundef nonnull align 8 dereferenceable(144) %698, ptr noundef %63)
          to label %701 unwind label %728

701:                                              ; preds = %700
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %63) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  %703 = load ptr, ptr %50, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %703, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %66, ptr noundef nonnull align 8 dereferenceable(8) %704)
          to label %705 unwind label %734

705:                                              ; preds = %701
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %67, ptr noundef nonnull align 8 dereferenceable(112) %60) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %65, ptr noundef nonnull align 8 dereferenceable(40) %702, ptr noundef %66, ptr noundef %67)
          to label %706 unwind label %738

706:                                              ; preds = %705
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %67) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %707 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %68, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %708 unwind label %742

708:                                              ; preds = %706
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %707, ptr noundef %69)
          to label %709 unwind label %746

709:                                              ; preds = %708
  %710 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %68, i32 0, i32 1
  %711 = load i64, ptr %54, align 8, !tbaa !28
  %712 = trunc i64 %711 to i32
  %713 = zext i32 %712 to i64
  invoke void @_ZN3HIR9ArraySizeC2Em(ptr noundef nonnull align 8 dereferenceable(32) %710, i64 noundef %713)
          to label %714 unwind label %750

714:                                              ; preds = %709
  invoke void @_ZN3MIR6RValue15make_SizedArrayENS0_15Data_SizedArrayE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %68)
          to label %715 unwind label %754

715:                                              ; preds = %714
  call void @_ZN3MIR6RValue15Data_SizedArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %68) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %60) #9
  br label %852

716:                                              ; preds = %694, %690
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %16, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %17, align 4
  br label %761

720:                                              ; preds = %697
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %16, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %17, align 4
  br label %733

724:                                              ; preds = %699
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %16, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %17, align 4
  br label %732

728:                                              ; preds = %700
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %16, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %63) #9
  br label %732

732:                                              ; preds = %728, %724
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  br label %733

733:                                              ; preds = %732, %720
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %761

734:                                              ; preds = %701
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %16, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %17, align 4
  br label %760

738:                                              ; preds = %705
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %16, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %67) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %760

742:                                              ; preds = %706
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %16, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %17, align 4
  br label %759

746:                                              ; preds = %708
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %16, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %17, align 4
  br label %758

750:                                              ; preds = %709
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %16, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %707) #9
  br label %758

754:                                              ; preds = %714
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %16, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %17, align 4
  call void @_ZN3MIR6RValue15Data_SizedArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %68) #9
  br label %758

758:                                              ; preds = %754, %750, %746
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  br label %759

759:                                              ; preds = %758, %742
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %760

760:                                              ; preds = %759, %738, %734
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #9
  br label %761

761:                                              ; preds = %760, %733, %716
  call void @llvm.lifetime.end.p0(i64 112, ptr %60) #9
  br label %853

762:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 24, ptr %70) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  %763 = load ptr, ptr %50, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %763, i32 0, i32 1
  %765 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %764)
          to label %766 unwind label %775

766:                                              ; preds = %762
  %767 = load i64, ptr %765, align 8, !tbaa !28
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %767)
          to label %768 unwind label %775

768:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  store i64 0, ptr %71, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #9
  store i32 0, ptr %72, align 4, !tbaa !13
  br label %769

769:                                              ; preds = %802, %768
  %770 = load i32, ptr %72, align 4, !tbaa !13
  %771 = zext i32 %770 to i64
  %772 = load i64, ptr %54, align 8, !tbaa !28
  %773 = icmp ult i64 %771, %772
  br i1 %773, label %779, label %774

774:                                              ; preds = %769
  store i32 34, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #9
  br label %843

775:                                              ; preds = %766, %762
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %16, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %17, align 4
  br label %851

779:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 112, ptr %73) #9
  %780 = load ptr, ptr %9, align 8, !tbaa !5
  %781 = load ptr, ptr %10, align 8, !tbaa !5
  %782 = load i64, ptr %71, align 8, !tbaa !28
  %783 = load i64, ptr %51, align 8, !tbaa !28
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %74, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %782, i64 noundef %783)
          to label %784 unwind label %805

784:                                              ; preds = %779
  %785 = load ptr, ptr %50, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %785, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %787 unwind label %805

787:                                              ; preds = %784
  %788 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %789 unwind label %809

789:                                              ; preds = %787
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %76, ptr noundef %77)
          to label %790 unwind label %813

790:                                              ; preds = %789
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %73, ptr noundef nonnull align 8 dereferenceable(120) %780, ptr noundef nonnull align 8 dereferenceable(40) %781, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %74, ptr noundef %75, ptr noundef nonnull align 8 dereferenceable(144) %788, ptr noundef %76)
          to label %791 unwind label %817

791:                                              ; preds = %790
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %78) #9
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = load ptr, ptr %50, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %793, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(8) %794)
          to label %795 unwind label %823

795:                                              ; preds = %791
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %81, ptr noundef nonnull align 8 dereferenceable(112) %73) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %79, ptr noundef nonnull align 8 dereferenceable(40) %792, ptr noundef %80, ptr noundef %81)
          to label %796 unwind label %827

796:                                              ; preds = %795
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %78, ptr noundef %79)
          to label %797 unwind label %831

797:                                              ; preds = %796
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(48) %78)
          to label %798 unwind label %835

798:                                              ; preds = %797
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %81) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #9
  %799 = load i64, ptr %51, align 8, !tbaa !28
  %800 = load i64, ptr %71, align 8, !tbaa !28
  %801 = add i64 %800, %799
  store i64 %801, ptr %71, align 8, !tbaa !28
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %73) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %73) #9
  br label %802

802:                                              ; preds = %798
  %803 = load i32, ptr %72, align 4, !tbaa !13
  %804 = add i32 %803, 1
  store i32 %804, ptr %72, align 4, !tbaa !13
  br label %769, !llvm.loop !30

805:                                              ; preds = %784, %779
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %16, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %17, align 4
  br label %842

809:                                              ; preds = %787
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %16, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %17, align 4
  br label %822

813:                                              ; preds = %789
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %16, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %17, align 4
  br label %821

817:                                              ; preds = %790
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %16, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #9
  br label %821

821:                                              ; preds = %817, %813
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  br label %822

822:                                              ; preds = %821, %809
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  br label %842

823:                                              ; preds = %791
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %16, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %17, align 4
  br label %841

827:                                              ; preds = %795
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %16, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %17, align 4
  br label %840

831:                                              ; preds = %796
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %16, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %17, align 4
  br label %839

835:                                              ; preds = %797
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %16, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  br label %839

839:                                              ; preds = %835, %831
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %840

840:                                              ; preds = %839, %827
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %81) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  br label %841

841:                                              ; preds = %840, %823
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %73) #9
  br label %842

842:                                              ; preds = %841, %822, %805
  call void @llvm.lifetime.end.p0(i64 112, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #9
  br label %850

843:                                              ; preds = %774
  %844 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %82, i32 0, i32 0
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %844, ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  invoke void @_ZN3MIR6RValue10make_ArrayENS0_10Data_ArrayE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %82)
          to label %845 unwind label %846

845:                                              ; preds = %843
  call void @_ZN3MIR6RValue10Data_ArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %70) #9
  br label %852

846:                                              ; preds = %843
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %16, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %17, align 4
  call void @_ZN3MIR6RValue10Data_ArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  br label %850

850:                                              ; preds = %846, %842
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %851

851:                                              ; preds = %850, %775
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %70) #9
  br label %853

852:                                              ; preds = %845, %715
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %857

853:                                              ; preds = %851, %761, %685
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  br label %854

854:                                              ; preds = %853, %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %855

855:                                              ; preds = %854, %630, %626
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %859

856:                                              ; No predecessors!
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %601, !llvm.loop !31

857:                                              ; preds = %852, %605
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  %858 = load i32, ptr %21, align 4
  switch i32 %858, label %862 [
    i32 26, label %860
  ]

859:                                              ; preds = %855, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #9
  br label %3093

860:                                              ; preds = %857
  br label %861

861:                                              ; preds = %860
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %593, !llvm.loop !32

862:                                              ; preds = %857, %596
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #9
  %863 = load i32, ptr %21, align 4
  switch i32 %863, label %3091 [
    i32 23, label %864
  ]

864:                                              ; preds = %862
  br label %3089

865:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #9
  store i8 1, ptr %83, align 1, !tbaa !9
  br label %866

866:                                              ; preds = %1650, %865
  %867 = load i8, ptr %83, align 1, !tbaa !9, !range !11, !noundef !12
  %868 = trunc i8 %867 to i1
  br i1 %868, label %870, label %869

869:                                              ; preds = %866
  store i32 37, ptr %21, align 4
  br label %1651

870:                                              ; preds = %866
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %871 = load ptr, ptr %22, align 8, !tbaa !5
  %872 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %871)
          to label %873 unwind label %879

873:                                              ; preds = %870
  store ptr %872, ptr %84, align 8, !tbaa !5
  br label %874

874:                                              ; preds = %1644, %873
  %875 = load ptr, ptr %84, align 8, !tbaa !5
  %876 = load i8, ptr %83, align 1, !tbaa !9, !range !11, !noundef !12
  %877 = trunc i8 %876 to i1
  br i1 %877, label %883, label %878

878:                                              ; preds = %874
  store i32 40, ptr %21, align 4
  br label %1646

879:                                              ; preds = %870
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %16, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %17, align 4
  br label %1648

883:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #9
  %884 = load ptr, ptr %9, align 8, !tbaa !5
  %885 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %884, i32 0, i32 1
  %886 = load ptr, ptr %885, align 8, !tbaa !15
  %887 = load ptr, ptr %9, align 8, !tbaa !5
  %888 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %887, i32 0, i32 2
  %889 = load ptr, ptr %888, align 8, !tbaa !20
  %890 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %886, ptr noundef nonnull align 8 dereferenceable(424) %889, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %891 unwind label %899

891:                                              ; preds = %883
  store ptr %890, ptr %85, align 8, !tbaa !5
  br label %892

892:                                              ; preds = %891
  %893 = load ptr, ptr %85, align 8, !tbaa !5
  %894 = icmp ne ptr %893, null
  br i1 %894, label %907, label %895

895:                                              ; preds = %892
  %896 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %897 = getelementptr inbounds %class.anon.142, ptr %87, i32 0, i32 0
  store ptr %4, ptr %897, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %896, ptr noundef %86)
          to label %898 unwind label %903

898:                                              ; preds = %895
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %907

899:                                              ; preds = %1209, %1017, %909, %883
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %16, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %17, align 4
  br label %1645

903:                                              ; preds = %895
  %904 = landingpad { ptr, i32 }
          cleanup
  %905 = extractvalue { ptr, i32 } %904, 0
  store ptr %905, ptr %16, align 8
  %906 = extractvalue { ptr, i32 } %904, 1
  store i32 %906, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %1645

907:                                              ; preds = %898, %892
  br label %908

908:                                              ; preds = %907
  br label %909

909:                                              ; preds = %908
  %910 = load ptr, ptr %84, align 8, !tbaa !5
  %911 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %910, i32 0, i32 1
  %912 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %911)
          to label %913 unwind label %899

913:                                              ; preds = %909
  br i1 %912, label %914, label %1017

914:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 24, ptr %88) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  %915 = load ptr, ptr %85, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.TypeRepr, ptr %915, i32 0, i32 3
  %917 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %916) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %917)
          to label %918 unwind label %930

918:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %919 = load ptr, ptr %85, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.TypeRepr, ptr %919, i32 0, i32 3
  store ptr %920, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %921 = load ptr, ptr %89, align 8, !tbaa !5
  %922 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %921) #9
  %923 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %90, i32 0, i32 0
  store ptr %922, ptr %923, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %924 = load ptr, ptr %89, align 8, !tbaa !5
  %925 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %924) #9
  %926 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %91, i32 0, i32 0
  store ptr %925, ptr %926, align 8
  br label %927

927:                                              ; preds = %962, %918
  %928 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  br i1 %928, label %934, label %929

929:                                              ; preds = %927
  store i32 45, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1002

930:                                              ; preds = %1008, %1002, %914
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %16, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %17, align 4
  br label %1016

934:                                              ; preds = %927
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %935 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  store ptr %935, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 112, ptr %93) #9
  %936 = load ptr, ptr %9, align 8, !tbaa !5
  %937 = load ptr, ptr %10, align 8, !tbaa !5
  %938 = load ptr, ptr %92, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %938, i32 0, i32 0
  %940 = load i64, ptr %939, align 8, !tbaa !21
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %94, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %940)
          to label %941 unwind label %964

941:                                              ; preds = %934
  %942 = load ptr, ptr %9, align 8, !tbaa !5
  %943 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %942, i32 0, i32 1
  %944 = load ptr, ptr %943, align 8, !tbaa !15
  %945 = load ptr, ptr %92, align 8, !tbaa !5
  %946 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %945, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %95, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %944, ptr noundef nonnull align 8 dereferenceable(8) %946, i1 noundef zeroext true)
          to label %947 unwind label %964

947:                                              ; preds = %941
  %948 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %949 unwind label %968

949:                                              ; preds = %947
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %96, ptr noundef %97)
          to label %950 unwind label %972

950:                                              ; preds = %949
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %93, ptr noundef nonnull align 8 dereferenceable(120) %936, ptr noundef nonnull align 8 dereferenceable(40) %937, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %94, ptr noundef %95, ptr noundef nonnull align 8 dereferenceable(144) %948, ptr noundef %96)
          to label %951 unwind label %976

951:                                              ; preds = %950
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %98) #9
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  %953 = load ptr, ptr %9, align 8, !tbaa !5
  %954 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %953, i32 0, i32 1
  %955 = load ptr, ptr %954, align 8, !tbaa !15
  %956 = load ptr, ptr %92, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %956, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %100, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %955, ptr noundef nonnull align 8 dereferenceable(8) %957, i1 noundef zeroext true)
          to label %958 unwind label %982

958:                                              ; preds = %951
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %101, ptr noundef nonnull align 8 dereferenceable(112) %93) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %99, ptr noundef nonnull align 8 dereferenceable(40) %952, ptr noundef %100, ptr noundef %101)
          to label %959 unwind label %986

959:                                              ; preds = %958
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %98, ptr noundef %99)
          to label %960 unwind label %990

960:                                              ; preds = %959
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 8 dereferenceable(48) %98)
          to label %961 unwind label %994

961:                                              ; preds = %960
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %98) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %101) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %98) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %93) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %962

962:                                              ; preds = %961
  %963 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  br label %927

964:                                              ; preds = %941, %934
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %16, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %17, align 4
  br label %1001

968:                                              ; preds = %947
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %16, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %17, align 4
  br label %981

972:                                              ; preds = %949
  %973 = landingpad { ptr, i32 }
          cleanup
  %974 = extractvalue { ptr, i32 } %973, 0
  store ptr %974, ptr %16, align 8
  %975 = extractvalue { ptr, i32 } %973, 1
  store i32 %975, ptr %17, align 4
  br label %980

976:                                              ; preds = %950
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %16, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #9
  br label %980

980:                                              ; preds = %976, %972
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  br label %981

981:                                              ; preds = %980, %968
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  br label %1001

982:                                              ; preds = %951
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %16, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %17, align 4
  br label %1000

986:                                              ; preds = %958
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %16, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %17, align 4
  br label %999

990:                                              ; preds = %959
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %16, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %17, align 4
  br label %998

994:                                              ; preds = %960
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %16, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %98) #9
  br label %998

998:                                              ; preds = %994, %990
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #9
  br label %999

999:                                              ; preds = %998, %986
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %101) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  br label %1000

1000:                                             ; preds = %999, %982
  call void @llvm.lifetime.end.p0(i64 48, ptr %98) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %93) #9
  br label %1001

1001:                                             ; preds = %1000, %981, %964
  call void @llvm.lifetime.end.p0(i64 112, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1016

1002:                                             ; preds = %929
  %1003 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %102, i32 0, i32 0
  %1004 = load ptr, ptr %84, align 8, !tbaa !5
  %1005 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1004, i32 0, i32 0
  %1006 = getelementptr inbounds %"class.HIR::Path", ptr %1005, i32 0, i32 0
  %1007 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1006)
          to label %1008 unwind label %930

1008:                                             ; preds = %1002
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %1003, ptr noundef nonnull align 8 dereferenceable(32) %1007)
          to label %1009 unwind label %930

1009:                                             ; preds = %1008
  %1010 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %102, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1010, ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %102)
          to label %1011 unwind label %1012

1011:                                             ; preds = %1009
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %102) #9
  store i32 1, ptr %21, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #9
  br label %1641

1012:                                             ; preds = %1009
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %16, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %102) #9
  br label %1016

1016:                                             ; preds = %1012, %1001, %930
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #9
  br label %1645

1017:                                             ; preds = %913
  %1018 = load ptr, ptr %84, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1018, i32 0, i32 1
  %1020 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1019)
          to label %1021 unwind label %899

1021:                                             ; preds = %1017
  br i1 %1020, label %1022, label %1209

1022:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  %1023 = load ptr, ptr %85, align 8, !tbaa !5
  %1024 = load ptr, ptr %9, align 8, !tbaa !5
  %1025 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1024, i32 0, i32 1
  %1026 = load ptr, ptr %1025, align 8, !tbaa !15
  %1027 = load ptr, ptr %9, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1027, i32 0, i32 2
  %1029 = load ptr, ptr %1028, align 8, !tbaa !20
  %1030 = invoke i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112) %1023, ptr noundef nonnull align 8 dereferenceable(8) %1026, ptr noundef nonnull align 8 dereferenceable(424) %1029, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %1031 unwind label %1083

1031:                                             ; preds = %1022
  %1032 = trunc i64 %1030 to i40
  store i40 %1032, ptr %103, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #9
  %1033 = getelementptr inbounds %"struct.std::pair.143", ptr %103, i32 0, i32 0
  %1034 = load i32, ptr %1033, align 4, !tbaa !33
  store i32 %1034, ptr %104, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  %1035 = getelementptr inbounds %"struct.std::pair.143", ptr %103, i32 0, i32 1
  %1036 = load i8, ptr %1035, align 4, !tbaa !35, !range !11, !noundef !12
  %1037 = trunc i8 %1036 to i1
  %1038 = zext i1 %1037 to i8
  store i8 %1038, ptr %105, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  %1039 = load ptr, ptr %84, align 8, !tbaa !5
  %1040 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1039, i32 0, i32 1
  %1041 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1040)
          to label %1042 unwind label %1087

1042:                                             ; preds = %1031
  %1043 = load ptr, ptr %1041, align 8, !tbaa !5
  store ptr %1043, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %107) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #9
  %1044 = load ptr, ptr %106, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"class.HIR::Enum", ptr %1044, i32 0, i32 3
  %1046 = invoke noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1045)
          to label %1047 unwind label %1091

1047:                                             ; preds = %1042
  br i1 %1046, label %1048, label %1189

1048:                                             ; preds = %1047
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #9
  %1049 = load ptr, ptr %85, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.TypeRepr, ptr %1049, i32 0, i32 3
  %1051 = load i32, ptr %104, align 4, !tbaa !13
  %1052 = zext i32 %1051 to i64
  %1053 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1050, i64 noundef %1052)
          to label %1054 unwind label %1095

1054:                                             ; preds = %1048
  store ptr %1053, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #9
  %1055 = load ptr, ptr %108, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1055, i32 0, i32 0
  %1057 = load i64, ptr %1056, align 8, !tbaa !21
  store i64 %1057, ptr %109, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #9
  %1058 = load ptr, ptr %9, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1058, i32 0, i32 1
  %1060 = load ptr, ptr %1059, align 8, !tbaa !15
  %1061 = load ptr, ptr %9, align 8, !tbaa !5
  %1062 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1061, i32 0, i32 2
  %1063 = load ptr, ptr %1062, align 8, !tbaa !20
  %1064 = load ptr, ptr %108, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1064, i32 0, i32 1
  %1066 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1060, ptr noundef nonnull align 8 dereferenceable(424) %1063, ptr noundef nonnull align 8 dereferenceable(8) %1065)
          to label %1067 unwind label %1099

1067:                                             ; preds = %1054
  store ptr %1066, ptr %110, align 8, !tbaa !5
  %1068 = load ptr, ptr %110, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.TypeRepr, ptr %1068, i32 0, i32 3
  %1070 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1069) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %1070)
          to label %1071 unwind label %1099

1071:                                             ; preds = %1067
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %1072 = load ptr, ptr %110, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.TypeRepr, ptr %1072, i32 0, i32 3
  store ptr %1073, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %1074 = load ptr, ptr %111, align 8, !tbaa !5
  %1075 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1074) #9
  %1076 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %112, i32 0, i32 0
  store ptr %1075, ptr %1076, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #9
  %1077 = load ptr, ptr %111, align 8, !tbaa !5
  %1078 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1077) #9
  %1079 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %113, i32 0, i32 0
  store ptr %1078, ptr %1079, align 8
  br label %1080

1080:                                             ; preds = %1146, %1071
  %1081 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %113) #9
  br i1 %1081, label %1103, label %1082

1082:                                             ; preds = %1080
  store i32 47, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1186

1083:                                             ; preds = %1022
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %16, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %17, align 4
  br label %1208

1087:                                             ; preds = %1031
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %16, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %17, align 4
  br label %1207

1091:                                             ; preds = %1196, %1190, %1042
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %16, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %17, align 4
  br label %1206

1095:                                             ; preds = %1048
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %16, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %17, align 4
  br label %1188

1099:                                             ; preds = %1067, %1054
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %16, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %17, align 4
  br label %1187

1103:                                             ; preds = %1080
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1104 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #9
  store ptr %1104, ptr %114, align 8, !tbaa !5
  %1105 = load i8, ptr %105, align 1, !tbaa !9, !range !11, !noundef !12
  %1106 = trunc i8 %1105 to i1
  br i1 %1106, label %1107, label %1114

1107:                                             ; preds = %1103
  %1108 = load ptr, ptr %114, align 8, !tbaa !5
  %1109 = load ptr, ptr %110, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.TypeRepr, ptr %1109, i32 0, i32 3
  %1111 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1110) #9
  %1112 = icmp eq ptr %1108, %1111
  br i1 %1112, label %1113, label %1114

1113:                                             ; preds = %1107
  store i32 48, ptr %21, align 4
  br label %1143

1114:                                             ; preds = %1107, %1103
  call void @llvm.lifetime.start.p0(i64 112, ptr %115) #9
  %1115 = load ptr, ptr %9, align 8, !tbaa !5
  %1116 = load ptr, ptr %10, align 8, !tbaa !5
  %1117 = load i64, ptr %109, align 8, !tbaa !28
  %1118 = load ptr, ptr %114, align 8, !tbaa !5
  %1119 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1118, i32 0, i32 0
  %1120 = load i64, ptr %1119, align 8, !tbaa !21
  %1121 = add i64 %1117, %1120
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %116, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1121)
          to label %1122 unwind label %1148

1122:                                             ; preds = %1114
  %1123 = load ptr, ptr %9, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1123, i32 0, i32 1
  %1125 = load ptr, ptr %1124, align 8, !tbaa !15
  %1126 = load ptr, ptr %114, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1126, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %117, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %1125, ptr noundef nonnull align 8 dereferenceable(8) %1127, i1 noundef zeroext true)
          to label %1128 unwind label %1148

1128:                                             ; preds = %1122
  %1129 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1130 unwind label %1152

1130:                                             ; preds = %1128
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %118, ptr noundef %119)
          to label %1131 unwind label %1156

1131:                                             ; preds = %1130
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %115, ptr noundef nonnull align 8 dereferenceable(120) %1115, ptr noundef nonnull align 8 dereferenceable(40) %1116, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %116, ptr noundef %117, ptr noundef nonnull align 8 dereferenceable(144) %1129, ptr noundef %118)
          to label %1132 unwind label %1160

1132:                                             ; preds = %1131
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %118) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %120) #9
  %1133 = load ptr, ptr %10, align 8, !tbaa !5
  %1134 = load ptr, ptr %9, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1134, i32 0, i32 1
  %1136 = load ptr, ptr %1135, align 8, !tbaa !15
  %1137 = load ptr, ptr %114, align 8, !tbaa !5
  %1138 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1137, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %122, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %1136, ptr noundef nonnull align 8 dereferenceable(8) %1138, i1 noundef zeroext true)
          to label %1139 unwind label %1166

1139:                                             ; preds = %1132
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %123, ptr noundef nonnull align 8 dereferenceable(112) %115) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %121, ptr noundef nonnull align 8 dereferenceable(40) %1133, ptr noundef %122, ptr noundef %123)
          to label %1140 unwind label %1170

1140:                                             ; preds = %1139
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %120, ptr noundef %121)
          to label %1141 unwind label %1174

1141:                                             ; preds = %1140
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef nonnull align 8 dereferenceable(48) %120)
          to label %1142 unwind label %1178

1142:                                             ; preds = %1141
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %120) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %123) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %120) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %115) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %115) #9
  store i32 0, ptr %21, align 4
  br label %1143

1143:                                             ; preds = %1142, %1113
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  %1144 = load i32, ptr %21, align 4
  switch i32 %1144, label %3112 [
    i32 0, label %1145
    i32 48, label %1146
  ]

1145:                                             ; preds = %1143
  br label %1146

1146:                                             ; preds = %1145, %1143
  %1147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #9
  br label %1080

1148:                                             ; preds = %1122, %1114
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %16, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %17, align 4
  br label %1185

1152:                                             ; preds = %1128
  %1153 = landingpad { ptr, i32 }
          cleanup
  %1154 = extractvalue { ptr, i32 } %1153, 0
  store ptr %1154, ptr %16, align 8
  %1155 = extractvalue { ptr, i32 } %1153, 1
  store i32 %1155, ptr %17, align 4
  br label %1165

1156:                                             ; preds = %1130
  %1157 = landingpad { ptr, i32 }
          cleanup
  %1158 = extractvalue { ptr, i32 } %1157, 0
  store ptr %1158, ptr %16, align 8
  %1159 = extractvalue { ptr, i32 } %1157, 1
  store i32 %1159, ptr %17, align 4
  br label %1164

1160:                                             ; preds = %1131
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %16, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %118) #9
  br label %1164

1164:                                             ; preds = %1160, %1156
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1165

1165:                                             ; preds = %1164, %1152
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #9
  br label %1185

1166:                                             ; preds = %1132
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %16, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %17, align 4
  br label %1184

1170:                                             ; preds = %1139
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %16, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %17, align 4
  br label %1183

1174:                                             ; preds = %1140
  %1175 = landingpad { ptr, i32 }
          cleanup
  %1176 = extractvalue { ptr, i32 } %1175, 0
  store ptr %1176, ptr %16, align 8
  %1177 = extractvalue { ptr, i32 } %1175, 1
  store i32 %1177, ptr %17, align 4
  br label %1182

1178:                                             ; preds = %1141
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %16, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %120) #9
  br label %1182

1182:                                             ; preds = %1178, %1174
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  br label %1183

1183:                                             ; preds = %1182, %1170
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %123) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  br label %1184

1184:                                             ; preds = %1183, %1166
  call void @llvm.lifetime.end.p0(i64 48, ptr %120) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %115) #9
  br label %1185

1185:                                             ; preds = %1184, %1165, %1148
  call void @llvm.lifetime.end.p0(i64 112, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1187

1186:                                             ; preds = %1082
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %1190

1187:                                             ; preds = %1185, %1099
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #9
  br label %1188

1188:                                             ; preds = %1187, %1095
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %1206

1189:                                             ; preds = %1047
  br label %1190

1190:                                             ; preds = %1189, %1186
  %1191 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %124, i32 0, i32 0
  %1192 = load ptr, ptr %84, align 8, !tbaa !5
  %1193 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1192, i32 0, i32 0
  %1194 = getelementptr inbounds %"class.HIR::Path", ptr %1193, i32 0, i32 0
  %1195 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1194)
          to label %1196 unwind label %1091

1196:                                             ; preds = %1190
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %1191, ptr noundef nonnull align 8 dereferenceable(32) %1195)
          to label %1197 unwind label %1091

1197:                                             ; preds = %1196
  %1198 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %124, i32 0, i32 1
  %1199 = load i32, ptr %104, align 4, !tbaa !13
  store i32 %1199, ptr %1198, align 8, !tbaa !36
  %1200 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %124, i32 0, i32 2
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1200, ptr noundef nonnull align 8 dereferenceable(24) %107) #9
  invoke void @_ZN3MIR6RValue16make_EnumVariantENS0_16Data_EnumVariantE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %124)
          to label %1201 unwind label %1202

1201:                                             ; preds = %1197
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %124) #9
  store i32 1, ptr %21, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  br label %1641

1202:                                             ; preds = %1197
  %1203 = landingpad { ptr, i32 }
          cleanup
  %1204 = extractvalue { ptr, i32 } %1203, 0
  store ptr %1204, ptr %16, align 8
  %1205 = extractvalue { ptr, i32 } %1203, 1
  store i32 %1205, ptr %17, align 4
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %124) #9
  br label %1206

1206:                                             ; preds = %1202, %1188, %1091
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %107) #9
  br label %1207

1207:                                             ; preds = %1206, %1087
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #9
  br label %1208

1208:                                             ; preds = %1207, %1083
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  br label %1645

1209:                                             ; preds = %1021
  %1210 = load ptr, ptr %84, align 8, !tbaa !5
  %1211 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1210, i32 0, i32 1
  %1212 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding8is_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %1211)
          to label %1213 unwind label %899

1213:                                             ; preds = %1209
  br i1 %1212, label %1214, label %1612

1214:                                             ; preds = %1213
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #9
  store i32 -1, ptr %125, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #9
  %1215 = load ptr, ptr %9, align 8, !tbaa !5
  %1216 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1215, i32 0, i32 1
  %1217 = load ptr, ptr %1216, align 8, !tbaa !15
  %1218 = load ptr, ptr %9, align 8, !tbaa !5
  %1219 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1218, i32 0, i32 2
  %1220 = load ptr, ptr %1219, align 8, !tbaa !20
  %1221 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1217, ptr noundef nonnull align 8 dereferenceable(424) %1220, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1222 unwind label %1229

1222:                                             ; preds = %1214
  store ptr %1221, ptr %126, align 8, !tbaa !5
  br label %1223

1223:                                             ; preds = %1222
  %1224 = load ptr, ptr %126, align 8, !tbaa !5
  %1225 = icmp ne ptr %1224, null
  br i1 %1225, label %1237, label %1226

1226:                                             ; preds = %1223
  %1227 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 1 dereferenceable(1) %128) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1227, ptr noundef %127)
          to label %1228 unwind label %1233

1228:                                             ; preds = %1226
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #9
  br label %1237

1229:                                             ; preds = %1521, %1214
  %1230 = landingpad { ptr, i32 }
          cleanup
  %1231 = extractvalue { ptr, i32 } %1230, 0
  store ptr %1231, ptr %16, align 8
  %1232 = extractvalue { ptr, i32 } %1230, 1
  store i32 %1232, ptr %17, align 4
  br label %1611

1233:                                             ; preds = %1226
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %16, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #9
  br label %1611

1237:                                             ; preds = %1228, %1223
  br label %1238

1238:                                             ; preds = %1237
  br label %1239

1239:                                             ; preds = %1238
  %1240 = load i32, ptr %125, align 4, !tbaa !13
  %1241 = icmp eq i32 %1240, -1
  br i1 %1241, label %1242, label %1332

1242:                                             ; preds = %1239
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #9
  %1243 = load ptr, ptr %126, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.TypeRepr, ptr %1243, i32 0, i32 3
  store ptr %1244, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #9
  %1245 = load ptr, ptr %129, align 8, !tbaa !5
  %1246 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1245) #9
  %1247 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %130, i32 0, i32 0
  store ptr %1246, ptr %1247, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #9
  %1248 = load ptr, ptr %129, align 8, !tbaa !5
  %1249 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1248) #9
  %1250 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %131, i32 0, i32 0
  store ptr %1249, ptr %1250, align 8
  br label %1251

1251:                                             ; preds = %1327, %1242
  %1252 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %131) #9
  br i1 %1252, label %1254, label %1253

1253:                                             ; preds = %1251
  store i32 51, ptr %21, align 4
  br label %1330

1254:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %1255 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %130) #9
  store ptr %1255, ptr %132, align 8, !tbaa !5
  %1256 = load ptr, ptr %132, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1256, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #9
  %1258 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1257)
          to label %1259 unwind label %1303

1259:                                             ; preds = %1254
  %1260 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1258)
          to label %1261 unwind label %1303

1261:                                             ; preds = %1259
  br i1 %1260, label %1262, label %1287

1262:                                             ; preds = %1261
  %1263 = load ptr, ptr %132, align 8, !tbaa !5
  %1264 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1263, i32 0, i32 1
  %1265 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1264)
          to label %1266 unwind label %1303

1266:                                             ; preds = %1262
  %1267 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1265)
          to label %1268 unwind label %1303

1268:                                             ; preds = %1266
  %1269 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1267, i32 0, i32 0
  store i32 2, ptr %133, align 4, !tbaa !49
  %1270 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1269, ptr noundef nonnull align 4 dereferenceable(4) %133)
          to label %1271 unwind label %1307

1271:                                             ; preds = %1268
  br i1 %1270, label %1272, label %1287

1272:                                             ; preds = %1271
  %1273 = load ptr, ptr %132, align 8, !tbaa !5
  %1274 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1273, i32 0, i32 1
  %1275 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1274)
          to label %1276 unwind label %1307

1276:                                             ; preds = %1272
  %1277 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1275)
          to label %1278 unwind label %1307

1278:                                             ; preds = %1276
  %1279 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1277, i32 0, i32 1
  %1280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1279)
          to label %1281 unwind label %1307

1281:                                             ; preds = %1278
  %1282 = load i64, ptr %1280, align 8, !tbaa !28
  %1283 = load ptr, ptr %126, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.TypeRepr, ptr %1283, i32 0, i32 1
  %1285 = load i64, ptr %1284, align 8, !tbaa !51
  %1286 = icmp eq i64 %1282, %1285
  br label %1287

1287:                                             ; preds = %1281, %1271, %1261
  %1288 = phi i1 [ false, %1271 ], [ false, %1261 ], [ %1286, %1281 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  br i1 %1288, label %1289, label %1323

1289:                                             ; preds = %1287
  br label %1290

1290:                                             ; preds = %1289
  %1291 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1292 unwind label %1303

1292:                                             ; preds = %1290
  br i1 %1291, label %1293, label %1311

1293:                                             ; preds = %1292
  %1294 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1294, ptr noundef @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %1296 unwind label %1303

1296:                                             ; preds = %1293
  %1297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1295, ptr noundef @.str.7)
          to label %1298 unwind label %1303

1298:                                             ; preds = %1296
  %1299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1297, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1300 unwind label %1303

1300:                                             ; preds = %1298
  %1301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1299, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1302 unwind label %1303

1302:                                             ; preds = %1300
  br label %1311

1303:                                             ; preds = %1300, %1298, %1296, %1293, %1290, %1266, %1262, %1259, %1254
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %16, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %17, align 4
  br label %1329

1307:                                             ; preds = %1278, %1276, %1272, %1268
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %16, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  br label %1329

1311:                                             ; preds = %1302, %1292
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  %1314 = load ptr, ptr %132, align 8, !tbaa !5
  %1315 = load ptr, ptr %126, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.TypeRepr, ptr %1315, i32 0, i32 3
  %1317 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1316) #9
  %1318 = ptrtoint ptr %1314 to i64
  %1319 = ptrtoint ptr %1317 to i64
  %1320 = sub i64 %1318, %1319
  %1321 = sdiv exact i64 %1320, 16
  %1322 = trunc i64 %1321 to i32
  store i32 %1322, ptr %125, align 4, !tbaa !13
  store i32 51, ptr %21, align 4
  br label %1324

1323:                                             ; preds = %1287
  store i32 0, ptr %21, align 4
  br label %1324

1324:                                             ; preds = %1323, %1313
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  %1325 = load i32, ptr %21, align 4
  switch i32 %1325, label %1330 [
    i32 0, label %1326
  ]

1326:                                             ; preds = %1324
  br label %1327

1327:                                             ; preds = %1326
  %1328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %130) #9
  br label %1251

1329:                                             ; preds = %1307, %1303
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  br label %1611

1330:                                             ; preds = %1324, %1253
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  br label %1331

1331:                                             ; preds = %1330
  br label %1332

1332:                                             ; preds = %1331, %1239
  %1333 = load i32, ptr %125, align 4, !tbaa !13
  %1334 = icmp eq i32 %1333, -1
  br i1 %1334, label %1335, label %1406

1335:                                             ; preds = %1332
  %1336 = load ptr, ptr %126, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.TypeRepr, ptr %1336, i32 0, i32 3
  %1338 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1337) #9
  %1339 = icmp eq i64 %1338, 2
  store i1 false, ptr %135, align 1
  store i1 false, ptr %136, align 1
  br i1 %1339, label %1340, label %1348

1340:                                             ; preds = %1335
  %1341 = load ptr, ptr %126, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.TypeRepr, ptr %1341, i32 0, i32 3
  %1343 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1342, i64 noundef 0) #9
  %1344 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1343, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  store i1 true, ptr %135, align 1
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %134)
          to label %1345 unwind label %1364

1345:                                             ; preds = %1340
  store i1 true, ptr %136, align 1
  %1346 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1344, ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1347 unwind label %1368

1347:                                             ; preds = %1345
  br label %1348

1348:                                             ; preds = %1347, %1335
  %1349 = phi i1 [ false, %1335 ], [ %1346, %1347 ]
  %1350 = load i1, ptr %136, align 1
  br i1 %1350, label %1351, label %1352

1351:                                             ; preds = %1348
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #9
  br label %1352

1352:                                             ; preds = %1351, %1348
  %1353 = load i1, ptr %135, align 1
  br i1 %1353, label %1354, label %1355

1354:                                             ; preds = %1352
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  br label %1355

1355:                                             ; preds = %1354, %1352
  br i1 %1349, label %1356, label %1405

1356:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #9
  store i8 0, ptr %137, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #9
  store i64 0, ptr %138, align 8, !tbaa !28
  br label %1357

1357:                                             ; preds = %1396, %1356
  %1358 = load i64, ptr %138, align 8, !tbaa !28
  %1359 = load ptr, ptr %126, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.TypeRepr, ptr %1359, i32 0, i32 1
  %1361 = load i64, ptr %1360, align 8, !tbaa !51
  %1362 = icmp ult i64 %1358, %1361
  br i1 %1362, label %1379, label %1363

1363:                                             ; preds = %1357
  store i32 55, ptr %21, align 4
  br label %1399

1364:                                             ; preds = %1340
  %1365 = landingpad { ptr, i32 }
          cleanup
  %1366 = extractvalue { ptr, i32 } %1365, 0
  store ptr %1366, ptr %16, align 8
  %1367 = extractvalue { ptr, i32 } %1365, 1
  store i32 %1367, ptr %17, align 4
  br label %1375

1368:                                             ; preds = %1345
  %1369 = landingpad { ptr, i32 }
          cleanup
  %1370 = extractvalue { ptr, i32 } %1369, 0
  store ptr %1370, ptr %16, align 8
  %1371 = extractvalue { ptr, i32 } %1369, 1
  store i32 %1371, ptr %17, align 4
  %1372 = load i1, ptr %136, align 1
  br i1 %1372, label %1373, label %1374

1373:                                             ; preds = %1368
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #9
  br label %1374

1374:                                             ; preds = %1373, %1368
  br label %1375

1375:                                             ; preds = %1374, %1364
  %1376 = load i1, ptr %135, align 1
  br i1 %1376, label %1377, label %1378

1377:                                             ; preds = %1375
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  br label %1378

1378:                                             ; preds = %1377, %1375
  br label %1611

1379:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %140) #9
  %1380 = load i64, ptr %138, align 8, !tbaa !28
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %140, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1380, i64 noundef 1)
          to label %1381 unwind label %1391

1381:                                             ; preds = %1379
  %1382 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef 1)
          to label %1383 unwind label %1391

1383:                                             ; preds = %1381
  %1384 = getelementptr inbounds { i64, i64 }, ptr %139, i32 0, i32 0
  %1385 = extractvalue { i64, i64 } %1382, 0
  store i64 %1385, ptr %1384, align 8
  %1386 = getelementptr inbounds { i64, i64 }, ptr %139, i32 0, i32 1
  %1387 = extractvalue { i64, i64 } %1382, 1
  store i64 %1387, ptr %1386, align 8
  %1388 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %139, i32 noundef 0)
          to label %1389 unwind label %1391

1389:                                             ; preds = %1383
  call void @llvm.lifetime.end.p0(i64 24, ptr %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #9
  br i1 %1388, label %1390, label %1395

1390:                                             ; preds = %1389
  store i8 1, ptr %137, align 1, !tbaa !9
  store i32 55, ptr %21, align 4
  br label %1399

1391:                                             ; preds = %1383, %1381, %1379
  %1392 = landingpad { ptr, i32 }
          cleanup
  %1393 = extractvalue { ptr, i32 } %1392, 0
  store ptr %1393, ptr %16, align 8
  %1394 = extractvalue { ptr, i32 } %1392, 1
  store i32 %1394, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #9
  br label %1611

1395:                                             ; preds = %1389
  br label %1396

1396:                                             ; preds = %1395
  %1397 = load i64, ptr %138, align 8, !tbaa !28
  %1398 = add i64 %1397, 1
  store i64 %1398, ptr %138, align 8, !tbaa !28
  br label %1357, !llvm.loop !59

1399:                                             ; preds = %1390, %1363
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  br label %1400

1400:                                             ; preds = %1399
  %1401 = load i8, ptr %137, align 1, !tbaa !9, !range !11, !noundef !12
  %1402 = trunc i8 %1401 to i1
  %1403 = zext i1 %1402 to i64
  %1404 = select i1 %1402, i32 1, i32 0
  store i32 %1404, ptr %125, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #9
  br label %1405

1405:                                             ; preds = %1400, %1355
  br label %1406

1406:                                             ; preds = %1405, %1332
  %1407 = load i32, ptr %125, align 4, !tbaa !13
  %1408 = icmp eq i32 %1407, -1
  br i1 %1408, label %1409, label %1511

1409:                                             ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #9
  %1410 = load ptr, ptr %126, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.TypeRepr, ptr %1410, i32 0, i32 3
  store ptr %1411, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #9
  %1412 = load ptr, ptr %141, align 8, !tbaa !5
  %1413 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1412) #9
  %1414 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %142, i32 0, i32 0
  store ptr %1413, ptr %1414, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #9
  %1415 = load ptr, ptr %141, align 8, !tbaa !5
  %1416 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1415) #9
  %1417 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %143, i32 0, i32 0
  store ptr %1416, ptr %1417, align 8
  br label %1418

1418:                                             ; preds = %1506, %1409
  %1419 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull align 8 dereferenceable(8) %143) #9
  br i1 %1419, label %1421, label %1420

1420:                                             ; preds = %1418
  store i32 58, ptr %21, align 4
  br label %1509

1421:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #9
  %1422 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %142) #9
  store ptr %1422, ptr %144, align 8, !tbaa !5
  %1423 = load ptr, ptr %144, align 8, !tbaa !5
  %1424 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1423, i32 0, i32 1
  %1425 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1424)
          to label %1426 unwind label %1448

1426:                                             ; preds = %1421
  %1427 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1425)
          to label %1428 unwind label %1448

1428:                                             ; preds = %1426
  br i1 %1427, label %1436, label %1429

1429:                                             ; preds = %1428
  %1430 = load ptr, ptr %144, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1430, i32 0, i32 1
  %1432 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1431)
          to label %1433 unwind label %1448

1433:                                             ; preds = %1429
  %1434 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1432)
          to label %1435 unwind label %1448

1435:                                             ; preds = %1433
  br i1 %1434, label %1436, label %1502

1436:                                             ; preds = %1435, %1428
  %1437 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %1438 unwind label %1448

1438:                                             ; preds = %1436
  %1439 = icmp ne ptr %1437, null
  br i1 %1439, label %1440, label %1452

1440:                                             ; preds = %1438
  %1441 = load ptr, ptr %144, align 8, !tbaa !5
  %1442 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1441, i32 0, i32 1
  %1443 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1442)
          to label %1444 unwind label %1448

1444:                                             ; preds = %1440
  %1445 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1443)
          to label %1446 unwind label %1448

1446:                                             ; preds = %1444
  br i1 %1445, label %1452, label %1447

1447:                                             ; preds = %1446
  store i32 59, ptr %21, align 4
  br label %1503

1448:                                             ; preds = %1444, %1440, %1436, %1433, %1429, %1426, %1421
  %1449 = landingpad { ptr, i32 }
          cleanup
  %1450 = extractvalue { ptr, i32 } %1449, 0
  store ptr %1450, ptr %16, align 8
  %1451 = extractvalue { ptr, i32 } %1449, 1
  store i32 %1451, ptr %17, align 4
  br label %1508

1452:                                             ; preds = %1446, %1438
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #9
  store i64 0, ptr %145, align 8, !tbaa !28
  %1453 = load ptr, ptr %9, align 8, !tbaa !5
  %1454 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1453, i32 0, i32 1
  %1455 = load ptr, ptr %1454, align 8, !tbaa !15
  %1456 = load ptr, ptr %9, align 8, !tbaa !5
  %1457 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1456, i32 0, i32 2
  %1458 = load ptr, ptr %1457, align 8, !tbaa !20
  %1459 = load ptr, ptr %144, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1459, i32 0, i32 1
  %1461 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %1455, ptr noundef nonnull align 8 dereferenceable(424) %1458, ptr noundef nonnull align 8 dereferenceable(8) %1460, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1462 unwind label %1482

1462:                                             ; preds = %1452
  %1463 = load i64, ptr %145, align 8, !tbaa !28
  %1464 = load ptr, ptr %126, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.TypeRepr, ptr %1464, i32 0, i32 1
  %1466 = load i64, ptr %1465, align 8, !tbaa !51
  %1467 = icmp eq i64 %1463, %1466
  br i1 %1467, label %1468, label %1498

1468:                                             ; preds = %1462
  br label %1469

1469:                                             ; preds = %1468
  %1470 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1471 unwind label %1482

1471:                                             ; preds = %1469
  br i1 %1470, label %1472, label %1486

1472:                                             ; preds = %1471
  %1473 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1473, ptr noundef @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %1475 unwind label %1482

1475:                                             ; preds = %1472
  %1476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1474, ptr noundef @.str.8)
          to label %1477 unwind label %1482

1477:                                             ; preds = %1475
  %1478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1476, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1479 unwind label %1482

1479:                                             ; preds = %1477
  %1480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1478, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1481 unwind label %1482

1481:                                             ; preds = %1479
  br label %1486

1482:                                             ; preds = %1479, %1477, %1475, %1472, %1469, %1452
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %16, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  br label %1508

1486:                                             ; preds = %1481, %1471
  br label %1487

1487:                                             ; preds = %1486
  br label %1488

1488:                                             ; preds = %1487
  %1489 = load ptr, ptr %144, align 8, !tbaa !5
  %1490 = load ptr, ptr %126, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.TypeRepr, ptr %1490, i32 0, i32 3
  %1492 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %1491) #9
  %1493 = ptrtoint ptr %1489 to i64
  %1494 = ptrtoint ptr %1492 to i64
  %1495 = sub i64 %1493, %1494
  %1496 = sdiv exact i64 %1495, 16
  %1497 = trunc i64 %1496 to i32
  store i32 %1497, ptr %125, align 4, !tbaa !13
  store i32 58, ptr %21, align 4
  br label %1499

1498:                                             ; preds = %1462
  store i32 0, ptr %21, align 4
  br label %1499

1499:                                             ; preds = %1498, %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  %1500 = load i32, ptr %21, align 4
  switch i32 %1500, label %1503 [
    i32 0, label %1501
  ]

1501:                                             ; preds = %1499
  br label %1502

1502:                                             ; preds = %1501, %1435
  store i32 0, ptr %21, align 4
  br label %1503

1503:                                             ; preds = %1502, %1499, %1447
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #9
  %1504 = load i32, ptr %21, align 4
  switch i32 %1504, label %1509 [
    i32 0, label %1505
    i32 59, label %1506
  ]

1505:                                             ; preds = %1503
  br label %1506

1506:                                             ; preds = %1505, %1503
  %1507 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %142) #9
  br label %1418

1508:                                             ; preds = %1482, %1448
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %1611

1509:                                             ; preds = %1503, %1420
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %1510

1510:                                             ; preds = %1509
  br label %1511

1511:                                             ; preds = %1510, %1406
  %1512 = load i32, ptr %125, align 4, !tbaa !13
  %1513 = icmp eq i32 %1512, -1
  br i1 %1513, label %1514, label %1534

1514:                                             ; preds = %1511
  br label %1515

1515:                                             ; preds = %1514
  %1516 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %147) #9
  %1517 = getelementptr inbounds %class.anon.162, ptr %147, i32 0, i32 0
  store ptr %6, ptr %1517, align 8, !tbaa !5
  %1518 = getelementptr inbounds %class.anon.162, ptr %147, i32 0, i32 1
  store ptr %4, ptr %1518, align 8, !tbaa !5
  %1519 = getelementptr inbounds %class.anon.162, ptr %147, i32 0, i32 2
  store ptr %3, ptr %1519, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(24) %147)
          to label %1520 unwind label %1523

1520:                                             ; preds = %1515
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1516, ptr noundef %146)
          to label %1521 unwind label %1527

1521:                                             ; preds = %1520
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %147) #9
  %1522 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1522, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1522, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %1229

1523:                                             ; preds = %1515
  %1524 = landingpad { ptr, i32 }
          cleanup
  %1525 = extractvalue { ptr, i32 } %1524, 0
  store ptr %1525, ptr %16, align 8
  %1526 = extractvalue { ptr, i32 } %1524, 1
  store i32 %1526, ptr %17, align 4
  br label %1531

1527:                                             ; preds = %1520
  %1528 = landingpad { ptr, i32 }
          cleanup
  %1529 = extractvalue { ptr, i32 } %1528, 0
  store ptr %1529, ptr %16, align 8
  %1530 = extractvalue { ptr, i32 } %1528, 1
  store i32 %1530, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %1531

1531:                                             ; preds = %1527, %1523
  call void @llvm.lifetime.end.p0(i64 24, ptr %147) #9
  br label %1611

1532:                                             ; No predecessors!
  br label %1533

1533:                                             ; preds = %1532
  br label %1534

1534:                                             ; preds = %1533, %1511
  call void @llvm.lifetime.start.p0(i64 112, ptr %148) #9
  %1535 = load ptr, ptr %9, align 8, !tbaa !5
  %1536 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %149, ptr align 8 %3, i64 24, i1 false), !tbaa.struct !60
  %1537 = load ptr, ptr %126, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.TypeRepr, ptr %1537, i32 0, i32 3
  %1539 = load i32, ptr %125, align 4, !tbaa !13
  %1540 = zext i32 %1539 to i64
  %1541 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1538, i64 noundef %1540) #9
  %1542 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1541, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %150, ptr noundef nonnull align 8 dereferenceable(8) %1542)
          to label %1543 unwind label %1571

1543:                                             ; preds = %1534
  %1544 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %151, ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %148, ptr noundef nonnull align 8 dereferenceable(120) %1535, ptr noundef nonnull align 8 dereferenceable(40) %1536, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %149, ptr noundef %150, ptr noundef nonnull align 8 dereferenceable(144) %1544, ptr noundef %151)
          to label %1545 unwind label %1575

1545:                                             ; preds = %1543
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %151) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %152) #9
  %1546 = load ptr, ptr %10, align 8, !tbaa !5
  %1547 = load ptr, ptr %9, align 8, !tbaa !5
  %1548 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1547, i32 0, i32 1
  %1549 = load ptr, ptr %1548, align 8, !tbaa !15
  %1550 = load ptr, ptr %126, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.TypeRepr, ptr %1550, i32 0, i32 3
  %1552 = load i32, ptr %125, align 4, !tbaa !13
  %1553 = zext i32 %1552 to i64
  %1554 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1551, i64 noundef %1553) #9
  %1555 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1554, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %153, ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(8) %1549, ptr noundef nonnull align 8 dereferenceable(8) %1555, i1 noundef zeroext true)
          to label %1556 unwind label %1579

1556:                                             ; preds = %1545
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 8 dereferenceable(112) %148) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %152, ptr noundef nonnull align 8 dereferenceable(40) %1546, ptr noundef %153, ptr noundef %154)
          to label %1557 unwind label %1583

1557:                                             ; preds = %1556
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %154) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  %1558 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %155, i32 0, i32 0
  %1559 = load ptr, ptr %84, align 8, !tbaa !5
  %1560 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1559, i32 0, i32 0
  %1561 = getelementptr inbounds %"class.HIR::Path", ptr %1560, i32 0, i32 0
  %1562 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1561)
          to label %1563 unwind label %1587

1563:                                             ; preds = %1557
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %1558, ptr noundef nonnull align 8 dereferenceable(32) %1562)
          to label %1564 unwind label %1587

1564:                                             ; preds = %1563
  store i1 true, ptr %157, align 1
  %1565 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %155, i32 0, i32 1
  %1566 = load i32, ptr %125, align 4, !tbaa !13
  store i32 %1566, ptr %1565, align 8, !tbaa !61
  %1567 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %155, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull align 8 dereferenceable(32) %152)
          to label %1568 unwind label %1591

1568:                                             ; preds = %1564
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1567, ptr noundef %156)
          to label %1569 unwind label %1595

1569:                                             ; preds = %1568
  store i1 false, ptr %157, align 1
  invoke void @_ZN3MIR6RValue17make_UnionVariantENS0_17Data_UnionVariantE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %155)
          to label %1570 unwind label %1599

1570:                                             ; preds = %1569
  call void @_ZN3MIR6RValue17Data_UnionVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %155) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %148) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %148) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  br label %1641

1571:                                             ; preds = %1534
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %16, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %17, align 4
  br label %1610

1575:                                             ; preds = %1543
  %1576 = landingpad { ptr, i32 }
          cleanup
  %1577 = extractvalue { ptr, i32 } %1576, 0
  store ptr %1577, ptr %16, align 8
  %1578 = extractvalue { ptr, i32 } %1576, 1
  store i32 %1578, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %151) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #9
  br label %1610

1579:                                             ; preds = %1545
  %1580 = landingpad { ptr, i32 }
          cleanup
  %1581 = extractvalue { ptr, i32 } %1580, 0
  store ptr %1581, ptr %16, align 8
  %1582 = extractvalue { ptr, i32 } %1580, 1
  store i32 %1582, ptr %17, align 4
  br label %1609

1583:                                             ; preds = %1556
  %1584 = landingpad { ptr, i32 }
          cleanup
  %1585 = extractvalue { ptr, i32 } %1584, 0
  store ptr %1585, ptr %16, align 8
  %1586 = extractvalue { ptr, i32 } %1584, 1
  store i32 %1586, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %154) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  br label %1609

1587:                                             ; preds = %1563, %1557
  %1588 = landingpad { ptr, i32 }
          cleanup
  %1589 = extractvalue { ptr, i32 } %1588, 0
  store ptr %1589, ptr %16, align 8
  %1590 = extractvalue { ptr, i32 } %1588, 1
  store i32 %1590, ptr %17, align 4
  br label %1608

1591:                                             ; preds = %1564
  %1592 = landingpad { ptr, i32 }
          cleanup
  %1593 = extractvalue { ptr, i32 } %1592, 0
  store ptr %1593, ptr %16, align 8
  %1594 = extractvalue { ptr, i32 } %1592, 1
  store i32 %1594, ptr %17, align 4
  br label %1604

1595:                                             ; preds = %1568
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %16, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %17, align 4
  br label %1603

1599:                                             ; preds = %1569
  %1600 = landingpad { ptr, i32 }
          cleanup
  %1601 = extractvalue { ptr, i32 } %1600, 0
  store ptr %1601, ptr %16, align 8
  %1602 = extractvalue { ptr, i32 } %1600, 1
  store i32 %1602, ptr %17, align 4
  call void @_ZN3MIR6RValue17Data_UnionVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %155) #9
  br label %1603

1603:                                             ; preds = %1599, %1595
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #9
  br label %1604

1604:                                             ; preds = %1603, %1591
  %1605 = load i1, ptr %157, align 1
  br i1 %1605, label %1606, label %1607

1606:                                             ; preds = %1604
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1558) #9
  br label %1607

1607:                                             ; preds = %1606, %1604
  br label %1608

1608:                                             ; preds = %1607, %1587
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #9
  br label %1609

1609:                                             ; preds = %1608, %1583, %1579
  call void @llvm.lifetime.end.p0(i64 32, ptr %152) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %148) #9
  br label %1610

1610:                                             ; preds = %1609, %1575, %1571
  call void @llvm.lifetime.end.p0(i64 112, ptr %148) #9
  br label %1611

1611:                                             ; preds = %1610, %1531, %1508, %1391, %1378, %1329, %1233, %1229
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  br label %1645

1612:                                             ; preds = %1213
  br label %1613

1613:                                             ; preds = %1612
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %158, align 8, !tbaa !5
  %1614 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %160) #9
  %1615 = getelementptr inbounds %class.anon.163, ptr %160, i32 0, i32 0
  store ptr %158, ptr %1615, align 8, !tbaa !5
  %1616 = getelementptr inbounds %class.anon.163, ptr %160, i32 0, i32 1
  store ptr %6, ptr %1616, align 8, !tbaa !5
  %1617 = getelementptr inbounds %class.anon.163, ptr %160, i32 0, i32 2
  store ptr %4, ptr %1617, align 8, !tbaa !5
  %1618 = getelementptr inbounds %class.anon.163, ptr %160, i32 0, i32 3
  store ptr %3, ptr %1618, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef nonnull align 8 dereferenceable(32) %160)
          to label %1619 unwind label %1622

1619:                                             ; preds = %1613
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1614, ptr noundef %159)
          to label %1620 unwind label %1626

1620:                                             ; preds = %1619
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %160) #9
  %1621 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1621, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1621, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %1631

1622:                                             ; preds = %1613
  %1623 = landingpad { ptr, i32 }
          cleanup
  %1624 = extractvalue { ptr, i32 } %1623, 0
  store ptr %1624, ptr %16, align 8
  %1625 = extractvalue { ptr, i32 } %1623, 1
  store i32 %1625, ptr %17, align 4
  br label %1630

1626:                                             ; preds = %1619
  %1627 = landingpad { ptr, i32 }
          cleanup
  %1628 = extractvalue { ptr, i32 } %1627, 0
  store ptr %1628, ptr %16, align 8
  %1629 = extractvalue { ptr, i32 } %1627, 1
  store i32 %1629, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1630

1630:                                             ; preds = %1626, %1622
  call void @llvm.lifetime.end.p0(i64 32, ptr %160) #9
  br label %1635

1631:                                             ; preds = %1620
  %1632 = landingpad { ptr, i32 }
          cleanup
  %1633 = extractvalue { ptr, i32 } %1632, 0
  store ptr %1633, ptr %16, align 8
  %1634 = extractvalue { ptr, i32 } %1632, 1
  store i32 %1634, ptr %17, align 4
  br label %1635

1635:                                             ; preds = %1631, %1630
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #9
  br label %1645

1636:                                             ; No predecessors!
  br label %1637

1637:                                             ; preds = %1636
  br label %1638

1638:                                             ; preds = %1637
  br label %1639

1639:                                             ; preds = %1638
  br label %1640

1640:                                             ; preds = %1639
  store i32 0, ptr %21, align 4
  br label %1641

1641:                                             ; preds = %1640, %1570, %1201, %1011
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  %1642 = load i32, ptr %21, align 4
  switch i32 %1642, label %1646 [
    i32 0, label %1643
  ]

1643:                                             ; preds = %1641
  br label %1644

1644:                                             ; preds = %1643
  store i8 0, ptr %83, align 1, !tbaa !9
  br label %874, !llvm.loop !65

1645:                                             ; preds = %1635, %1611, %1208, %1016, %903, %899
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  br label %1648

1646:                                             ; preds = %1641, %878
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  %1647 = load i32, ptr %21, align 4
  switch i32 %1647, label %1651 [
    i32 40, label %1649
  ]

1648:                                             ; preds = %1645, %879
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #9
  br label %3093

1649:                                             ; preds = %1646
  br label %1650

1650:                                             ; preds = %1649
  store i8 0, ptr %83, align 1, !tbaa !9
  br label %866, !llvm.loop !66

1651:                                             ; preds = %1646, %869
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #9
  %1652 = load i32, ptr %21, align 4
  switch i32 %1652, label %3091 [
    i32 37, label %1653
  ]

1653:                                             ; preds = %1651
  br label %3089

1654:                                             ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %161) #9
  store i8 1, ptr %161, align 1, !tbaa !9
  br label %1655

1655:                                             ; preds = %1993, %1654
  %1656 = load i8, ptr %161, align 1, !tbaa !9, !range !11, !noundef !12
  %1657 = trunc i8 %1656 to i1
  br i1 %1657, label %1659, label %1658

1658:                                             ; preds = %1655
  store i32 66, ptr %21, align 4
  br label %1994

1659:                                             ; preds = %1655
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #9
  %1660 = load ptr, ptr %22, align 8, !tbaa !5
  %1661 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1660)
          to label %1662 unwind label %1668

1662:                                             ; preds = %1659
  store ptr %1661, ptr %162, align 8, !tbaa !5
  br label %1663

1663:                                             ; preds = %1988, %1662
  %1664 = load ptr, ptr %162, align 8, !tbaa !5
  %1665 = load i8, ptr %161, align 1, !tbaa !9, !range !11, !noundef !12
  %1666 = trunc i8 %1665 to i1
  br i1 %1666, label %1672, label %1667

1667:                                             ; preds = %1663
  store i32 69, ptr %21, align 4
  br label %1989

1668:                                             ; preds = %1986, %1930, %1927, %1913, %1910, %1895, %1892, %1877, %1874, %1859, %1856, %1841, %1838, %1823, %1820, %1805, %1801, %1798, %1784, %1781, %1767, %1764, %1750, %1747, %1733, %1730, %1716, %1713, %1699, %1695, %1692, %1678, %1675, %1659
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %16, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %17, align 4
  br label %1991

1672:                                             ; preds = %1663
  %1673 = load ptr, ptr %162, align 8, !tbaa !5
  %1674 = load i32, ptr %1673, align 4, !tbaa !49
  switch i32 %1674, label %1986 [
    i32 15, label %1675
    i32 0, label %1692
    i32 10, label %1713
    i32 8, label %1730
    i32 6, label %1747
    i32 4, label %1764
    i32 2, label %1781
    i32 1, label %1798
    i32 11, label %1820
    i32 9, label %1838
    i32 7, label %1856
    i32 5, label %1874
    i32 3, label %1892
    i32 13, label %1910
    i32 12, label %1927
    i32 14, label %1944
    i32 16, label %1968
  ]

1675:                                             ; preds = %1672
  %1676 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %164, i32 0, i32 0
  %1677 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1678 unwind label %1668

1678:                                             ; preds = %1675
  %1679 = getelementptr inbounds { i64, i64 }, ptr %1676, i32 0, i32 0
  %1680 = extractvalue { i64, i64 } %1677, 0
  store i64 %1680, ptr %1679, align 8
  %1681 = getelementptr inbounds { i64, i64 }, ptr %1676, i32 0, i32 1
  %1682 = extractvalue { i64, i64 } %1677, 1
  store i64 %1682, ptr %1681, align 8
  %1683 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %164, i32 0, i32 1
  %1684 = load ptr, ptr %162, align 8, !tbaa !5
  %1685 = load i32, ptr %1684, align 4, !tbaa !49
  store i32 %1685, ptr %1683, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %163, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %164)
          to label %1686 unwind label %1668

1686:                                             ; preds = %1678
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %163)
          to label %1687 unwind label %1688

1687:                                             ; preds = %1686
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %163) #9
  store i32 1, ptr %21, align 4
  br label %1989

1688:                                             ; preds = %1686
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %16, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %163) #9
  br label %1991

1692:                                             ; preds = %1672
  %1693 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %166, i32 0, i32 0
  %1694 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1695 unwind label %1668

1695:                                             ; preds = %1692
  %1696 = udiv i32 %1694, 8
  %1697 = zext i32 %1696 to i64
  %1698 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1697)
          to label %1699 unwind label %1668

1699:                                             ; preds = %1695
  %1700 = getelementptr inbounds { i64, i64 }, ptr %1693, i32 0, i32 0
  %1701 = extractvalue { i64, i64 } %1698, 0
  store i64 %1701, ptr %1700, align 8
  %1702 = getelementptr inbounds { i64, i64 }, ptr %1693, i32 0, i32 1
  %1703 = extractvalue { i64, i64 } %1698, 1
  store i64 %1703, ptr %1702, align 8
  %1704 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %166, i32 0, i32 1
  %1705 = load ptr, ptr %162, align 8, !tbaa !5
  %1706 = load i32, ptr %1705, align 4, !tbaa !49
  store i32 %1706, ptr %1704, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %165, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %166)
          to label %1707 unwind label %1668

1707:                                             ; preds = %1699
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %165)
          to label %1708 unwind label %1709

1708:                                             ; preds = %1707
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %165) #9
  store i32 1, ptr %21, align 4
  br label %1989

1709:                                             ; preds = %1707
  %1710 = landingpad { ptr, i32 }
          cleanup
  %1711 = extractvalue { ptr, i32 } %1710, 0
  store ptr %1711, ptr %16, align 8
  %1712 = extractvalue { ptr, i32 } %1710, 1
  store i32 %1712, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %165) #9
  br label %1991

1713:                                             ; preds = %1672
  %1714 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %168, i32 0, i32 0
  %1715 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 16)
          to label %1716 unwind label %1668

1716:                                             ; preds = %1713
  %1717 = getelementptr inbounds { i64, i64 }, ptr %1714, i32 0, i32 0
  %1718 = extractvalue { i64, i64 } %1715, 0
  store i64 %1718, ptr %1717, align 8
  %1719 = getelementptr inbounds { i64, i64 }, ptr %1714, i32 0, i32 1
  %1720 = extractvalue { i64, i64 } %1715, 1
  store i64 %1720, ptr %1719, align 8
  %1721 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %168, i32 0, i32 1
  %1722 = load ptr, ptr %162, align 8, !tbaa !5
  %1723 = load i32, ptr %1722, align 4, !tbaa !49
  store i32 %1723, ptr %1721, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %167, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %168)
          to label %1724 unwind label %1668

1724:                                             ; preds = %1716
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %167)
          to label %1725 unwind label %1726

1725:                                             ; preds = %1724
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %167) #9
  store i32 1, ptr %21, align 4
  br label %1989

1726:                                             ; preds = %1724
  %1727 = landingpad { ptr, i32 }
          cleanup
  %1728 = extractvalue { ptr, i32 } %1727, 0
  store ptr %1728, ptr %16, align 8
  %1729 = extractvalue { ptr, i32 } %1727, 1
  store i32 %1729, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %167) #9
  br label %1991

1730:                                             ; preds = %1672
  %1731 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %170, i32 0, i32 0
  %1732 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %1733 unwind label %1668

1733:                                             ; preds = %1730
  %1734 = getelementptr inbounds { i64, i64 }, ptr %1731, i32 0, i32 0
  %1735 = extractvalue { i64, i64 } %1732, 0
  store i64 %1735, ptr %1734, align 8
  %1736 = getelementptr inbounds { i64, i64 }, ptr %1731, i32 0, i32 1
  %1737 = extractvalue { i64, i64 } %1732, 1
  store i64 %1737, ptr %1736, align 8
  %1738 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %170, i32 0, i32 1
  %1739 = load ptr, ptr %162, align 8, !tbaa !5
  %1740 = load i32, ptr %1739, align 4, !tbaa !49
  store i32 %1740, ptr %1738, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %169, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %170)
          to label %1741 unwind label %1668

1741:                                             ; preds = %1733
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %169)
          to label %1742 unwind label %1743

1742:                                             ; preds = %1741
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %169) #9
  store i32 1, ptr %21, align 4
  br label %1989

1743:                                             ; preds = %1741
  %1744 = landingpad { ptr, i32 }
          cleanup
  %1745 = extractvalue { ptr, i32 } %1744, 0
  store ptr %1745, ptr %16, align 8
  %1746 = extractvalue { ptr, i32 } %1744, 1
  store i32 %1746, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %169) #9
  br label %1991

1747:                                             ; preds = %1672
  %1748 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %172, i32 0, i32 0
  %1749 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1750 unwind label %1668

1750:                                             ; preds = %1747
  %1751 = getelementptr inbounds { i64, i64 }, ptr %1748, i32 0, i32 0
  %1752 = extractvalue { i64, i64 } %1749, 0
  store i64 %1752, ptr %1751, align 8
  %1753 = getelementptr inbounds { i64, i64 }, ptr %1748, i32 0, i32 1
  %1754 = extractvalue { i64, i64 } %1749, 1
  store i64 %1754, ptr %1753, align 8
  %1755 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %172, i32 0, i32 1
  %1756 = load ptr, ptr %162, align 8, !tbaa !5
  %1757 = load i32, ptr %1756, align 4, !tbaa !49
  store i32 %1757, ptr %1755, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %171, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %172)
          to label %1758 unwind label %1668

1758:                                             ; preds = %1750
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %171)
          to label %1759 unwind label %1760

1759:                                             ; preds = %1758
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %171) #9
  store i32 1, ptr %21, align 4
  br label %1989

1760:                                             ; preds = %1758
  %1761 = landingpad { ptr, i32 }
          cleanup
  %1762 = extractvalue { ptr, i32 } %1761, 0
  store ptr %1762, ptr %16, align 8
  %1763 = extractvalue { ptr, i32 } %1761, 1
  store i32 %1763, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %171) #9
  br label %1991

1764:                                             ; preds = %1672
  %1765 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %174, i32 0, i32 0
  %1766 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 2)
          to label %1767 unwind label %1668

1767:                                             ; preds = %1764
  %1768 = getelementptr inbounds { i64, i64 }, ptr %1765, i32 0, i32 0
  %1769 = extractvalue { i64, i64 } %1766, 0
  store i64 %1769, ptr %1768, align 8
  %1770 = getelementptr inbounds { i64, i64 }, ptr %1765, i32 0, i32 1
  %1771 = extractvalue { i64, i64 } %1766, 1
  store i64 %1771, ptr %1770, align 8
  %1772 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %174, i32 0, i32 1
  %1773 = load ptr, ptr %162, align 8, !tbaa !5
  %1774 = load i32, ptr %1773, align 4, !tbaa !49
  store i32 %1774, ptr %1772, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %173, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %174)
          to label %1775 unwind label %1668

1775:                                             ; preds = %1767
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %173)
          to label %1776 unwind label %1777

1776:                                             ; preds = %1775
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %173) #9
  store i32 1, ptr %21, align 4
  br label %1989

1777:                                             ; preds = %1775
  %1778 = landingpad { ptr, i32 }
          cleanup
  %1779 = extractvalue { ptr, i32 } %1778, 0
  store ptr %1779, ptr %16, align 8
  %1780 = extractvalue { ptr, i32 } %1778, 1
  store i32 %1780, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %173) #9
  br label %1991

1781:                                             ; preds = %1672
  %1782 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %176, i32 0, i32 0
  %1783 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %1784 unwind label %1668

1784:                                             ; preds = %1781
  %1785 = getelementptr inbounds { i64, i64 }, ptr %1782, i32 0, i32 0
  %1786 = extractvalue { i64, i64 } %1783, 0
  store i64 %1786, ptr %1785, align 8
  %1787 = getelementptr inbounds { i64, i64 }, ptr %1782, i32 0, i32 1
  %1788 = extractvalue { i64, i64 } %1783, 1
  store i64 %1788, ptr %1787, align 8
  %1789 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %176, i32 0, i32 1
  %1790 = load ptr, ptr %162, align 8, !tbaa !5
  %1791 = load i32, ptr %1790, align 4, !tbaa !49
  store i32 %1791, ptr %1789, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %175, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %176)
          to label %1792 unwind label %1668

1792:                                             ; preds = %1784
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %175)
          to label %1793 unwind label %1794

1793:                                             ; preds = %1792
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %175) #9
  store i32 1, ptr %21, align 4
  br label %1989

1794:                                             ; preds = %1792
  %1795 = landingpad { ptr, i32 }
          cleanup
  %1796 = extractvalue { ptr, i32 } %1795, 0
  store ptr %1796, ptr %16, align 8
  %1797 = extractvalue { ptr, i32 } %1795, 1
  store i32 %1797, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %175) #9
  br label %1991

1798:                                             ; preds = %1672
  %1799 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %178, i32 0, i32 0
  %1800 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1801 unwind label %1668

1801:                                             ; preds = %1798
  %1802 = udiv i32 %1800, 8
  %1803 = zext i32 %1802 to i64
  %1804 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1803)
          to label %1805 unwind label %1668

1805:                                             ; preds = %1801
  %1806 = getelementptr inbounds %class.S128, ptr %1799, i32 0, i32 0
  %1807 = getelementptr inbounds { i64, i64 }, ptr %1806, i32 0, i32 0
  %1808 = extractvalue { i64, i64 } %1804, 0
  store i64 %1808, ptr %1807, align 8
  %1809 = getelementptr inbounds { i64, i64 }, ptr %1806, i32 0, i32 1
  %1810 = extractvalue { i64, i64 } %1804, 1
  store i64 %1810, ptr %1809, align 8
  %1811 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %178, i32 0, i32 1
  %1812 = load ptr, ptr %162, align 8, !tbaa !5
  %1813 = load i32, ptr %1812, align 4, !tbaa !49
  store i32 %1813, ptr %1811, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %177, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %178)
          to label %1814 unwind label %1668

1814:                                             ; preds = %1805
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %177)
          to label %1815 unwind label %1816

1815:                                             ; preds = %1814
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  store i32 1, ptr %21, align 4
  br label %1989

1816:                                             ; preds = %1814
  %1817 = landingpad { ptr, i32 }
          cleanup
  %1818 = extractvalue { ptr, i32 } %1817, 0
  store ptr %1818, ptr %16, align 8
  %1819 = extractvalue { ptr, i32 } %1817, 1
  store i32 %1819, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  br label %1991

1820:                                             ; preds = %1672
  %1821 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %180, i32 0, i32 0
  %1822 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 16)
          to label %1823 unwind label %1668

1823:                                             ; preds = %1820
  %1824 = getelementptr inbounds %class.S128, ptr %1821, i32 0, i32 0
  %1825 = getelementptr inbounds { i64, i64 }, ptr %1824, i32 0, i32 0
  %1826 = extractvalue { i64, i64 } %1822, 0
  store i64 %1826, ptr %1825, align 8
  %1827 = getelementptr inbounds { i64, i64 }, ptr %1824, i32 0, i32 1
  %1828 = extractvalue { i64, i64 } %1822, 1
  store i64 %1828, ptr %1827, align 8
  %1829 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %180, i32 0, i32 1
  %1830 = load ptr, ptr %162, align 8, !tbaa !5
  %1831 = load i32, ptr %1830, align 4, !tbaa !49
  store i32 %1831, ptr %1829, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %179, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %180)
          to label %1832 unwind label %1668

1832:                                             ; preds = %1823
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %179)
          to label %1833 unwind label %1834

1833:                                             ; preds = %1832
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %179) #9
  store i32 1, ptr %21, align 4
  br label %1989

1834:                                             ; preds = %1832
  %1835 = landingpad { ptr, i32 }
          cleanup
  %1836 = extractvalue { ptr, i32 } %1835, 0
  store ptr %1836, ptr %16, align 8
  %1837 = extractvalue { ptr, i32 } %1835, 1
  store i32 %1837, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %179) #9
  br label %1991

1838:                                             ; preds = %1672
  %1839 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %182, i32 0, i32 0
  %1840 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %1841 unwind label %1668

1841:                                             ; preds = %1838
  %1842 = getelementptr inbounds %class.S128, ptr %1839, i32 0, i32 0
  %1843 = getelementptr inbounds { i64, i64 }, ptr %1842, i32 0, i32 0
  %1844 = extractvalue { i64, i64 } %1840, 0
  store i64 %1844, ptr %1843, align 8
  %1845 = getelementptr inbounds { i64, i64 }, ptr %1842, i32 0, i32 1
  %1846 = extractvalue { i64, i64 } %1840, 1
  store i64 %1846, ptr %1845, align 8
  %1847 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %182, i32 0, i32 1
  %1848 = load ptr, ptr %162, align 8, !tbaa !5
  %1849 = load i32, ptr %1848, align 4, !tbaa !49
  store i32 %1849, ptr %1847, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %181, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %182)
          to label %1850 unwind label %1668

1850:                                             ; preds = %1841
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %181)
          to label %1851 unwind label %1852

1851:                                             ; preds = %1850
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %181) #9
  store i32 1, ptr %21, align 4
  br label %1989

1852:                                             ; preds = %1850
  %1853 = landingpad { ptr, i32 }
          cleanup
  %1854 = extractvalue { ptr, i32 } %1853, 0
  store ptr %1854, ptr %16, align 8
  %1855 = extractvalue { ptr, i32 } %1853, 1
  store i32 %1855, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %181) #9
  br label %1991

1856:                                             ; preds = %1672
  %1857 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %184, i32 0, i32 0
  %1858 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1859 unwind label %1668

1859:                                             ; preds = %1856
  %1860 = getelementptr inbounds %class.S128, ptr %1857, i32 0, i32 0
  %1861 = getelementptr inbounds { i64, i64 }, ptr %1860, i32 0, i32 0
  %1862 = extractvalue { i64, i64 } %1858, 0
  store i64 %1862, ptr %1861, align 8
  %1863 = getelementptr inbounds { i64, i64 }, ptr %1860, i32 0, i32 1
  %1864 = extractvalue { i64, i64 } %1858, 1
  store i64 %1864, ptr %1863, align 8
  %1865 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %184, i32 0, i32 1
  %1866 = load ptr, ptr %162, align 8, !tbaa !5
  %1867 = load i32, ptr %1866, align 4, !tbaa !49
  store i32 %1867, ptr %1865, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %183, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %184)
          to label %1868 unwind label %1668

1868:                                             ; preds = %1859
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %183)
          to label %1869 unwind label %1870

1869:                                             ; preds = %1868
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #9
  store i32 1, ptr %21, align 4
  br label %1989

1870:                                             ; preds = %1868
  %1871 = landingpad { ptr, i32 }
          cleanup
  %1872 = extractvalue { ptr, i32 } %1871, 0
  store ptr %1872, ptr %16, align 8
  %1873 = extractvalue { ptr, i32 } %1871, 1
  store i32 %1873, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #9
  br label %1991

1874:                                             ; preds = %1672
  %1875 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %186, i32 0, i32 0
  %1876 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 2)
          to label %1877 unwind label %1668

1877:                                             ; preds = %1874
  %1878 = getelementptr inbounds %class.S128, ptr %1875, i32 0, i32 0
  %1879 = getelementptr inbounds { i64, i64 }, ptr %1878, i32 0, i32 0
  %1880 = extractvalue { i64, i64 } %1876, 0
  store i64 %1880, ptr %1879, align 8
  %1881 = getelementptr inbounds { i64, i64 }, ptr %1878, i32 0, i32 1
  %1882 = extractvalue { i64, i64 } %1876, 1
  store i64 %1882, ptr %1881, align 8
  %1883 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %186, i32 0, i32 1
  %1884 = load ptr, ptr %162, align 8, !tbaa !5
  %1885 = load i32, ptr %1884, align 4, !tbaa !49
  store i32 %1885, ptr %1883, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %185, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %186)
          to label %1886 unwind label %1668

1886:                                             ; preds = %1877
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %185)
          to label %1887 unwind label %1888

1887:                                             ; preds = %1886
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %185) #9
  store i32 1, ptr %21, align 4
  br label %1989

1888:                                             ; preds = %1886
  %1889 = landingpad { ptr, i32 }
          cleanup
  %1890 = extractvalue { ptr, i32 } %1889, 0
  store ptr %1890, ptr %16, align 8
  %1891 = extractvalue { ptr, i32 } %1889, 1
  store i32 %1891, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %185) #9
  br label %1991

1892:                                             ; preds = %1672
  %1893 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %188, i32 0, i32 0
  %1894 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %1895 unwind label %1668

1895:                                             ; preds = %1892
  %1896 = getelementptr inbounds %class.S128, ptr %1893, i32 0, i32 0
  %1897 = getelementptr inbounds { i64, i64 }, ptr %1896, i32 0, i32 0
  %1898 = extractvalue { i64, i64 } %1894, 0
  store i64 %1898, ptr %1897, align 8
  %1899 = getelementptr inbounds { i64, i64 }, ptr %1896, i32 0, i32 1
  %1900 = extractvalue { i64, i64 } %1894, 1
  store i64 %1900, ptr %1899, align 8
  %1901 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %188, i32 0, i32 1
  %1902 = load ptr, ptr %162, align 8, !tbaa !5
  %1903 = load i32, ptr %1902, align 4, !tbaa !49
  store i32 %1903, ptr %1901, align 8, !tbaa !70
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %187, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %188)
          to label %1904 unwind label %1668

1904:                                             ; preds = %1895
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %187)
          to label %1905 unwind label %1906

1905:                                             ; preds = %1904
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %187) #9
  store i32 1, ptr %21, align 4
  br label %1989

1906:                                             ; preds = %1904
  %1907 = landingpad { ptr, i32 }
          cleanup
  %1908 = extractvalue { ptr, i32 } %1907, 0
  store ptr %1908, ptr %16, align 8
  %1909 = extractvalue { ptr, i32 } %1907, 1
  store i32 %1909, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %187) #9
  br label %1991

1910:                                             ; preds = %1672
  %1911 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %190, i32 0, i32 0
  %1912 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %1913 unwind label %1668

1913:                                             ; preds = %1910
  store double %1912, ptr %1911, align 8, !tbaa !73
  %1914 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %190, i32 0, i32 1
  %1915 = load ptr, ptr %162, align 8, !tbaa !5
  %1916 = load i32, ptr %1915, align 4, !tbaa !49
  store i32 %1916, ptr %1914, align 8, !tbaa !76
  %1917 = getelementptr inbounds { double, i32 }, ptr %190, i32 0, i32 0
  %1918 = load double, ptr %1917, align 8
  %1919 = getelementptr inbounds { double, i32 }, ptr %190, i32 0, i32 1
  %1920 = load i32, ptr %1919, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %189, double %1918, i32 %1920)
          to label %1921 unwind label %1668

1921:                                             ; preds = %1913
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %189)
          to label %1922 unwind label %1923

1922:                                             ; preds = %1921
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %189) #9
  store i32 1, ptr %21, align 4
  br label %1989

1923:                                             ; preds = %1921
  %1924 = landingpad { ptr, i32 }
          cleanup
  %1925 = extractvalue { ptr, i32 } %1924, 0
  store ptr %1925, ptr %16, align 8
  %1926 = extractvalue { ptr, i32 } %1924, 1
  store i32 %1926, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %189) #9
  br label %1991

1927:                                             ; preds = %1672
  %1928 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %192, i32 0, i32 0
  %1929 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1930 unwind label %1668

1930:                                             ; preds = %1927
  store double %1929, ptr %1928, align 8, !tbaa !73
  %1931 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %192, i32 0, i32 1
  %1932 = load ptr, ptr %162, align 8, !tbaa !5
  %1933 = load i32, ptr %1932, align 4, !tbaa !49
  store i32 %1933, ptr %1931, align 8, !tbaa !76
  %1934 = getelementptr inbounds { double, i32 }, ptr %192, i32 0, i32 0
  %1935 = load double, ptr %1934, align 8
  %1936 = getelementptr inbounds { double, i32 }, ptr %192, i32 0, i32 1
  %1937 = load i32, ptr %1936, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %191, double %1935, i32 %1937)
          to label %1938 unwind label %1668

1938:                                             ; preds = %1930
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %191)
          to label %1939 unwind label %1940

1939:                                             ; preds = %1938
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %191) #9
  store i32 1, ptr %21, align 4
  br label %1989

1940:                                             ; preds = %1938
  %1941 = landingpad { ptr, i32 }
          cleanup
  %1942 = extractvalue { ptr, i32 } %1941, 0
  store ptr %1942, ptr %16, align 8
  %1943 = extractvalue { ptr, i32 } %1941, 1
  store i32 %1943, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %191) #9
  br label %1991

1944:                                             ; preds = %1672
  %1945 = getelementptr inbounds %"struct.MIR::Constant::Data_Bool", ptr %194, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %195) #9
  %1946 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %1947 unwind label %1959

1947:                                             ; preds = %1944
  %1948 = getelementptr inbounds { i64, i64 }, ptr %195, i32 0, i32 0
  %1949 = extractvalue { i64, i64 } %1946, 0
  store i64 %1949, ptr %1948, align 8
  %1950 = getelementptr inbounds { i64, i64 }, ptr %195, i32 0, i32 1
  %1951 = extractvalue { i64, i64 } %1946, 1
  store i64 %1951, ptr %1950, align 8
  %1952 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %195, i32 noundef 0)
          to label %1953 unwind label %1959

1953:                                             ; preds = %1947
  %1954 = zext i1 %1952 to i8
  store i8 %1954, ptr %1945, align 1, !tbaa !77
  %1955 = getelementptr inbounds %"struct.MIR::Constant::Data_Bool", ptr %194, i32 0, i32 0
  %1956 = load i8, ptr %1955, align 1
  invoke void @_ZN3MIR8Constant9make_BoolENS0_9Data_BoolE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %193, i8 %1956)
          to label %1957 unwind label %1959

1957:                                             ; preds = %1953
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %193)
          to label %1958 unwind label %1963

1958:                                             ; preds = %1957
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %193) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #9
  store i32 1, ptr %21, align 4
  br label %1989

1959:                                             ; preds = %1953, %1947, %1944
  %1960 = landingpad { ptr, i32 }
          cleanup
  %1961 = extractvalue { ptr, i32 } %1960, 0
  store ptr %1961, ptr %16, align 8
  %1962 = extractvalue { ptr, i32 } %1960, 1
  store i32 %1962, ptr %17, align 4
  br label %1967

1963:                                             ; preds = %1957
  %1964 = landingpad { ptr, i32 }
          cleanup
  %1965 = extractvalue { ptr, i32 } %1964, 0
  store ptr %1965, ptr %16, align 8
  %1966 = extractvalue { ptr, i32 } %1964, 1
  store i32 %1966, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %193) #9
  br label %1967

1967:                                             ; preds = %1963, %1959
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #9
  br label %1991

1968:                                             ; preds = %1672
  br label %1969

1969:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %196, align 8, !tbaa !5
  %1970 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %198) #9
  %1971 = getelementptr inbounds %class.anon.164, ptr %198, i32 0, i32 0
  store ptr %196, ptr %1971, align 8, !tbaa !5
  %1972 = getelementptr inbounds %class.anon.164, ptr %198, i32 0, i32 1
  store ptr %6, ptr %1972, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(16) %198) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1970, ptr noundef %197)
          to label %1973 unwind label %1975

1973:                                             ; preds = %1969
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %198) #9
  %1974 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1974, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1974, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %1979

1975:                                             ; preds = %1969
  %1976 = landingpad { ptr, i32 }
          cleanup
  %1977 = extractvalue { ptr, i32 } %1976, 0
  store ptr %1977, ptr %16, align 8
  %1978 = extractvalue { ptr, i32 } %1976, 1
  store i32 %1978, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %198) #9
  br label %1983

1979:                                             ; preds = %1973
  %1980 = landingpad { ptr, i32 }
          cleanup
  %1981 = extractvalue { ptr, i32 } %1980, 0
  store ptr %1981, ptr %16, align 8
  %1982 = extractvalue { ptr, i32 } %1980, 1
  store i32 %1982, ptr %17, align 4
  br label %1983

1983:                                             ; preds = %1979, %1975
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #9
  br label %1991

1984:                                             ; No predecessors!
  br label %1985

1985:                                             ; preds = %1984
  br label %1986

1986:                                             ; preds = %1985, %1672
  %1987 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1987, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1987, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %1668

1988:                                             ; No predecessors!
  store i8 0, ptr %161, align 1, !tbaa !9
  br label %1663, !llvm.loop !79

1989:                                             ; preds = %1958, %1939, %1922, %1905, %1887, %1869, %1851, %1833, %1815, %1793, %1776, %1759, %1742, %1725, %1708, %1687, %1667
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #9
  %1990 = load i32, ptr %21, align 4
  switch i32 %1990, label %1994 [
    i32 69, label %1992
  ]

1991:                                             ; preds = %1983, %1967, %1940, %1923, %1906, %1888, %1870, %1852, %1834, %1816, %1794, %1777, %1760, %1743, %1726, %1709, %1688, %1668
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #9
  br label %3093

1992:                                             ; preds = %1989
  br label %1993

1993:                                             ; preds = %1992
  store i8 0, ptr %161, align 1, !tbaa !9
  br label %1655, !llvm.loop !80

1994:                                             ; preds = %1989, %1658
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #9
  %1995 = load i32, ptr %21, align 4
  switch i32 %1995, label %3091 [
    i32 66, label %1996
  ]

1996:                                             ; preds = %1994
  br label %3089

1997:                                             ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %199) #9
  store i8 1, ptr %199, align 1, !tbaa !9
  br label %1998

1998:                                             ; preds = %2145, %1997
  %1999 = load i8, ptr %199, align 1, !tbaa !9, !range !11, !noundef !12
  %2000 = trunc i8 %1999 to i1
  br i1 %2000, label %2002, label %2001

2001:                                             ; preds = %1998
  store i32 75, ptr %21, align 4
  br label %2146

2002:                                             ; preds = %1998
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #9
  %2003 = load ptr, ptr %22, align 8, !tbaa !5
  %2004 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2003)
          to label %2005 unwind label %2011

2005:                                             ; preds = %2002
  store ptr %2004, ptr %200, align 8, !tbaa !5
  br label %2006

2006:                                             ; preds = %2140, %2005
  %2007 = load ptr, ptr %200, align 8, !tbaa !5
  %2008 = load i8, ptr %199, align 1, !tbaa !9, !range !11, !noundef !12
  %2009 = trunc i8 %2008 to i1
  br i1 %2009, label %2015, label %2010

2010:                                             ; preds = %2006
  store i32 78, ptr %21, align 4
  br label %2141

2011:                                             ; preds = %2015, %2002
  %2012 = landingpad { ptr, i32 }
          cleanup
  %2013 = extractvalue { ptr, i32 } %2012, 0
  store ptr %2013, ptr %16, align 8
  %2014 = extractvalue { ptr, i32 } %2012, 1
  store i32 %2014, ptr %17, align 4
  br label %2143

2015:                                             ; preds = %2006
  %2016 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %2017 unwind label %2011

2017:                                             ; preds = %2015
  %2018 = icmp ne ptr %2016, null
  br i1 %2018, label %2019, label %2080

2019:                                             ; preds = %2017
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #9
  %2020 = load ptr, ptr %200, align 8, !tbaa !5
  %2021 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2020, i32 0, i32 0
  %2022 = load i32, ptr %2021, align 8, !tbaa !81
  %2023 = load ptr, ptr %200, align 8, !tbaa !5
  %2024 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2023, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %202, ptr noundef nonnull align 8 dereferenceable(8) %2024)
          to label %2025 unwind label %2040

2025:                                             ; preds = %2019
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %201, i32 noundef %2022, ptr noundef %202)
          to label %2026 unwind label %2044

2026:                                             ; preds = %2025
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr %203) #9
  %2027 = load ptr, ptr %9, align 8, !tbaa !5
  %2028 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %204, ptr align 8 %3, i64 24, i1 false), !tbaa.struct !60
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %205, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %2029 unwind label %2048

2029:                                             ; preds = %2026
  %2030 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %206, ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %203, ptr noundef nonnull align 8 dereferenceable(120) %2027, ptr noundef nonnull align 8 dereferenceable(40) %2028, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %204, ptr noundef %205, ptr noundef nonnull align 8 dereferenceable(144) %2030, ptr noundef %206)
          to label %2031 unwind label %2052

2031:                                             ; preds = %2029
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %206) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %207) #9
  %2032 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %2033 unwind label %2056

2033:                                             ; preds = %2031
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %209, ptr noundef nonnull align 8 dereferenceable(112) %203) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %207, ptr noundef nonnull align 8 dereferenceable(40) %2032, ptr noundef %208, ptr noundef %209)
          to label %2034 unwind label %2060

2034:                                             ; preds = %2033
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %209) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #9
  %2035 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %210, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2035, ptr noundef nonnull align 8 dereferenceable(32) %207)
          to label %2036 unwind label %2064

2036:                                             ; preds = %2034
  %2037 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %210, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2037, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %2038 unwind label %2068

2038:                                             ; preds = %2036
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %210)
          to label %2039 unwind label %2072

2039:                                             ; preds = %2038
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %210) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %203) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %203) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #9
  br label %2141

2040:                                             ; preds = %2019
  %2041 = landingpad { ptr, i32 }
          cleanup
  %2042 = extractvalue { ptr, i32 } %2041, 0
  store ptr %2042, ptr %16, align 8
  %2043 = extractvalue { ptr, i32 } %2041, 1
  store i32 %2043, ptr %17, align 4
  br label %2079

2044:                                             ; preds = %2025
  %2045 = landingpad { ptr, i32 }
          cleanup
  %2046 = extractvalue { ptr, i32 } %2045, 0
  store ptr %2046, ptr %16, align 8
  %2047 = extractvalue { ptr, i32 } %2045, 1
  store i32 %2047, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #9
  br label %2079

2048:                                             ; preds = %2026
  %2049 = landingpad { ptr, i32 }
          cleanup
  %2050 = extractvalue { ptr, i32 } %2049, 0
  store ptr %2050, ptr %16, align 8
  %2051 = extractvalue { ptr, i32 } %2049, 1
  store i32 %2051, ptr %17, align 4
  br label %2078

2052:                                             ; preds = %2029
  %2053 = landingpad { ptr, i32 }
          cleanup
  %2054 = extractvalue { ptr, i32 } %2053, 0
  store ptr %2054, ptr %16, align 8
  %2055 = extractvalue { ptr, i32 } %2053, 1
  store i32 %2055, ptr %17, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %206) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #9
  br label %2078

2056:                                             ; preds = %2031
  %2057 = landingpad { ptr, i32 }
          cleanup
  %2058 = extractvalue { ptr, i32 } %2057, 0
  store ptr %2058, ptr %16, align 8
  %2059 = extractvalue { ptr, i32 } %2057, 1
  store i32 %2059, ptr %17, align 4
  br label %2077

2060:                                             ; preds = %2033
  %2061 = landingpad { ptr, i32 }
          cleanup
  %2062 = extractvalue { ptr, i32 } %2061, 0
  store ptr %2062, ptr %16, align 8
  %2063 = extractvalue { ptr, i32 } %2061, 1
  store i32 %2063, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %209) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #9
  br label %2077

2064:                                             ; preds = %2034
  %2065 = landingpad { ptr, i32 }
          cleanup
  %2066 = extractvalue { ptr, i32 } %2065, 0
  store ptr %2066, ptr %16, align 8
  %2067 = extractvalue { ptr, i32 } %2065, 1
  store i32 %2067, ptr %17, align 4
  br label %2076

2068:                                             ; preds = %2036
  %2069 = landingpad { ptr, i32 }
          cleanup
  %2070 = extractvalue { ptr, i32 } %2069, 0
  store ptr %2070, ptr %16, align 8
  %2071 = extractvalue { ptr, i32 } %2069, 1
  store i32 %2071, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2035) #9
  br label %2076

2072:                                             ; preds = %2038
  %2073 = landingpad { ptr, i32 }
          cleanup
  %2074 = extractvalue { ptr, i32 } %2073, 0
  store ptr %2074, ptr %16, align 8
  %2075 = extractvalue { ptr, i32 } %2073, 1
  store i32 %2075, ptr %17, align 4
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %210) #9
  br label %2076

2076:                                             ; preds = %2072, %2068, %2064
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  br label %2077

2077:                                             ; preds = %2076, %2060, %2056
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %203) #9
  br label %2078

2078:                                             ; preds = %2077, %2052, %2048
  call void @llvm.lifetime.end.p0(i64 112, ptr %203) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  br label %2079

2079:                                             ; preds = %2078, %2044, %2040
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #9
  br label %2143

2080:                                             ; preds = %2017
  call void @llvm.lifetime.start.p0(i64 16, ptr %211) #9
  %2081 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2082 unwind label %2103

2082:                                             ; preds = %2080
  %2083 = udiv i32 %2081, 8
  %2084 = zext i32 %2083 to i64
  %2085 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %2084)
          to label %2086 unwind label %2103

2086:                                             ; preds = %2082
  %2087 = getelementptr inbounds { i64, i64 }, ptr %211, i32 0, i32 0
  %2088 = extractvalue { i64, i64 } %2085, 0
  store i64 %2088, ptr %2087, align 8
  %2089 = getelementptr inbounds { i64, i64 }, ptr %211, i32 0, i32 1
  %2090 = extractvalue { i64, i64 } %2085, 1
  store i64 %2090, ptr %2089, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %212) #9
  %2091 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %213, i32 noundef 0)
          to label %2092 unwind label %2107

2092:                                             ; preds = %2086
  %2093 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %216, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2093, ptr align 8 %211, i64 16, i1 false), !tbaa.struct !84
  %2094 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %216, i32 0, i32 1
  store i32 0, ptr %2094, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %215, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %216)
          to label %2095 unwind label %2111

2095:                                             ; preds = %2092
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %214, ptr noundef %215)
          to label %2096 unwind label %2115

2096:                                             ; preds = %2095
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %212, ptr noundef nonnull align 8 dereferenceable(40) %2091, ptr noundef %213, ptr noundef %214)
          to label %2097 unwind label %2119

2097:                                             ; preds = %2096
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %214) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %215) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #9
  %2098 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %217, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2098, ptr noundef nonnull align 8 dereferenceable(32) %212)
          to label %2099 unwind label %2125

2099:                                             ; preds = %2097
  %2100 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %217, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2100, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %2101 unwind label %2129

2101:                                             ; preds = %2099
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %217)
          to label %2102 unwind label %2133

2102:                                             ; preds = %2101
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %212) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %211) #9
  br label %2141

2103:                                             ; preds = %2082, %2080
  %2104 = landingpad { ptr, i32 }
          cleanup
  %2105 = extractvalue { ptr, i32 } %2104, 0
  store ptr %2105, ptr %16, align 8
  %2106 = extractvalue { ptr, i32 } %2104, 1
  store i32 %2106, ptr %17, align 4
  br label %2139

2107:                                             ; preds = %2086
  %2108 = landingpad { ptr, i32 }
          cleanup
  %2109 = extractvalue { ptr, i32 } %2108, 0
  store ptr %2109, ptr %16, align 8
  %2110 = extractvalue { ptr, i32 } %2108, 1
  store i32 %2110, ptr %17, align 4
  br label %2138

2111:                                             ; preds = %2092
  %2112 = landingpad { ptr, i32 }
          cleanup
  %2113 = extractvalue { ptr, i32 } %2112, 0
  store ptr %2113, ptr %16, align 8
  %2114 = extractvalue { ptr, i32 } %2112, 1
  store i32 %2114, ptr %17, align 4
  br label %2124

2115:                                             ; preds = %2095
  %2116 = landingpad { ptr, i32 }
          cleanup
  %2117 = extractvalue { ptr, i32 } %2116, 0
  store ptr %2117, ptr %16, align 8
  %2118 = extractvalue { ptr, i32 } %2116, 1
  store i32 %2118, ptr %17, align 4
  br label %2123

2119:                                             ; preds = %2096
  %2120 = landingpad { ptr, i32 }
          cleanup
  %2121 = extractvalue { ptr, i32 } %2120, 0
  store ptr %2121, ptr %16, align 8
  %2122 = extractvalue { ptr, i32 } %2120, 1
  store i32 %2122, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %214) #9
  br label %2123

2123:                                             ; preds = %2119, %2115
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %215) #9
  br label %2124

2124:                                             ; preds = %2123, %2111
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #9
  br label %2138

2125:                                             ; preds = %2097
  %2126 = landingpad { ptr, i32 }
          cleanup
  %2127 = extractvalue { ptr, i32 } %2126, 0
  store ptr %2127, ptr %16, align 8
  %2128 = extractvalue { ptr, i32 } %2126, 1
  store i32 %2128, ptr %17, align 4
  br label %2137

2129:                                             ; preds = %2099
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %16, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2098) #9
  br label %2137

2133:                                             ; preds = %2101
  %2134 = landingpad { ptr, i32 }
          cleanup
  %2135 = extractvalue { ptr, i32 } %2134, 0
  store ptr %2135, ptr %16, align 8
  %2136 = extractvalue { ptr, i32 } %2134, 1
  store i32 %2136, ptr %17, align 4
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  br label %2137

2137:                                             ; preds = %2133, %2129, %2125
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #9
  br label %2138

2138:                                             ; preds = %2137, %2124, %2107
  call void @llvm.lifetime.end.p0(i64 32, ptr %212) #9
  br label %2139

2139:                                             ; preds = %2138, %2103
  call void @llvm.lifetime.end.p0(i64 16, ptr %211) #9
  br label %2143

2140:                                             ; No predecessors!
  store i8 0, ptr %199, align 1, !tbaa !9
  br label %2006, !llvm.loop !85

2141:                                             ; preds = %2102, %2039, %2010
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  %2142 = load i32, ptr %21, align 4
  switch i32 %2142, label %2146 [
    i32 78, label %2144
  ]

2143:                                             ; preds = %2139, %2079, %2011
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %199) #9
  br label %3093

2144:                                             ; preds = %2141
  br label %2145

2145:                                             ; preds = %2144
  store i8 0, ptr %199, align 1, !tbaa !9
  br label %1998, !llvm.loop !86

2146:                                             ; preds = %2141, %2001
  call void @llvm.lifetime.end.p0(i64 1, ptr %199) #9
  %2147 = load i32, ptr %21, align 4
  switch i32 %2147, label %3091 [
    i32 75, label %2148
  ]

2148:                                             ; preds = %2146
  br label %3089

2149:                                             ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #9
  store i8 1, ptr %218, align 1, !tbaa !9
  br label %2150

2150:                                             ; preds = %2997, %2149
  %2151 = load i8, ptr %218, align 1, !tbaa !9, !range !11, !noundef !12
  %2152 = trunc i8 %2151 to i1
  br i1 %2152, label %2154, label %2153

2153:                                             ; preds = %2150
  store i32 81, ptr %21, align 4
  br label %2998

2154:                                             ; preds = %2150
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #9
  %2155 = load ptr, ptr %22, align 8, !tbaa !5
  %2156 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %2155)
          to label %2157 unwind label %2163

2157:                                             ; preds = %2154
  store ptr %2156, ptr %219, align 8, !tbaa !5
  br label %2158

2158:                                             ; preds = %2990, %2157
  %2159 = load ptr, ptr %219, align 8, !tbaa !5
  %2160 = load i8, ptr %218, align 1, !tbaa !9, !range !11, !noundef !12
  %2161 = trunc i8 %2160 to i1
  br i1 %2161, label %2167, label %2162

2162:                                             ; preds = %2158
  store i32 84, ptr %21, align 4
  br label %2993

2163:                                             ; preds = %2154
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %16, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %17, align 4
  br label %2995

2167:                                             ; preds = %2158
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #9
  %2168 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %2169 unwind label %2187

2169:                                             ; preds = %2167
  store ptr %2168, ptr %220, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %221) #9
  %2170 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2171 unwind label %2191

2171:                                             ; preds = %2169
  %2172 = udiv i32 %2170, 8
  %2173 = zext i32 %2172 to i64
  %2174 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %2173)
          to label %2175 unwind label %2191

2175:                                             ; preds = %2171
  %2176 = getelementptr inbounds { i64, i64 }, ptr %221, i32 0, i32 0
  %2177 = extractvalue { i64, i64 } %2174, 0
  store i64 %2177, ptr %2176, align 8
  %2178 = getelementptr inbounds { i64, i64 }, ptr %221, i32 0, i32 1
  %2179 = extractvalue { i64, i64 } %2174, 1
  store i64 %2179, ptr %2178, align 8
  br label %2180

2180:                                             ; preds = %2175
  %2181 = invoke noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16) %221, i32 noundef 4096)
          to label %2182 unwind label %2191

2182:                                             ; preds = %2180
  br i1 %2181, label %2199, label %2183

2183:                                             ; preds = %2182
  %2184 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #9
  %2185 = getelementptr inbounds %class.anon.165, ptr %223, i32 0, i32 0
  store ptr %221, ptr %2185, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef nonnull align 8 dereferenceable(8) %223) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2184, ptr noundef %222)
          to label %2186 unwind label %2195

2186:                                             ; preds = %2183
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #9
  br label %2199

2187:                                             ; preds = %2167
  %2188 = landingpad { ptr, i32 }
          cleanup
  %2189 = extractvalue { ptr, i32 } %2188, 0
  store ptr %2189, ptr %16, align 8
  %2190 = extractvalue { ptr, i32 } %2188, 1
  store i32 %2190, ptr %17, align 4
  br label %2992

2191:                                             ; preds = %2814, %2761, %2757, %2754, %2750, %2673, %2669, %2666, %2662, %2180, %2171, %2169
  %2192 = landingpad { ptr, i32 }
          cleanup
  %2193 = extractvalue { ptr, i32 } %2192, 0
  store ptr %2193, ptr %16, align 8
  %2194 = extractvalue { ptr, i32 } %2192, 1
  store i32 %2194, ptr %17, align 4
  br label %2991

2195:                                             ; preds = %2183
  %2196 = landingpad { ptr, i32 }
          cleanup
  %2197 = extractvalue { ptr, i32 } %2196, 0
  store ptr %2197, ptr %16, align 8
  %2198 = extractvalue { ptr, i32 } %2196, 1
  store i32 %2198, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #9
  br label %2991

2199:                                             ; preds = %2186, %2182
  br label %2200

2200:                                             ; preds = %2199
  br label %2201

2201:                                             ; preds = %2200
  %2202 = load ptr, ptr %220, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.Reloc, ptr %2202, i32 0, i32 2
  %2204 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %2203) #9
  br i1 %2204, label %2205, label %2662

2205:                                             ; preds = %2201
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #9
  %2206 = load ptr, ptr %220, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.Reloc, ptr %2206, i32 0, i32 2
  %2208 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2207) #9
  store ptr %2208, ptr %224, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %225) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr %227) #9
  %2209 = load ptr, ptr %12, align 8, !tbaa !5
  %2210 = load ptr, ptr %9, align 8, !tbaa !5
  %2211 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2210, i32 0, i32 1
  %2212 = load ptr, ptr %2211, align 8, !tbaa !15
  %2213 = load ptr, ptr %224, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %227, ptr noundef nonnull align 8 dereferenceable(96) %2209, ptr noundef nonnull align 8 dereferenceable(8) %2212, ptr noundef nonnull align 8 dereferenceable(88) %2213, i1 noundef zeroext true)
          to label %2214 unwind label %2232

2214:                                             ; preds = %2205
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.76") align 8 %226, ptr noundef nonnull align 8 dereferenceable(88) %227)
          to label %2215 unwind label %2236

2215:                                             ; preds = %2214
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %225, ptr noundef %226)
          to label %2216 unwind label %2240

2216:                                             ; preds = %2215
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %227) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %227) #9
  br label %2217

2217:                                             ; preds = %2216
  %2218 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2219 unwind label %2246

2219:                                             ; preds = %2217
  br i1 %2218, label %2220, label %2250

2220:                                             ; preds = %2219
  %2221 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %2222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2221, ptr noundef @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %2223 unwind label %2246

2223:                                             ; preds = %2220
  %2224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2222, ptr noundef @.str.9)
          to label %2225 unwind label %2246

2225:                                             ; preds = %2223
  %2226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(8) %2224, ptr noundef nonnull align 8 dereferenceable(40) %225)
          to label %2227 unwind label %2246

2227:                                             ; preds = %2225
  %2228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2226, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2229 unwind label %2246

2229:                                             ; preds = %2227
  %2230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2228, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2231 unwind label %2246

2231:                                             ; preds = %2229
  br label %2250

2232:                                             ; preds = %2205
  %2233 = landingpad { ptr, i32 }
          cleanup
  %2234 = extractvalue { ptr, i32 } %2233, 0
  store ptr %2234, ptr %16, align 8
  %2235 = extractvalue { ptr, i32 } %2233, 1
  store i32 %2235, ptr %17, align 4
  br label %2245

2236:                                             ; preds = %2214
  %2237 = landingpad { ptr, i32 }
          cleanup
  %2238 = extractvalue { ptr, i32 } %2237, 0
  store ptr %2238, ptr %16, align 8
  %2239 = extractvalue { ptr, i32 } %2237, 1
  store i32 %2239, ptr %17, align 4
  br label %2244

2240:                                             ; preds = %2215
  %2241 = landingpad { ptr, i32 }
          cleanup
  %2242 = extractvalue { ptr, i32 } %2241, 0
  store ptr %2242, ptr %16, align 8
  %2243 = extractvalue { ptr, i32 } %2241, 1
  store i32 %2243, ptr %17, align 4
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %226) #9
  br label %2244

2244:                                             ; preds = %2240, %2236
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %227) #9
  br label %2245

2245:                                             ; preds = %2244, %2232
  call void @llvm.lifetime.end.p0(i64 88, ptr %227) #9
  br label %2661

2246:                                             ; preds = %2229, %2227, %2225, %2223, %2220, %2217
  %2247 = landingpad { ptr, i32 }
          cleanup
  %2248 = extractvalue { ptr, i32 } %2247, 0
  store ptr %2248, ptr %16, align 8
  %2249 = extractvalue { ptr, i32 } %2247, 1
  store i32 %2249, ptr %17, align 4
  br label %2660

2250:                                             ; preds = %2231, %2219
  br label %2251

2251:                                             ; preds = %2250
  br label %2252

2252:                                             ; preds = %2251
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228)
          to label %2253 unwind label %2269

2253:                                             ; preds = %2252
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #9
  %2254 = load ptr, ptr %9, align 8, !tbaa !5
  %2255 = load ptr, ptr %224, align 8, !tbaa !5
  %2256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_static_typeERN3HIR7TypeRefERKNS1_4PathE(ptr noundef nonnull align 8 dereferenceable(120) %2254, ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(88) %2255)
          to label %2257 unwind label %2273

2257:                                             ; preds = %2253
  store ptr %2256, ptr %229, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %230) #9
  %2258 = load ptr, ptr %9, align 8, !tbaa !5
  %2259 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2258, i32 0, i32 2
  %2260 = load ptr, ptr %2259, align 8, !tbaa !20
  %2261 = load ptr, ptr %9, align 8, !tbaa !5
  %2262 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2261, i32 0, i32 1
  %2263 = load ptr, ptr %2262, align 8, !tbaa !15
  %2264 = load ptr, ptr %219, align 8, !tbaa !5
  %2265 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2264, i32 0, i32 2
  %2266 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %2260, ptr noundef nonnull align 8 dereferenceable(8) %2263, ptr noundef nonnull align 8 dereferenceable(8) %2265, i1 noundef zeroext false)
          to label %2267 unwind label %2277

2267:                                             ; preds = %2257
  store i32 %2266, ptr %230, align 4, !tbaa !87
  %2268 = load i32, ptr %230, align 4, !tbaa !87
  switch i32 %2268, label %2653 [
    i32 1, label %2281
    i32 3, label %2456
    i32 4, label %2542
    i32 0, label %2623
    i32 2, label %2642
  ]

2269:                                             ; preds = %2252
  %2270 = landingpad { ptr, i32 }
          cleanup
  %2271 = extractvalue { ptr, i32 } %2270, 0
  store ptr %2271, ptr %16, align 8
  %2272 = extractvalue { ptr, i32 } %2270, 1
  store i32 %2272, ptr %17, align 4
  br label %2659

2273:                                             ; preds = %2253
  %2274 = landingpad { ptr, i32 }
          cleanup
  %2275 = extractvalue { ptr, i32 } %2274, 0
  store ptr %2275, ptr %16, align 8
  %2276 = extractvalue { ptr, i32 } %2274, 1
  store i32 %2276, ptr %17, align 4
  br label %2658

2277:                                             ; preds = %2645, %2460, %2457, %2281, %2257
  %2278 = landingpad { ptr, i32 }
          cleanup
  %2279 = extractvalue { ptr, i32 } %2278, 0
  store ptr %2279, ptr %16, align 8
  %2280 = extractvalue { ptr, i32 } %2278, 1
  store i32 %2280, ptr %17, align 4
  br label %2657

2281:                                             ; preds = %2267
  %2282 = load ptr, ptr %229, align 8, !tbaa !5
  %2283 = load ptr, ptr %219, align 8, !tbaa !5
  %2284 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2283, i32 0, i32 2
  %2285 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2282, ptr noundef nonnull align 8 dereferenceable(8) %2284)
          to label %2286 unwind label %2277

2286:                                             ; preds = %2281
  br i1 %2285, label %2287, label %2450

2287:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #9
  %2288 = load ptr, ptr %10, align 8, !tbaa !5
  %2289 = load ptr, ptr %219, align 8, !tbaa !5
  %2290 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2289, i32 0, i32 1
  %2291 = load i32, ptr %2290, align 4, !tbaa !89
  %2292 = load ptr, ptr %229, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %233, ptr noundef nonnull align 8 dereferenceable(8) %2292)
          to label %2293 unwind label %2343

2293:                                             ; preds = %2287
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %232, i32 noundef %2291, ptr noundef %233)
          to label %2294 unwind label %2347

2294:                                             ; preds = %2293
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %235, ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %234, ptr noundef %235)
          to label %2295 unwind label %2351

2295:                                             ; preds = %2294
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %231, ptr noundef nonnull align 8 dereferenceable(40) %2288, ptr noundef %232, ptr noundef %234)
          to label %2296 unwind label %2355

2296:                                             ; preds = %2295
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %234) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %235) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %236) #9
  %2297 = load ptr, ptr %10, align 8, !tbaa !5
  %2298 = load ptr, ptr %219, align 8, !tbaa !5
  %2299 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2298, i32 0, i32 1
  %2300 = load i32, ptr %2299, align 4, !tbaa !89
  %2301 = load ptr, ptr %229, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %238, ptr noundef nonnull align 8 dereferenceable(8) %2301)
          to label %2302 unwind label %2361

2302:                                             ; preds = %2296
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %237, i32 noundef %2300, ptr noundef %238)
          to label %2303 unwind label %2365

2303:                                             ; preds = %2302
  %2304 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %240, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2304, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %2305 unwind label %2369

2305:                                             ; preds = %2303
  store i1 true, ptr %242, align 1
  %2306 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %240, i32 0, i32 1
  %2307 = load ptr, ptr %219, align 8, !tbaa !5
  %2308 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2307, i32 0, i32 1
  %2309 = load i32, ptr %2308, align 4, !tbaa !89
  %2310 = load ptr, ptr %229, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %241, ptr noundef nonnull align 8 dereferenceable(8) %2310)
          to label %2311 unwind label %2373

2311:                                             ; preds = %2305
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %2306, i32 noundef %2309, ptr noundef %241)
          to label %2312 unwind label %2377

2312:                                             ; preds = %2311
  store i1 false, ptr %242, align 1
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %239, ptr noundef %240)
          to label %2313 unwind label %2381

2313:                                             ; preds = %2312
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %236, ptr noundef nonnull align 8 dereferenceable(40) %2297, ptr noundef %237, ptr noundef %239)
          to label %2314 unwind label %2385

2314:                                             ; preds = %2313
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %239) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %240) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %243) #9
  %2315 = load ptr, ptr %10, align 8, !tbaa !5
  %2316 = load ptr, ptr %219, align 8, !tbaa !5
  %2317 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2316, i32 0, i32 1
  %2318 = load i32, ptr %2317, align 4, !tbaa !89
  %2319 = load ptr, ptr %219, align 8, !tbaa !5
  %2320 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2319, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %245, ptr noundef nonnull align 8 dereferenceable(8) %2320)
          to label %2321 unwind label %2397

2321:                                             ; preds = %2314
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %244, i32 noundef %2318, ptr noundef %245)
          to label %2322 unwind label %2401

2322:                                             ; preds = %2321
  %2323 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %247, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2323, ptr noundef nonnull align 8 dereferenceable(32) %236)
          to label %2324 unwind label %2405

2324:                                             ; preds = %2322
  store i1 true, ptr %249, align 1
  %2325 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %247, i32 0, i32 1
  %2326 = load ptr, ptr %219, align 8, !tbaa !5
  %2327 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2326, i32 0, i32 1
  %2328 = load i32, ptr %2327, align 4, !tbaa !89
  %2329 = load ptr, ptr %219, align 8, !tbaa !5
  %2330 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2329, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %248, ptr noundef nonnull align 8 dereferenceable(8) %2330)
          to label %2331 unwind label %2409

2331:                                             ; preds = %2324
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %2325, i32 noundef %2328, ptr noundef %248)
          to label %2332 unwind label %2413

2332:                                             ; preds = %2331
  store i1 false, ptr %249, align 1
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %246, ptr noundef %247)
          to label %2333 unwind label %2417

2333:                                             ; preds = %2332
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %243, ptr noundef nonnull align 8 dereferenceable(40) %2315, ptr noundef %244, ptr noundef %246)
          to label %2334 unwind label %2421

2334:                                             ; preds = %2333
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %246) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %247) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #9
  %2335 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %250, i32 0, i32 0
  %2336 = load ptr, ptr %219, align 8, !tbaa !5
  %2337 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2336, i32 0, i32 1
  %2338 = load i32, ptr %2337, align 4, !tbaa !89
  store i32 %2338, ptr %2335, align 8, !tbaa !92
  %2339 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %250, i32 0, i32 1
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef nonnull align 8 dereferenceable(32) %243)
          to label %2340 unwind label %2433

2340:                                             ; preds = %2334
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %2339, ptr noundef %251)
          to label %2341 unwind label %2437

2341:                                             ; preds = %2340
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %250)
          to label %2342 unwind label %2441

2342:                                             ; preds = %2341
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %250) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %236) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #9
  br label %2654

2343:                                             ; preds = %2287
  %2344 = landingpad { ptr, i32 }
          cleanup
  %2345 = extractvalue { ptr, i32 } %2344, 0
  store ptr %2345, ptr %16, align 8
  %2346 = extractvalue { ptr, i32 } %2344, 1
  store i32 %2346, ptr %17, align 4
  br label %2449

2347:                                             ; preds = %2293
  %2348 = landingpad { ptr, i32 }
          cleanup
  %2349 = extractvalue { ptr, i32 } %2348, 0
  store ptr %2349, ptr %16, align 8
  %2350 = extractvalue { ptr, i32 } %2348, 1
  store i32 %2350, ptr %17, align 4
  br label %2360

2351:                                             ; preds = %2294
  %2352 = landingpad { ptr, i32 }
          cleanup
  %2353 = extractvalue { ptr, i32 } %2352, 0
  store ptr %2353, ptr %16, align 8
  %2354 = extractvalue { ptr, i32 } %2352, 1
  store i32 %2354, ptr %17, align 4
  br label %2359

2355:                                             ; preds = %2295
  %2356 = landingpad { ptr, i32 }
          cleanup
  %2357 = extractvalue { ptr, i32 } %2356, 0
  store ptr %2357, ptr %16, align 8
  %2358 = extractvalue { ptr, i32 } %2356, 1
  store i32 %2358, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %234) #9
  br label %2359

2359:                                             ; preds = %2355, %2351
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %235) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #9
  br label %2360

2360:                                             ; preds = %2359, %2347
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #9
  br label %2449

2361:                                             ; preds = %2296
  %2362 = landingpad { ptr, i32 }
          cleanup
  %2363 = extractvalue { ptr, i32 } %2362, 0
  store ptr %2363, ptr %16, align 8
  %2364 = extractvalue { ptr, i32 } %2362, 1
  store i32 %2364, ptr %17, align 4
  br label %2448

2365:                                             ; preds = %2302
  %2366 = landingpad { ptr, i32 }
          cleanup
  %2367 = extractvalue { ptr, i32 } %2366, 0
  store ptr %2367, ptr %16, align 8
  %2368 = extractvalue { ptr, i32 } %2366, 1
  store i32 %2368, ptr %17, align 4
  br label %2396

2369:                                             ; preds = %2303
  %2370 = landingpad { ptr, i32 }
          cleanup
  %2371 = extractvalue { ptr, i32 } %2370, 0
  store ptr %2371, ptr %16, align 8
  %2372 = extractvalue { ptr, i32 } %2370, 1
  store i32 %2372, ptr %17, align 4
  br label %2395

2373:                                             ; preds = %2305
  %2374 = landingpad { ptr, i32 }
          cleanup
  %2375 = extractvalue { ptr, i32 } %2374, 0
  store ptr %2375, ptr %16, align 8
  %2376 = extractvalue { ptr, i32 } %2374, 1
  store i32 %2376, ptr %17, align 4
  br label %2391

2377:                                             ; preds = %2311
  %2378 = landingpad { ptr, i32 }
          cleanup
  %2379 = extractvalue { ptr, i32 } %2378, 0
  store ptr %2379, ptr %16, align 8
  %2380 = extractvalue { ptr, i32 } %2378, 1
  store i32 %2380, ptr %17, align 4
  br label %2390

2381:                                             ; preds = %2312
  %2382 = landingpad { ptr, i32 }
          cleanup
  %2383 = extractvalue { ptr, i32 } %2382, 0
  store ptr %2383, ptr %16, align 8
  %2384 = extractvalue { ptr, i32 } %2382, 1
  store i32 %2384, ptr %17, align 4
  br label %2389

2385:                                             ; preds = %2313
  %2386 = landingpad { ptr, i32 }
          cleanup
  %2387 = extractvalue { ptr, i32 } %2386, 0
  store ptr %2387, ptr %16, align 8
  %2388 = extractvalue { ptr, i32 } %2386, 1
  store i32 %2388, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %239) #9
  br label %2389

2389:                                             ; preds = %2385, %2381
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %240) #9
  br label %2390

2390:                                             ; preds = %2389, %2377
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  br label %2391

2391:                                             ; preds = %2390, %2373
  %2392 = load i1, ptr %242, align 1
  br i1 %2392, label %2393, label %2394

2393:                                             ; preds = %2391
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2304) #9
  br label %2394

2394:                                             ; preds = %2393, %2391
  br label %2395

2395:                                             ; preds = %2394, %2369
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #9
  br label %2396

2396:                                             ; preds = %2395, %2365
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %238) #9
  br label %2448

2397:                                             ; preds = %2314
  %2398 = landingpad { ptr, i32 }
          cleanup
  %2399 = extractvalue { ptr, i32 } %2398, 0
  store ptr %2399, ptr %16, align 8
  %2400 = extractvalue { ptr, i32 } %2398, 1
  store i32 %2400, ptr %17, align 4
  br label %2447

2401:                                             ; preds = %2321
  %2402 = landingpad { ptr, i32 }
          cleanup
  %2403 = extractvalue { ptr, i32 } %2402, 0
  store ptr %2403, ptr %16, align 8
  %2404 = extractvalue { ptr, i32 } %2402, 1
  store i32 %2404, ptr %17, align 4
  br label %2432

2405:                                             ; preds = %2322
  %2406 = landingpad { ptr, i32 }
          cleanup
  %2407 = extractvalue { ptr, i32 } %2406, 0
  store ptr %2407, ptr %16, align 8
  %2408 = extractvalue { ptr, i32 } %2406, 1
  store i32 %2408, ptr %17, align 4
  br label %2431

2409:                                             ; preds = %2324
  %2410 = landingpad { ptr, i32 }
          cleanup
  %2411 = extractvalue { ptr, i32 } %2410, 0
  store ptr %2411, ptr %16, align 8
  %2412 = extractvalue { ptr, i32 } %2410, 1
  store i32 %2412, ptr %17, align 4
  br label %2427

2413:                                             ; preds = %2331
  %2414 = landingpad { ptr, i32 }
          cleanup
  %2415 = extractvalue { ptr, i32 } %2414, 0
  store ptr %2415, ptr %16, align 8
  %2416 = extractvalue { ptr, i32 } %2414, 1
  store i32 %2416, ptr %17, align 4
  br label %2426

2417:                                             ; preds = %2332
  %2418 = landingpad { ptr, i32 }
          cleanup
  %2419 = extractvalue { ptr, i32 } %2418, 0
  store ptr %2419, ptr %16, align 8
  %2420 = extractvalue { ptr, i32 } %2418, 1
  store i32 %2420, ptr %17, align 4
  br label %2425

2421:                                             ; preds = %2333
  %2422 = landingpad { ptr, i32 }
          cleanup
  %2423 = extractvalue { ptr, i32 } %2422, 0
  store ptr %2423, ptr %16, align 8
  %2424 = extractvalue { ptr, i32 } %2422, 1
  store i32 %2424, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %246) #9
  br label %2425

2425:                                             ; preds = %2421, %2417
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %247) #9
  br label %2426

2426:                                             ; preds = %2425, %2413
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %248) #9
  br label %2427

2427:                                             ; preds = %2426, %2409
  %2428 = load i1, ptr %249, align 1
  br i1 %2428, label %2429, label %2430

2429:                                             ; preds = %2427
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2323) #9
  br label %2430

2430:                                             ; preds = %2429, %2427
  br label %2431

2431:                                             ; preds = %2430, %2405
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  br label %2432

2432:                                             ; preds = %2431, %2401
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #9
  br label %2447

2433:                                             ; preds = %2334
  %2434 = landingpad { ptr, i32 }
          cleanup
  %2435 = extractvalue { ptr, i32 } %2434, 0
  store ptr %2435, ptr %16, align 8
  %2436 = extractvalue { ptr, i32 } %2434, 1
  store i32 %2436, ptr %17, align 4
  br label %2446

2437:                                             ; preds = %2340
  %2438 = landingpad { ptr, i32 }
          cleanup
  %2439 = extractvalue { ptr, i32 } %2438, 0
  store ptr %2439, ptr %16, align 8
  %2440 = extractvalue { ptr, i32 } %2438, 1
  store i32 %2440, ptr %17, align 4
  br label %2445

2441:                                             ; preds = %2341
  %2442 = landingpad { ptr, i32 }
          cleanup
  %2443 = extractvalue { ptr, i32 } %2442, 0
  store ptr %2443, ptr %16, align 8
  %2444 = extractvalue { ptr, i32 } %2442, 1
  store i32 %2444, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %250) #9
  br label %2445

2445:                                             ; preds = %2441, %2437
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  br label %2446

2446:                                             ; preds = %2445, %2433
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #9
  br label %2447

2447:                                             ; preds = %2446, %2432, %2397
  call void @llvm.lifetime.end.p0(i64 32, ptr %243) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  br label %2448

2448:                                             ; preds = %2447, %2396, %2361
  call void @llvm.lifetime.end.p0(i64 32, ptr %236) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #9
  br label %2449

2449:                                             ; preds = %2448, %2360, %2343
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #9
  br label %2657

2450:                                             ; preds = %2286
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %252, ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %252)
          to label %2451 unwind label %2452

2451:                                             ; preds = %2450
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %252) #9
  store i32 1, ptr %21, align 4
  br label %2654

2452:                                             ; preds = %2450
  %2453 = landingpad { ptr, i32 }
          cleanup
  %2454 = extractvalue { ptr, i32 } %2453, 0
  store ptr %2454, ptr %16, align 8
  %2455 = extractvalue { ptr, i32 } %2453, 1
  store i32 %2455, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %252) #9
  br label %2657

2456:                                             ; preds = %2267
  br label %2457

2457:                                             ; preds = %2456
  %2458 = load ptr, ptr %229, align 8, !tbaa !5
  %2459 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2458)
          to label %2460 unwind label %2277

2460:                                             ; preds = %2457
  %2461 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2459)
          to label %2462 unwind label %2277

2462:                                             ; preds = %2460
  br i1 %2461, label %2472, label %2463

2463:                                             ; preds = %2462
  %2464 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #9
  %2465 = getelementptr inbounds %class.anon.166, ptr %254, i32 0, i32 0
  %2466 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %2466, ptr %2465, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %253, ptr noundef nonnull align 8 dereferenceable(8) %254) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2464, ptr noundef %253)
          to label %2467 unwind label %2468

2467:                                             ; preds = %2463
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #9
  br label %2472

2468:                                             ; preds = %2463
  %2469 = landingpad { ptr, i32 }
          cleanup
  %2470 = extractvalue { ptr, i32 } %2469, 0
  store ptr %2470, ptr %16, align 8
  %2471 = extractvalue { ptr, i32 } %2469, 1
  store i32 %2471, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #9
  br label %2657

2472:                                             ; preds = %2467, %2462
  br label %2473

2473:                                             ; preds = %2472
  br label %2474

2474:                                             ; preds = %2473
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #9
  %2475 = load ptr, ptr %229, align 8, !tbaa !5
  %2476 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2475)
          to label %2477 unwind label %2490

2477:                                             ; preds = %2474
  %2478 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2476)
          to label %2479 unwind label %2490

2479:                                             ; preds = %2477
  store ptr %2478, ptr %255, align 8, !tbaa !5
  br label %2480

2480:                                             ; preds = %2479
  %2481 = load ptr, ptr %255, align 8, !tbaa !5
  %2482 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %2481, i32 0, i32 1
  %2483 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %2482)
          to label %2484 unwind label %2490

2484:                                             ; preds = %2480
  br i1 %2483, label %2498, label %2485

2485:                                             ; preds = %2484
  %2486 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #9
  %2487 = getelementptr inbounds %class.anon.167, ptr %257, i32 0, i32 0
  %2488 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %2488, ptr %2487, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2486, ptr noundef %256)
          to label %2489 unwind label %2494

2489:                                             ; preds = %2485
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  br label %2498

2490:                                             ; preds = %2480, %2477, %2474
  %2491 = landingpad { ptr, i32 }
          cleanup
  %2492 = extractvalue { ptr, i32 } %2491, 0
  store ptr %2492, ptr %16, align 8
  %2493 = extractvalue { ptr, i32 } %2491, 1
  store i32 %2493, ptr %17, align 4
  br label %2541

2494:                                             ; preds = %2485
  %2495 = landingpad { ptr, i32 }
          cleanup
  %2496 = extractvalue { ptr, i32 } %2495, 0
  store ptr %2496, ptr %16, align 8
  %2497 = extractvalue { ptr, i32 } %2495, 1
  store i32 %2497, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  br label %2541

2498:                                             ; preds = %2489, %2484
  br label %2499

2499:                                             ; preds = %2498
  br label %2500

2500:                                             ; preds = %2499
  call void @llvm.lifetime.start.p0(i64 4, ptr %258) #9
  %2501 = load ptr, ptr %255, align 8, !tbaa !5
  %2502 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %2501, i32 0, i32 1
  %2503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %2502)
          to label %2504 unwind label %2518

2504:                                             ; preds = %2500
  %2505 = load i64, ptr %2503, align 8, !tbaa !28
  %2506 = trunc i64 %2505 to i32
  store i32 %2506, ptr %258, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 48, ptr %259) #9
  %2507 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %261, i32 0, i32 0
  %2508 = load i32, ptr %258, align 4, !tbaa !13
  %2509 = zext i32 %2508 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %2507, i64 noundef %2509, i64 noundef 0)
          to label %2510 unwind label %2522

2510:                                             ; preds = %2504
  %2511 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %261, i32 0, i32 1
  store i32 0, ptr %2511, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %260, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %261)
          to label %2512 unwind label %2522

2512:                                             ; preds = %2510
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %259, ptr noundef %260)
          to label %2513 unwind label %2526

2513:                                             ; preds = %2512
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %260) #9
  %2514 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %262, i32 0, i32 0
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %263, ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2514, ptr noundef %263)
          to label %2515 unwind label %2530

2515:                                             ; preds = %2513
  %2516 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %262, i32 0, i32 1
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %2516, ptr noundef nonnull align 8 dereferenceable(48) %259) #9
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %262)
          to label %2517 unwind label %2534

2517:                                             ; preds = %2515
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %262) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %263) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %259) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %259) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %258) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  br label %2654

2518:                                             ; preds = %2500
  %2519 = landingpad { ptr, i32 }
          cleanup
  %2520 = extractvalue { ptr, i32 } %2519, 0
  store ptr %2520, ptr %16, align 8
  %2521 = extractvalue { ptr, i32 } %2519, 1
  store i32 %2521, ptr %17, align 4
  br label %2540

2522:                                             ; preds = %2510, %2504
  %2523 = landingpad { ptr, i32 }
          cleanup
  %2524 = extractvalue { ptr, i32 } %2523, 0
  store ptr %2524, ptr %16, align 8
  %2525 = extractvalue { ptr, i32 } %2523, 1
  store i32 %2525, ptr %17, align 4
  br label %2539

2526:                                             ; preds = %2512
  %2527 = landingpad { ptr, i32 }
          cleanup
  %2528 = extractvalue { ptr, i32 } %2527, 0
  store ptr %2528, ptr %16, align 8
  %2529 = extractvalue { ptr, i32 } %2527, 1
  store i32 %2529, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %260) #9
  br label %2539

2530:                                             ; preds = %2513
  %2531 = landingpad { ptr, i32 }
          cleanup
  %2532 = extractvalue { ptr, i32 } %2531, 0
  store ptr %2532, ptr %16, align 8
  %2533 = extractvalue { ptr, i32 } %2531, 1
  store i32 %2533, ptr %17, align 4
  br label %2538

2534:                                             ; preds = %2515
  %2535 = landingpad { ptr, i32 }
          cleanup
  %2536 = extractvalue { ptr, i32 } %2535, 0
  store ptr %2536, ptr %16, align 8
  %2537 = extractvalue { ptr, i32 } %2535, 1
  store i32 %2537, ptr %17, align 4
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %262) #9
  br label %2538

2538:                                             ; preds = %2534, %2530
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %263) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %259) #9
  br label %2539

2539:                                             ; preds = %2538, %2526, %2522
  call void @llvm.lifetime.end.p0(i64 48, ptr %259) #9
  br label %2540

2540:                                             ; preds = %2539, %2518
  call void @llvm.lifetime.end.p0(i64 4, ptr %258) #9
  br label %2541

2541:                                             ; preds = %2540, %2494, %2490
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  br label %2657

2542:                                             ; preds = %2267
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #9
  %2543 = load ptr, ptr %219, align 8, !tbaa !5
  %2544 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2543, i32 0, i32 2
  %2545 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2544)
          to label %2546 unwind label %2556

2546:                                             ; preds = %2542
  %2547 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2545)
          to label %2548 unwind label %2556

2548:                                             ; preds = %2546
  store ptr %2547, ptr %264, align 8, !tbaa !5
  %2549 = load ptr, ptr %264, align 8, !tbaa !5
  %2550 = icmp ne ptr %2549, null
  br i1 %2550, label %2566, label %2551

2551:                                             ; preds = %2548
  br label %2552

2552:                                             ; preds = %2551
  %2553 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %266) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull align 1 dereferenceable(1) %266) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2553, ptr noundef %265)
          to label %2554 unwind label %2560

2554:                                             ; preds = %2552
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %265) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %266) #9
  %2555 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %2555, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2555, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %2556

2556:                                             ; preds = %2554, %2546, %2542
  %2557 = landingpad { ptr, i32 }
          cleanup
  %2558 = extractvalue { ptr, i32 } %2557, 0
  store ptr %2558, ptr %16, align 8
  %2559 = extractvalue { ptr, i32 } %2557, 1
  store i32 %2559, ptr %17, align 4
  br label %2622

2560:                                             ; preds = %2552
  %2561 = landingpad { ptr, i32 }
          cleanup
  %2562 = extractvalue { ptr, i32 } %2561, 0
  store ptr %2562, ptr %16, align 8
  %2563 = extractvalue { ptr, i32 } %2561, 1
  store i32 %2563, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %265) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %266) #9
  br label %2622

2564:                                             ; No predecessors!
  br label %2565

2565:                                             ; preds = %2564
  br label %2566

2566:                                             ; preds = %2565, %2548
  call void @llvm.lifetime.start.p0(i64 48, ptr %267) #9
  %2567 = icmp eq ptr %4, %228
  store i1 false, ptr %270, align 1
  store i1 false, ptr %271, align 1
  br i1 %2567, label %2568, label %2570

2568:                                             ; preds = %2566
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull align 8 dereferenceable(8) %228)
          to label %2569 unwind label %2588

2569:                                             ; preds = %2568
  store i1 true, ptr %270, align 1
  br label %2573

2570:                                             ; preds = %2566
  %2571 = load ptr, ptr %229, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %269, ptr noundef nonnull align 8 dereferenceable(8) %2571)
          to label %2572 unwind label %2592

2572:                                             ; preds = %2570
  store i1 true, ptr %271, align 1
  br label %2573

2573:                                             ; preds = %2572, %2569
  %2574 = load ptr, ptr %264, align 8, !tbaa !5
  %2575 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2574, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %268, ptr noundef %269, ptr noundef nonnull align 8 dereferenceable(144) %2575)
          to label %2576 unwind label %2596

2576:                                             ; preds = %2573
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %267, ptr noundef %268)
          to label %2577 unwind label %2600

2577:                                             ; preds = %2576
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %268) #9
  %2578 = load i1, ptr %271, align 1
  br i1 %2578, label %2579, label %2580

2579:                                             ; preds = %2577
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  br label %2580

2580:                                             ; preds = %2579, %2577
  %2581 = load i1, ptr %270, align 1
  br i1 %2581, label %2582, label %2583

2582:                                             ; preds = %2580
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  br label %2583

2583:                                             ; preds = %2582, %2580
  %2584 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %272, i32 0, i32 0
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %273, ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2584, ptr noundef %273)
          to label %2585 unwind label %2612

2585:                                             ; preds = %2583
  %2586 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %272, i32 0, i32 1
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %2586, ptr noundef nonnull align 8 dereferenceable(48) %267) #9
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %272)
          to label %2587 unwind label %2616

2587:                                             ; preds = %2585
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %272) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %273) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %267) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %267) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #9
  br label %2654

2588:                                             ; preds = %2568
  %2589 = landingpad { ptr, i32 }
          cleanup
  %2590 = extractvalue { ptr, i32 } %2589, 0
  store ptr %2590, ptr %16, align 8
  %2591 = extractvalue { ptr, i32 } %2589, 1
  store i32 %2591, ptr %17, align 4
  br label %2621

2592:                                             ; preds = %2570
  %2593 = landingpad { ptr, i32 }
          cleanup
  %2594 = extractvalue { ptr, i32 } %2593, 0
  store ptr %2594, ptr %16, align 8
  %2595 = extractvalue { ptr, i32 } %2593, 1
  store i32 %2595, ptr %17, align 4
  br label %2608

2596:                                             ; preds = %2573
  %2597 = landingpad { ptr, i32 }
          cleanup
  %2598 = extractvalue { ptr, i32 } %2597, 0
  store ptr %2598, ptr %16, align 8
  %2599 = extractvalue { ptr, i32 } %2597, 1
  store i32 %2599, ptr %17, align 4
  br label %2604

2600:                                             ; preds = %2576
  %2601 = landingpad { ptr, i32 }
          cleanup
  %2602 = extractvalue { ptr, i32 } %2601, 0
  store ptr %2602, ptr %16, align 8
  %2603 = extractvalue { ptr, i32 } %2601, 1
  store i32 %2603, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %268) #9
  br label %2604

2604:                                             ; preds = %2600, %2596
  %2605 = load i1, ptr %271, align 1
  br i1 %2605, label %2606, label %2607

2606:                                             ; preds = %2604
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  br label %2607

2607:                                             ; preds = %2606, %2604
  br label %2608

2608:                                             ; preds = %2607, %2592
  %2609 = load i1, ptr %270, align 1
  br i1 %2609, label %2610, label %2611

2610:                                             ; preds = %2608
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  br label %2611

2611:                                             ; preds = %2610, %2608
  br label %2621

2612:                                             ; preds = %2583
  %2613 = landingpad { ptr, i32 }
          cleanup
  %2614 = extractvalue { ptr, i32 } %2613, 0
  store ptr %2614, ptr %16, align 8
  %2615 = extractvalue { ptr, i32 } %2613, 1
  store i32 %2615, ptr %17, align 4
  br label %2620

2616:                                             ; preds = %2585
  %2617 = landingpad { ptr, i32 }
          cleanup
  %2618 = extractvalue { ptr, i32 } %2617, 0
  store ptr %2618, ptr %16, align 8
  %2619 = extractvalue { ptr, i32 } %2617, 1
  store i32 %2619, ptr %17, align 4
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %272) #9
  br label %2620

2620:                                             ; preds = %2616, %2612
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %273) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %267) #9
  br label %2621

2621:                                             ; preds = %2620, %2611, %2588
  call void @llvm.lifetime.end.p0(i64 48, ptr %267) #9
  br label %2622

2622:                                             ; preds = %2621, %2560, %2556
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #9
  br label %2657

2623:                                             ; preds = %2267
  br label %2624

2624:                                             ; preds = %2623
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %274, align 8, !tbaa !5
  %2625 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %276) #9
  %2626 = getelementptr inbounds %class.anon.170, ptr %276, i32 0, i32 0
  store ptr %274, ptr %2626, align 8, !tbaa !5
  %2627 = getelementptr inbounds %class.anon.170, ptr %276, i32 0, i32 1
  %2628 = load ptr, ptr %219, align 8, !tbaa !5
  store ptr %2628, ptr %2627, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef nonnull align 8 dereferenceable(16) %276) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2625, ptr noundef %275)
          to label %2629 unwind label %2631

2629:                                             ; preds = %2624
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %275) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %276) #9
  %2630 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %2630, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2630, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %2635

2631:                                             ; preds = %2624
  %2632 = landingpad { ptr, i32 }
          cleanup
  %2633 = extractvalue { ptr, i32 } %2632, 0
  store ptr %2633, ptr %16, align 8
  %2634 = extractvalue { ptr, i32 } %2632, 1
  store i32 %2634, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %275) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %276) #9
  br label %2639

2635:                                             ; preds = %2629
  %2636 = landingpad { ptr, i32 }
          cleanup
  %2637 = extractvalue { ptr, i32 } %2636, 0
  store ptr %2637, ptr %16, align 8
  %2638 = extractvalue { ptr, i32 } %2636, 1
  store i32 %2638, ptr %17, align 4
  br label %2639

2639:                                             ; preds = %2635, %2631
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #9
  br label %2657

2640:                                             ; No predecessors!
  br label %2641

2641:                                             ; preds = %2640
  br label %2642

2642:                                             ; preds = %2641, %2267
  br label %2643

2643:                                             ; preds = %2642
  %2644 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %278) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef nonnull align 1 dereferenceable(1) %278) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2644, ptr noundef %277)
          to label %2645 unwind label %2647

2645:                                             ; preds = %2643
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #9
  %2646 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %2646, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2646, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %2277

2647:                                             ; preds = %2643
  %2648 = landingpad { ptr, i32 }
          cleanup
  %2649 = extractvalue { ptr, i32 } %2648, 0
  store ptr %2649, ptr %16, align 8
  %2650 = extractvalue { ptr, i32 } %2648, 1
  store i32 %2650, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #9
  br label %2657

2651:                                             ; No predecessors!
  br label %2652

2652:                                             ; preds = %2651
  br label %2653

2653:                                             ; preds = %2652, %2267
  store i32 0, ptr %21, align 4
  br label %2654

2654:                                             ; preds = %2653, %2587, %2517, %2451, %2342
  call void @llvm.lifetime.end.p0(i64 4, ptr %230) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %225) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  %2655 = load i32, ptr %21, align 4
  switch i32 %2655, label %2987 [
    i32 0, label %2656
  ]

2656:                                             ; preds = %2654
  br label %2986

2657:                                             ; preds = %2647, %2639, %2622, %2541, %2468, %2452, %2449, %2277
  call void @llvm.lifetime.end.p0(i64 4, ptr %230) #9
  br label %2658

2658:                                             ; preds = %2657, %2273
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  br label %2659

2659:                                             ; preds = %2658, %2269
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #9
  br label %2660

2660:                                             ; preds = %2659, %2246
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %225) #9
  br label %2661

2661:                                             ; preds = %2660, %2245
  call void @llvm.lifetime.end.p0(i64 40, ptr %225) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  br label %2991

2662:                                             ; preds = %2201
  %2663 = load ptr, ptr %219, align 8, !tbaa !5
  %2664 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2663, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %279) #9
  %2665 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2664)
          to label %2666 unwind label %2191

2666:                                             ; preds = %2662
  %2667 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2665)
          to label %2668 unwind label %2191

2668:                                             ; preds = %2666
  br i1 %2667, label %2669, label %2679

2669:                                             ; preds = %2668
  %2670 = load ptr, ptr %219, align 8, !tbaa !5
  %2671 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2670, i32 0, i32 2
  %2672 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2671)
          to label %2673 unwind label %2191

2673:                                             ; preds = %2669
  %2674 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2672)
          to label %2675 unwind label %2191

2675:                                             ; preds = %2673
  %2676 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %2674, i32 0, i32 0
  store i32 2, ptr %279, align 4, !tbaa !49
  %2677 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %2676, ptr noundef nonnull align 4 dereferenceable(4) %279)
          to label %2678 unwind label %2693

2678:                                             ; preds = %2675
  br label %2679

2679:                                             ; preds = %2678, %2668
  %2680 = phi i1 [ false, %2668 ], [ %2677, %2678 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %279) #9
  br i1 %2680, label %2681, label %2750

2681:                                             ; preds = %2679
  call void @llvm.lifetime.start.p0(i64 24, ptr %280) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %280) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %281) #9
  %2682 = load ptr, ptr %220, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.Reloc, ptr %2682, i32 0, i32 3
  store ptr %2683, ptr %281, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %282) #9
  %2684 = load ptr, ptr %281, align 8, !tbaa !5
  %2685 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %2684) #9
  %2686 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %282, i32 0, i32 0
  store ptr %2685, ptr %2686, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #9
  %2687 = load ptr, ptr %281, align 8, !tbaa !5
  %2688 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %2687) #9
  %2689 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %283, i32 0, i32 0
  store ptr %2688, ptr %2689, align 8
  br label %2690

2690:                                             ; preds = %2702, %2681
  %2691 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull align 8 dereferenceable(8) %283) #9
  br i1 %2691, label %2697, label %2692

2692:                                             ; preds = %2690
  store i32 102, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  br label %2708

2693:                                             ; preds = %2675
  %2694 = landingpad { ptr, i32 }
          cleanup
  %2695 = extractvalue { ptr, i32 } %2694, 0
  store ptr %2695, ptr %16, align 8
  %2696 = extractvalue { ptr, i32 } %2694, 1
  store i32 %2696, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %279) #9
  br label %2991

2697:                                             ; preds = %2690
  call void @llvm.lifetime.start.p0(i64 1, ptr %284) #9
  %2698 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %282) #9
  %2699 = load i8, ptr %2698, align 1, !tbaa !100
  store i8 %2699, ptr %284, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %285) #9
  %2700 = load i8, ptr %284, align 1, !tbaa !100
  store i8 %2700, ptr %285, align 1, !tbaa !100
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %280, ptr noundef nonnull align 1 dereferenceable(1) %285)
          to label %2701 unwind label %2704

2701:                                             ; preds = %2697
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #9
  br label %2702

2702:                                             ; preds = %2701
  %2703 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %282) #9
  br label %2690

2704:                                             ; preds = %2697
  %2705 = landingpad { ptr, i32 }
          cleanup
  %2706 = extractvalue { ptr, i32 } %2705, 0
  store ptr %2706, ptr %16, align 8
  %2707 = extractvalue { ptr, i32 } %2705, 1
  store i32 %2707, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  br label %2749

2708:                                             ; preds = %2692
  %2709 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %286, i32 0, i32 0
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 8 dereferenceable(24) %280) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %287, ptr noundef %288)
          to label %2710 unwind label %2722

2710:                                             ; preds = %2708
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2709, ptr noundef %287)
          to label %2711 unwind label %2726

2711:                                             ; preds = %2710
  store i1 true, ptr %291, align 1
  %2712 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %286, i32 0, i32 1
  %2713 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %290, i32 0, i32 0
  %2714 = load ptr, ptr %220, align 8, !tbaa !5
  %2715 = getelementptr inbounds %struct.Reloc, ptr %2714, i32 0, i32 3
  %2716 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2715) #9
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %2713, i64 noundef %2716, i64 noundef 0)
          to label %2717 unwind label %2730

2717:                                             ; preds = %2711
  %2718 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %290, i32 0, i32 1
  store i32 0, ptr %2718, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %289, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %290)
          to label %2719 unwind label %2730

2719:                                             ; preds = %2717
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2712, ptr noundef %289)
          to label %2720 unwind label %2734

2720:                                             ; preds = %2719
  store i1 false, ptr %291, align 1
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %286)
          to label %2721 unwind label %2738

2721:                                             ; preds = %2720
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %286) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %289) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %287) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  store i32 1, ptr %21, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %280) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %280) #9
  br label %2987

2722:                                             ; preds = %2708
  %2723 = landingpad { ptr, i32 }
          cleanup
  %2724 = extractvalue { ptr, i32 } %2723, 0
  store ptr %2724, ptr %16, align 8
  %2725 = extractvalue { ptr, i32 } %2723, 1
  store i32 %2725, ptr %17, align 4
  br label %2748

2726:                                             ; preds = %2710
  %2727 = landingpad { ptr, i32 }
          cleanup
  %2728 = extractvalue { ptr, i32 } %2727, 0
  store ptr %2728, ptr %16, align 8
  %2729 = extractvalue { ptr, i32 } %2727, 1
  store i32 %2729, ptr %17, align 4
  br label %2747

2730:                                             ; preds = %2717, %2711
  %2731 = landingpad { ptr, i32 }
          cleanup
  %2732 = extractvalue { ptr, i32 } %2731, 0
  store ptr %2732, ptr %16, align 8
  %2733 = extractvalue { ptr, i32 } %2731, 1
  store i32 %2733, ptr %17, align 4
  br label %2743

2734:                                             ; preds = %2719
  %2735 = landingpad { ptr, i32 }
          cleanup
  %2736 = extractvalue { ptr, i32 } %2735, 0
  store ptr %2736, ptr %16, align 8
  %2737 = extractvalue { ptr, i32 } %2735, 1
  store i32 %2737, ptr %17, align 4
  br label %2742

2738:                                             ; preds = %2720
  %2739 = landingpad { ptr, i32 }
          cleanup
  %2740 = extractvalue { ptr, i32 } %2739, 0
  store ptr %2740, ptr %16, align 8
  %2741 = extractvalue { ptr, i32 } %2739, 1
  store i32 %2741, ptr %17, align 4
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %286) #9
  br label %2742

2742:                                             ; preds = %2738, %2734
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %289) #9
  br label %2743

2743:                                             ; preds = %2742, %2730
  %2744 = load i1, ptr %291, align 1
  br i1 %2744, label %2745, label %2746

2745:                                             ; preds = %2743
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %2709) #9
  br label %2746

2746:                                             ; preds = %2745, %2743
  br label %2747

2747:                                             ; preds = %2746, %2726
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %287) #9
  br label %2748

2748:                                             ; preds = %2747, %2722
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  br label %2749

2749:                                             ; preds = %2748, %2704
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %280) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %280) #9
  br label %2991

2750:                                             ; preds = %2679
  %2751 = load ptr, ptr %219, align 8, !tbaa !5
  %2752 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2751, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %292) #9
  %2753 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2752)
          to label %2754 unwind label %2191

2754:                                             ; preds = %2750
  %2755 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2753)
          to label %2756 unwind label %2191

2756:                                             ; preds = %2754
  br i1 %2755, label %2757, label %2767

2757:                                             ; preds = %2756
  %2758 = load ptr, ptr %219, align 8, !tbaa !5
  %2759 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2758, i32 0, i32 2
  %2760 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2759)
          to label %2761 unwind label %2191

2761:                                             ; preds = %2757
  %2762 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2760)
          to label %2763 unwind label %2191

2763:                                             ; preds = %2761
  %2764 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %2762, i32 0, i32 0
  store i32 2, ptr %292, align 4, !tbaa !49
  %2765 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %2764, ptr noundef nonnull align 4 dereferenceable(4) %292)
          to label %2766 unwind label %2781

2766:                                             ; preds = %2763
  br label %2767

2767:                                             ; preds = %2766, %2756
  %2768 = phi i1 [ false, %2756 ], [ %2765, %2766 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %292) #9
  br i1 %2768, label %2769, label %2809

2769:                                             ; preds = %2767
  call void @llvm.lifetime.start.p0(i64 24, ptr %293) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #9
  %2770 = load ptr, ptr %220, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.Reloc, ptr %2770, i32 0, i32 3
  store ptr %2771, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #9
  %2772 = load ptr, ptr %294, align 8, !tbaa !5
  %2773 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %2772) #9
  %2774 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %295, i32 0, i32 0
  store ptr %2773, ptr %2774, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #9
  %2775 = load ptr, ptr %294, align 8, !tbaa !5
  %2776 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %2775) #9
  %2777 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %296, i32 0, i32 0
  store ptr %2776, ptr %2777, align 8
  br label %2778

2778:                                             ; preds = %2790, %2769
  %2779 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %296) #9
  br i1 %2779, label %2785, label %2780

2780:                                             ; preds = %2778
  store i32 104, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #9
  br label %2796

2781:                                             ; preds = %2763
  %2782 = landingpad { ptr, i32 }
          cleanup
  %2783 = extractvalue { ptr, i32 } %2782, 0
  store ptr %2783, ptr %16, align 8
  %2784 = extractvalue { ptr, i32 } %2782, 1
  store i32 %2784, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %292) #9
  br label %2991

2785:                                             ; preds = %2778
  call void @llvm.lifetime.start.p0(i64 1, ptr %297) #9
  %2786 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %295) #9
  %2787 = load i8, ptr %2786, align 1, !tbaa !100
  store i8 %2787, ptr %297, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %298) #9
  %2788 = load i8, ptr %297, align 1, !tbaa !100
  store i8 %2788, ptr %298, align 1, !tbaa !100
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %293, ptr noundef nonnull align 1 dereferenceable(1) %298)
          to label %2789 unwind label %2792

2789:                                             ; preds = %2785
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  br label %2790

2790:                                             ; preds = %2789
  %2791 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %295) #9
  br label %2778

2792:                                             ; preds = %2785
  %2793 = landingpad { ptr, i32 }
          cleanup
  %2794 = extractvalue { ptr, i32 } %2793, 0
  store ptr %2794, ptr %16, align 8
  %2795 = extractvalue { ptr, i32 } %2793, 1
  store i32 %2795, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #9
  br label %2808

2796:                                             ; preds = %2780
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %300, ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %299, ptr noundef %300)
          to label %2797 unwind label %2799

2797:                                             ; preds = %2796
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %299)
          to label %2798 unwind label %2803

2798:                                             ; preds = %2797
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %299) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %300) #9
  store i32 1, ptr %21, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %293) #9
  br label %2987

2799:                                             ; preds = %2796
  %2800 = landingpad { ptr, i32 }
          cleanup
  %2801 = extractvalue { ptr, i32 } %2800, 0
  store ptr %2801, ptr %16, align 8
  %2802 = extractvalue { ptr, i32 } %2800, 1
  store i32 %2802, ptr %17, align 4
  br label %2807

2803:                                             ; preds = %2797
  %2804 = landingpad { ptr, i32 }
          cleanup
  %2805 = extractvalue { ptr, i32 } %2804, 0
  store ptr %2805, ptr %16, align 8
  %2806 = extractvalue { ptr, i32 } %2804, 1
  store i32 %2806, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %299) #9
  br label %2807

2807:                                             ; preds = %2803, %2799
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %300) #9
  br label %2808

2808:                                             ; preds = %2807, %2792
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %293) #9
  br label %2991

2809:                                             ; preds = %2767
  %2810 = load ptr, ptr %219, align 8, !tbaa !5
  %2811 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2810, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %301) #9
  store i32 16, ptr %301, align 4, !tbaa !49
  %2812 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %2811, ptr noundef nonnull align 4 dereferenceable(4) %301)
          to label %2813 unwind label %2820

2813:                                             ; preds = %2809
  call void @llvm.lifetime.end.p0(i64 4, ptr %301) #9
  br i1 %2812, label %2814, label %2833

2814:                                             ; preds = %2813
  %2815 = load ptr, ptr %220, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.Reloc, ptr %2815, i32 0, i32 3
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull align 8 dereferenceable(32) %2816)
          to label %2817 unwind label %2191

2817:                                             ; preds = %2814
  invoke void @_ZN3MIR8Constant17make_StaticStringENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %302, ptr noundef %303)
          to label %2818 unwind label %2824

2818:                                             ; preds = %2817
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %302)
          to label %2819 unwind label %2828

2819:                                             ; preds = %2818
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %302) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  store i32 1, ptr %21, align 4
  br label %2987

2820:                                             ; preds = %2809
  %2821 = landingpad { ptr, i32 }
          cleanup
  %2822 = extractvalue { ptr, i32 } %2821, 0
  store ptr %2822, ptr %16, align 8
  %2823 = extractvalue { ptr, i32 } %2821, 1
  store i32 %2823, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %301) #9
  br label %2991

2824:                                             ; preds = %2817
  %2825 = landingpad { ptr, i32 }
          cleanup
  %2826 = extractvalue { ptr, i32 } %2825, 0
  store ptr %2826, ptr %16, align 8
  %2827 = extractvalue { ptr, i32 } %2825, 1
  store i32 %2827, ptr %17, align 4
  br label %2832

2828:                                             ; preds = %2818
  %2829 = landingpad { ptr, i32 }
          cleanup
  %2830 = extractvalue { ptr, i32 } %2829, 0
  store ptr %2830, ptr %16, align 8
  %2831 = extractvalue { ptr, i32 } %2829, 1
  store i32 %2831, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %302) #9
  br label %2832

2832:                                             ; preds = %2828, %2824
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  br label %2991

2833:                                             ; preds = %2813
  call void @llvm.lifetime.start.p0(i64 24, ptr %304) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %304) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #9
  %2834 = load ptr, ptr %220, align 8, !tbaa !5
  %2835 = getelementptr inbounds %struct.Reloc, ptr %2834, i32 0, i32 3
  store ptr %2835, ptr %305, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #9
  %2836 = load ptr, ptr %305, align 8, !tbaa !5
  %2837 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %2836) #9
  %2838 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %306, i32 0, i32 0
  store ptr %2837, ptr %2838, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #9
  %2839 = load ptr, ptr %305, align 8, !tbaa !5
  %2840 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %2839) #9
  %2841 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.173", ptr %307, i32 0, i32 0
  store ptr %2840, ptr %2841, align 8
  br label %2842

2842:                                             ; preds = %2850, %2833
  %2843 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(8) %307) #9
  br i1 %2843, label %2845, label %2844

2844:                                             ; preds = %2842
  store i32 106, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %2856

2845:                                             ; preds = %2842
  call void @llvm.lifetime.start.p0(i64 1, ptr %308) #9
  %2846 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  %2847 = load i8, ptr %2846, align 1, !tbaa !100
  store i8 %2847, ptr %308, align 1, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 1, ptr %309) #9
  %2848 = load i8, ptr %308, align 1, !tbaa !100
  store i8 %2848, ptr %309, align 1, !tbaa !100
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %304, ptr noundef nonnull align 1 dereferenceable(1) %309)
          to label %2849 unwind label %2852

2849:                                             ; preds = %2845
  call void @llvm.lifetime.end.p0(i64 1, ptr %309) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %308) #9
  br label %2850

2850:                                             ; preds = %2849
  %2851 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  br label %2842

2852:                                             ; preds = %2845
  %2853 = landingpad { ptr, i32 }
          cleanup
  %2854 = extractvalue { ptr, i32 } %2853, 0
  store ptr %2854, ptr %16, align 8
  %2855 = extractvalue { ptr, i32 } %2853, 1
  store i32 %2855, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %309) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %308) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %2985

2856:                                             ; preds = %2844
  call void @llvm.lifetime.start.p0(i64 112, ptr %310) #9
  %2857 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %311, i32 0, i32 0
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %313, ptr noundef nonnull align 8 dereferenceable(24) %304) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %312, ptr noundef %313)
          to label %2858 unwind label %2892

2858:                                             ; preds = %2856
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2857, ptr noundef %312)
          to label %2859 unwind label %2896

2859:                                             ; preds = %2858
  store i1 true, ptr %316, align 1
  %2860 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %311, i32 0, i32 1
  %2861 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %315, i32 0, i32 0
  %2862 = load ptr, ptr %220, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.Reloc, ptr %2862, i32 0, i32 3
  %2864 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2863) #9
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %2861, i64 noundef %2864, i64 noundef 0)
          to label %2865 unwind label %2900

2865:                                             ; preds = %2859
  %2866 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %315, i32 0, i32 1
  store i32 0, ptr %2866, align 8, !tbaa !67
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %314, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %315)
          to label %2867 unwind label %2900

2867:                                             ; preds = %2865
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %2860, ptr noundef %314)
          to label %2868 unwind label %2904

2868:                                             ; preds = %2867
  store i1 false, ptr %316, align 1
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %310, ptr noundef %311)
          to label %2869 unwind label %2908

2869:                                             ; preds = %2868
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %311) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %314) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %312) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %313) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %317) #9
  %2870 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %320, i32 noundef 2)
          to label %2871 unwind label %2919

2871:                                             ; preds = %2869
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %319, ptr noundef %320)
          to label %2872 unwind label %2923

2872:                                             ; preds = %2871
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %318, i32 noundef 0, ptr noundef %319)
          to label %2873 unwind label %2927

2873:                                             ; preds = %2872
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %321, ptr noundef nonnull align 8 dereferenceable(112) %310) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %317, ptr noundef nonnull align 8 dereferenceable(40) %2870, ptr noundef %318, ptr noundef %321)
          to label %2874 unwind label %2931

2874:                                             ; preds = %2873
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %321) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %322) #9
  %2875 = load ptr, ptr %219, align 8, !tbaa !5
  %2876 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2875, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %323, ptr noundef nonnull align 8 dereferenceable(8) %2876)
          to label %2877 unwind label %2937

2877:                                             ; preds = %2874
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %322, i32 noundef 0, ptr noundef %323)
          to label %2878 unwind label %2941

2878:                                             ; preds = %2877
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %323) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %324) #9
  %2879 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %325, ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %2880 unwind label %2945

2880:                                             ; preds = %2878
  %2881 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %327, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2881, ptr noundef nonnull align 8 dereferenceable(32) %317)
          to label %2882 unwind label %2949

2882:                                             ; preds = %2880
  %2883 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %327, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %2883, ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %2884 unwind label %2953

2884:                                             ; preds = %2882
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %326, ptr noundef %327)
          to label %2885 unwind label %2957

2885:                                             ; preds = %2884
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %324, ptr noundef nonnull align 8 dereferenceable(40) %2879, ptr noundef %325, ptr noundef %326)
          to label %2886 unwind label %2961

2886:                                             ; preds = %2885
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %326) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %327) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #9
  %2887 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %328, i32 0, i32 0
  store i32 0, ptr %2887, align 8, !tbaa !92
  %2888 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %328, i32 0, i32 1
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %329, ptr noundef nonnull align 8 dereferenceable(32) %324)
          to label %2889 unwind label %2967

2889:                                             ; preds = %2886
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %2888, ptr noundef %329)
          to label %2890 unwind label %2971

2890:                                             ; preds = %2889
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %328)
          to label %2891 unwind label %2975

2891:                                             ; preds = %2890
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %328) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #9
  store i32 1, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %324) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %324) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %317) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %317) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %310) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %310) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %304) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %304) #9
  br label %2987

2892:                                             ; preds = %2856
  %2893 = landingpad { ptr, i32 }
          cleanup
  %2894 = extractvalue { ptr, i32 } %2893, 0
  store ptr %2894, ptr %16, align 8
  %2895 = extractvalue { ptr, i32 } %2893, 1
  store i32 %2895, ptr %17, align 4
  br label %2918

2896:                                             ; preds = %2858
  %2897 = landingpad { ptr, i32 }
          cleanup
  %2898 = extractvalue { ptr, i32 } %2897, 0
  store ptr %2898, ptr %16, align 8
  %2899 = extractvalue { ptr, i32 } %2897, 1
  store i32 %2899, ptr %17, align 4
  br label %2917

2900:                                             ; preds = %2865, %2859
  %2901 = landingpad { ptr, i32 }
          cleanup
  %2902 = extractvalue { ptr, i32 } %2901, 0
  store ptr %2902, ptr %16, align 8
  %2903 = extractvalue { ptr, i32 } %2901, 1
  store i32 %2903, ptr %17, align 4
  br label %2913

2904:                                             ; preds = %2867
  %2905 = landingpad { ptr, i32 }
          cleanup
  %2906 = extractvalue { ptr, i32 } %2905, 0
  store ptr %2906, ptr %16, align 8
  %2907 = extractvalue { ptr, i32 } %2905, 1
  store i32 %2907, ptr %17, align 4
  br label %2912

2908:                                             ; preds = %2868
  %2909 = landingpad { ptr, i32 }
          cleanup
  %2910 = extractvalue { ptr, i32 } %2909, 0
  store ptr %2910, ptr %16, align 8
  %2911 = extractvalue { ptr, i32 } %2909, 1
  store i32 %2911, ptr %17, align 4
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %311) #9
  br label %2912

2912:                                             ; preds = %2908, %2904
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %314) #9
  br label %2913

2913:                                             ; preds = %2912, %2900
  %2914 = load i1, ptr %316, align 1
  br i1 %2914, label %2915, label %2916

2915:                                             ; preds = %2913
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %2857) #9
  br label %2916

2916:                                             ; preds = %2915, %2913
  br label %2917

2917:                                             ; preds = %2916, %2896
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %312) #9
  br label %2918

2918:                                             ; preds = %2917, %2892
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %313) #9
  br label %2984

2919:                                             ; preds = %2869
  %2920 = landingpad { ptr, i32 }
          cleanup
  %2921 = extractvalue { ptr, i32 } %2920, 0
  store ptr %2921, ptr %16, align 8
  %2922 = extractvalue { ptr, i32 } %2920, 1
  store i32 %2922, ptr %17, align 4
  br label %2983

2923:                                             ; preds = %2871
  %2924 = landingpad { ptr, i32 }
          cleanup
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %16, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %17, align 4
  br label %2936

2927:                                             ; preds = %2872
  %2928 = landingpad { ptr, i32 }
          cleanup
  %2929 = extractvalue { ptr, i32 } %2928, 0
  store ptr %2929, ptr %16, align 8
  %2930 = extractvalue { ptr, i32 } %2928, 1
  store i32 %2930, ptr %17, align 4
  br label %2935

2931:                                             ; preds = %2873
  %2932 = landingpad { ptr, i32 }
          cleanup
  %2933 = extractvalue { ptr, i32 } %2932, 0
  store ptr %2933, ptr %16, align 8
  %2934 = extractvalue { ptr, i32 } %2932, 1
  store i32 %2934, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %321) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %318) #9
  br label %2935

2935:                                             ; preds = %2931, %2927
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %319) #9
  br label %2936

2936:                                             ; preds = %2935, %2923
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %320) #9
  br label %2983

2937:                                             ; preds = %2874
  %2938 = landingpad { ptr, i32 }
          cleanup
  %2939 = extractvalue { ptr, i32 } %2938, 0
  store ptr %2939, ptr %16, align 8
  %2940 = extractvalue { ptr, i32 } %2938, 1
  store i32 %2940, ptr %17, align 4
  br label %2982

2941:                                             ; preds = %2877
  %2942 = landingpad { ptr, i32 }
          cleanup
  %2943 = extractvalue { ptr, i32 } %2942, 0
  store ptr %2943, ptr %16, align 8
  %2944 = extractvalue { ptr, i32 } %2942, 1
  store i32 %2944, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %323) #9
  br label %2982

2945:                                             ; preds = %2878
  %2946 = landingpad { ptr, i32 }
          cleanup
  %2947 = extractvalue { ptr, i32 } %2946, 0
  store ptr %2947, ptr %16, align 8
  %2948 = extractvalue { ptr, i32 } %2946, 1
  store i32 %2948, ptr %17, align 4
  br label %2981

2949:                                             ; preds = %2880
  %2950 = landingpad { ptr, i32 }
          cleanup
  %2951 = extractvalue { ptr, i32 } %2950, 0
  store ptr %2951, ptr %16, align 8
  %2952 = extractvalue { ptr, i32 } %2950, 1
  store i32 %2952, ptr %17, align 4
  br label %2966

2953:                                             ; preds = %2882
  %2954 = landingpad { ptr, i32 }
          cleanup
  %2955 = extractvalue { ptr, i32 } %2954, 0
  store ptr %2955, ptr %16, align 8
  %2956 = extractvalue { ptr, i32 } %2954, 1
  store i32 %2956, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2881) #9
  br label %2966

2957:                                             ; preds = %2884
  %2958 = landingpad { ptr, i32 }
          cleanup
  %2959 = extractvalue { ptr, i32 } %2958, 0
  store ptr %2959, ptr %16, align 8
  %2960 = extractvalue { ptr, i32 } %2958, 1
  store i32 %2960, ptr %17, align 4
  br label %2965

2961:                                             ; preds = %2885
  %2962 = landingpad { ptr, i32 }
          cleanup
  %2963 = extractvalue { ptr, i32 } %2962, 0
  store ptr %2963, ptr %16, align 8
  %2964 = extractvalue { ptr, i32 } %2962, 1
  store i32 %2964, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %326) #9
  br label %2965

2965:                                             ; preds = %2961, %2957
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %327) #9
  br label %2966

2966:                                             ; preds = %2965, %2953, %2949
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %325) #9
  br label %2981

2967:                                             ; preds = %2886
  %2968 = landingpad { ptr, i32 }
          cleanup
  %2969 = extractvalue { ptr, i32 } %2968, 0
  store ptr %2969, ptr %16, align 8
  %2970 = extractvalue { ptr, i32 } %2968, 1
  store i32 %2970, ptr %17, align 4
  br label %2980

2971:                                             ; preds = %2889
  %2972 = landingpad { ptr, i32 }
          cleanup
  %2973 = extractvalue { ptr, i32 } %2972, 0
  store ptr %2973, ptr %16, align 8
  %2974 = extractvalue { ptr, i32 } %2972, 1
  store i32 %2974, ptr %17, align 4
  br label %2979

2975:                                             ; preds = %2890
  %2976 = landingpad { ptr, i32 }
          cleanup
  %2977 = extractvalue { ptr, i32 } %2976, 0
  store ptr %2977, ptr %16, align 8
  %2978 = extractvalue { ptr, i32 } %2976, 1
  store i32 %2978, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %328) #9
  br label %2979

2979:                                             ; preds = %2975, %2971
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #9
  br label %2980

2980:                                             ; preds = %2979, %2967
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %324) #9
  br label %2981

2981:                                             ; preds = %2980, %2966, %2945
  call void @llvm.lifetime.end.p0(i64 32, ptr %324) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #9
  br label %2982

2982:                                             ; preds = %2981, %2941, %2937
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %317) #9
  br label %2983

2983:                                             ; preds = %2982, %2936, %2919
  call void @llvm.lifetime.end.p0(i64 32, ptr %317) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %310) #9
  br label %2984

2984:                                             ; preds = %2983, %2918
  call void @llvm.lifetime.end.p0(i64 112, ptr %310) #9
  br label %2985

2985:                                             ; preds = %2984, %2852
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %304) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %304) #9
  br label %2991

2986:                                             ; preds = %2656
  store i32 0, ptr %21, align 4
  br label %2987

2987:                                             ; preds = %2986, %2891, %2819, %2798, %2721, %2654
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #9
  %2988 = load i32, ptr %21, align 4
  switch i32 %2988, label %2993 [
    i32 0, label %2989
  ]

2989:                                             ; preds = %2987
  br label %2990

2990:                                             ; preds = %2989
  store i8 0, ptr %218, align 1, !tbaa !9
  br label %2158, !llvm.loop !101

2991:                                             ; preds = %2985, %2832, %2820, %2808, %2781, %2749, %2693, %2661, %2195, %2191
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #9
  br label %2992

2992:                                             ; preds = %2991, %2187
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #9
  br label %2995

2993:                                             ; preds = %2987, %2162
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #9
  %2994 = load i32, ptr %21, align 4
  switch i32 %2994, label %2998 [
    i32 84, label %2996
  ]

2995:                                             ; preds = %2992, %2163
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #9
  br label %3093

2996:                                             ; preds = %2993
  br label %2997

2997:                                             ; preds = %2996
  store i8 0, ptr %218, align 1, !tbaa !9
  br label %2150, !llvm.loop !102

2998:                                             ; preds = %2993, %2153
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #9
  %2999 = load i32, ptr %21, align 4
  switch i32 %2999, label %3091 [
    i32 81, label %3000
  ]

3000:                                             ; preds = %2998
  br label %3089

3001:                                             ; preds = %373
  call void @llvm.lifetime.start.p0(i64 1, ptr %330) #9
  store i8 1, ptr %330, align 1, !tbaa !9
  br label %3002

3002:                                             ; preds = %3085, %3001
  %3003 = load i8, ptr %330, align 1, !tbaa !9, !range !11, !noundef !12
  %3004 = trunc i8 %3003 to i1
  br i1 %3004, label %3006, label %3005

3005:                                             ; preds = %3002
  store i32 108, ptr %21, align 4
  br label %3086

3006:                                             ; preds = %3002
  call void @llvm.lifetime.start.p0(i64 8, ptr %331) #9
  %3007 = load ptr, ptr %22, align 8, !tbaa !5
  %3008 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %3007)
          to label %3009 unwind label %3015

3009:                                             ; preds = %3006
  store ptr %3008, ptr %331, align 8, !tbaa !5
  br label %3010

3010:                                             ; preds = %3080, %3009
  %3011 = load ptr, ptr %331, align 8, !tbaa !5
  %3012 = load i8, ptr %330, align 1, !tbaa !9, !range !11, !noundef !12
  %3013 = trunc i8 %3012 to i1
  br i1 %3013, label %3019, label %3014

3014:                                             ; preds = %3010
  store i32 111, ptr %21, align 4
  br label %3081

3015:                                             ; preds = %3006
  %3016 = landingpad { ptr, i32 }
          cleanup
  %3017 = extractvalue { ptr, i32 } %3016, 0
  store ptr %3017, ptr %16, align 8
  %3018 = extractvalue { ptr, i32 } %3016, 1
  store i32 %3018, ptr %17, align 4
  br label %3083

3019:                                             ; preds = %3010
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #9
  %3020 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %3021 unwind label %3028

3021:                                             ; preds = %3019
  store ptr %3020, ptr %332, align 8, !tbaa !5
  br label %3022

3022:                                             ; preds = %3021
  %3023 = load ptr, ptr %332, align 8, !tbaa !5
  %3024 = icmp ne ptr %3023, null
  br i1 %3024, label %3036, label %3025

3025:                                             ; preds = %3022
  %3026 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %334) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef nonnull align 1 dereferenceable(1) %334) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3026, ptr noundef %333)
          to label %3027 unwind label %3032

3027:                                             ; preds = %3025
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #9
  br label %3036

3028:                                             ; preds = %3019
  %3029 = landingpad { ptr, i32 }
          cleanup
  %3030 = extractvalue { ptr, i32 } %3029, 0
  store ptr %3030, ptr %16, align 8
  %3031 = extractvalue { ptr, i32 } %3029, 1
  store i32 %3031, ptr %17, align 4
  br label %3079

3032:                                             ; preds = %3025
  %3033 = landingpad { ptr, i32 }
          cleanup
  %3034 = extractvalue { ptr, i32 } %3033, 0
  store ptr %3034, ptr %16, align 8
  %3035 = extractvalue { ptr, i32 } %3033, 1
  store i32 %3035, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %334) #9
  br label %3079

3036:                                             ; preds = %3027, %3022
  br label %3037

3037:                                             ; preds = %3036
  br label %3038

3038:                                             ; preds = %3037
  br label %3039

3039:                                             ; preds = %3038
  %3040 = load ptr, ptr %332, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.Reloc, ptr %3040, i32 0, i32 2
  %3042 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %3041) #9
  br i1 %3042, label %3050, label %3043

3043:                                             ; preds = %3039
  %3044 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %336) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull align 1 dereferenceable(1) %336) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3044, ptr noundef %335)
          to label %3045 unwind label %3046

3045:                                             ; preds = %3043
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %336) #9
  br label %3050

3046:                                             ; preds = %3043
  %3047 = landingpad { ptr, i32 }
          cleanup
  %3048 = extractvalue { ptr, i32 } %3047, 0
  store ptr %3048, ptr %16, align 8
  %3049 = extractvalue { ptr, i32 } %3047, 1
  store i32 %3049, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %335) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %336) #9
  br label %3079

3050:                                             ; preds = %3045, %3039
  br label %3051

3051:                                             ; preds = %3050
  br label %3052

3052:                                             ; preds = %3051
  call void @llvm.lifetime.start.p0(i64 88, ptr %339) #9
  %3053 = load ptr, ptr %332, align 8, !tbaa !5
  %3054 = getelementptr inbounds %struct.Reloc, ptr %3053, i32 0, i32 2
  %3055 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3054) #9
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %339, ptr noundef nonnull align 8 dereferenceable(88) %3055)
          to label %3056 unwind label %3060

3056:                                             ; preds = %3052
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.76") align 8 %338, ptr noundef nonnull align 8 dereferenceable(88) %339)
          to label %3057 unwind label %3064

3057:                                             ; preds = %3056
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %337, ptr noundef %338)
          to label %3058 unwind label %3068

3058:                                             ; preds = %3057
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef %337)
          to label %3059 unwind label %3072

3059:                                             ; preds = %3058
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %337) #9
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %339) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %339) #9
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #9
  br label %3081

3060:                                             ; preds = %3052
  %3061 = landingpad { ptr, i32 }
          cleanup
  %3062 = extractvalue { ptr, i32 } %3061, 0
  store ptr %3062, ptr %16, align 8
  %3063 = extractvalue { ptr, i32 } %3061, 1
  store i32 %3063, ptr %17, align 4
  br label %3078

3064:                                             ; preds = %3056
  %3065 = landingpad { ptr, i32 }
          cleanup
  %3066 = extractvalue { ptr, i32 } %3065, 0
  store ptr %3066, ptr %16, align 8
  %3067 = extractvalue { ptr, i32 } %3065, 1
  store i32 %3067, ptr %17, align 4
  br label %3077

3068:                                             ; preds = %3057
  %3069 = landingpad { ptr, i32 }
          cleanup
  %3070 = extractvalue { ptr, i32 } %3069, 0
  store ptr %3070, ptr %16, align 8
  %3071 = extractvalue { ptr, i32 } %3069, 1
  store i32 %3071, ptr %17, align 4
  br label %3076

3072:                                             ; preds = %3058
  %3073 = landingpad { ptr, i32 }
          cleanup
  %3074 = extractvalue { ptr, i32 } %3073, 0
  store ptr %3074, ptr %16, align 8
  %3075 = extractvalue { ptr, i32 } %3073, 1
  store i32 %3075, ptr %17, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %337) #9
  br label %3076

3076:                                             ; preds = %3072, %3068
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %338) #9
  br label %3077

3077:                                             ; preds = %3076, %3064
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %339) #9
  br label %3078

3078:                                             ; preds = %3077, %3060
  call void @llvm.lifetime.end.p0(i64 88, ptr %339) #9
  br label %3079

3079:                                             ; preds = %3078, %3046, %3032, %3028
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #9
  br label %3083

3080:                                             ; No predecessors!
  store i8 0, ptr %330, align 1, !tbaa !9
  br label %3010, !llvm.loop !103

3081:                                             ; preds = %3059, %3014
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #9
  %3082 = load i32, ptr %21, align 4
  switch i32 %3082, label %3086 [
    i32 111, label %3084
  ]

3083:                                             ; preds = %3079, %3015
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %330) #9
  br label %3093

3084:                                             ; preds = %3081
  br label %3085

3085:                                             ; preds = %3084
  store i8 0, ptr %330, align 1, !tbaa !9
  br label %3002, !llvm.loop !104

3086:                                             ; preds = %3081, %3005
  call void @llvm.lifetime.end.p0(i64 1, ptr %330) #9
  %3087 = load i32, ptr %21, align 4
  switch i32 %3087, label %3091 [
    i32 108, label %3088
  ]

3088:                                             ; preds = %3086
  br label %3089

3089:                                             ; preds = %3088, %3000, %2148, %1996, %1653, %864, %591
  br label %3090

3090:                                             ; preds = %3089
  store i8 0, ptr %20, align 1, !tbaa !9
  br label %362, !llvm.loop !105

3091:                                             ; preds = %3086, %2998, %2146, %1994, %1651, %862, %589, %432, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  %3092 = load i32, ptr %21, align 4
  switch i32 %3092, label %3096 [
    i32 5, label %3094
  ]

3093:                                             ; preds = %3083, %2995, %2143, %1991, %1648, %859, %586, %441, %401, %400, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  br label %3105

3094:                                             ; preds = %3091
  br label %3095

3095:                                             ; preds = %3094
  store i8 0, ptr %20, align 1, !tbaa !9
  br label %347, !llvm.loop !106

3096:                                             ; preds = %3091, %350
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  %3097 = load i32, ptr %21, align 4
  switch i32 %3097, label %3104 [
    i32 2, label %3098
  ]

3098:                                             ; preds = %3096
  %3099 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %3099, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3099, ptr @_ZTIPKc, ptr null) #11
          to label %3112 unwind label %3100

3100:                                             ; preds = %3098
  %3101 = landingpad { ptr, i32 }
          cleanup
  %3102 = extractvalue { ptr, i32 } %3101, 0
  store ptr %3102, ptr %16, align 8
  %3103 = extractvalue { ptr, i32 } %3101, 1
  store i32 %3103, ptr %17, align 4
  br label %3105

3104:                                             ; preds = %3096
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #9
  ret void

3105:                                             ; preds = %3100, %3093
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  br label %3106

3106:                                             ; preds = %3105, %355, %351
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #9
  br label %3107

3107:                                             ; preds = %3106
  %3108 = load ptr, ptr %16, align 8
  %3109 = load i32, ptr %17, align 4
  %3110 = insertvalue { ptr, i32 } poison, ptr %3108, 0
  %3111 = insertvalue { ptr, i32 } %3110, i32 %3109, 1
  resume { ptr, i32 } %3111

3112:                                             ; preds = %3098, %2645, %2629, %2554, %1986, %1973, %1620, %1521, %1143, %385
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathEEN1MC2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 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)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK19EncodedLiteralSliceneERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #3 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: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue15make_SizedArrayENS0_15Data_SizedArrayE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(24)) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

declare noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24)) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() #5

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

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

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

declare noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_static_typeERN3HIR7TypeRefERKNS1_4PathE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) 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) #5 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) #3 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) #3 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 hidden void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !6, i64 8}
!16 = !{!"_ZTSN3MIR11TypeResolveE", !14, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !17, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !14, i64 112, !14, i64 116}
!17 = !{!"_ZTS9FmtLambda", !18, i64 0}
!18 = !{!"_ZTSSt8functionIFvRSoEE", !19, i64 0, !6, i64 24}
!19 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!20 = !{!16, !6, i64 16}
!21 = !{!22, !23, i64 0}
!22 = !{!"_ZTSN8TypeRepr5FieldE", !23, i64 0, !24, i64 8}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!23, !23, i64 0}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = distinct !{!32, !26}
!33 = !{!34, !14, i64 0}
!34 = !{!"_ZTSSt4pairIjbE", !14, i64 0, !10, i64 4}
!35 = !{!34, !10, i64 4}
!36 = !{!37, !14, i64 32}
!37 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !38, i64 0, !14, i64 32, !45, i64 40}
!38 = !{!"_ZTSN3HIR11GenericPathE", !39, i64 0, !41, i64 8}
!39 = !{!"_ZTSN3HIR10SimplePathE", !40, i64 0}
!40 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!41 = !{!"_ZTSN3HIR10PathParamsE", !42, i64 0, !43, i64 8, !44, i64 16}
!42 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!43 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!44 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!45 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!50, !50, i64 0}
!50 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!51 = !{!52, !23, i64 8}
!52 = !{!"_ZTS8TypeRepr", !23, i64 0, !23, i64 8, !53, i64 16, !55, i64 88}
!53 = !{!"_ZTSN8TypeRepr11VariantModeE", !54, i64 0, !7, i64 8}
!54 = !{!"_ZTSN8TypeRepr11VariantMode3TagE", !7, i64 0}
!55 = !{!"_ZTSSt6vectorIN8TypeRepr5FieldESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = distinct !{!59, !26}
!60 = !{i64 0, i64 8, !5, i64 8, i64 8, !28, i64 16, i64 8, !28}
!61 = !{!62, !14, i64 32}
!62 = !{!"_ZTSN3MIR6RValue17Data_UnionVariantE", !38, i64 0, !14, i64 32, !63, i64 40}
!63 = !{!"_ZTSN3MIR5ParamE", !64, i64 0, !7, i64 8}
!64 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!65 = distinct !{!65, !26}
!66 = distinct !{!66, !26}
!67 = !{!68, !50, i64 16}
!68 = !{!"_ZTSN3MIR8Constant9Data_UintE", !69, i64 0, !50, i64 16}
!69 = !{!"_ZTS4U128", !23, i64 0, !23, i64 8}
!70 = !{!71, !50, i64 16}
!71 = !{!"_ZTSN3MIR8Constant8Data_IntE", !72, i64 0, !50, i64 16}
!72 = !{!"_ZTS4S128", !69, i64 0}
!73 = !{!74, !75, i64 0}
!74 = !{!"_ZTSN3MIR8Constant10Data_FloatE", !75, i64 0, !50, i64 8}
!75 = !{!"double", !7, i64 0}
!76 = !{!74, !50, i64 8}
!77 = !{!78, !10, i64 0}
!78 = !{!"_ZTSN3MIR8Constant9Data_BoolE", !10, i64 0}
!79 = distinct !{!79, !26}
!80 = distinct !{!80, !26}
!81 = !{!82, !83, i64 0}
!82 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !83, i64 0, !24, i64 8}
!83 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!84 = !{i64 0, i64 8, !28, i64 8, i64 8, !28}
!85 = distinct !{!85, !26}
!86 = distinct !{!86, !26}
!87 = !{!88, !88, i64 0}
!88 = !{!"_ZTS12MetadataType", !7, i64 0}
!89 = !{!90, !83, i64 4}
!90 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !91, i64 0, !83, i64 4, !24, i64 8}
!91 = !{!"_ZTSN3HIR11LifetimeRefE", !14, i64 0}
!92 = !{!93, !83, i64 0}
!93 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !83, i64 0, !94, i64 8}
!94 = !{!"_ZTSN3MIR6LValueE", !95, i64 0, !96, i64 8}
!95 = !{!"_ZTSN3MIR6LValue7StorageE", !23, i64 0}
!96 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!100 = !{!7, !7, i64 0}
!101 = distinct !{!101, !26}
!102 = distinct !{!102, !26}
!103 = distinct !{!103, !26}
!104 = distinct !{!104, !26}
!105 = distinct !{!105, !26}
!106 = distinct !{!106, !26}


; 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.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" }
%"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 }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%struct.M = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.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.97 = type { ptr, ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%class.anon.124 = type { ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr.76" = type { %"struct.std::__uniq_ptr_data.77" }
%"struct.std::__uniq_ptr_data.77" = type { %"class.std::__uniq_ptr_impl.78" }
%"class.std::__uniq_ptr_impl.78" = type { %"class.std::tuple.79" }
%"class.std::tuple.79" = type { %"struct.std::_Tuple_impl.80" }
%"struct.std::_Tuple_impl.80" = type { %"struct.std::_Head_base.83" }
%"struct.std::_Head_base.83" = type { ptr }
%class.anon.125 = type { ptr }
%"class.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.92" }
%class.anon.141 = type { ptr }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.84", [8 x i8] }
%"class.std::unique_ptr.84" = type { %"struct.std::__uniq_ptr_data.85" }
%"struct.std::__uniq_ptr_data.85" = type { %"class.std::__uniq_ptr_impl.86" }
%"class.std::__uniq_ptr_impl.86" = type { %"class.std::tuple.87" }
%"class.std::tuple.87" = type { %"struct.std::_Tuple_impl.88" }
%"struct.std::_Tuple_impl.88" = type { %"struct.std::_Head_base.91" }
%"struct.std::_Head_base.91" = type { ptr }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.92" }
%class.anon.142 = type { ptr }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.92" }
%class.anon.161 = type { i8 }
%class.U128 = type { i64, i64 }
%class.anon.162 = type { ptr, ptr, ptr }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%class.anon.163 = type { ptr, ptr, ptr, ptr }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%"struct.MIR::Constant::Data_Int" = type <{ %class.S128, i32, [4 x i8] }>
%class.S128 = type { %class.U128 }
%class.anon.164 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%class.anon.165 = type { ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%class.anon.166 = type { ptr }
%class.anon.167 = type { ptr }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%class.anon.168 = type { i8 }
%class.anon.170 = type { ptr, ptr }
%class.anon.171 = type { i8 }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.173" = type { ptr }
%class.anon.174 = type { i8 }
%class.anon.176 = type { i8 }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE = external hidden unnamed_addr constant [28 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@__PRETTY_FUNCTION__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE = external hidden unnamed_addr constant [158 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.5 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef %6) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %8 = alloca %struct.M, align 8
  %9 = alloca %class.TraceLog, align 8
  %10 = alloca %"class.std::function", align 8
  %11 = alloca %class.anon.97, align 8
  %12 = alloca %"class.HIR::Path", align 8
  %13 = alloca %"class.HIR::GenericPath", align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.124, align 8
  %16 = alloca %"class.MIR::Constant", align 8
  %17 = alloca %"class.std::unique_ptr.76", align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.125, align 8
  %20 = alloca %"class.std::vector.92", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.MIR::RValue", align 8
  %24 = alloca %struct.EncodedLiteralSlice, align 8
  %25 = alloca %"class.HIR::TypeRef", align 8
  %26 = alloca %"class.HIR::Path", align 8
  %27 = alloca %"class.HIR::GenericPath", align 8
  %28 = alloca %"class.MIR::Param", align 8
  %29 = alloca %"struct.MIR::LValue", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.MIR::RValue", align 8
  %32 = alloca %"struct.MIR::RValue::Data_Tuple", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.141, align 8
  %36 = alloca %struct.EncodedLiteralSlice, align 8
  %37 = alloca %struct.EncodedLiteralSlice, align 8
  %38 = alloca %"class.MIR::RValue", align 8
  %39 = alloca %struct.EncodedLiteralSlice, align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.HIR::Path", align 8
  %42 = alloca %"class.HIR::GenericPath", align 8
  %43 = alloca %"struct.MIR::LValue", align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca %"class.MIR::RValue", align 8
  %46 = alloca %"struct.MIR::RValue::Data_SizedArray", align 8
  %47 = alloca %"struct.MIR::LValue", align 8
  %48 = alloca %"class.std::vector.92", align 8
  %49 = alloca %"class.MIR::RValue", align 8
  %50 = alloca %struct.EncodedLiteralSlice, align 8
  %51 = alloca %"class.HIR::TypeRef", align 8
  %52 = alloca %"class.HIR::Path", align 8
  %53 = alloca %"class.HIR::GenericPath", align 8
  %54 = alloca %"class.MIR::Param", align 8
  %55 = alloca %"struct.MIR::LValue", align 8
  %56 = alloca %"class.HIR::TypeRef", align 8
  %57 = alloca %"class.MIR::RValue", align 8
  %58 = alloca %"struct.MIR::RValue::Data_Array", align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.142, align 8
  %61 = alloca %"class.std::vector.92", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %64 = alloca %"class.MIR::RValue", align 8
  %65 = alloca %struct.EncodedLiteralSlice, align 8
  %66 = alloca %"class.HIR::TypeRef", align 8
  %67 = alloca %"class.HIR::Path", align 8
  %68 = alloca %"class.HIR::GenericPath", align 8
  %69 = alloca %"class.MIR::Param", align 8
  %70 = alloca %"struct.MIR::LValue", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %"class.MIR::RValue", align 8
  %73 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %74 = alloca %"class.std::vector.92", align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %77 = alloca %"class.MIR::RValue", align 8
  %78 = alloca %struct.EncodedLiteralSlice, align 8
  %79 = alloca %"class.HIR::TypeRef", align 8
  %80 = alloca %"class.HIR::Path", align 8
  %81 = alloca %"class.HIR::GenericPath", align 8
  %82 = alloca %"class.MIR::Param", align 8
  %83 = alloca %"struct.MIR::LValue", align 8
  %84 = alloca %"class.HIR::TypeRef", align 8
  %85 = alloca %"class.MIR::RValue", align 8
  %86 = alloca %"struct.MIR::RValue::Data_EnumVariant", align 8
  %87 = alloca %"class.std::function", align 8
  %88 = alloca %class.anon.161, align 1
  %89 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %91 = alloca i32, align 4
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %class.U128, align 8
  %94 = alloca %struct.EncodedLiteralSlice, align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %96 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %97 = alloca i64, align 8
  %98 = alloca %"class.std::function", align 8
  %99 = alloca %class.anon.162, align 8
  %100 = alloca %"class.MIR::RValue", align 8
  %101 = alloca %struct.EncodedLiteralSlice, align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca %"class.HIR::Path", align 8
  %104 = alloca %"struct.MIR::LValue", align 8
  %105 = alloca %"class.HIR::TypeRef", align 8
  %106 = alloca %"class.MIR::RValue", align 8
  %107 = alloca %"struct.MIR::RValue::Data_UnionVariant", align 8
  %108 = alloca %"struct.MIR::LValue", align 8
  %109 = alloca ptr, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.163, align 8
  %112 = alloca %"class.MIR::Constant", align 8
  %113 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %114 = alloca %"class.MIR::Constant", align 8
  %115 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %116 = alloca %"class.MIR::Constant", align 8
  %117 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %118 = alloca %"class.MIR::Constant", align 8
  %119 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %120 = alloca %"class.MIR::Constant", align 8
  %121 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %122 = alloca %"class.MIR::Constant", align 8
  %123 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %124 = alloca %"class.MIR::Constant", align 8
  %125 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %126 = alloca %"class.MIR::Constant", align 8
  %127 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %128 = alloca %"class.MIR::Constant", align 8
  %129 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %130 = alloca %"class.MIR::Constant", align 8
  %131 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %132 = alloca %"class.MIR::Constant", align 8
  %133 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %134 = alloca %"class.MIR::Constant", align 8
  %135 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %136 = alloca %"class.MIR::Constant", align 8
  %137 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %138 = alloca %"class.MIR::Constant", align 8
  %139 = alloca %"class.MIR::Constant", align 8
  %140 = alloca %"class.MIR::Constant", align 8
  %141 = alloca %class.U128, align 8
  %142 = alloca ptr, align 8
  %143 = alloca %"class.std::function", align 8
  %144 = alloca %class.anon.164, align 8
  %145 = alloca %"class.HIR::TypeRef", align 8
  %146 = alloca %"class.HIR::TypeRef", align 8
  %147 = alloca %"class.MIR::RValue", align 8
  %148 = alloca %struct.EncodedLiteralSlice, align 8
  %149 = alloca %"class.HIR::TypeRef", align 8
  %150 = alloca %"class.HIR::Path", align 8
  %151 = alloca %"struct.MIR::LValue", align 8
  %152 = alloca %"class.HIR::TypeRef", align 8
  %153 = alloca %"class.MIR::RValue", align 8
  %154 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %155 = alloca %"struct.MIR::LValue", align 8
  %156 = alloca %"class.HIR::TypeRef", align 8
  %157 = alloca %"class.MIR::RValue", align 8
  %158 = alloca %"class.MIR::Constant", align 8
  %159 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %160 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %161 = alloca %class.U128, align 8
  %162 = alloca %"class.std::function", align 8
  %163 = alloca %class.anon.165, align 8
  %164 = alloca %"class.MIR::Constant", align 8
  %165 = alloca %"class.std::unique_ptr.76", align 8
  %166 = alloca %"class.HIR::Path", align 8
  %167 = alloca %"class.HIR::TypeRef", align 8
  %168 = alloca %"struct.MIR::LValue", align 8
  %169 = alloca %"class.HIR::TypeRef", align 8
  %170 = alloca %"class.HIR::TypeRef", align 8
  %171 = alloca %"class.MIR::RValue", align 8
  %172 = alloca %"class.MIR::Constant", align 8
  %173 = alloca %"struct.MIR::LValue", align 8
  %174 = alloca %"class.HIR::TypeRef", align 8
  %175 = alloca %"class.HIR::TypeRef", align 8
  %176 = alloca %"class.MIR::RValue", align 8
  %177 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %178 = alloca %"class.HIR::TypeRef", align 8
  %179 = alloca %"struct.MIR::LValue", align 8
  %180 = alloca %"class.HIR::TypeRef", align 8
  %181 = alloca %"class.HIR::TypeRef", align 8
  %182 = alloca %"class.MIR::RValue", align 8
  %183 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %184 = alloca %"class.HIR::TypeRef", align 8
  %185 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %186 = alloca %"struct.MIR::LValue", align 8
  %187 = alloca %"class.MIR::Constant", align 8
  %188 = alloca %"class.std::function", align 8
  %189 = alloca %class.anon.166, align 8
  %190 = alloca %"class.std::function", align 8
  %191 = alloca %class.anon.167, align 8
  %192 = alloca %"class.MIR::Param", align 8
  %193 = alloca %"class.MIR::Constant", align 8
  %194 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %195 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %196 = alloca %"class.MIR::Constant", align 8
  %197 = alloca %"class.std::function", align 8
  %198 = alloca %class.anon.168, align 1
  %199 = alloca %"class.MIR::Param", align 8
  %200 = alloca %"class.MIR::Constant", align 8
  %201 = alloca %"class.HIR::TypeRef", align 8
  %202 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %203 = alloca %"class.MIR::Constant", align 8
  %204 = alloca ptr, align 8
  %205 = alloca %"class.std::function", align 8
  %206 = alloca %class.anon.170, align 8
  %207 = alloca %"class.std::function", align 8
  %208 = alloca %class.anon.171, align 1
  %209 = alloca i32, align 4
  %210 = alloca %"class.std::vector.49", align 8
  %211 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %212 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %213 = alloca i8, align 1
  %214 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %215 = alloca %"class.MIR::Constant", align 8
  %216 = alloca %"class.std::vector.49", align 8
  %217 = alloca %"class.MIR::Constant", align 8
  %218 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %219 = alloca i32, align 4
  %220 = alloca %"class.std::vector.49", align 8
  %221 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %222 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %223 = alloca i8, align 1
  %224 = alloca %"class.MIR::Constant", align 8
  %225 = alloca %"class.std::vector.49", align 8
  %226 = alloca i32, align 4
  %227 = alloca %"class.MIR::Constant", align 8
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::vector.49", align 8
  %230 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %231 = alloca %"class.__gnu_cxx::__normal_iterator.173", align 8
  %232 = alloca i8, align 1
  %233 = alloca %"class.MIR::RValue", align 8
  %234 = alloca %"struct.MIR::RValue::Data_MakeDst", align 8
  %235 = alloca %"class.MIR::Constant", align 8
  %236 = alloca %"class.std::vector.49", align 8
  %237 = alloca %"class.MIR::Constant", align 8
  %238 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %239 = alloca %"struct.MIR::LValue", align 8
  %240 = alloca %"class.HIR::TypeRef", align 8
  %241 = alloca %"class.HIR::TypeRef", align 8
  %242 = alloca %"class.HIR::TypeRef", align 8
  %243 = alloca %"class.MIR::RValue", align 8
  %244 = alloca %"class.HIR::TypeRef", align 8
  %245 = alloca %"class.HIR::TypeRef", align 8
  %246 = alloca %"struct.MIR::LValue", align 8
  %247 = alloca %"class.HIR::TypeRef", align 8
  %248 = alloca %"class.MIR::RValue", align 8
  %249 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %250 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %251 = alloca %"struct.MIR::LValue", align 8
  %252 = alloca %"class.std::function", align 8
  %253 = alloca %class.anon.174, align 1
  %254 = alloca %"class.std::function", align 8
  %255 = alloca %class.anon.176, align 1
  %256 = alloca %"class.MIR::Constant", align 8
  %257 = alloca %"class.std::unique_ptr.76", align 8
  %258 = alloca %"class.HIR::Path", align 8
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #9
  call void @_ZZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathEEN1MC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %8)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #9
  %259 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %260 unwind label %264

260:                                              ; preds = %7
  %261 = select i1 %259, ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  store ptr %4, ptr %11, align 8, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %3, ptr %262, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %261, ptr noundef nonnull %10)
          to label %.lr.ph920 unwind label %266

.critedge757.loopexit:                            ; preds = %1212
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %164) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #9
  %263 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %263, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %263, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %1603

264:                                              ; preds = %7
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %1607

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

268:                                              ; preds = %313, %311, %309, %307, %305, %303, %301, %298, %295, %283
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %1606

.lr.ph920:                                        ; preds = %260
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  %270 = getelementptr inbounds i8, ptr %161, i64 8
  %271 = getelementptr inbounds i8, ptr %1, i64 8
  %272 = getelementptr inbounds i8, ptr %1, i64 16
  %273 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %274 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  switch i32 %274, label %276 [
    i32 0, label %275
    i32 10, label %322
    i32 8, label %385
    i32 4, label %504
    i32 3, label %871
    i32 12, label %1083
    i32 11, label %.lr.ph
    i32 14, label %1569
  ]

275:                                              ; preds = %.lr.ph920
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 189, ptr noundef nonnull @__PRETTY_FUNCTION__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE) #11
  unreachable

276:                                              ; preds = %.lr.ph920
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %12) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %277 unwind label %285

277:                                              ; preds = %276
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull %13)
          to label %278 unwind label %287

278:                                              ; preds = %277
  %279 = invoke noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %280 unwind label %289

280:                                              ; preds = %278
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #9
  br i1 %279, label %281, label %295

281:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  store ptr %4, ptr %15, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %3, ptr %282, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %14)
          to label %283 unwind label %293

283:                                              ; preds = %281
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  %284 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %284, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %284, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %268

285:                                              ; preds = %276
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %292

287:                                              ; preds = %277
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %291

289:                                              ; preds = %278
  %290 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  br label %291

291:                                              ; preds = %289, %287
  %.pn739 = phi { ptr, i32 } [ %290, %289 ], [ %288, %287 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %292

292:                                              ; preds = %291, %285
  %.pn739.pn = phi { ptr, i32 } [ %.pn739, %291 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #9
  br label %1606

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

295:                                              ; preds = %280
  %296 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %297 unwind label %268

297:                                              ; preds = %295
  br i1 %296, label %298, label %313

298:                                              ; preds = %297
  %299 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %299, ptr noundef nonnull @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %301 unwind label %268

301:                                              ; preds = %298
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull @.str.5)
          to label %303 unwind label %268

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %305 unwind label %268

305:                                              ; preds = %303
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull @.str.6)
          to label %307 unwind label %268

307:                                              ; preds = %305
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %309 unwind label %268

309:                                              ; preds = %307
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %311 unwind label %268

311:                                              ; preds = %309
  %312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %313 unwind label %268

313:                                              ; preds = %311, %297
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.76") align 8 %17, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %314 unwind label %268

314:                                              ; preds = %313
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %16, ptr noundef nonnull %17)
          to label %315 unwind label %317

315:                                              ; preds = %314
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %16)
          to label %316 unwind label %319

316:                                              ; preds = %315
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #9
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %1605

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

319:                                              ; preds = %315
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #9
  br label %321

321:                                              ; preds = %319, %317
  %.pn742 = phi { ptr, i32 } [ %320, %319 ], [ %318, %317 ]
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %1606

322:                                              ; preds = %.lr.ph920
  %323 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %324 = load ptr, ptr %271, align 8, !tbaa !11
  %325 = load ptr, ptr %272, align 8, !tbaa !16
  %326 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(424) %325, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %327 unwind label %330

327:                                              ; preds = %322
  %.not728 = icmp eq ptr %326, null
  br i1 %.not728, label %328, label %334

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  store ptr %4, ptr %19, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %18)
          to label %329 unwind label %332

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

330:                                              ; preds = %322
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %1606

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

334:                                              ; preds = %329, %327
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  %335 = getelementptr inbounds i8, ptr %326, i64 88
  %336 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %335) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %336)
          to label %337 unwind label %341

337:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %338 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %335) #9
  store ptr %338, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %339 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %335) #9
  store ptr %339, ptr %22, align 8
  %340 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %340, label %.lr.ph952, label %._crit_edge953

._crit_edge953:                                   ; preds = %356, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %32)
          to label %381 unwind label %382

341:                                              ; preds = %334
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %384

.lr.ph952:                                        ; preds = %337, %356
  %343 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %23) #9
  %344 = load i64, ptr %343, align 8, !tbaa !17
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %24, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %344)
          to label %345 unwind label %359

345:                                              ; preds = %.lr.ph952
  %346 = load ptr, ptr %271, align 8, !tbaa !11
  %347 = getelementptr inbounds i8, ptr %343, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %25, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(8) %347, i1 noundef zeroext true)
          to label %348 unwind label %359

348:                                              ; preds = %345
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %349 unwind label %361

349:                                              ; preds = %348
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %26, ptr noundef nonnull %27)
          to label %350 unwind label %363

350:                                              ; preds = %349
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %23, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %24, ptr noundef nonnull %25, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %26)
          to label %351 unwind label %365

351:                                              ; preds = %350
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #9
  %352 = load ptr, ptr %271, align 8, !tbaa !11
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %30, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull align 8 dereferenceable(8) %347, i1 noundef zeroext true)
          to label %353 unwind label %369

353:                                              ; preds = %351
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %31, ptr noundef nonnull align 8 dereferenceable(112) %23) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %29, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %30, ptr noundef nonnull %31)
          to label %354 unwind label %371

354:                                              ; preds = %353
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull %29)
          to label %355 unwind label %373

355:                                              ; preds = %354
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %356 unwind label %375

356:                                              ; preds = %355
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %31) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %23) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %23) #9
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %358 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %358, label %.lr.ph952, label %._crit_edge953

359:                                              ; preds = %345, %.lr.ph952
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %380

361:                                              ; preds = %348
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %368

363:                                              ; preds = %349
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %350
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #9
  br label %367

367:                                              ; preds = %365, %363
  %.pn729 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %368

368:                                              ; preds = %367, %361
  %.pn729.pn = phi { ptr, i32 } [ %.pn729, %367 ], [ %362, %361 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %380

369:                                              ; preds = %351
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %379

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

373:                                              ; preds = %354
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

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

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

378:                                              ; preds = %377, %371
  %.pn732.pn = phi { ptr, i32 } [ %.pn732, %377 ], [ %372, %371 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %31) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %379

379:                                              ; preds = %378, %369
  %.pn732.pn.pn = phi { ptr, i32 } [ %.pn732.pn, %378 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %23) #9
  br label %380

380:                                              ; preds = %379, %368, %359
  %.pn732.pn.pn.pn = phi { ptr, i32 } [ %.pn732.pn.pn, %379 ], [ %.pn729.pn, %368 ], [ %360, %359 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %384

381:                                              ; preds = %._crit_edge953
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #9
  br label %1605

382:                                              ; preds = %._crit_edge953
  %383 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  br label %384

384:                                              ; preds = %382, %380, %341
  %.pn732.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn732.pn.pn.pn, %380 ], [ %383, %382 ], [ %342, %341 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #9
  br label %1606

385:                                              ; preds = %.lr.ph920
  %386 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  store i64 0, ptr %33, align 8, !tbaa !21
  %387 = load ptr, ptr %271, align 8, !tbaa !11
  %388 = load ptr, ptr %272, align 8, !tbaa !16
  %389 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(424) %388, ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %390 unwind label %393

390:                                              ; preds = %385
  br i1 %389, label %397, label %391

391:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  store ptr %4, ptr %35, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %34)
          to label %392 unwind label %395

392:                                              ; preds = %391
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %397

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

395:                                              ; preds = %391
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %503

397:                                              ; preds = %392, %390
  %398 = getelementptr inbounds i8, ptr %386, i64 8
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %398)
  %400 = load i64, ptr %399, align 8, !tbaa !21
  %401 = icmp ugt i64 %400, 1
  br i1 %401, label %402, label %.thread

402:                                              ; preds = %397
  %403 = load i64, ptr %33, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #9
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %36, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0, i64 noundef %403)
          to label %.lr.ph946.preheader unwind label %404

.lr.ph946.preheader:                              ; preds = %402
  %.pre = load i64, ptr %33, align 8, !tbaa !21
  br label %.lr.ph946

404:                                              ; preds = %402
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %417

.lr.ph946:                                        ; preds = %.lr.ph946.preheader, %413
  %406 = phi i64 [ %410, %413 ], [ %.pre, %.lr.ph946.preheader ]
  %.0517945 = phi i64 [ %414, %413 ], [ %403, %.lr.ph946.preheader ]
  %.0522944 = phi i32 [ %415, %413 ], [ 1, %.lr.ph946.preheader ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #9
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %37, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.0517945, i64 noundef %406)
          to label %407 unwind label %411

407:                                              ; preds = %.lr.ph946
  %408 = invoke noundef zeroext i1 @_ZNK19EncodedLiteralSliceneERKS_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %409 unwind label %411

409:                                              ; preds = %407
  %410 = load i64, ptr %33, align 8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #9
  br i1 %408, label %418, label %413

411:                                              ; preds = %407, %.lr.ph946
  %412 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #9
  br label %417

413:                                              ; preds = %409
  %414 = add i64 %410, %.0517945
  %415 = add i32 %.0522944, 1
  %416 = zext i32 %415 to i64
  %.not828 = icmp ugt i64 %400, %416
  br i1 %.not828, label %.lr.ph946, label %.critedge830, !llvm.loop !22

417:                                              ; preds = %411, %404
  %.pn706 = phi { ptr, i32 } [ %412, %411 ], [ %405, %404 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #9
  br label %503

418:                                              ; preds = %409
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #9
  br label %.thread

.critedge830:                                     ; preds = %413
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %38) #9
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %39, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0, i64 noundef %410)
          to label %419 unwind label %431

419:                                              ; preds = %.critedge830
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %40, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %420 unwind label %431

420:                                              ; preds = %419
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %421 unwind label %433

421:                                              ; preds = %420
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %41, ptr noundef nonnull %42)
          to label %422 unwind label %435

422:                                              ; preds = %421
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %38, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %39, ptr noundef nonnull %40, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %41)
          to label %423 unwind label %437

423:                                              ; preds = %422
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %44, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %424 unwind label %441

424:                                              ; preds = %423
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %45, ptr noundef nonnull align 8 dereferenceable(112) %38) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %43, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %44, ptr noundef nonnull %45)
          to label %425 unwind label %443

425:                                              ; preds = %424
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %45) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %426 unwind label %445

426:                                              ; preds = %425
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %46, ptr noundef nonnull %47)
          to label %427 unwind label %447

427:                                              ; preds = %426
  %428 = getelementptr inbounds i8, ptr %46, i64 48
  invoke void @_ZN3HIR9ArraySizeC2Em(ptr noundef nonnull align 8 dereferenceable(32) %428, i64 noundef %400)
          to label %429 unwind label %449

429:                                              ; preds = %427
  invoke void @_ZN3MIR6RValue15make_SizedArrayENS0_15Data_SizedArrayE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %46)
          to label %430 unwind label %451

430:                                              ; preds = %429
  call void @_ZN3MIR6RValue15Data_SizedArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %46) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %38) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %38) #9
  br label %502

431:                                              ; preds = %419, %.critedge830
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %456

433:                                              ; preds = %420
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %440

435:                                              ; preds = %421
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %422
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #9
  br label %439

439:                                              ; preds = %437, %435
  %.pn718 = phi { ptr, i32 } [ %438, %437 ], [ %436, %435 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %440

440:                                              ; preds = %439, %433
  %.pn718.pn = phi { ptr, i32 } [ %.pn718, %439 ], [ %434, %433 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %456

441:                                              ; preds = %423
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %455

443:                                              ; preds = %424
  %444 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %45) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  br label %455

445:                                              ; preds = %425
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %454

447:                                              ; preds = %426
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %453

449:                                              ; preds = %427
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #9
  br label %453

451:                                              ; preds = %429
  %452 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue15Data_SizedArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %46) #9
  br label %453

453:                                              ; preds = %451, %449, %447
  %.pn721 = phi { ptr, i32 } [ %452, %451 ], [ %450, %449 ], [ %448, %447 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %454

454:                                              ; preds = %453, %445
  %.pn721.pn = phi { ptr, i32 } [ %.pn721, %453 ], [ %446, %445 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %455

455:                                              ; preds = %454, %443, %441
  %.pn721.pn.pn = phi { ptr, i32 } [ %.pn721.pn, %454 ], [ %444, %443 ], [ %442, %441 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %38) #9
  br label %456

456:                                              ; preds = %455, %440, %431
  %.pn721.pn.pn.pn = phi { ptr, i32 } [ %.pn721.pn.pn, %455 ], [ %.pn718.pn, %440 ], [ %432, %431 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %38) #9
  br label %503

.thread:                                          ; preds = %418, %397
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %398)
  %458 = load i64, ptr %457, align 8, !tbaa !21
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %458)
          to label %.preheader unwind label %459

.preheader:                                       ; preds = %.thread
  %.not954 = icmp eq i64 %400, 0
  br i1 %.not954, label %._crit_edge950, label %.lr.ph949

._crit_edge950:                                   ; preds = %470, %.preheader
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  invoke void @_ZN3MIR6RValue10make_ArrayENS0_10Data_ArrayE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %58)
          to label %498 unwind label %499

459:                                              ; preds = %.thread
  %460 = landingpad { ptr, i32 }
          cleanup
  br label %501

.lr.ph949:                                        ; preds = %.preheader, %470
  %.0523948 = phi i64 [ %472, %470 ], [ 0, %.preheader ]
  %.0524947 = phi i32 [ %473, %470 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %49) #9
  %461 = load i64, ptr %33, align 8, !tbaa !21
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %50, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.0523948, i64 noundef %461)
          to label %462 unwind label %476

462:                                              ; preds = %.lr.ph949
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %51, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %463 unwind label %476

463:                                              ; preds = %462
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %464 unwind label %478

464:                                              ; preds = %463
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %52, ptr noundef nonnull %53)
          to label %465 unwind label %480

465:                                              ; preds = %464
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %49, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %50, ptr noundef nonnull %51, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %52)
          to label %466 unwind label %482

466:                                              ; preds = %465
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %52) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %54) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %467 unwind label %486

467:                                              ; preds = %466
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %57, ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %55, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %56, ptr noundef nonnull %57)
          to label %468 unwind label %488

468:                                              ; preds = %467
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %54, ptr noundef nonnull %55)
          to label %469 unwind label %490

469:                                              ; preds = %468
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(48) %54)
          to label %470 unwind label %492

470:                                              ; preds = %469
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %57) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %54) #9
  %471 = load i64, ptr %33, align 8, !tbaa !21
  %472 = add i64 %471, %.0523948
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #9
  %473 = add i32 %.0524947, 1
  %474 = zext i32 %473 to i64
  %475 = icmp ugt i64 %400, %474
  br i1 %475, label %.lr.ph949, label %._crit_edge950, !llvm.loop !24

476:                                              ; preds = %462, %.lr.ph949
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %497

478:                                              ; preds = %463
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %485

480:                                              ; preds = %464
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %484

482:                                              ; preds = %465
  %483 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %52) #9
  br label %484

484:                                              ; preds = %482, %480
  %.pn708 = phi { ptr, i32 } [ %483, %482 ], [ %481, %480 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  br label %485

485:                                              ; preds = %484, %478
  %.pn708.pn = phi { ptr, i32 } [ %.pn708, %484 ], [ %479, %478 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  br label %497

486:                                              ; preds = %466
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %496

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

490:                                              ; preds = %468
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %494

492:                                              ; preds = %469
  %493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #9
  br label %494

494:                                              ; preds = %492, %490
  %.pn711 = phi { ptr, i32 } [ %493, %492 ], [ %491, %490 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  br label %495

495:                                              ; preds = %494, %488
  %.pn711.pn = phi { ptr, i32 } [ %.pn711, %494 ], [ %489, %488 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %57) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %496

496:                                              ; preds = %495, %486
  %.pn711.pn.pn = phi { ptr, i32 } [ %.pn711.pn, %495 ], [ %487, %486 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %54) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  br label %497

497:                                              ; preds = %496, %485, %476
  %.pn711.pn.pn.pn = phi { ptr, i32 } [ %.pn711.pn.pn, %496 ], [ %.pn708.pn, %485 ], [ %477, %476 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #9
  br label %501

498:                                              ; preds = %._crit_edge950
  call void @_ZN3MIR6RValue10Data_ArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #9
  br label %502

499:                                              ; preds = %._crit_edge950
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue10Data_ArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  br label %501

501:                                              ; preds = %497, %499, %459
  %.pn711.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %460, %459 ], [ %.pn711.pn.pn.pn, %497 ], [ %500, %499 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #9
  br label %503

502:                                              ; preds = %498, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %1605

503:                                              ; preds = %417, %456, %501, %395, %393
  %.pn721.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %396, %395 ], [ %394, %393 ], [ %.pn721.pn.pn.pn, %456 ], [ %.pn711.pn.pn.pn.pn.pn, %501 ], [ %.pn706, %417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %1606

504:                                              ; preds = %.lr.ph920
  %505 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %506 = load ptr, ptr %271, align 8, !tbaa !11
  %507 = load ptr, ptr %272, align 8, !tbaa !16
  %508 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull align 8 dereferenceable(424) %507, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %509 unwind label %512

509:                                              ; preds = %504
  %.not658 = icmp eq ptr %508, null
  br i1 %.not658, label %510, label %516

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #9
  store ptr %4, ptr %60, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %59)
          to label %511 unwind label %514

511:                                              ; preds = %510
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %516

512:                                              ; preds = %504
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %1606

514:                                              ; preds = %510
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %1606

516:                                              ; preds = %511, %509
  %517 = getelementptr inbounds i8, ptr %505, i64 88
  %518 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
  br i1 %518, label %519, label %573

519:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  %520 = getelementptr inbounds i8, ptr %508, i64 88
  %521 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %520) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %521)
          to label %522 unwind label %527

522:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #9
  %523 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %520) #9
  store ptr %523, ptr %62, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #9
  %524 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %520) #9
  store ptr %524, ptr %63, align 8
  %525 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  br i1 %525, label %.lr.ph941, label %._crit_edge942

._crit_edge942:                                   ; preds = %542, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  %526 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %505)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %526)
          to label %567 unwind label %527

527:                                              ; preds = %._crit_edge942, %519
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %572

.lr.ph941:                                        ; preds = %522, %542
  %529 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %64) #9
  %530 = load i64, ptr %529, align 8, !tbaa !17
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %65, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %530)
          to label %531 unwind label %545

531:                                              ; preds = %.lr.ph941
  %532 = load ptr, ptr %271, align 8, !tbaa !11
  %533 = getelementptr inbounds i8, ptr %529, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %66, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull align 8 dereferenceable(8) %533, i1 noundef zeroext true)
          to label %534 unwind label %545

534:                                              ; preds = %531
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %535 unwind label %547

535:                                              ; preds = %534
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %67, ptr noundef nonnull %68)
          to label %536 unwind label %549

536:                                              ; preds = %535
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %64, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %65, ptr noundef nonnull %66, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %67)
          to label %537 unwind label %551

537:                                              ; preds = %536
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %69) #9
  %538 = load ptr, ptr %271, align 8, !tbaa !11
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %71, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef nonnull align 8 dereferenceable(8) %533, i1 noundef zeroext true)
          to label %539 unwind label %555

539:                                              ; preds = %537
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %72, ptr noundef nonnull align 8 dereferenceable(112) %64) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %70, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %71, ptr noundef nonnull %72)
          to label %540 unwind label %557

540:                                              ; preds = %539
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr noundef nonnull %70)
          to label %541 unwind label %559

541:                                              ; preds = %540
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(48) %69)
          to label %542 unwind label %561

542:                                              ; preds = %541
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %72) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %69) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %64) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %64) #9
  %543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  %544 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  br i1 %544, label %.lr.ph941, label %._crit_edge942

545:                                              ; preds = %531, %.lr.ph941
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %566

547:                                              ; preds = %534
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %554

549:                                              ; preds = %535
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %553

551:                                              ; preds = %536
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #9
  br label %553

553:                                              ; preds = %551, %549
  %.pn696 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  br label %554

554:                                              ; preds = %553, %547
  %.pn696.pn = phi { ptr, i32 } [ %.pn696, %553 ], [ %548, %547 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %566

555:                                              ; preds = %537
  %556 = landingpad { ptr, i32 }
          cleanup
  br label %565

557:                                              ; preds = %539
  %558 = landingpad { ptr, i32 }
          cleanup
  br label %564

559:                                              ; preds = %540
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %563

561:                                              ; preds = %541
  %562 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #9
  br label %563

563:                                              ; preds = %561, %559
  %.pn699 = phi { ptr, i32 } [ %562, %561 ], [ %560, %559 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  br label %564

564:                                              ; preds = %563, %557
  %.pn699.pn = phi { ptr, i32 } [ %.pn699, %563 ], [ %558, %557 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %72) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %565

565:                                              ; preds = %564, %555
  %.pn699.pn.pn = phi { ptr, i32 } [ %.pn699.pn, %564 ], [ %556, %555 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %69) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %64) #9
  br label %566

566:                                              ; preds = %565, %554, %545
  %.pn699.pn.pn.pn = phi { ptr, i32 } [ %.pn699.pn.pn, %565 ], [ %.pn696.pn, %554 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  br label %572

567:                                              ; preds = %._crit_edge942
  %568 = getelementptr inbounds i8, ptr %73, i64 32
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %568, ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %73)
          to label %569 unwind label %570

569:                                              ; preds = %567
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %73) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  br label %1605

570:                                              ; preds = %567
  %571 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %73) #9
  br label %572

572:                                              ; preds = %570, %566, %527
  %.pn699.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn699.pn.pn.pn, %566 ], [ %571, %570 ], [ %528, %527 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  br label %1606

573:                                              ; preds = %516
  %574 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
  br i1 %574, label %575, label %663

575:                                              ; preds = %573
  %576 = load ptr, ptr %271, align 8, !tbaa !11
  %577 = load ptr, ptr %272, align 8, !tbaa !16
  %578 = invoke i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112) %508, ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(424) %577, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %579 unwind label %602

579:                                              ; preds = %575
  %.sroa.0178.0.extract.trunc = trunc i64 %578 to i32
  %580 = and i64 %578, 4294967296
  %.not683 = icmp eq i64 %580, 0
  %581 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
  %582 = load ptr, ptr %581, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %74) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #9
  %583 = getelementptr inbounds i8, ptr %582, i64 104
  %584 = call noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %583)
  br i1 %584, label %585, label %654

585:                                              ; preds = %579
  %586 = getelementptr inbounds i8, ptr %508, i64 88
  %587 = and i64 %578, 4294967295
  %588 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %586, i64 noundef %587)
          to label %589 unwind label %606

589:                                              ; preds = %585
  %590 = load i64, ptr %588, align 8, !tbaa !17
  %591 = load ptr, ptr %271, align 8, !tbaa !11
  %592 = load ptr, ptr %272, align 8, !tbaa !16
  %593 = getelementptr inbounds i8, ptr %588, i64 8
  %594 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull align 8 dereferenceable(424) %592, ptr noundef nonnull align 8 dereferenceable(8) %593)
          to label %595 unwind label %608

595:                                              ; preds = %589
  %596 = getelementptr inbounds i8, ptr %594, i64 88
  %597 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %597)
          to label %598 unwind label %608

598:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #9
  %599 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #9
  store ptr %599, ptr %75, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #9
  %600 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #9
  store ptr %600, ptr %76, align 8
  %601 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  br i1 %601, label %.lr.ph938, label %._crit_edge939

._crit_edge939:                                   ; preds = %629, %598
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #9
  br label %654

602:                                              ; preds = %575
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %1606

604:                                              ; preds = %654
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %662

606:                                              ; preds = %585
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %662

608:                                              ; preds = %595, %589
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %662

.lr.ph938:                                        ; preds = %598, %629
  %610 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  br i1 %.not683, label %614, label %611

611:                                              ; preds = %.lr.ph938
  %612 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #9
  %613 = icmp eq ptr %610, %612
  br i1 %613, label %629, label %614

614:                                              ; preds = %611, %.lr.ph938
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %77) #9
  %615 = load i64, ptr %610, align 8, !tbaa !17
  %616 = add i64 %615, %590
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %78, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %616)
          to label %617 unwind label %632

617:                                              ; preds = %614
  %618 = load ptr, ptr %271, align 8, !tbaa !11
  %619 = getelementptr inbounds i8, ptr %610, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %79, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull align 8 dereferenceable(8) %619, i1 noundef zeroext true)
          to label %620 unwind label %632

620:                                              ; preds = %617
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %621 unwind label %634

621:                                              ; preds = %620
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %80, ptr noundef nonnull %81)
          to label %622 unwind label %636

622:                                              ; preds = %621
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %77, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %78, ptr noundef nonnull %79, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %80)
          to label %623 unwind label %638

623:                                              ; preds = %622
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %80) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %82) #9
  %624 = load ptr, ptr %271, align 8, !tbaa !11
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %84, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %624, ptr noundef nonnull align 8 dereferenceable(8) %619, i1 noundef zeroext true)
          to label %625 unwind label %642

625:                                              ; preds = %623
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %85, ptr noundef nonnull align 8 dereferenceable(112) %77) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %83, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %84, ptr noundef nonnull %85)
          to label %626 unwind label %644

626:                                              ; preds = %625
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %82, ptr noundef nonnull %83)
          to label %627 unwind label %646

627:                                              ; preds = %626
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(48) %82)
          to label %628 unwind label %648

628:                                              ; preds = %627
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %82) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %85) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %82) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %77) #9
  br label %629

629:                                              ; preds = %611, %628
  %630 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  %631 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  br i1 %631, label %.lr.ph938, label %._crit_edge939

632:                                              ; preds = %617, %614
  %633 = landingpad { ptr, i32 }
          cleanup
  br label %653

634:                                              ; preds = %620
  %635 = landingpad { ptr, i32 }
          cleanup
  br label %641

636:                                              ; preds = %621
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %640

638:                                              ; preds = %622
  %639 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %80) #9
  br label %640

640:                                              ; preds = %638, %636
  %.pn684 = phi { ptr, i32 } [ %639, %638 ], [ %637, %636 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %641

641:                                              ; preds = %640, %634
  %.pn684.pn = phi { ptr, i32 } [ %.pn684, %640 ], [ %635, %634 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  br label %653

642:                                              ; preds = %623
  %643 = landingpad { ptr, i32 }
          cleanup
  br label %652

644:                                              ; preds = %625
  %645 = landingpad { ptr, i32 }
          cleanup
  br label %651

646:                                              ; preds = %626
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %650

648:                                              ; preds = %627
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %82) #9
  br label %650

650:                                              ; preds = %648, %646
  %.pn687 = phi { ptr, i32 } [ %649, %648 ], [ %647, %646 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %651

651:                                              ; preds = %650, %644
  %.pn687.pn = phi { ptr, i32 } [ %.pn687, %650 ], [ %645, %644 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %85) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  br label %652

652:                                              ; preds = %651, %642
  %.pn687.pn.pn = phi { ptr, i32 } [ %.pn687.pn, %651 ], [ %643, %642 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %82) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #9
  br label %653

653:                                              ; preds = %652, %641, %632
  %.pn687.pn.pn.pn = phi { ptr, i32 } [ %.pn687.pn.pn, %652 ], [ %.pn684.pn, %641 ], [ %633, %632 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #9
  br label %662

654:                                              ; preds = %579, %._crit_edge939
  %655 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %505)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %86, ptr noundef nonnull align 8 dereferenceable(32) %655)
          to label %656 unwind label %604

656:                                              ; preds = %654
  %657 = getelementptr inbounds i8, ptr %86, i64 32
  store i32 %.sroa.0178.0.extract.trunc, ptr %657, align 8, !tbaa !25
  %658 = getelementptr inbounds i8, ptr %86, i64 40
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %658, ptr noundef nonnull align 8 dereferenceable(24) %74) #9
  invoke void @_ZN3MIR6RValue16make_EnumVariantENS0_16Data_EnumVariantE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %86)
          to label %659 unwind label %660

659:                                              ; preds = %656
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %86) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %74) #9
  br label %1605

660:                                              ; preds = %656
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %86) #9
  br label %662

662:                                              ; preds = %606, %653, %608, %660, %604
  %.pn687.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %661, %660 ], [ %605, %604 ], [ %607, %606 ], [ %.pn687.pn.pn.pn, %653 ], [ %609, %608 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %74) #9
  br label %1606

663:                                              ; preds = %573
  %664 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding8is_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
  br i1 %664, label %665, label %856

665:                                              ; preds = %663
  %666 = load ptr, ptr %271, align 8, !tbaa !11
  %667 = load ptr, ptr %272, align 8, !tbaa !16
  %668 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 8 dereferenceable(424) %667, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %669 unwind label %672

669:                                              ; preds = %665
  %.not663 = icmp eq ptr %668, null
  br i1 %.not663, label %670, label %676

670:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %87)
          to label %671 unwind label %674

671:                                              ; preds = %670
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  br label %676

672:                                              ; preds = %814, %665
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %1606

674:                                              ; preds = %670
  %675 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #9
  br label %1606

676:                                              ; preds = %669, %671
  %677 = getelementptr inbounds i8, ptr %668, i64 88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #9
  %678 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  store ptr %678, ptr %89, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #9
  %679 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  store ptr %679, ptr %90, align 8
  %680 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  br i1 %680, label %.lr.ph930, label %.thread765

.lr.ph930:                                        ; preds = %676
  %681 = getelementptr inbounds i8, ptr %668, i64 8
  br label %682

.thread765:                                       ; preds = %716, %676
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #9
  br label %728

682:                                              ; preds = %.lr.ph930, %716
  %683 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  %684 = getelementptr inbounds i8, ptr %683, i64 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %91) #9
  %685 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %684)
  %686 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %685)
  br i1 %686, label %687, label %.critedge

687:                                              ; preds = %682
  %688 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %684)
  %689 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %688)
  store i32 2, ptr %91, align 4, !tbaa !38
  %690 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %689, ptr noundef nonnull align 4 dereferenceable(4) %91)
          to label %691 unwind label %714

691:                                              ; preds = %687
  br i1 %690, label %692, label %.critedge

692:                                              ; preds = %691
  %693 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %684)
  %694 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %693)
  %695 = getelementptr inbounds i8, ptr %694, i64 8
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %695)
  %697 = load i64, ptr %696, align 8, !tbaa !21
  %698 = load i64, ptr %681, align 8, !tbaa !40
  %699 = icmp eq i64 %697, %698
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %91) #9
  br i1 %699, label %700, label %716

700:                                              ; preds = %692
  %701 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %702 unwind label %712

702:                                              ; preds = %700
  br i1 %701, label %703, label %720

703:                                              ; preds = %702
  %704 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %705 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %704, ptr noundef nonnull @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %706 unwind label %712

706:                                              ; preds = %703
  %707 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %705, ptr noundef nonnull @.str.7)
          to label %708 unwind label %712

708:                                              ; preds = %706
  %709 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %707, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %710 unwind label %712

710:                                              ; preds = %708
  %711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %709, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %720 unwind label %712

712:                                              ; preds = %710, %708, %706, %703, %700
  %713 = landingpad { ptr, i32 }
          cleanup
  br label %719

714:                                              ; preds = %687
  %715 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %91) #9
  br label %719

.critedge:                                        ; preds = %682, %691
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %91) #9
  br label %716

716:                                              ; preds = %.critedge, %692
  %717 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  %718 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90) #9
  br i1 %718, label %682, label %.thread765

719:                                              ; preds = %714, %712
  %.pn664 = phi { ptr, i32 } [ %713, %712 ], [ %715, %714 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #9
  br label %1606

720:                                              ; preds = %710, %702
  %721 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  %722 = ptrtoint ptr %683 to i64
  %723 = ptrtoint ptr %721 to i64
  %724 = sub i64 %722, %723
  %725 = lshr exact i64 %724, 4
  %726 = trunc i64 %725 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #9
  %727 = icmp eq i32 %726, -1
  br i1 %727, label %728, label %.thread777

728:                                              ; preds = %.thread765, %720
  %729 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  %730 = icmp eq i64 %729, 2
  br i1 %730, label %731, label %.critedge749.thread

731:                                              ; preds = %728
  %732 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef 0) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #9
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %92)
          to label %733 unwind label %743

733:                                              ; preds = %731
  %734 = getelementptr inbounds i8, ptr %732, i64 8
  %735 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %734, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %.critedge749 unwind label %745

.critedge749:                                     ; preds = %733
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #9
  br i1 %735, label %.preheader834, label %.critedge749.thread

.preheader834:                                    ; preds = %.critedge749
  %736 = getelementptr inbounds i8, ptr %668, i64 8
  %737 = load i64, ptr %736, align 8, !tbaa !40
  %.not1041 = icmp eq i64 %737, 0
  br i1 %.not1041, label %.thread777, label %.lr.ph933

.lr.ph933:                                        ; preds = %.preheader834
  %738 = getelementptr inbounds i8, ptr %93, i64 8
  br label %748

739:                                              ; preds = %755
  %740 = add nuw i64 %.0547932, 1
  %741 = load i64, ptr %736, align 8, !tbaa !40
  %742 = icmp ult i64 %740, %741
  br i1 %742, label %748, label %._crit_edge934.loopexit, !llvm.loop !48

743:                                              ; preds = %731
  %744 = landingpad { ptr, i32 }
          cleanup
  br label %747

745:                                              ; preds = %733
  %746 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  br label %747

747:                                              ; preds = %743, %745
  %.pn666 = phi { ptr, i32 } [ %746, %745 ], [ %744, %743 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #9
  br label %1606

748:                                              ; preds = %.lr.ph933, %739
  %.0547932 = phi i64 [ 0, %.lr.ph933 ], [ %740, %739 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %94) #9
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %94, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.0547932, i64 noundef 1)
          to label %749 unwind label %756

749:                                              ; preds = %748
  %750 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef 1)
          to label %751 unwind label %756

751:                                              ; preds = %749
  %752 = extractvalue { i64, i64 } %750, 0
  store i64 %752, ptr %93, align 8
  %753 = extractvalue { i64, i64 } %750, 1
  store i64 %753, ptr %738, align 8
  %754 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %93, i32 noundef 0)
          to label %755 unwind label %756

755:                                              ; preds = %751
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  br i1 %754, label %._crit_edge934.loopexit, label %739

756:                                              ; preds = %751, %749, %748
  %757 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  br label %1606

._crit_edge934.loopexit:                          ; preds = %755, %739
  %758 = zext i1 %754 to i32
  br label %.thread777

.critedge749.thread:                              ; preds = %728, %.critedge749
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #9
  %759 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  store ptr %759, ptr %95, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #9
  %760 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  store ptr %760, ptr %96, align 8
  %761 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %96) #9
  br i1 %761, label %.lr.ph931, label %.loopexit.thread

.lr.ph931:                                        ; preds = %.critedge749.thread
  %762 = getelementptr inbounds i8, ptr %668, i64 8
  br label %763

763:                                              ; preds = %.lr.ph931, %.thread772
  %764 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  %765 = getelementptr inbounds i8, ptr %764, i64 8
  %766 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %765)
  %767 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %766)
  br i1 %767, label %771, label %768

768:                                              ; preds = %763
  %769 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %765)
  %770 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %769)
  br i1 %770, label %771, label %.thread772

771:                                              ; preds = %768, %763
  %772 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %773 unwind label %777

773:                                              ; preds = %771
  %.not668 = icmp eq ptr %772, null
  br i1 %.not668, label %779, label %774

774:                                              ; preds = %773
  %775 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %765)
  %776 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %775)
  br i1 %776, label %779, label %.thread772

777:                                              ; preds = %771
  %778 = landingpad { ptr, i32 }
          cleanup
  br label %802

779:                                              ; preds = %774, %773
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #9
  store i64 0, ptr %97, align 8, !tbaa !21
  %780 = load ptr, ptr %271, align 8, !tbaa !11
  %781 = load ptr, ptr %272, align 8, !tbaa !16
  %782 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %780, ptr noundef nonnull align 8 dereferenceable(424) %781, ptr noundef nonnull align 8 dereferenceable(8) %765, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %783 unwind label %.loopexit835

783:                                              ; preds = %779
  %784 = load i64, ptr %97, align 8, !tbaa !21
  %785 = load i64, ptr %762, align 8, !tbaa !40
  %.not671 = icmp eq i64 %784, %785
  br i1 %.not671, label %786, label %799

786:                                              ; preds = %783
  %787 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %788 unwind label %.loopexit.split-lp

788:                                              ; preds = %786
  br i1 %787, label %789, label %.loopexit

789:                                              ; preds = %788
  %790 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %791 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %790, ptr noundef nonnull @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %792 unwind label %.loopexit.split-lp

792:                                              ; preds = %789
  %793 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %791, ptr noundef nonnull @.str.8)
          to label %794 unwind label %.loopexit.split-lp

794:                                              ; preds = %792
  %795 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %793, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %796 unwind label %.loopexit.split-lp

796:                                              ; preds = %794
  %797 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %795, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit unwind label %.loopexit.split-lp

.loopexit835:                                     ; preds = %779
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %798

.loopexit.split-lp:                               ; preds = %786, %789, %792, %794, %796
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %798

798:                                              ; preds = %.loopexit.split-lp, %.loopexit835
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit835 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  br label %802

799:                                              ; preds = %783
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  br label %.thread772

.thread772:                                       ; preds = %799, %768, %774
  %800 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  %801 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %96) #9
  br i1 %801, label %763, label %.loopexit.thread

802:                                              ; preds = %798, %777
  %.pn669 = phi { ptr, i32 } [ %lpad.phi, %798 ], [ %778, %777 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #9
  br label %1606

.loopexit.thread:                                 ; preds = %.thread772, %.critedge749.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #9
  br label %810

.loopexit:                                        ; preds = %796, %788
  %803 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %677) #9
  %804 = ptrtoint ptr %764 to i64
  %805 = ptrtoint ptr %803 to i64
  %806 = sub i64 %804, %805
  %807 = lshr exact i64 %806, 4
  %808 = trunc i64 %807 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #9
  %809 = icmp eq i32 %808, -1
  br i1 %809, label %810, label %.thread777

810:                                              ; preds = %.loopexit.thread, %.loopexit
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %99) #9
  store ptr %6, ptr %99, align 8, !tbaa !5
  %811 = getelementptr inbounds i8, ptr %99, i64 8
  store ptr %4, ptr %811, align 8, !tbaa !5
  %812 = getelementptr inbounds i8, ptr %99, i64 16
  store ptr %3, ptr %812, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %813 unwind label %816

813:                                              ; preds = %810
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %98)
          to label %814 unwind label %818

814:                                              ; preds = %813
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #9
  %815 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %815, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %815, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %672

816:                                              ; preds = %810
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %820

818:                                              ; preds = %813
  %819 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %820

820:                                              ; preds = %818, %816
  %.pn678 = phi { ptr, i32 } [ %819, %818 ], [ %817, %816 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #9
  br label %1606

.thread777:                                       ; preds = %.preheader834, %._crit_edge934.loopexit, %720, %.loopexit
  %.10541779 = phi i32 [ %808, %.loopexit ], [ %726, %720 ], [ 0, %.preheader834 ], [ %758, %._crit_edge934.loopexit ]
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %100) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false), !tbaa.struct !49
  %821 = zext i32 %.10541779 to i64
  %822 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef %821) #9
  %823 = getelementptr inbounds i8, ptr %822, i64 8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(8) %823)
          to label %824 unwind label %838

824:                                              ; preds = %.thread777
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %100, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %101, ptr noundef nonnull %102, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %103)
          to label %825 unwind label %840

825:                                              ; preds = %824
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %103) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #9
  %826 = load ptr, ptr %271, align 8, !tbaa !11
  %827 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef %821) #9
  %828 = getelementptr inbounds i8, ptr %827, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %105, ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(8) %826, ptr noundef nonnull align 8 dereferenceable(8) %828, i1 noundef zeroext true)
          to label %829 unwind label %842

829:                                              ; preds = %825
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %106, ptr noundef nonnull align 8 dereferenceable(112) %100) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %104, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %105, ptr noundef nonnull %106)
          to label %830 unwind label %844

830:                                              ; preds = %829
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %106) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #9
  %831 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %505)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %107, ptr noundef nonnull align 8 dereferenceable(32) %831)
          to label %832 unwind label %846

832:                                              ; preds = %830
  %833 = getelementptr inbounds i8, ptr %107, i64 32
  store i32 %.10541779, ptr %833, align 8, !tbaa !50
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %834 unwind label %.thread780

834:                                              ; preds = %832
  %835 = getelementptr inbounds i8, ptr %107, i64 40
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %835, ptr noundef nonnull %108)
          to label %836 unwind label %.thread784

836:                                              ; preds = %834
  invoke void @_ZN3MIR6RValue17make_UnionVariantENS0_17Data_UnionVariantE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %107)
          to label %837 unwind label %850

837:                                              ; preds = %836
  call void @_ZN3MIR6RValue17Data_UnionVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %107) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %100) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %100) #9
  br label %1605

838:                                              ; preds = %.thread777
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %855

840:                                              ; preds = %824
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %103) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  br label %855

842:                                              ; preds = %825
  %843 = landingpad { ptr, i32 }
          cleanup
  br label %854

844:                                              ; preds = %829
  %845 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %106) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #9
  br label %854

846:                                              ; preds = %830
  %847 = landingpad { ptr, i32 }
          cleanup
  br label %853

.thread780:                                       ; preds = %832
  %848 = landingpad { ptr, i32 }
          cleanup
  br label %852

.thread784:                                       ; preds = %834
  %849 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %852

850:                                              ; preds = %836
  %851 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue17Data_UnionVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %107) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %853

852:                                              ; preds = %.thread784, %.thread780
  %.pn672.pn783 = phi { ptr, i32 } [ %848, %.thread780 ], [ %849, %.thread784 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br label %853

853:                                              ; preds = %850, %852, %846
  %.pn672.pn.pn = phi { ptr, i32 } [ %.pn672.pn783, %852 ], [ %851, %850 ], [ %847, %846 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #9
  br label %854

854:                                              ; preds = %853, %844, %842
  %.pn672.pn.pn.pn = phi { ptr, i32 } [ %.pn672.pn.pn, %853 ], [ %845, %844 ], [ %843, %842 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %100) #9
  br label %855

855:                                              ; preds = %854, %840, %838
  %.pn672.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn672.pn.pn.pn, %854 ], [ %841, %840 ], [ %839, %838 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %100) #9
  br label %1606

856:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #9
  store ptr %109, ptr %111, align 8, !tbaa !5
  %857 = getelementptr inbounds i8, ptr %111, i64 8
  store ptr %6, ptr %857, align 8, !tbaa !5
  %858 = getelementptr inbounds i8, ptr %111, i64 16
  store ptr %4, ptr %858, align 8, !tbaa !5
  %859 = getelementptr inbounds i8, ptr %111, i64 24
  store ptr %3, ptr %859, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(32) %111)
          to label %860 unwind label %863

860:                                              ; preds = %856
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %110)
          to label %861 unwind label %865

861:                                              ; preds = %860
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #9
  %862 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %862, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %862, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %868

863:                                              ; preds = %856
  %864 = landingpad { ptr, i32 }
          cleanup
  br label %867

865:                                              ; preds = %860
  %866 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  br label %867

867:                                              ; preds = %865, %863
  %.pn659 = phi { ptr, i32 } [ %866, %865 ], [ %864, %863 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #9
  br label %870

868:                                              ; preds = %861
  %869 = landingpad { ptr, i32 }
          cleanup
  br label %870

870:                                              ; preds = %868, %867
  %.pn661 = phi { ptr, i32 } [ %869, %868 ], [ %.pn659, %867 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #9
  br label %1606

871:                                              ; preds = %.lr.ph920
  %872 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %873 = load i32, ptr %872, align 4, !tbaa !38
  switch i32 %873, label %1081 [
    i32 15, label %876
    i32 0, label %888
    i32 10, label %904
    i32 8, label %916
    i32 6, label %928
    i32 4, label %940
    i32 2, label %952
    i32 1, label %964
    i32 11, label %980
    i32 9, label %992
    i32 7, label %1004
    i32 5, label %1016
    i32 3, label %1028
    i32 13, label %1040
    i32 12, label %1048
    i32 14, label %1056
    i32 16, label %1072
  ]

874:                                              ; preds = %1081, %1050, %1048, %1042, %1040, %1030, %1028, %1018, %1016, %1006, %1004, %994, %992, %982, %980, %970, %966, %964, %954, %952, %942, %940, %930, %928, %918, %916, %906, %904, %894, %890, %888, %878, %876
  %875 = landingpad { ptr, i32 }
          cleanup
  br label %1606

876:                                              ; preds = %871
  %877 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %878 unwind label %874

878:                                              ; preds = %876
  %879 = extractvalue { i64, i64 } %877, 0
  store i64 %879, ptr %113, align 8
  %880 = getelementptr inbounds i8, ptr %113, i64 8
  %881 = extractvalue { i64, i64 } %877, 1
  store i64 %881, ptr %880, align 8
  %882 = getelementptr inbounds i8, ptr %113, i64 16
  %883 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %883, ptr %882, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %112, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %113)
          to label %884 unwind label %874

884:                                              ; preds = %878
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %112)
          to label %885 unwind label %886

885:                                              ; preds = %884
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #9
  br label %1605

886:                                              ; preds = %884
  %887 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #9
  br label %1606

888:                                              ; preds = %871
  %889 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %890 unwind label %874

890:                                              ; preds = %888
  %891 = lshr i32 %889, 3
  %892 = zext nneg i32 %891 to i64
  %893 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %892)
          to label %894 unwind label %874

894:                                              ; preds = %890
  %895 = extractvalue { i64, i64 } %893, 0
  store i64 %895, ptr %115, align 8
  %896 = getelementptr inbounds i8, ptr %115, i64 8
  %897 = extractvalue { i64, i64 } %893, 1
  store i64 %897, ptr %896, align 8
  %898 = getelementptr inbounds i8, ptr %115, i64 16
  %899 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %899, ptr %898, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %114, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %115)
          to label %900 unwind label %874

900:                                              ; preds = %894
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %114)
          to label %901 unwind label %902

901:                                              ; preds = %900
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %114) #9
  br label %1605

902:                                              ; preds = %900
  %903 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %114) #9
  br label %1606

904:                                              ; preds = %871
  %905 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 16)
          to label %906 unwind label %874

906:                                              ; preds = %904
  %907 = extractvalue { i64, i64 } %905, 0
  store i64 %907, ptr %117, align 8
  %908 = getelementptr inbounds i8, ptr %117, i64 8
  %909 = extractvalue { i64, i64 } %905, 1
  store i64 %909, ptr %908, align 8
  %910 = getelementptr inbounds i8, ptr %117, i64 16
  %911 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %911, ptr %910, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %116, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %117)
          to label %912 unwind label %874

912:                                              ; preds = %906
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %116)
          to label %913 unwind label %914

913:                                              ; preds = %912
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %116) #9
  br label %1605

914:                                              ; preds = %912
  %915 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %116) #9
  br label %1606

916:                                              ; preds = %871
  %917 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %918 unwind label %874

918:                                              ; preds = %916
  %919 = extractvalue { i64, i64 } %917, 0
  store i64 %919, ptr %119, align 8
  %920 = getelementptr inbounds i8, ptr %119, i64 8
  %921 = extractvalue { i64, i64 } %917, 1
  store i64 %921, ptr %920, align 8
  %922 = getelementptr inbounds i8, ptr %119, i64 16
  %923 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %923, ptr %922, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %118, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %119)
          to label %924 unwind label %874

924:                                              ; preds = %918
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %118)
          to label %925 unwind label %926

925:                                              ; preds = %924
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %118) #9
  br label %1605

926:                                              ; preds = %924
  %927 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %118) #9
  br label %1606

928:                                              ; preds = %871
  %929 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %930 unwind label %874

930:                                              ; preds = %928
  %931 = extractvalue { i64, i64 } %929, 0
  store i64 %931, ptr %121, align 8
  %932 = getelementptr inbounds i8, ptr %121, i64 8
  %933 = extractvalue { i64, i64 } %929, 1
  store i64 %933, ptr %932, align 8
  %934 = getelementptr inbounds i8, ptr %121, i64 16
  %935 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %935, ptr %934, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %120, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %121)
          to label %936 unwind label %874

936:                                              ; preds = %930
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %120)
          to label %937 unwind label %938

937:                                              ; preds = %936
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %120) #9
  br label %1605

938:                                              ; preds = %936
  %939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %120) #9
  br label %1606

940:                                              ; preds = %871
  %941 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 2)
          to label %942 unwind label %874

942:                                              ; preds = %940
  %943 = extractvalue { i64, i64 } %941, 0
  store i64 %943, ptr %123, align 8
  %944 = getelementptr inbounds i8, ptr %123, i64 8
  %945 = extractvalue { i64, i64 } %941, 1
  store i64 %945, ptr %944, align 8
  %946 = getelementptr inbounds i8, ptr %123, i64 16
  %947 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %947, ptr %946, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %122, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %123)
          to label %948 unwind label %874

948:                                              ; preds = %942
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %122)
          to label %949 unwind label %950

949:                                              ; preds = %948
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %122) #9
  br label %1605

950:                                              ; preds = %948
  %951 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %122) #9
  br label %1606

952:                                              ; preds = %871
  %953 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %954 unwind label %874

954:                                              ; preds = %952
  %955 = extractvalue { i64, i64 } %953, 0
  store i64 %955, ptr %125, align 8
  %956 = getelementptr inbounds i8, ptr %125, i64 8
  %957 = extractvalue { i64, i64 } %953, 1
  store i64 %957, ptr %956, align 8
  %958 = getelementptr inbounds i8, ptr %125, i64 16
  %959 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %959, ptr %958, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %124, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %125)
          to label %960 unwind label %874

960:                                              ; preds = %954
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %124)
          to label %961 unwind label %962

961:                                              ; preds = %960
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %124) #9
  br label %1605

962:                                              ; preds = %960
  %963 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %124) #9
  br label %1606

964:                                              ; preds = %871
  %965 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %966 unwind label %874

966:                                              ; preds = %964
  %967 = lshr i32 %965, 3
  %968 = zext nneg i32 %967 to i64
  %969 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %968)
          to label %970 unwind label %874

970:                                              ; preds = %966
  %971 = extractvalue { i64, i64 } %969, 0
  store i64 %971, ptr %127, align 8
  %972 = getelementptr inbounds i8, ptr %127, i64 8
  %973 = extractvalue { i64, i64 } %969, 1
  store i64 %973, ptr %972, align 8
  %974 = getelementptr inbounds i8, ptr %127, i64 16
  %975 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %975, ptr %974, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %126, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %127)
          to label %976 unwind label %874

976:                                              ; preds = %970
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %126)
          to label %977 unwind label %978

977:                                              ; preds = %976
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %126) #9
  br label %1605

978:                                              ; preds = %976
  %979 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %126) #9
  br label %1606

980:                                              ; preds = %871
  %981 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 16)
          to label %982 unwind label %874

982:                                              ; preds = %980
  %983 = extractvalue { i64, i64 } %981, 0
  store i64 %983, ptr %129, align 8
  %984 = getelementptr inbounds i8, ptr %129, i64 8
  %985 = extractvalue { i64, i64 } %981, 1
  store i64 %985, ptr %984, align 8
  %986 = getelementptr inbounds i8, ptr %129, i64 16
  %987 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %987, ptr %986, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %128, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %129)
          to label %988 unwind label %874

988:                                              ; preds = %982
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %128)
          to label %989 unwind label %990

989:                                              ; preds = %988
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %128) #9
  br label %1605

990:                                              ; preds = %988
  %991 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %128) #9
  br label %1606

992:                                              ; preds = %871
  %993 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %994 unwind label %874

994:                                              ; preds = %992
  %995 = extractvalue { i64, i64 } %993, 0
  store i64 %995, ptr %131, align 8
  %996 = getelementptr inbounds i8, ptr %131, i64 8
  %997 = extractvalue { i64, i64 } %993, 1
  store i64 %997, ptr %996, align 8
  %998 = getelementptr inbounds i8, ptr %131, i64 16
  %999 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %999, ptr %998, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %130, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %131)
          to label %1000 unwind label %874

1000:                                             ; preds = %994
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %130)
          to label %1001 unwind label %1002

1001:                                             ; preds = %1000
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %130) #9
  br label %1605

1002:                                             ; preds = %1000
  %1003 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %130) #9
  br label %1606

1004:                                             ; preds = %871
  %1005 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1006 unwind label %874

1006:                                             ; preds = %1004
  %1007 = extractvalue { i64, i64 } %1005, 0
  store i64 %1007, ptr %133, align 8
  %1008 = getelementptr inbounds i8, ptr %133, i64 8
  %1009 = extractvalue { i64, i64 } %1005, 1
  store i64 %1009, ptr %1008, align 8
  %1010 = getelementptr inbounds i8, ptr %133, i64 16
  %1011 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %1011, ptr %1010, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %132, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %133)
          to label %1012 unwind label %874

1012:                                             ; preds = %1006
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %132)
          to label %1013 unwind label %1014

1013:                                             ; preds = %1012
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %132) #9
  br label %1605

1014:                                             ; preds = %1012
  %1015 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %132) #9
  br label %1606

1016:                                             ; preds = %871
  %1017 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 2)
          to label %1018 unwind label %874

1018:                                             ; preds = %1016
  %1019 = extractvalue { i64, i64 } %1017, 0
  store i64 %1019, ptr %135, align 8
  %1020 = getelementptr inbounds i8, ptr %135, i64 8
  %1021 = extractvalue { i64, i64 } %1017, 1
  store i64 %1021, ptr %1020, align 8
  %1022 = getelementptr inbounds i8, ptr %135, i64 16
  %1023 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %1023, ptr %1022, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %134, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %135)
          to label %1024 unwind label %874

1024:                                             ; preds = %1018
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %134)
          to label %1025 unwind label %1026

1025:                                             ; preds = %1024
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %134) #9
  br label %1605

1026:                                             ; preds = %1024
  %1027 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %134) #9
  br label %1606

1028:                                             ; preds = %871
  %1029 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %1030 unwind label %874

1030:                                             ; preds = %1028
  %1031 = extractvalue { i64, i64 } %1029, 0
  store i64 %1031, ptr %137, align 8
  %1032 = getelementptr inbounds i8, ptr %137, i64 8
  %1033 = extractvalue { i64, i64 } %1029, 1
  store i64 %1033, ptr %1032, align 8
  %1034 = getelementptr inbounds i8, ptr %137, i64 16
  %1035 = load i32, ptr %872, align 4, !tbaa !38
  store i32 %1035, ptr %1034, align 8, !tbaa !57
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %136, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %137)
          to label %1036 unwind label %874

1036:                                             ; preds = %1030
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %136)
          to label %1037 unwind label %1038

1037:                                             ; preds = %1036
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #9
  br label %1605

1038:                                             ; preds = %1036
  %1039 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #9
  br label %1606

1040:                                             ; preds = %871
  %1041 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 8)
          to label %1042 unwind label %874

1042:                                             ; preds = %1040
  %1043 = load i32, ptr %872, align 4, !tbaa !38
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %138, double %1041, i32 %1043)
          to label %1044 unwind label %874

1044:                                             ; preds = %1042
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %138)
          to label %1045 unwind label %1046

1045:                                             ; preds = %1044
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %138) #9
  br label %1605

1046:                                             ; preds = %1044
  %1047 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %138) #9
  br label %1606

1048:                                             ; preds = %871
  %1049 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 4)
          to label %1050 unwind label %874

1050:                                             ; preds = %1048
  %1051 = load i32, ptr %872, align 4, !tbaa !38
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %139, double %1049, i32 %1051)
          to label %1052 unwind label %874

1052:                                             ; preds = %1050
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %139)
          to label %1053 unwind label %1054

1053:                                             ; preds = %1052
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %139) #9
  br label %1605

1054:                                             ; preds = %1052
  %1055 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %139) #9
  br label %1606

1056:                                             ; preds = %871
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %141) #9
  %1057 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 1)
          to label %1058 unwind label %1067

1058:                                             ; preds = %1056
  %1059 = extractvalue { i64, i64 } %1057, 0
  store i64 %1059, ptr %141, align 8
  %1060 = getelementptr inbounds i8, ptr %141, i64 8
  %1061 = extractvalue { i64, i64 } %1057, 1
  store i64 %1061, ptr %1060, align 8
  %1062 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %141, i32 noundef 0)
          to label %1063 unwind label %1067

1063:                                             ; preds = %1058
  %1064 = zext i1 %1062 to i8
  invoke void @_ZN3MIR8Constant9make_BoolENS0_9Data_BoolE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %140, i8 %1064)
          to label %1065 unwind label %1067

1065:                                             ; preds = %1063
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %140)
          to label %1066 unwind label %1069

1066:                                             ; preds = %1065
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  br label %1605

1067:                                             ; preds = %1063, %1058, %1056
  %1068 = landingpad { ptr, i32 }
          cleanup
  br label %1071

1069:                                             ; preds = %1065
  %1070 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #9
  br label %1071

1071:                                             ; preds = %1069, %1067
  %.pn654 = phi { ptr, i32 } [ %1070, %1069 ], [ %1068, %1067 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #9
  br label %1606

1072:                                             ; preds = %871
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %144) #9
  store ptr %142, ptr %144, align 8, !tbaa !5
  %1073 = getelementptr inbounds i8, ptr %144, i64 8
  store ptr %6, ptr %1073, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 8 dereferenceable(16) %144) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %143)
          to label %1074 unwind label %1076

1074:                                             ; preds = %1072
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #9
  %1075 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1075, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1075, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %1078

1076:                                             ; preds = %1072
  %1077 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #9
  br label %1080

1078:                                             ; preds = %1074
  %1079 = landingpad { ptr, i32 }
          cleanup
  br label %1080

1080:                                             ; preds = %1078, %1076
  %.pn652 = phi { ptr, i32 } [ %1079, %1078 ], [ %1077, %1076 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #9
  br label %1606

1081:                                             ; preds = %871
  %1082 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1082, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1082, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %874

1083:                                             ; preds = %.lr.ph920
  %1084 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %1085 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %1088 unwind label %1086

1086:                                             ; preds = %1083
  %1087 = landingpad { ptr, i32 }
          cleanup
  br label %1606

1088:                                             ; preds = %1083
  %.not638 = icmp eq ptr %1085, null
  br i1 %.not638, label %1118, label %1089

1089:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #9
  %1090 = load i32, ptr %1084, align 8, !tbaa !60
  %1091 = getelementptr inbounds i8, ptr %1084, i64 8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %146, ptr noundef nonnull align 8 dereferenceable(8) %1091)
          to label %1092 unwind label %1100

1092:                                             ; preds = %1089
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %145, i32 noundef %1090, ptr noundef nonnull %146)
          to label %1093 unwind label %1102

1093:                                             ; preds = %1092
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %147) #9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false), !tbaa.struct !49
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %149, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %1094 unwind label %1104

1094:                                             ; preds = %1093
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %150, ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %147, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %148, ptr noundef nonnull %149, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull %150)
          to label %1095 unwind label %1106

1095:                                             ; preds = %1094
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %150) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %151) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull align 8 dereferenceable(8) %145)
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %153, ptr noundef nonnull align 8 dereferenceable(112) %147) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %151, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %152, ptr noundef nonnull %153)
          to label %1096 unwind label %1108

1096:                                             ; preds = %1095
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %153) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(32) %151)
          to label %1097 unwind label %1110

1097:                                             ; preds = %1096
  %1098 = getelementptr inbounds i8, ptr %154, i64 32
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1098, ptr noundef nonnull align 8 dereferenceable(8) %4)
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %154)
          to label %1099 unwind label %1112

1099:                                             ; preds = %1097
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %154) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %147) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %147) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #9
  br label %1605

1100:                                             ; preds = %1089
  %1101 = landingpad { ptr, i32 }
          cleanup
  br label %1117

1102:                                             ; preds = %1092
  %1103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  br label %1117

1104:                                             ; preds = %1093
  %1105 = landingpad { ptr, i32 }
          cleanup
  br label %1116

1106:                                             ; preds = %1094
  %1107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %150) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #9
  br label %1116

1108:                                             ; preds = %1095
  %1109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %153) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #9
  br label %1115

1110:                                             ; preds = %1096
  %1111 = landingpad { ptr, i32 }
          cleanup
  br label %1114

1112:                                             ; preds = %1097
  %1113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %154) #9
  br label %1114

1114:                                             ; preds = %1112, %1110
  %.pn646 = phi { ptr, i32 } [ %1113, %1112 ], [ %1111, %1110 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #9
  br label %1115

1115:                                             ; preds = %1114, %1108
  %.pn646.pn = phi { ptr, i32 } [ %.pn646, %1114 ], [ %1109, %1108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %151) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %147) #9
  br label %1116

1116:                                             ; preds = %1115, %1106, %1104
  %.pn646.pn.pn = phi { ptr, i32 } [ %.pn646.pn, %1115 ], [ %1107, %1106 ], [ %1105, %1104 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %147) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  br label %1117

1117:                                             ; preds = %1116, %1102, %1100
  %.pn646.pn.pn.pn = phi { ptr, i32 } [ %.pn646.pn.pn, %1116 ], [ %1103, %1102 ], [ %1101, %1100 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #9
  br label %1606

1118:                                             ; preds = %1088
  %1119 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1120 unwind label %1135

1120:                                             ; preds = %1118
  %1121 = lshr i32 %1119, 3
  %1122 = zext nneg i32 %1121 to i64
  %1123 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1122)
          to label %1124 unwind label %1135

1124:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %155) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef 0)
          to label %1125 unwind label %1137

1125:                                             ; preds = %1124
  %1126 = extractvalue { i64, i64 } %1123, 1
  %1127 = extractvalue { i64, i64 } %1123, 0
  store i64 %1127, ptr %159, align 8, !tbaa !21
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %159, i64 8
  store i64 %1126, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !21
  %1128 = getelementptr inbounds i8, ptr %159, i64 16
  store i32 0, ptr %1128, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %158, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %159)
          to label %1129 unwind label %1139

1129:                                             ; preds = %1125
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %157, ptr noundef nonnull %158)
          to label %1130 unwind label %1141

1130:                                             ; preds = %1129
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %155, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %156, ptr noundef nonnull %157)
          to label %1131 unwind label %1143

1131:                                             ; preds = %1130
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %157) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %158) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %1132 unwind label %1147

1132:                                             ; preds = %1131
  %1133 = getelementptr inbounds i8, ptr %160, i64 32
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1133, ptr noundef nonnull align 8 dereferenceable(8) %4)
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %160)
          to label %1134 unwind label %1149

1134:                                             ; preds = %1132
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %160) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %155) #9
  br label %1605

1135:                                             ; preds = %1120, %1118
  %1136 = landingpad { ptr, i32 }
          cleanup
  br label %1606

1137:                                             ; preds = %1124
  %1138 = landingpad { ptr, i32 }
          cleanup
  br label %1152

1139:                                             ; preds = %1125
  %1140 = landingpad { ptr, i32 }
          cleanup
  br label %1146

1141:                                             ; preds = %1129
  %1142 = landingpad { ptr, i32 }
          cleanup
  br label %1145

1143:                                             ; preds = %1130
  %1144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %157) #9
  br label %1145

1145:                                             ; preds = %1143, %1141
  %.pn639 = phi { ptr, i32 } [ %1144, %1143 ], [ %1142, %1141 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %158) #9
  br label %1146

1146:                                             ; preds = %1145, %1139
  %.pn639.pn = phi { ptr, i32 } [ %.pn639, %1145 ], [ %1140, %1139 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #9
  br label %1152

1147:                                             ; preds = %1131
  %1148 = landingpad { ptr, i32 }
          cleanup
  br label %1151

1149:                                             ; preds = %1132
  %1150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %160) #9
  br label %1151

1151:                                             ; preds = %1149, %1147
  %.pn642 = phi { ptr, i32 } [ %1150, %1149 ], [ %1148, %1147 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  br label %1152

1152:                                             ; preds = %1151, %1146, %1137
  %.pn642.pn = phi { ptr, i32 } [ %.pn642, %1151 ], [ %.pn639.pn, %1146 ], [ %1138, %1137 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %155) #9
  br label %1606

.lr.ph:                                           ; preds = %.lr.ph920
  %1153 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %1154 = getelementptr inbounds i8, ptr %1153, i64 8
  %1155 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %1156 unwind label %1169

1156:                                             ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %161) #9
  %1157 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1158 unwind label %.loopexit836

1158:                                             ; preds = %1156
  %1159 = lshr i32 %1157, 3
  %1160 = zext nneg i32 %1159 to i64
  %1161 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %1160)
          to label %1162 unwind label %.loopexit836

1162:                                             ; preds = %1158
  %1163 = extractvalue { i64, i64 } %1161, 0
  store i64 %1163, ptr %161, align 8
  %1164 = extractvalue { i64, i64 } %1161, 1
  store i64 %1164, ptr %270, align 8
  %1165 = invoke noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16) %161, i32 noundef 4096)
          to label %1166 unwind label %.loopexit836

1166:                                             ; preds = %1162
  br i1 %1165, label %1173, label %1167

1167:                                             ; preds = %1166
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %163) #9
  store ptr %161, ptr %163, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 8 dereferenceable(8) %163) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %162)
          to label %1168 unwind label %1171

1168:                                             ; preds = %1167
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #9
  br label %1173

1169:                                             ; preds = %.lr.ph
  %1170 = landingpad { ptr, i32 }
          cleanup
  br label %1606

.loopexit836:                                     ; preds = %1156, %1158, %1162
  %lpad.loopexit838 = landingpad { ptr, i32 }
          cleanup
  br label %1568

.loopexit.split-lp837:                            ; preds = %1470
  %lpad.loopexit.split-lp839 = landingpad { ptr, i32 }
          cleanup
  br label %1568

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

1173:                                             ; preds = %1168, %1166
  %1174 = getelementptr inbounds i8, ptr %1155, i64 16
  %1175 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1174) #9
  br i1 %1175, label %1176, label %1395

1176:                                             ; preds = %1173
  %1177 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1174) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %164) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %166) #9
  %1178 = load ptr, ptr %271, align 8, !tbaa !11
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %166, ptr noundef nonnull align 8 dereferenceable(96) %5, ptr noundef nonnull align 8 dereferenceable(8) %1178, ptr noundef nonnull align 8 dereferenceable(88) %1177, i1 noundef zeroext true)
          to label %1179 unwind label %1195

1179:                                             ; preds = %1176
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.76") align 8 %165, ptr noundef nonnull align 8 dereferenceable(88) %166)
          to label %1180 unwind label %1197

1180:                                             ; preds = %1179
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %164, ptr noundef nonnull %165)
          to label %1181 unwind label %1199

1181:                                             ; preds = %1180
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %166) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %166) #9
  %1182 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1183 unwind label %1203

1183:                                             ; preds = %1181
  br i1 %1182, label %1184, label %1205

1184:                                             ; preds = %1183
  %1185 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1185, ptr noundef nonnull @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE)
          to label %1187 unwind label %1203

1187:                                             ; preds = %1184
  %1188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1186, ptr noundef nonnull @.str.9)
          to label %1189 unwind label %1203

1189:                                             ; preds = %1187
  %1190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(8) %1188, ptr noundef nonnull align 8 dereferenceable(40) %164)
          to label %1191 unwind label %1203

1191:                                             ; preds = %1189
  %1192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1190, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1193 unwind label %1203

1193:                                             ; preds = %1191
  %1194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1192, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1205 unwind label %1203

1195:                                             ; preds = %1176
  %1196 = landingpad { ptr, i32 }
          cleanup
  br label %1202

1197:                                             ; preds = %1179
  %1198 = landingpad { ptr, i32 }
          cleanup
  br label %1201

1199:                                             ; preds = %1180
  %1200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #9
  br label %1201

1201:                                             ; preds = %1199, %1197
  %.pn592 = phi { ptr, i32 } [ %1200, %1199 ], [ %1198, %1197 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %166) #9
  br label %1202

1202:                                             ; preds = %1201, %1195
  %.pn592.pn = phi { ptr, i32 } [ %.pn592, %1201 ], [ %1196, %1195 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %166) #9
  br label %1394

1203:                                             ; preds = %1193, %1191, %1189, %1187, %1184, %1181
  %1204 = landingpad { ptr, i32 }
          cleanup
  br label %1393

1205:                                             ; preds = %1193, %1183
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1206 unwind label %1213

1206:                                             ; preds = %1205
  %1207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_static_typeERN3HIR7TypeRefERKNS1_4PathE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(88) %1177)
          to label %1208 unwind label %1215

1208:                                             ; preds = %1206
  %1209 = load ptr, ptr %272, align 8, !tbaa !16
  %1210 = load ptr, ptr %271, align 8, !tbaa !11
  %1211 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %1209, ptr noundef nonnull align 8 dereferenceable(8) %1210, ptr noundef nonnull align 8 dereferenceable(8) %1154, i1 noundef zeroext false)
          to label %1212 unwind label %.loopexit841

1212:                                             ; preds = %1208
  switch i32 %1211, label %.critedge757.loopexit [
    i32 1, label %1217
    i32 3, label %1309
    i32 4, label %1345
    i32 0, label %1377
    i32 2, label %1386
  ]

1213:                                             ; preds = %1205
  %1214 = landingpad { ptr, i32 }
          cleanup
  br label %1392

1215:                                             ; preds = %1206
  %1216 = landingpad { ptr, i32 }
          cleanup
  br label %1391

.loopexit841:                                     ; preds = %1208
  %lpad.loopexit843 = landingpad { ptr, i32 }
          cleanup
  br label %1391

.loopexit.split-lp842:                            ; preds = %1217, %1387
  %lpad.loopexit.split-lp844 = landingpad { ptr, i32 }
          cleanup
  br label %1391

1217:                                             ; preds = %1212
  %1218 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1207, ptr noundef nonnull align 8 dereferenceable(8) %1154)
          to label %1219 unwind label %.loopexit.split-lp842

1219:                                             ; preds = %1217
  br i1 %1218, label %1220, label %1305

1220:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %168) #9
  %1221 = getelementptr inbounds i8, ptr %1153, i64 4
  %1222 = load i32, ptr %1221, align 4, !tbaa !63
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %170, ptr noundef nonnull align 8 dereferenceable(8) %1207)
          to label %1223 unwind label %1252

1223:                                             ; preds = %1220
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %169, i32 noundef %1222, ptr noundef nonnull %170)
          to label %1224 unwind label %1254

1224:                                             ; preds = %1223
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %172, ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %171, ptr noundef nonnull %172)
          to label %1225 unwind label %1256

1225:                                             ; preds = %1224
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %168, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %169, ptr noundef nonnull %171)
          to label %1226 unwind label %1258

1226:                                             ; preds = %1225
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %171) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %172) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %173) #9
  %1227 = load i32, ptr %1221, align 4, !tbaa !63
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %175, ptr noundef nonnull align 8 dereferenceable(8) %1207)
          to label %1228 unwind label %1262

1228:                                             ; preds = %1226
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %174, i32 noundef %1227, ptr noundef nonnull %175)
          to label %1229 unwind label %1264

1229:                                             ; preds = %1228
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull align 8 dereferenceable(32) %168)
          to label %1230 unwind label %1266

1230:                                             ; preds = %1229
  %1231 = load i32, ptr %1221, align 4, !tbaa !63
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %178, ptr noundef nonnull align 8 dereferenceable(8) %1207)
          to label %1232 unwind label %.thread787

1232:                                             ; preds = %1230
  %1233 = getelementptr inbounds i8, ptr %177, i64 32
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1233, i32 noundef %1231, ptr noundef nonnull %178)
          to label %1234 unwind label %.thread791

1234:                                             ; preds = %1232
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %176, ptr noundef nonnull %177)
          to label %1235 unwind label %1270

1235:                                             ; preds = %1234
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %173, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %174, ptr noundef nonnull %176)
          to label %1236 unwind label %1272

1236:                                             ; preds = %1235
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %176) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %179) #9
  %1237 = load i32, ptr %1221, align 4, !tbaa !63
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %181, ptr noundef nonnull align 8 dereferenceable(8) %1154)
          to label %1238 unwind label %1278

1238:                                             ; preds = %1236
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %180, i32 noundef %1237, ptr noundef nonnull %181)
          to label %1239 unwind label %1280

1239:                                             ; preds = %1238
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull align 8 dereferenceable(32) %173)
          to label %1240 unwind label %1282

1240:                                             ; preds = %1239
  %1241 = load i32, ptr %1221, align 4, !tbaa !63
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %184, ptr noundef nonnull align 8 dereferenceable(8) %1154)
          to label %1242 unwind label %.thread794

1242:                                             ; preds = %1240
  %1243 = getelementptr inbounds i8, ptr %183, i64 32
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1243, i32 noundef %1241, ptr noundef nonnull %184)
          to label %1244 unwind label %.thread798

1244:                                             ; preds = %1242
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %182, ptr noundef nonnull %183)
          to label %1245 unwind label %1286

1245:                                             ; preds = %1244
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %179, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %180, ptr noundef nonnull %182)
          to label %1246 unwind label %1288

1246:                                             ; preds = %1245
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %182) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #9
  %1247 = load i32, ptr %1221, align 4, !tbaa !63
  store i32 %1247, ptr %185, align 8, !tbaa !66
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %1248 unwind label %1294

1248:                                             ; preds = %1246
  %1249 = getelementptr inbounds i8, ptr %185, i64 8
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %1249, ptr noundef nonnull %186)
          to label %1250 unwind label %1296

1250:                                             ; preds = %1248
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %185)
          to label %1251 unwind label %1298

1251:                                             ; preds = %1250
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %185) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %173) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %168) #9
  br label %.critedge832

1252:                                             ; preds = %1220
  %1253 = landingpad { ptr, i32 }
          cleanup
  br label %1304

1254:                                             ; preds = %1223
  %1255 = landingpad { ptr, i32 }
          cleanup
  br label %1261

1256:                                             ; preds = %1224
  %1257 = landingpad { ptr, i32 }
          cleanup
  br label %1260

1258:                                             ; preds = %1225
  %1259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %171) #9
  br label %1260

1260:                                             ; preds = %1258, %1256
  %.pn609 = phi { ptr, i32 } [ %1259, %1258 ], [ %1257, %1256 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %172) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  br label %1261

1261:                                             ; preds = %1260, %1254
  %.pn609.pn = phi { ptr, i32 } [ %.pn609, %1260 ], [ %1255, %1254 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #9
  br label %1304

1262:                                             ; preds = %1226
  %1263 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1264:                                             ; preds = %1228
  %1265 = landingpad { ptr, i32 }
          cleanup
  br label %1277

1266:                                             ; preds = %1229
  %1267 = landingpad { ptr, i32 }
          cleanup
  br label %1276

.thread787:                                       ; preds = %1230
  %1268 = landingpad { ptr, i32 }
          cleanup
  br label %1275

.thread791:                                       ; preds = %1232
  %1269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  br label %1275

1270:                                             ; preds = %1234
  %1271 = landingpad { ptr, i32 }
          cleanup
  br label %1274

1272:                                             ; preds = %1235
  %1273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %176) #9
  br label %1274

1274:                                             ; preds = %1270, %1272
  %.pn612 = phi { ptr, i32 } [ %1273, %1272 ], [ %1271, %1270 ]
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  br label %1276

1275:                                             ; preds = %.thread791, %.thread787
  %.pn612.pn.pn790 = phi { ptr, i32 } [ %1268, %.thread787 ], [ %1269, %.thread791 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #9
  br label %1276

1276:                                             ; preds = %1274, %1275, %1266
  %.pn612.pn.pn.pn = phi { ptr, i32 } [ %.pn612.pn.pn790, %1275 ], [ %.pn612, %1274 ], [ %1267, %1266 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #9
  br label %1277

1277:                                             ; preds = %1276, %1264
  %.pn612.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn612.pn.pn.pn, %1276 ], [ %1265, %1264 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #9
  br label %1303

1278:                                             ; preds = %1236
  %1279 = landingpad { ptr, i32 }
          cleanup
  br label %1302

1280:                                             ; preds = %1238
  %1281 = landingpad { ptr, i32 }
          cleanup
  br label %1293

1282:                                             ; preds = %1239
  %1283 = landingpad { ptr, i32 }
          cleanup
  br label %1292

.thread794:                                       ; preds = %1240
  %1284 = landingpad { ptr, i32 }
          cleanup
  br label %1291

.thread798:                                       ; preds = %1242
  %1285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #9
  br label %1291

1286:                                             ; preds = %1244
  %1287 = landingpad { ptr, i32 }
          cleanup
  br label %1290

1288:                                             ; preds = %1245
  %1289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %182) #9
  br label %1290

1290:                                             ; preds = %1286, %1288
  %.pn618 = phi { ptr, i32 } [ %1289, %1288 ], [ %1287, %1286 ]
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %183) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #9
  br label %1292

1291:                                             ; preds = %.thread798, %.thread794
  %.pn618.pn.pn797 = phi { ptr, i32 } [ %1284, %.thread794 ], [ %1285, %.thread798 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  br label %1292

1292:                                             ; preds = %1290, %1291, %1282
  %.pn618.pn.pn.pn = phi { ptr, i32 } [ %.pn618.pn.pn797, %1291 ], [ %.pn618, %1290 ], [ %1283, %1282 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #9
  br label %1293

1293:                                             ; preds = %1292, %1280
  %.pn618.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn618.pn.pn.pn, %1292 ], [ %1281, %1280 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #9
  br label %1302

1294:                                             ; preds = %1246
  %1295 = landingpad { ptr, i32 }
          cleanup
  br label %1301

1296:                                             ; preds = %1248
  %1297 = landingpad { ptr, i32 }
          cleanup
  br label %1300

1298:                                             ; preds = %1250
  %1299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %185) #9
  br label %1300

1300:                                             ; preds = %1298, %1296
  %.pn624 = phi { ptr, i32 } [ %1299, %1298 ], [ %1297, %1296 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  br label %1301

1301:                                             ; preds = %1300, %1294
  %.pn624.pn = phi { ptr, i32 } [ %.pn624, %1300 ], [ %1295, %1294 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  br label %1302

1302:                                             ; preds = %1301, %1293, %1278
  %.pn624.pn.pn = phi { ptr, i32 } [ %.pn624.pn, %1301 ], [ %.pn618.pn.pn.pn.pn, %1293 ], [ %1279, %1278 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %179) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #9
  br label %1303

1303:                                             ; preds = %1302, %1277, %1262
  %.pn624.pn.pn.pn = phi { ptr, i32 } [ %.pn624.pn.pn, %1302 ], [ %.pn612.pn.pn.pn.pn, %1277 ], [ %1263, %1262 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %173) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  br label %1304

1304:                                             ; preds = %1303, %1261, %1252
  %.pn624.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn624.pn.pn.pn, %1303 ], [ %.pn609.pn, %1261 ], [ %1253, %1252 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %168) #9
  br label %1391

1305:                                             ; preds = %1219
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %187, ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %187)
          to label %1306 unwind label %1307

1306:                                             ; preds = %1305
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %187) #9
  br label %.critedge832

1307:                                             ; preds = %1305
  %1308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %187) #9
  br label %1391

1309:                                             ; preds = %1212
  %1310 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1207)
  %1311 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1310)
  br i1 %1311, label %1316, label %1312

1312:                                             ; preds = %1309
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %189) #9
  store ptr %1207, ptr %189, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef nonnull align 8 dereferenceable(8) %189) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %188)
          to label %1313 unwind label %1314

1313:                                             ; preds = %1312
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %189) #9
  br label %1316

1314:                                             ; preds = %1312
  %1315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %189) #9
  br label %1391

1316:                                             ; preds = %1313, %1309
  %1317 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1207)
  %1318 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1317)
  %1319 = getelementptr inbounds i8, ptr %1318, i64 8
  %1320 = call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1319)
  br i1 %1320, label %1325, label %1321

1321:                                             ; preds = %1316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %191) #9
  store ptr %1207, ptr %191, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 8 dereferenceable(8) %191) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %190)
          to label %1322 unwind label %1323

1322:                                             ; preds = %1321
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #9
  br label %1325

1323:                                             ; preds = %1321
  %1324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #9
  br label %1391

1325:                                             ; preds = %1322, %1316
  %1326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1319)
  %1327 = load i64, ptr %1326, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %192) #9
  %1328 = and i64 %1327, 4294967295
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %194, i64 noundef %1328, i64 noundef 0)
  %1329 = getelementptr inbounds i8, ptr %194, i64 16
  store i32 0, ptr %1329, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %193, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %194)
          to label %1330 unwind label %1335

1330:                                             ; preds = %1325
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %192, ptr noundef nonnull %193)
          to label %1331 unwind label %1337

1331:                                             ; preds = %1330
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %193) #9
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %196, ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %195, ptr noundef nonnull %196)
          to label %1332 unwind label %1339

1332:                                             ; preds = %1331
  %1333 = getelementptr inbounds i8, ptr %195, i64 48
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1333, ptr noundef nonnull align 8 dereferenceable(48) %192) #9
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %195)
          to label %1334 unwind label %1341

1334:                                             ; preds = %1332
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %195) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %196) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %192) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %192) #9
  br label %.critedge832

1335:                                             ; preds = %1325
  %1336 = landingpad { ptr, i32 }
          cleanup
  br label %1344

1337:                                             ; preds = %1330
  %1338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %193) #9
  br label %1344

1339:                                             ; preds = %1331
  %1340 = landingpad { ptr, i32 }
          cleanup
  br label %1343

1341:                                             ; preds = %1332
  %1342 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %195) #9
  br label %1343

1343:                                             ; preds = %1341, %1339
  %.pn605 = phi { ptr, i32 } [ %1342, %1341 ], [ %1340, %1339 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %196) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %192) #9
  br label %1344

1344:                                             ; preds = %1343, %1337, %1335
  %.pn605.pn = phi { ptr, i32 } [ %.pn605, %1343 ], [ %1338, %1337 ], [ %1336, %1335 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %192) #9
  br label %1391

1345:                                             ; preds = %1212
  %1346 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1154)
  %1347 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1346)
  %.not597 = icmp eq ptr %1347, null
  br i1 %.not597, label %1348, label %1355

1348:                                             ; preds = %1345
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %198) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 1 dereferenceable(1) %198) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %197)
          to label %1349 unwind label %1353

1349:                                             ; preds = %1348
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #9
  %1350 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1350, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1350, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %1351

1351:                                             ; preds = %1349
  %1352 = landingpad { ptr, i32 }
          cleanup
  br label %1391

1353:                                             ; preds = %1348
  %1354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %198) #9
  br label %1391

1355:                                             ; preds = %1345
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %199) #9
  %1356 = icmp eq ptr %167, %4
  br i1 %1356, label %1357, label %1358

1357:                                             ; preds = %1355
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %167)
  br label %1359

1358:                                             ; preds = %1355
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %201, ptr noundef nonnull align 8 dereferenceable(8) %1207)
          to label %1359 unwind label %1365

1359:                                             ; preds = %1358, %1357
  invoke void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %200, ptr noundef nonnull %201, ptr noundef nonnull align 8 dereferenceable(144) %1347)
          to label %1360 unwind label %1367

1360:                                             ; preds = %1359
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull %200)
          to label %1361 unwind label %1369

1361:                                             ; preds = %1360
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %200) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %203, ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %202, ptr noundef nonnull %203)
          to label %1362 unwind label %1372

1362:                                             ; preds = %1361
  %1363 = getelementptr inbounds i8, ptr %202, i64 48
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1363, ptr noundef nonnull align 8 dereferenceable(48) %199) #9
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %202)
          to label %1364 unwind label %1374

1364:                                             ; preds = %1362
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %202) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %203) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %199) #9
  br label %.critedge832

1365:                                             ; preds = %1358
  %1366 = landingpad { ptr, i32 }
          cleanup
  br label %.thread802

1367:                                             ; preds = %1359
  %1368 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1369:                                             ; preds = %1360
  %1370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %200) #9
  br label %1371

1371:                                             ; preds = %1369, %1367
  %.pn598 = phi { ptr, i32 } [ %1370, %1369 ], [ %1368, %1367 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  br label %.thread802

1372:                                             ; preds = %1361
  %1373 = landingpad { ptr, i32 }
          cleanup
  br label %1376

1374:                                             ; preds = %1362
  %1375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %202) #9
  br label %1376

1376:                                             ; preds = %1374, %1372
  %.pn601 = phi { ptr, i32 } [ %1375, %1374 ], [ %1373, %1372 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %203) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #9
  br label %.thread802

.thread802:                                       ; preds = %1371, %1365, %1376
  %.pn601.pn = phi { ptr, i32 } [ %.pn601, %1376 ], [ %1366, %1365 ], [ %.pn598, %1371 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %199) #9
  br label %1391

1377:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #9
  store ptr @__func__._Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE, ptr %204, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %206) #9
  store ptr %204, ptr %206, align 8, !tbaa !5
  %1378 = getelementptr inbounds i8, ptr %206, i64 8
  store ptr %1153, ptr %1378, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 8 dereferenceable(16) %206) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %205)
          to label %1379 unwind label %1381

1379:                                             ; preds = %1377
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %206) #9
  %1380 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1380, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1380, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %1383

1381:                                             ; preds = %1377
  %1382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %206) #9
  br label %1385

1383:                                             ; preds = %1379
  %1384 = landingpad { ptr, i32 }
          cleanup
  br label %1385

1385:                                             ; preds = %1383, %1381
  %.pn595 = phi { ptr, i32 } [ %1384, %1383 ], [ %1382, %1381 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #9
  br label %1391

1386:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %208) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %207, ptr noundef nonnull align 1 dereferenceable(1) %208) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %207)
          to label %1387 unwind label %1389

1387:                                             ; preds = %1386
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #9
  %1388 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1388, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1388, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1608 unwind label %.loopexit.split-lp842

1389:                                             ; preds = %1386
  %1390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %208) #9
  br label %1391

1391:                                             ; preds = %.loopexit841, %.loopexit.split-lp842, %1304, %1307, %1314, %1385, %1389, %1344, %1323, %.thread802, %1353, %1351, %1215
  %.pn630.pn = phi { ptr, i32 } [ %1216, %1215 ], [ %1390, %1389 ], [ %.pn595, %1385 ], [ %1315, %1314 ], [ %.pn624.pn.pn.pn.pn, %1304 ], [ %1308, %1307 ], [ %.pn605.pn, %1344 ], [ %1324, %1323 ], [ %.pn601.pn, %.thread802 ], [ %1352, %1351 ], [ %1354, %1353 ], [ %lpad.loopexit843, %.loopexit841 ], [ %lpad.loopexit.split-lp844, %.loopexit.split-lp842 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  br label %1392

1392:                                             ; preds = %1391, %1213
  %.pn630.pn.pn = phi { ptr, i32 } [ %.pn630.pn, %1391 ], [ %1214, %1213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #9
  br label %1393

1393:                                             ; preds = %1392, %1203
  %.pn630.pn.pn.pn = phi { ptr, i32 } [ %.pn630.pn.pn, %1392 ], [ %1204, %1203 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  br label %1394

1394:                                             ; preds = %1393, %1202
  %.pn630.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn630.pn.pn.pn, %1393 ], [ %.pn592.pn, %1202 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %164) #9
  br label %1568

1395:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %209) #9
  %1396 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1154)
  %1397 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1396)
  br i1 %1397, label %1398, label %.critedge23

1398:                                             ; preds = %1395
  %1399 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1154)
  %1400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1399)
  store i32 2, ptr %209, align 4, !tbaa !38
  %1401 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1400, ptr noundef nonnull align 4 dereferenceable(4) %209)
          to label %1402 unwind label %1408

1402:                                             ; preds = %1398
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %209) #9
  br i1 %1401, label %1403, label %1437

1403:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %210) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  %1404 = getelementptr inbounds i8, ptr %1155, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %211) #9
  %1405 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %1404) #9
  store ptr %1405, ptr %211, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %212) #9
  %1406 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1404) #9
  store ptr %1406, ptr %212, align 8
  %1407 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %212) #9
  br i1 %1407, label %.lr.ph927, label %._crit_edge928

._crit_edge928:                                   ; preds = %1412, %1403
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #9
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %216, ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %215, ptr noundef nonnull %216)
          to label %1417 unwind label %1425

1408:                                             ; preds = %1398
  %1409 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %209) #9
  br label %1568

.lr.ph927:                                        ; preds = %1403, %1412
  %1410 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %211) #9
  %1411 = load i8, ptr %1410, align 1, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %213) #9
  store i8 %1411, ptr %213, align 1, !tbaa !74
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr noundef nonnull align 1 dereferenceable(1) %213)
          to label %1412 unwind label %1415

1412:                                             ; preds = %.lr.ph927
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %213) #9
  %1413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %211) #9
  %1414 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %212) #9
  br i1 %1414, label %.lr.ph927, label %._crit_edge928

1415:                                             ; preds = %.lr.ph927
  %1416 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %213) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #9
  br label %1436

1417:                                             ; preds = %._crit_edge928
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %214, ptr noundef nonnull %215)
          to label %1418 unwind label %1427

1418:                                             ; preds = %1417
  %1419 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1404) #9
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %218, i64 noundef %1419, i64 noundef 0)
  %1420 = getelementptr inbounds i8, ptr %218, i64 16
  store i32 0, ptr %1420, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %217, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %218)
          to label %1421 unwind label %.thread805

1421:                                             ; preds = %1418
  %1422 = getelementptr inbounds i8, ptr %214, i64 48
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %1422, ptr noundef nonnull %217)
          to label %1423 unwind label %.thread809

1423:                                             ; preds = %1421
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %214)
          to label %1424 unwind label %1431

1424:                                             ; preds = %1423
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %214) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %215) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %216) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %210) #9
  br label %.thread820

1425:                                             ; preds = %._crit_edge928
  %1426 = landingpad { ptr, i32 }
          cleanup
  br label %1435

1427:                                             ; preds = %1417
  %1428 = landingpad { ptr, i32 }
          cleanup
  br label %1434

.thread805:                                       ; preds = %1418
  %1429 = landingpad { ptr, i32 }
          cleanup
  br label %1433

.thread809:                                       ; preds = %1421
  %1430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  br label %1433

1431:                                             ; preds = %1423
  %1432 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %214) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  br label %1434

1433:                                             ; preds = %.thread809, %.thread805
  %.pn585.pn808 = phi { ptr, i32 } [ %1429, %.thread805 ], [ %1430, %.thread809 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %214) #9
  br label %1434

1434:                                             ; preds = %1431, %1433, %1427
  %.pn585.pn.pn = phi { ptr, i32 } [ %.pn585.pn808, %1433 ], [ %1432, %1431 ], [ %1428, %1427 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %215) #9
  br label %1435

1435:                                             ; preds = %1434, %1425
  %.pn585.pn.pn.pn = phi { ptr, i32 } [ %.pn585.pn.pn, %1434 ], [ %1426, %1425 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %216) #9
  br label %1436

1436:                                             ; preds = %1435, %1415
  %.pn590 = phi { ptr, i32 } [ %1416, %1415 ], [ %.pn585.pn.pn.pn, %1435 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %210) #9
  br label %1568

.critedge23:                                      ; preds = %1395
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %209) #9
  br label %1437

1437:                                             ; preds = %.critedge23, %1402
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %219) #9
  %1438 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1154)
  %1439 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1438)
  br i1 %1439, label %1440, label %.critedge25

1440:                                             ; preds = %1437
  %1441 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1154)
  %1442 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1441)
  store i32 2, ptr %219, align 4, !tbaa !38
  %1443 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1442, ptr noundef nonnull align 4 dereferenceable(4) %219)
          to label %1444 unwind label %1450

1444:                                             ; preds = %1440
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %219) #9
  br i1 %1443, label %1445, label %1467

1445:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %220) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  %1446 = getelementptr inbounds i8, ptr %1155, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #9
  %1447 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %1446) #9
  store ptr %1447, ptr %221, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %222) #9
  %1448 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1446) #9
  store ptr %1448, ptr %222, align 8
  %1449 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %222) #9
  br i1 %1449, label %.lr.ph924, label %._crit_edge925

._crit_edge925:                                   ; preds = %1454, %1445
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #9
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %225, ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %224, ptr noundef nonnull %225)
          to label %1459 unwind label %1461

1450:                                             ; preds = %1440
  %1451 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %219) #9
  br label %1568

.lr.ph924:                                        ; preds = %1445, %1454
  %1452 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %221) #9
  %1453 = load i8, ptr %1452, align 1, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %223) #9
  store i8 %1453, ptr %223, align 1, !tbaa !74
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %220, ptr noundef nonnull align 1 dereferenceable(1) %223)
          to label %1454 unwind label %1457

1454:                                             ; preds = %.lr.ph924
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %223) #9
  %1455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %221) #9
  %1456 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %222) #9
  br i1 %1456, label %.lr.ph924, label %._crit_edge925

1457:                                             ; preds = %.lr.ph924
  %1458 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %223) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #9
  br label %1466

1459:                                             ; preds = %._crit_edge925
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %224)
          to label %1460 unwind label %1463

1460:                                             ; preds = %1459
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %224) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %225) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %220) #9
  br label %.thread820

1461:                                             ; preds = %._crit_edge925
  %1462 = landingpad { ptr, i32 }
          cleanup
  br label %1465

1463:                                             ; preds = %1459
  %1464 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %224) #9
  br label %1465

1465:                                             ; preds = %1463, %1461
  %.pn581 = phi { ptr, i32 } [ %1464, %1463 ], [ %1462, %1461 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %225) #9
  br label %1466

1466:                                             ; preds = %1465, %1457
  %.pn583 = phi { ptr, i32 } [ %1458, %1457 ], [ %.pn581, %1465 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %220) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %220) #9
  br label %1568

.critedge25:                                      ; preds = %1437
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %219) #9
  br label %1467

1467:                                             ; preds = %.critedge25, %1444
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %226) #9
  store i32 16, ptr %226, align 4, !tbaa !38
  %1468 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1154, ptr noundef nonnull align 4 dereferenceable(4) %226)
          to label %1469 unwind label %1475

1469:                                             ; preds = %1467
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %226) #9
  br i1 %1468, label %1470, label %1482

1470:                                             ; preds = %1469
  %1471 = getelementptr inbounds i8, ptr %1155, i64 24
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(32) %1471)
          to label %1472 unwind label %.loopexit.split-lp837

1472:                                             ; preds = %1470
  invoke void @_ZN3MIR8Constant17make_StaticStringENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %227, ptr noundef nonnull %228)
          to label %1473 unwind label %1477

1473:                                             ; preds = %1472
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %227)
          to label %1474 unwind label %1479

1474:                                             ; preds = %1473
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %227) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  br label %.thread820

1475:                                             ; preds = %1467
  %1476 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %226) #9
  br label %1568

1477:                                             ; preds = %1472
  %1478 = landingpad { ptr, i32 }
          cleanup
  br label %1481

1479:                                             ; preds = %1473
  %1480 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %227) #9
  br label %1481

1481:                                             ; preds = %1479, %1477
  %.pn579 = phi { ptr, i32 } [ %1480, %1479 ], [ %1478, %1477 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  br label %1568

1482:                                             ; preds = %1469
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %229) #9
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %229) #9
  %1483 = getelementptr inbounds i8, ptr %1155, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %230) #9
  %1484 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %1483) #9
  store ptr %1484, ptr %230, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %231) #9
  %1485 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1483) #9
  store ptr %1485, ptr %231, align 8
  %1486 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef nonnull align 8 dereferenceable(8) %231) #9
  br i1 %1486, label %.lr.ph922, label %._crit_edge

._crit_edge:                                      ; preds = %1489, %1482
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #9
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %233) #9
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %236, ptr noundef nonnull align 8 dereferenceable(24) %229) #9
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %235, ptr noundef nonnull %236)
          to label %1494 unwind label %1518

.lr.ph922:                                        ; preds = %1482, %1489
  %1487 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %230) #9
  %1488 = load i8, ptr %1487, align 1, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %232) #9
  store i8 %1488, ptr %232, align 1, !tbaa !74
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %229, ptr noundef nonnull align 1 dereferenceable(1) %232)
          to label %1489 unwind label %1492

1489:                                             ; preds = %.lr.ph922
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  %1490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %230) #9
  %1491 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef nonnull align 8 dereferenceable(8) %231) #9
  br i1 %1491, label %.lr.ph922, label %._crit_edge

1492:                                             ; preds = %.lr.ph922
  %1493 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %232) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %230) #9
  br label %1567

1494:                                             ; preds = %._crit_edge
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %234, ptr noundef nonnull %235)
          to label %1495 unwind label %1520

1495:                                             ; preds = %1494
  %1496 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1483) #9
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %238, i64 noundef %1496, i64 noundef 0)
  %1497 = getelementptr inbounds i8, ptr %238, i64 16
  store i32 0, ptr %1497, align 8, !tbaa !54
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %237, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %238)
          to label %1498 unwind label %.thread812

1498:                                             ; preds = %1495
  %1499 = getelementptr inbounds i8, ptr %234, i64 48
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %1499, ptr noundef nonnull %237)
          to label %1500 unwind label %.thread816

1500:                                             ; preds = %1498
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %233, ptr noundef nonnull %234)
          to label %1501 unwind label %1524

1501:                                             ; preds = %1500
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %234) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %237) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %235) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %236) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %239) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %242, i32 noundef 2)
          to label %1502 unwind label %1529

1502:                                             ; preds = %1501
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %241, ptr noundef nonnull %242)
          to label %1503 unwind label %1531

1503:                                             ; preds = %1502
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %240, i32 noundef 0, ptr noundef nonnull %241)
          to label %1504 unwind label %1533

1504:                                             ; preds = %1503
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %243, ptr noundef nonnull align 8 dereferenceable(112) %233) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %239, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %240, ptr noundef nonnull %243)
          to label %1505 unwind label %1535

1505:                                             ; preds = %1504
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %243) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %244) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %245, ptr noundef nonnull align 8 dereferenceable(8) %1154)
          to label %1506 unwind label %1539

1506:                                             ; preds = %1505
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %244, i32 noundef 0, ptr noundef nonnull %245)
          to label %1507 unwind label %1541

1507:                                             ; preds = %1506
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %246) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %247, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %1508 unwind label %1543

1508:                                             ; preds = %1507
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %249, ptr noundef nonnull align 8 dereferenceable(32) %239)
          to label %1509 unwind label %1545

1509:                                             ; preds = %1508
  %1510 = getelementptr inbounds i8, ptr %249, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1510, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %1511 unwind label %1547

1511:                                             ; preds = %1509
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %248, ptr noundef nonnull %249)
          to label %1512 unwind label %1549

1512:                                             ; preds = %1511
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %246, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %247, ptr noundef nonnull %248)
          to label %1513 unwind label %1551

1513:                                             ; preds = %1512
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %248) #9
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %249) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #9
  store i32 0, ptr %250, align 8, !tbaa !66
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef nonnull align 8 dereferenceable(32) %246)
          to label %1514 unwind label %1555

1514:                                             ; preds = %1513
  %1515 = getelementptr inbounds i8, ptr %250, i64 8
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %1515, ptr noundef nonnull %251)
          to label %1516 unwind label %1557

1516:                                             ; preds = %1514
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %250)
          to label %1517 unwind label %1559

1517:                                             ; preds = %1516
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %250) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %246) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %233) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %233) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %229) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %229) #9
  br label %.thread820

1518:                                             ; preds = %._crit_edge
  %1519 = landingpad { ptr, i32 }
          cleanup
  br label %1528

1520:                                             ; preds = %1494
  %1521 = landingpad { ptr, i32 }
          cleanup
  br label %1527

.thread812:                                       ; preds = %1495
  %1522 = landingpad { ptr, i32 }
          cleanup
  br label %1526

.thread816:                                       ; preds = %1498
  %1523 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %237) #9
  br label %1526

1524:                                             ; preds = %1500
  %1525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %234) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %237) #9
  br label %1527

1526:                                             ; preds = %.thread816, %.thread812
  %.pn559.pn815 = phi { ptr, i32 } [ %1522, %.thread812 ], [ %1523, %.thread816 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %234) #9
  br label %1527

1527:                                             ; preds = %1524, %1526, %1520
  %.pn559.pn.pn = phi { ptr, i32 } [ %.pn559.pn815, %1526 ], [ %1525, %1524 ], [ %1521, %1520 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %235) #9
  br label %1528

1528:                                             ; preds = %1527, %1518
  %.pn559.pn.pn.pn = phi { ptr, i32 } [ %.pn559.pn.pn, %1527 ], [ %1519, %1518 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %236) #9
  br label %1566

1529:                                             ; preds = %1501
  %1530 = landingpad { ptr, i32 }
          cleanup
  br label %1565

1531:                                             ; preds = %1502
  %1532 = landingpad { ptr, i32 }
          cleanup
  br label %1538

1533:                                             ; preds = %1503
  %1534 = landingpad { ptr, i32 }
          cleanup
  br label %1537

1535:                                             ; preds = %1504
  %1536 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %243) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #9
  br label %1537

1537:                                             ; preds = %1535, %1533
  %.pn564 = phi { ptr, i32 } [ %1536, %1535 ], [ %1534, %1533 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  br label %1538

1538:                                             ; preds = %1537, %1531
  %.pn564.pn = phi { ptr, i32 } [ %.pn564, %1537 ], [ %1532, %1531 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  br label %1565

1539:                                             ; preds = %1505
  %1540 = landingpad { ptr, i32 }
          cleanup
  br label %1564

1541:                                             ; preds = %1506
  %1542 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #9
  br label %1564

1543:                                             ; preds = %1507
  %1544 = landingpad { ptr, i32 }
          cleanup
  br label %1563

1545:                                             ; preds = %1508
  %1546 = landingpad { ptr, i32 }
          cleanup
  br label %1554

1547:                                             ; preds = %1509
  %1548 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  br label %1554

1549:                                             ; preds = %1511
  %1550 = landingpad { ptr, i32 }
          cleanup
  br label %1553

1551:                                             ; preds = %1512
  %1552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %248) #9
  br label %1553

1553:                                             ; preds = %1551, %1549
  %.pn567 = phi { ptr, i32 } [ %1552, %1551 ], [ %1550, %1549 ]
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %249) #9
  br label %1554

1554:                                             ; preds = %1553, %1547, %1545
  %.pn567.pn = phi { ptr, i32 } [ %.pn567, %1553 ], [ %1548, %1547 ], [ %1546, %1545 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #9
  br label %1563

1555:                                             ; preds = %1513
  %1556 = landingpad { ptr, i32 }
          cleanup
  br label %1562

1557:                                             ; preds = %1514
  %1558 = landingpad { ptr, i32 }
          cleanup
  br label %1561

1559:                                             ; preds = %1516
  %1560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %250) #9
  br label %1561

1561:                                             ; preds = %1559, %1557
  %.pn570 = phi { ptr, i32 } [ %1560, %1559 ], [ %1558, %1557 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  br label %1562

1562:                                             ; preds = %1561, %1555
  %.pn570.pn = phi { ptr, i32 } [ %.pn570, %1561 ], [ %1556, %1555 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #9
  br label %1563

1563:                                             ; preds = %1562, %1554, %1543
  %.pn570.pn.pn = phi { ptr, i32 } [ %.pn570.pn, %1562 ], [ %.pn567.pn, %1554 ], [ %1544, %1543 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %246) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  br label %1564

1564:                                             ; preds = %1563, %1541, %1539
  %.pn570.pn.pn.pn = phi { ptr, i32 } [ %.pn570.pn.pn, %1563 ], [ %1542, %1541 ], [ %1540, %1539 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %244) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #9
  br label %1565

1565:                                             ; preds = %1564, %1538, %1529
  %.pn570.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn570.pn.pn.pn, %1564 ], [ %.pn564.pn, %1538 ], [ %1530, %1529 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %239) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %233) #9
  br label %1566

1566:                                             ; preds = %1565, %1528
  %.pn570.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn570.pn.pn.pn.pn, %1565 ], [ %.pn559.pn.pn.pn, %1528 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %233) #9
  br label %1567

1567:                                             ; preds = %1566, %1492
  %.pn577 = phi { ptr, i32 } [ %1493, %1492 ], [ %.pn570.pn.pn.pn.pn.pn, %1566 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %229) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %229) #9
  br label %1568

.thread820:                                       ; preds = %1424, %1460, %1474, %1517
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #9
  br label %1605

1568:                                             ; preds = %.loopexit836, %.loopexit.split-lp837, %1567, %1481, %1475, %1466, %1450, %1436, %1408, %1394, %1171
  %.pn630.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn630.pn.pn.pn.pn, %1394 ], [ %.pn590, %1436 ], [ %.pn583, %1466 ], [ %.pn579, %1481 ], [ %.pn577, %1567 ], [ %1476, %1475 ], [ %1451, %1450 ], [ %1409, %1408 ], [ %1172, %1171 ], [ %lpad.loopexit838, %.loopexit836 ], [ %lpad.loopexit.split-lp839, %.loopexit.split-lp837 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #9
  br label %1606

1569:                                             ; preds = %.lr.ph920
  %1570 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %273)
  %1571 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %1572 unwind label %1575

1572:                                             ; preds = %1569
  %.not = icmp eq ptr %1571, null
  br i1 %.not, label %1573, label %1579

1573:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %253) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %252, ptr noundef nonnull align 1 dereferenceable(1) %253) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %252)
          to label %1574 unwind label %1577

1574:                                             ; preds = %1573
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %253) #9
  br label %1579

1575:                                             ; preds = %1569
  %1576 = landingpad { ptr, i32 }
          cleanup
  br label %1606

1577:                                             ; preds = %1573
  %1578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %253) #9
  br label %1606

1579:                                             ; preds = %1572, %1574
  %1580 = getelementptr inbounds i8, ptr %1571, i64 16
  %1581 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1580) #9
  br i1 %1581, label %1586, label %1582

1582:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %255) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %254, ptr noundef nonnull align 1 dereferenceable(1) %255) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %254)
          to label %1583 unwind label %1584

1583:                                             ; preds = %1582
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %255) #9
  br label %1586

1584:                                             ; preds = %1582
  %1585 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %255) #9
  br label %1606

1586:                                             ; preds = %1583, %1579
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %258) #9
  %1587 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1580) #9
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %258, ptr noundef nonnull align 8 dereferenceable(88) %1587)
          to label %1588 unwind label %1592

1588:                                             ; preds = %1586
  invoke void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.76") align 8 %257, ptr noundef nonnull align 8 dereferenceable(88) %258)
          to label %1589 unwind label %1594

1589:                                             ; preds = %1588
  invoke void @_ZN3MIR8Constant13make_ItemAddrESt10unique_ptrIN3HIR4PathESt14default_deleteIS3_EE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %256, ptr noundef nonnull %257)
          to label %1590 unwind label %1596

1590:                                             ; preds = %1589
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull %256)
          to label %1591 unwind label %1598

1591:                                             ; preds = %1590
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %256) #9
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %258) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %258) #9
  br label %1605

1592:                                             ; preds = %1586
  %1593 = landingpad { ptr, i32 }
          cleanup
  br label %1602

1594:                                             ; preds = %1588
  %1595 = landingpad { ptr, i32 }
          cleanup
  br label %1601

1596:                                             ; preds = %1589
  %1597 = landingpad { ptr, i32 }
          cleanup
  br label %1600

1598:                                             ; preds = %1590
  %1599 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %256) #9
  br label %1600

1600:                                             ; preds = %1598, %1596
  %.pn = phi { ptr, i32 } [ %1599, %1598 ], [ %1597, %1596 ]
  call void @_ZNSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  br label %1601

1601:                                             ; preds = %1600, %1594
  %.pn.pn = phi { ptr, i32 } [ %.pn, %1600 ], [ %1595, %1594 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %258) #9
  br label %1602

1602:                                             ; preds = %1601, %1592
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %1601 ], [ %1593, %1592 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %258) #9
  br label %1606

1603:                                             ; preds = %.critedge757.loopexit
  %1604 = landingpad { ptr, i32 }
          cleanup
  br label %1606

.critedge832:                                     ; preds = %1306, %1251, %1334, %1364
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %164) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %164) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #9
  br label %1605

1605:                                             ; preds = %.critedge832, %.thread820, %1134, %1099, %1066, %1053, %1045, %1037, %1025, %1013, %1001, %989, %977, %961, %949, %937, %925, %913, %901, %885, %569, %659, %837, %1591, %502, %381, %316
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #9
  ret void

1606:                                             ; preds = %268, %292, %293, %321, %503, %384, %332, %330, %672, %674, %719, %756, %802, %820, %855, %747, %602, %662, %870, %572, %514, %512, %1080, %1071, %1054, %1046, %1038, %1026, %1014, %1002, %990, %978, %962, %950, %938, %926, %914, %902, %886, %874, %1135, %1152, %1117, %1086, %1568, %1169, %1602, %1584, %1577, %1575, %1603
  %.pn744.pn = phi { ptr, i32 } [ %1604, %1603 ], [ %269, %268 ], [ %294, %293 ], [ %.pn742, %321 ], [ %.pn739.pn, %292 ], [ %.pn721.pn.pn.pn.pn.pn, %503 ], [ %.pn732.pn.pn.pn.pn, %384 ], [ %333, %332 ], [ %331, %330 ], [ %.pn699.pn.pn.pn.pn, %572 ], [ %.pn661, %870 ], [ %515, %514 ], [ %513, %512 ], [ %.pn687.pn.pn.pn.pn.pn.pn, %662 ], [ %603, %602 ], [ %673, %672 ], [ %.pn678, %820 ], [ %.pn672.pn.pn.pn.pn, %855 ], [ %.pn669, %802 ], [ %757, %756 ], [ %.pn666, %747 ], [ %.pn664, %719 ], [ %675, %674 ], [ %875, %874 ], [ %.pn652, %1080 ], [ %.pn654, %1071 ], [ %1055, %1054 ], [ %1047, %1046 ], [ %1039, %1038 ], [ %1027, %1026 ], [ %1015, %1014 ], [ %1003, %1002 ], [ %991, %990 ], [ %979, %978 ], [ %963, %962 ], [ %951, %950 ], [ %939, %938 ], [ %927, %926 ], [ %915, %914 ], [ %903, %902 ], [ %887, %886 ], [ %.pn646.pn.pn.pn, %1117 ], [ %1087, %1086 ], [ %.pn642.pn, %1152 ], [ %1136, %1135 ], [ %.pn630.pn.pn.pn.pn.pn, %1568 ], [ %1170, %1169 ], [ %.pn.pn.pn, %1602 ], [ %1585, %1584 ], [ %1578, %1577 ], [ %1576, %1575 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #9
  br label %1607

1607:                                             ; preds = %1606, %266, %264
  %.pn744.pn.pn = phi { ptr, i32 } [ %.pn744.pn, %1606 ], [ %267, %266 ], [ %265, %264 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #9
  resume { ptr, i32 } %.pn744.pn.pn

1608:                                             ; preds = %.critedge757.loopexit, %1387, %1379, %1349, %1081, %1074, %861, %814, %283
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathEEN1MC2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3HIR4PathEESt10unique_ptrIT_St14default_deleteIS3_EEOS3_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK19EncodedLiteralSliceneERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue15make_SizedArrayENS0_15Data_SizedArrayE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

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

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

declare noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() local_unnamed_addr #5

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

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

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

declare noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

declare void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), i1 noundef zeroext) local_unnamed_addr #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_static_typeERN3HIR7TypeRefERKNS1_4PathE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) 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 #5 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 #3 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 #3 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 hidden void @"_ZNSt8functionIFvRSoEEC2IZ27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNSB_4PathEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTSN3MIR11TypeResolveE", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116}
!13 = !{!"_ZTS9FmtLambda", !14, i64 0}
!14 = !{!"_ZTSSt8functionIFvRSoEE", !15, i64 0, !6, i64 24}
!15 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!16 = !{!12, !6, i64 16}
!17 = !{!18, !19, i64 0}
!18 = !{!"_ZTSN8TypeRepr5FieldE", !19, i64 0, !20, i64 8}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!21 = !{!19, !19, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = !{!26, !10, i64 32}
!26 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !27, i64 0, !10, i64 32, !34, i64 40}
!27 = !{!"_ZTSN3HIR11GenericPathE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSN3HIR10SimplePathE", !29, i64 0}
!29 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!30 = !{!"_ZTSN3HIR10PathParamsE", !31, i64 0, !32, i64 8, !33, i64 16}
!31 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!32 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!33 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!34 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!39, !39, i64 0}
!39 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!40 = !{!41, !19, i64 8}
!41 = !{!"_ZTS8TypeRepr", !19, i64 0, !19, i64 8, !42, i64 16, !44, i64 88}
!42 = !{!"_ZTSN8TypeRepr11VariantModeE", !43, i64 0, !7, i64 8}
!43 = !{!"_ZTSN8TypeRepr11VariantMode3TagE", !7, i64 0}
!44 = !{!"_ZTSSt6vectorIN8TypeRepr5FieldESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN8TypeRepr5FieldESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = distinct !{!48, !23}
!49 = !{i64 0, i64 8, !5, i64 8, i64 8, !21, i64 16, i64 8, !21}
!50 = !{!51, !10, i64 32}
!51 = !{!"_ZTSN3MIR6RValue17Data_UnionVariantE", !27, i64 0, !10, i64 32, !52, i64 40}
!52 = !{!"_ZTSN3MIR5ParamE", !53, i64 0, !7, i64 8}
!53 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!54 = !{!55, !39, i64 16}
!55 = !{!"_ZTSN3MIR8Constant9Data_UintE", !56, i64 0, !39, i64 16}
!56 = !{!"_ZTS4U128", !19, i64 0, !19, i64 8}
!57 = !{!58, !39, i64 16}
!58 = !{!"_ZTSN3MIR8Constant8Data_IntE", !59, i64 0, !39, i64 16}
!59 = !{!"_ZTS4S128", !56, i64 0}
!60 = !{!61, !62, i64 0}
!61 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !62, i64 0, !20, i64 8}
!62 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!63 = !{!64, !62, i64 4}
!64 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !65, i64 0, !62, i64 4, !20, i64 8}
!65 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!66 = !{!67, !62, i64 0}
!67 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !62, i64 0, !68, i64 8}
!68 = !{!"_ZTSN3MIR6LValueE", !69, i64 0, !70, i64 8}
!69 = !{!"_ZTSN3MIR6LValue7StorageE", !19, i64 0}
!70 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!74 = !{!7, !7, i64 0}


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