; LLVM IR from thepowersgang/mrustc :: src/hir_conv (constant_evaluation)

; 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.RcString = type { ptr }
%"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.137 = type { ptr }
%class.anon.138 = type { ptr }
%"class.MIR::eval::ValueRef" = type { %"class.MIR::eval::RelocPtr", i32, i32 }
%"class.MIR::eval::RelocPtr" = type { i64 }
%"class.HIR::TypeRef" = type { ptr }
%class.anon.185 = type { ptr, ptr, ptr }
%"struct.(anonymous namespace)::TypeInfo" = type { i32, i32 }
%class.S128 = type { %class.U128 }
%class.U128 = type { i64, i64 }
%class.anon.186 = type { i8 }
%class.anon.187 = type { ptr }
%class.anon.188 = type { ptr }
%class.anon.205 = type { ptr }
%class.anon.211 = type { ptr }
%class.anon.212 = type { ptr, ptr }
%"class.MIR::eval::StaticRefPtr" = type { %"class.MIR::eval::RefCountPtr.25" }
%"class.MIR::eval::RefCountPtr.25" = type { ptr }
%class.anon.213 = type { ptr }
%class.anon.214 = type { ptr }
%class.anon.215 = type { ptr }
%class.anon.216 = type { ptr, ptr }
%class.anon.217 = type { ptr }
%class.anon.228 = type { ptr }
%class.anon.229 = type { ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.20, %class.ThinVector.21, %class.ThinVector.22 }
%class.ThinVector.20 = type { ptr }
%class.ThinVector.21 = type { ptr }
%class.ThinVector.22 = 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.24" }
%"struct.std::_Head_base.24" = type { ptr }
%class.anon.230 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.231 = type { i8 }
%class.anon.233 = type { i8 }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.113", [8 x i8] }
%"class.std::unique_ptr.113" = type { %"struct.std::__uniq_ptr_data.114" }
%"struct.std::__uniq_ptr_data.114" = type { %"class.std::__uniq_ptr_impl.115" }
%"class.std::__uniq_ptr_impl.115" = type { %"class.std::tuple.116" }
%"class.std::tuple.116" = type { %"struct.std::_Tuple_impl.117" }
%"struct.std::_Tuple_impl.117" = type { %"struct.std::_Head_base.120" }
%"struct.std::_Head_base.120" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.97", %"class.std::vector.235" }
%"class.std::vector.97" = type { %"struct.std::_Vector_base.98" }
%"struct.std::_Vector_base.98" = 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.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.240" = type { ptr }
%class.anon.241 = type { i8 }
%class.anon.243 = type { ptr }
%"class.MIR::eval::CallStackEntry" = type { i32, %"class.std::vector.26", %"class.HIR::TypeRef", ptr, %class.StaticTraitResolve, %"class.MIR::TypeResolve", %struct.MonomorphState, %"class.MIR::eval::AllocationPtr", %"class.std::vector.36", %"class.std::vector.41", %"class.std::vector.36" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.4", %"class.std::map.4", %"class.std::map.4", %"class.std::map.9" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RangeVecMap = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.4" = type { %"class.std::_Rb_tree.5" }
%"class.std::_Rb_tree.5" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.9" = type { %"class.std::_Rb_tree.10" }
%"class.std::_Rb_tree.10" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.31" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = 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.MIR::eval::AllocationPtr" = type { %"class.MIR::eval::RefCountPtr" }
%"class.MIR::eval::RefCountPtr" = type { ptr }
%"class.std::vector.41" = type { %"struct.std::_Vector_base.42" }
%"struct.std::_Vector_base.42" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.36" = type { %"struct.std::_Vector_base.37" }
%"struct.std::_Vector_base.37" = type { %"struct.std::_Vector_base<MIR::eval::AllocationPtr, std::allocator<MIR::eval::AllocationPtr>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::eval::AllocationPtr, std::allocator<MIR::eval::AllocationPtr>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::eval::AllocationPtr, std::allocator<MIR::eval::AllocationPtr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::eval::AllocationPtr, std::allocator<MIR::eval::AllocationPtr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Evaluator" = type { %struct.Span, %class.StaticTraitResolve, ptr, i32, i32, %"class.std::vector.46" }
%struct.Span = type { ptr }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.47" }
%"struct.std::_Vector_base.47" = type { %"struct.std::_Vector_base<HIR::Evaluator::CsePtr, std::allocator<HIR::Evaluator::CsePtr>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Evaluator::CsePtr, std::allocator<HIR::Evaluator::CsePtr>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Evaluator::CsePtr, std::allocator<HIR::Evaluator::CsePtr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Evaluator::CsePtr, std::allocator<HIR::Evaluator::CsePtr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::Statement::Data_SetDropFlag" = type { i32, i8, i32 }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.65" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"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 }
%struct.TypeRepr = type { i64, i64, %"class.TypeRepr::VariantMode", %"class.std::vector.206" }
%"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.75" }
%"struct.TypeRepr::FieldPath" = type { i64, i64, %"class.std::vector.75" }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = 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.206" = type { %"struct.std::_Vector_base.207" }
%"struct.std::_Vector_base.207" = 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.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%"struct.MIR::RValue::Data_UniOp" = type <{ %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector.165", %"class.std::vector.170", %"class.std::vector.175", %"class.std::vector.180" }
%"class.std::vector.165" = type { %"struct.std::_Vector_base.166" }
%"struct.std::_Vector_base.166" = 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.170" = type { %"struct.std::_Vector_base.171" }
%"struct.std::_Vector_base.171" = 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.175" = type { %"struct.std::_Vector_base.176" }
%"struct.std::_Vector_base.176" = 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.180" = type { %"struct.std::_Vector_base.181" }
%"struct.std::_Vector_base.181" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.218" }
%"class.std::vector.218" = type { %"struct.std::_Vector_base.219" }
%"struct.std::_Vector_base.219" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.199" }
%"class.std::map.199" = type { %"class.std::_Rb_tree.200" }
%"class.std::_Rb_tree.200" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%"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.150", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.139", %"class.std::map.145", ptr }
%"class.std::map.139" = type { %"class.std::_Rb_tree.140" }
%"class.std::_Rb_tree.140" = 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.145" = type { %"class.std::_Rb_tree.146" }
%"class.std::_Rb_tree.146" = 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.150" = type { %"struct.std::_Vector_base.151" }
%"struct.std::_Vector_base.151" = 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_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.92" }
%"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 }
%"struct.TypeRepr::Field" = type { i64, %"class.HIR::TypeRef" }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.92" }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.92" }
%"struct.TypeRepr::VariantMode::Data_NonZero" = type <{ %"struct.TypeRepr::FieldPath", i32, [4 x i8] }>
%"struct.TypeRepr::VariantMode::Data_Linear" = type { %"struct.TypeRepr::FieldPath", i64, i64 }

@__dso_handle = external hidden global i8
@_ZTIN12_GLOBAL__N_15DeferE = external hidden constant { ptr, ptr }, align 8
@.str.8 = external hidden unnamed_addr constant [91 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE = external hidden unnamed_addr constant [92 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable = external hidden global %class.RcString, align 8
@_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable = external hidden global i64, align 8
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(152) %2) #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.137, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::function", align 8
  %28 = alloca %class.anon.138, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.MIR::eval::ValueRef", align 8
  %31 = alloca i8, align 1
  %32 = alloca ptr, align 8
  %33 = alloca i8, align 1
  %34 = alloca ptr, align 8
  %35 = alloca %"class.MIR::eval::ValueRef", align 8
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca %"class.MIR::eval::ValueRef", align 8
  %39 = alloca i8, align 1
  %40 = alloca ptr, align 8
  %41 = alloca %"class.MIR::eval::ValueRef", align 8
  %42 = alloca i8, align 1
  %43 = alloca ptr, align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"class.MIR::eval::ValueRef", align 8
  %47 = alloca i8, align 1
  %48 = alloca ptr, align 8
  %49 = alloca %"class.std::function", align 8
  %50 = alloca %class.anon.185, align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %54 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %55 = alloca %class.S128, align 8
  %56 = alloca %class.U128, align 8
  %57 = alloca %"class.std::function", align 8
  %58 = alloca %class.anon.186, align 1
  %59 = alloca %class.U128, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.187, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.188, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.205, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca %class.U128, align 8
  %70 = alloca %"class.MIR::eval::ValueRef", align 8
  %71 = alloca %class.U128, align 8
  %72 = alloca %class.S128, align 8
  %73 = alloca %class.U128, align 8
  %74 = alloca %class.U128, align 8
  %75 = alloca %"class.std::function", align 8
  %76 = alloca %class.anon.211, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.212, align 8
  %79 = alloca ptr, align 8
  %80 = alloca %"class.MIR::eval::RelocPtr", align 8
  %81 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %82 = alloca %"class.MIR::eval::ValueRef", align 8
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i8, align 1
  %86 = alloca ptr, align 8
  %87 = alloca %"class.HIR::TypeRef", align 8
  %88 = alloca ptr, align 8
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca %"class.std::function", align 8
  %92 = alloca %class.anon.213, align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"class.std::function", align 8
  %95 = alloca %class.anon.214, align 8
  %96 = alloca i8, align 1
  %97 = alloca ptr, align 8
  %98 = alloca %"class.HIR::TypeRef", align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %101 = alloca %class.U128, align 8
  %102 = alloca %"class.MIR::eval::ValueRef", align 8
  %103 = alloca %class.U128, align 8
  %104 = alloca %class.U128, align 8
  %105 = alloca %class.U128, align 8
  %106 = alloca %class.U128, align 8
  %107 = alloca %class.U128, align 8
  %108 = alloca double, align 8
  %109 = alloca %"class.MIR::eval::ValueRef", align 8
  %110 = alloca ptr, align 8
  %111 = alloca %"class.std::function", align 8
  %112 = alloca %class.anon.215, align 8
  %113 = alloca ptr, align 8
  %114 = alloca %"class.std::function", align 8
  %115 = alloca %class.anon.216, align 8
  %116 = alloca i8, align 1
  %117 = alloca ptr, align 8
  %118 = alloca %"class.MIR::eval::ValueRef", align 8
  %119 = alloca i64, align 8
  %120 = alloca %"class.MIR::eval::ValueRef", align 8
  %121 = alloca i8, align 1
  %122 = alloca ptr, align 8
  %123 = alloca %"class.MIR::eval::ValueRef", align 8
  %124 = alloca i64, align 8
  %125 = alloca %"class.MIR::eval::ValueRef", align 8
  %126 = alloca i8, align 1
  %127 = alloca ptr, align 8
  %128 = alloca %"class.HIR::TypeRef", align 8
  %129 = alloca ptr, align 8
  %130 = alloca %"class.HIR::TypeRef", align 8
  %131 = alloca ptr, align 8
  %132 = alloca i8, align 1
  %133 = alloca ptr, align 8
  %134 = alloca %"class.std::function", align 8
  %135 = alloca %class.anon.217, align 8
  %136 = alloca i8, align 1
  %137 = alloca ptr, align 8
  %138 = alloca i8, align 1
  %139 = alloca ptr, align 8
  %140 = alloca %"class.std::function", align 8
  %141 = alloca %class.anon.228, align 8
  %142 = alloca i8, align 1
  %143 = alloca ptr, align 8
  %144 = alloca ptr, align 8
  %145 = alloca ptr, align 8
  %146 = alloca ptr, align 8
  %147 = alloca %"class.std::function", align 8
  %148 = alloca %class.anon.229, align 8
  %149 = alloca ptr, align 8
  %150 = alloca ptr, align 8
  %151 = alloca %"class.HIR::Path", align 8
  %152 = alloca %"class.HIR::TypeRef", align 8
  %153 = alloca %"class.HIR::GenericPath", align 8
  %154 = alloca %class.RcString, align 8
  %155 = alloca %"struct.HIR::PathParams", align 8
  %156 = alloca %"class.MIR::eval::ValueRef", align 8
  %157 = alloca %"class.MIR::eval::RelocPtr", align 8
  %158 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %159 = alloca %"class.HIR::Path", align 8
  %160 = alloca i64, align 8
  %161 = alloca %"class.MIR::eval::ValueRef", align 8
  %162 = alloca ptr, align 8
  %163 = alloca %"class.std::function", align 8
  %164 = alloca %class.anon.230, align 8
  %165 = alloca ptr, align 8
  %166 = alloca %"class.MIR::eval::ValueRef", align 8
  %167 = alloca ptr, align 8
  %168 = alloca %"class.MIR::eval::ValueRef", align 8
  %169 = alloca %"class.MIR::eval::ValueRef", align 8
  %170 = alloca %"class.MIR::eval::ValueRef", align 8
  %171 = alloca i64, align 8
  %172 = alloca %"class.MIR::eval::ValueRef", align 8
  %173 = alloca %"class.MIR::eval::ValueRef", align 8
  %174 = alloca i8, align 1
  %175 = alloca ptr, align 8
  %176 = alloca %"class.HIR::TypeRef", align 8
  %177 = alloca ptr, align 8
  %178 = alloca ptr, align 8
  %179 = alloca %"class.std::function", align 8
  %180 = alloca %class.anon.231, align 1
  %181 = alloca i64, align 8
  %182 = alloca i64, align 8
  %183 = alloca %"class.MIR::eval::ValueRef", align 8
  %184 = alloca i8, align 1
  %185 = alloca ptr, align 8
  %186 = alloca %"class.HIR::TypeRef", align 8
  %187 = alloca ptr, align 8
  %188 = alloca ptr, align 8
  %189 = alloca %"class.std::function", align 8
  %190 = alloca %class.anon.233, align 1
  %191 = alloca i64, align 8
  %192 = alloca i64, align 8
  %193 = alloca %"class.MIR::eval::ValueRef", align 8
  %194 = alloca %"class.MIR::eval::ValueRef", align 8
  %195 = alloca i8, align 1
  %196 = alloca ptr, align 8
  %197 = alloca i64, align 8
  %198 = alloca i8, align 1
  %199 = alloca ptr, align 8
  %200 = alloca i8, align 1
  %201 = alloca ptr, align 8
  %202 = alloca i8, align 1
  %203 = alloca ptr, align 8
  %204 = alloca ptr, align 8
  %205 = alloca %"class.HIR::ConstGeneric", align 8
  %206 = alloca ptr, align 8
  %207 = alloca %"class.HIR::ConstGeneric", align 8
  %208 = alloca %struct.EncodedLiteral, align 8
  %209 = alloca %"class.HIR::TypeRef", align 8
  %210 = alloca ptr, align 8
  %211 = alloca ptr, align 8
  %212 = alloca i64, align 8
  %213 = alloca %"class.MIR::eval::ValueRef", align 8
  %214 = alloca i32, align 4
  %215 = alloca %"class.MIR::eval::ValueRef", align 8
  %216 = alloca %"class.MIR::eval::ValueRef", align 8
  %217 = alloca i8, align 1
  %218 = alloca ptr, align 8
  %219 = alloca %"class.HIR::TypeRef", align 8
  %220 = alloca ptr, align 8
  %221 = alloca ptr, align 8
  %222 = alloca i64, align 8
  %223 = alloca i64, align 8
  %224 = alloca ptr, align 8
  %225 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %226 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %227 = alloca ptr, align 8
  %228 = alloca %"class.MIR::eval::ValueRef", align 8
  %229 = alloca i8, align 1
  %230 = alloca ptr, align 8
  %231 = alloca %"class.MIR::eval::ValueRef", align 8
  %232 = alloca i8, align 1
  %233 = alloca ptr, align 8
  %234 = alloca %"class.HIR::TypeRef", align 8
  %235 = alloca ptr, align 8
  %236 = alloca ptr, align 8
  %237 = alloca i64, align 8
  %238 = alloca ptr, align 8
  %239 = alloca ptr, align 8
  %240 = alloca i64, align 8
  %241 = alloca i64, align 8
  %242 = alloca %"class.MIR::eval::ValueRef", align 8
  %243 = alloca %"class.MIR::eval::ValueRef", align 8
  %244 = alloca i8, align 1
  %245 = alloca ptr, align 8
  %246 = alloca i8, align 1
  %247 = alloca ptr, align 8
  %248 = alloca i8, align 1
  %249 = alloca ptr, align 8
  %250 = alloca i64, align 8
  %251 = alloca i64, align 8
  %252 = alloca i64, align 8
  %253 = alloca %"class.MIR::eval::ValueRef", align 8
  %254 = alloca %"class.MIR::eval::ValueRef", align 8
  %255 = alloca %"class.MIR::eval::ValueRef", align 8
  %256 = alloca i8, align 1
  %257 = alloca ptr, align 8
  %258 = alloca i64, align 8
  %259 = alloca %"class.std::function", align 8
  %260 = alloca %class.anon.241, align 1
  %261 = alloca %"class.MIR::eval::ValueRef", align 8
  %262 = alloca i8, align 1
  %263 = alloca ptr, align 8
  %264 = alloca ptr, align 8
  %265 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %266 = alloca %"class.std::function", align 8
  %267 = alloca %class.anon.243, align 8
  %268 = alloca %"class.MIR::eval::ValueRef", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %269 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #0
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %270, i32 0, i32 5
  store ptr %271, ptr %7, align 8, !tbaa !5
  br label %272

272:                                              ; preds = %3
  %273 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %273, label %274, label %293

274:                                              ; preds = %272
  %275 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %275, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef @.str.15)
  %278 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 3
  %279 = load i32, ptr %278, align 8, !tbaa !11
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %277, i32 noundef %279)
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef @.str.16)
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %282, i32 0, i32 0
  %284 = load i32, ptr %283, align 8, !tbaa !46
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %281, i32 noundef %284)
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @.str.17)
  %287 = load ptr, ptr %7, align 8, !tbaa !5
  %288 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(120) %287)
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(152) %289)
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef @_ZSt3decRSt8ios_base)
  %292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %293

293:                                              ; preds = %274, %272
  br label %294

294:                                              ; preds = %293
  br label %295

295:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #0
  store i8 1, ptr %8, align 1, !tbaa !79
  br label %296

296:                                              ; preds = %467, %295
  %297 = load i8, ptr %8, align 1, !tbaa !79, !range !81, !noundef !82
  %298 = trunc i8 %297 to i1
  br i1 %298, label %300, label %299

299:                                              ; preds = %296
  store i32 4, ptr %9, align 4
  br label %468

300:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #0
  %301 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %301, ptr %10, align 8, !tbaa !5
  br label %302

302:                                              ; preds = %462, %300
  %303 = load i8, ptr %8, align 1, !tbaa !79, !range !81, !noundef !82
  %304 = trunc i8 %303 to i1
  br i1 %304, label %306, label %305

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

306:                                              ; preds = %302
  %307 = load ptr, ptr %10, align 8, !tbaa !5
  %308 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %307)
  switch i32 %308, label %461 [
    i32 0, label %309
    i32 1, label %310
    i32 5, label %328
    i32 6, label %350
    i32 4, label %372
    i32 2, label %401
    i32 3, label %431
  ]

309:                                              ; preds = %306
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2009, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

310:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #0
  store i8 1, ptr %11, align 1, !tbaa !79
  br label %311

311:                                              ; preds = %326, %310
  %312 = load i8, ptr %11, align 1, !tbaa !79, !range !81, !noundef !82
  %313 = trunc i8 %312 to i1
  br i1 %313, label %315, label %314

314:                                              ; preds = %311
  store i32 11, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #0
  br label %327

315:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #0
  %316 = load ptr, ptr %10, align 8, !tbaa !5
  %317 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %316)
  store ptr %317, ptr %12, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %324, %315
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  %320 = load i8, ptr %11, align 1, !tbaa !79, !range !81, !noundef !82
  %321 = trunc i8 %320 to i1
  br i1 %321, label %323, label %322

322:                                              ; preds = %318
  store i32 14, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #0
  br label %325

323:                                              ; preds = %318
  br label %324

324:                                              ; preds = %323
  store i8 0, ptr %11, align 1, !tbaa !79
  br label %318, !llvm.loop !83

325:                                              ; preds = %322
  br label %326

326:                                              ; preds = %325
  store i8 0, ptr %11, align 1, !tbaa !79
  br label %311, !llvm.loop !85

327:                                              ; preds = %314
  br label %461

328:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #0
  store i8 1, ptr %13, align 1, !tbaa !79
  br label %329

329:                                              ; preds = %346, %328
  %330 = load i8, ptr %13, align 1, !tbaa !79, !range !81, !noundef !82
  %331 = trunc i8 %330 to i1
  br i1 %331, label %333, label %332

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

333:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #0
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %334)
  store ptr %335, ptr %14, align 8, !tbaa !5
  br label %336

336:                                              ; preds = %342, %333
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = load i8, ptr %13, align 1, !tbaa !79, !range !81, !noundef !82
  %339 = trunc i8 %338 to i1
  br i1 %339, label %341, label %340

340:                                              ; preds = %336
  store i32 20, ptr %9, align 4
  br label %343

341:                                              ; preds = %336
  store i32 1, ptr %9, align 4
  br label %343

342:                                              ; No predecessors!
  store i8 0, ptr %13, align 1, !tbaa !79
  br label %336, !llvm.loop !86

343:                                              ; preds = %341, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  %344 = load i32, ptr %9, align 4
  switch i32 %344, label %347 [
    i32 20, label %345
  ]

345:                                              ; preds = %343
  br label %346

346:                                              ; preds = %345
  store i8 0, ptr %13, align 1, !tbaa !79
  br label %329, !llvm.loop !87

347:                                              ; preds = %343, %332
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #0
  %348 = load i32, ptr %9, align 4
  switch i32 %348, label %463 [
    i32 17, label %349
  ]

349:                                              ; preds = %347
  br label %461

350:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #0
  store i8 1, ptr %15, align 1, !tbaa !79
  br label %351

351:                                              ; preds = %368, %350
  %352 = load i8, ptr %15, align 1, !tbaa !79, !range !81, !noundef !82
  %353 = trunc i8 %352 to i1
  br i1 %353, label %355, label %354

354:                                              ; preds = %351
  store i32 23, ptr %9, align 4
  br label %369

355:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #0
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  %357 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %356)
  store ptr %357, ptr %16, align 8, !tbaa !5
  br label %358

358:                                              ; preds = %364, %355
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = load i8, ptr %15, align 1, !tbaa !79, !range !81, !noundef !82
  %361 = trunc i8 %360 to i1
  br i1 %361, label %363, label %362

362:                                              ; preds = %358
  store i32 26, ptr %9, align 4
  br label %365

363:                                              ; preds = %358
  store i32 1, ptr %9, align 4
  br label %365

364:                                              ; No predecessors!
  store i8 0, ptr %15, align 1, !tbaa !79
  br label %358, !llvm.loop !88

365:                                              ; preds = %363, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  %366 = load i32, ptr %9, align 4
  switch i32 %366, label %369 [
    i32 26, label %367
  ]

367:                                              ; preds = %365
  br label %368

368:                                              ; preds = %367
  store i8 0, ptr %15, align 1, !tbaa !79
  br label %351, !llvm.loop !89

369:                                              ; preds = %365, %354
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #0
  %370 = load i32, ptr %9, align 4
  switch i32 %370, label %463 [
    i32 23, label %371
  ]

371:                                              ; preds = %369
  br label %461

372:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #0
  store i8 1, ptr %17, align 1, !tbaa !79
  br label %373

373:                                              ; preds = %397, %372
  %374 = load i8, ptr %17, align 1, !tbaa !79, !range !81, !noundef !82
  %375 = trunc i8 %374 to i1
  br i1 %375, label %377, label %376

376:                                              ; preds = %373
  store i32 29, ptr %9, align 4
  br label %398

377:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %378 = load ptr, ptr %10, align 8, !tbaa !5
  %379 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %378)
  store ptr %379, ptr %18, align 8, !tbaa !5
  br label %380

380:                                              ; preds = %393, %377
  %381 = load ptr, ptr %18, align 8, !tbaa !5
  %382 = load i8, ptr %17, align 1, !tbaa !79, !range !81, !noundef !82
  %383 = trunc i8 %382 to i1
  br i1 %383, label %385, label %384

384:                                              ; preds = %380
  store i32 32, ptr %9, align 4
  br label %394

385:                                              ; preds = %380
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %386, i32 0, i32 2
  %388 = load i32, ptr %387, align 4, !tbaa !90
  %389 = icmp eq i32 %388, -1
  br i1 %389, label %390, label %391

390:                                              ; preds = %385
  br label %392

391:                                              ; preds = %385
  br label %392

392:                                              ; preds = %391, %390
  store i32 1, ptr %9, align 4
  br label %394

393:                                              ; No predecessors!
  store i8 0, ptr %17, align 1, !tbaa !79
  br label %380, !llvm.loop !92

394:                                              ; preds = %392, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  %395 = load i32, ptr %9, align 4
  switch i32 %395, label %398 [
    i32 32, label %396
  ]

396:                                              ; preds = %394
  br label %397

397:                                              ; preds = %396
  store i8 0, ptr %17, align 1, !tbaa !79
  br label %373, !llvm.loop !93

398:                                              ; preds = %394, %376
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #0
  %399 = load i32, ptr %9, align 4
  switch i32 %399, label %463 [
    i32 29, label %400
  ]

400:                                              ; preds = %398
  br label %461

401:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #0
  store i8 1, ptr %19, align 1, !tbaa !79
  br label %402

402:                                              ; preds = %429, %401
  %403 = load i8, ptr %19, align 1, !tbaa !79, !range !81, !noundef !82
  %404 = trunc i8 %403 to i1
  br i1 %404, label %406, label %405

405:                                              ; preds = %402
  store i32 35, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #0
  br label %430

406:                                              ; preds = %402
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %407)
  store ptr %408, ptr %20, align 8, !tbaa !5
  br label %409

409:                                              ; preds = %427, %406
  %410 = load ptr, ptr %20, align 8, !tbaa !5
  %411 = load i8, ptr %19, align 1, !tbaa !79, !range !81, !noundef !82
  %412 = trunc i8 %411 to i1
  br i1 %412, label %414, label %413

413:                                              ; preds = %409
  store i32 38, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %428

414:                                              ; preds = %409
  br label %415

415:                                              ; preds = %414
  %416 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  %417 = getelementptr inbounds %class.anon.137, ptr %22, i32 0, i32 0
  %418 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %418, ptr %417, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %416, ptr noundef %21)
          to label %419 unwind label %421

419:                                              ; preds = %415
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  %420 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %420, align 16, !tbaa !5
  call void @__cxa_throw(ptr %420, ptr @_ZTIPKc, ptr null) #11
  unreachable

421:                                              ; preds = %415
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %23, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #0
  br label %465

425:                                              ; No predecessors!
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  store i8 0, ptr %19, align 1, !tbaa !79
  br label %409, !llvm.loop !94

428:                                              ; preds = %413
  br label %429

429:                                              ; preds = %428
  store i8 0, ptr %19, align 1, !tbaa !79
  br label %402, !llvm.loop !95

430:                                              ; preds = %405
  br label %461

431:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #0
  store i8 1, ptr %25, align 1, !tbaa !79
  br label %432

432:                                              ; preds = %459, %431
  %433 = load i8, ptr %25, align 1, !tbaa !79, !range !81, !noundef !82
  %434 = trunc i8 %433 to i1
  br i1 %434, label %436, label %435

435:                                              ; preds = %432
  store i32 43, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #0
  br label %460

436:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #0
  %437 = load ptr, ptr %10, align 8, !tbaa !5
  %438 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %437)
  store ptr %438, ptr %26, align 8, !tbaa !5
  br label %439

439:                                              ; preds = %457, %436
  %440 = load ptr, ptr %26, align 8, !tbaa !5
  %441 = load i8, ptr %25, align 1, !tbaa !79, !range !81, !noundef !82
  %442 = trunc i8 %441 to i1
  br i1 %442, label %444, label %443

443:                                              ; preds = %439
  store i32 46, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  br label %458

444:                                              ; preds = %439
  br label %445

445:                                              ; preds = %444
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  %447 = getelementptr inbounds %class.anon.138, ptr %28, i32 0, i32 0
  %448 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %448, ptr %447, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %446, ptr noundef %27)
          to label %449 unwind label %451

449:                                              ; preds = %445
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  %450 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %450, align 16, !tbaa !5
  call void @__cxa_throw(ptr %450, ptr @_ZTIPKc, ptr null) #11
  unreachable

451:                                              ; preds = %445
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %23, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #0
  br label %465

455:                                              ; No predecessors!
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  store i8 0, ptr %25, align 1, !tbaa !79
  br label %439, !llvm.loop !96

458:                                              ; preds = %443
  br label %459

459:                                              ; preds = %458
  store i8 0, ptr %25, align 1, !tbaa !79
  br label %432, !llvm.loop !97

460:                                              ; preds = %435
  br label %461

461:                                              ; preds = %460, %430, %400, %371, %349, %327, %306
  br label %462

462:                                              ; preds = %461
  store i8 0, ptr %8, align 1, !tbaa !79
  br label %302, !llvm.loop !98

463:                                              ; preds = %398, %369, %347, %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  %464 = load i32, ptr %9, align 4
  switch i32 %464, label %468 [
    i32 7, label %466
  ]

465:                                              ; preds = %451, %421
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #0
  br label %3422

466:                                              ; preds = %463
  br label %467

467:                                              ; preds = %466
  store i8 0, ptr %8, align 1, !tbaa !79
  br label %296, !llvm.loop !99

468:                                              ; preds = %463, %299
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #0
  %469 = load i32, ptr %9, align 4
  switch i32 %469, label %3418 [
    i32 4, label %470
  ]

470:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %471 = load ptr, ptr %6, align 8, !tbaa !5
  %472 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %471)
  store ptr %472, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #0
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = load ptr, ptr %29, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %474, i32 0, i32 0
  call void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %30, ptr noundef nonnull align 8 dereferenceable(816) %473, ptr noundef nonnull align 8 dereferenceable(32) %475, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #0
  store i8 1, ptr %31, align 1, !tbaa !79
  br label %476

476:                                              ; preds = %3375, %470
  %477 = load i8, ptr %31, align 1, !tbaa !79, !range !81, !noundef !82
  %478 = trunc i8 %477 to i1
  br i1 %478, label %480, label %479

479:                                              ; preds = %476
  store i32 51, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #0
  br label %3376

480:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %481, i32 0, i32 1
  store ptr %482, ptr %32, align 8, !tbaa !5
  br label %483

483:                                              ; preds = %3372, %480
  %484 = load i8, ptr %31, align 1, !tbaa !79, !range !81, !noundef !82
  %485 = trunc i8 %484 to i1
  br i1 %485, label %487, label %486

486:                                              ; preds = %483
  store i32 54, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %3374

487:                                              ; preds = %483
  %488 = load ptr, ptr %32, align 8, !tbaa !5
  %489 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %488)
          to label %490 unwind label %491

490:                                              ; preds = %487
  switch i32 %489, label %3371 [
    i32 0, label %495
    i32 1, label %496
    i32 3, label %534
    i32 2, label %566
    i32 5, label %602
    i32 6, label %1157
    i32 7, label %1261
    i32 8, label %1462
    i32 9, label %1517
    i32 10, label %1572
    i32 11, label %2163
    i32 15, label %2281
    i32 4, label %2438
    i32 12, label %2671
    i32 13, label %2765
    i32 14, label %2798
  ]

491:                                              ; preds = %487
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %23, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %24, align 4
  br label %3373

495:                                              ; preds = %490
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2038, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

496:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #0
  store i8 1, ptr %33, align 1, !tbaa !79
  br label %497

497:                                              ; preds = %532, %496
  %498 = load i8, ptr %33, align 1, !tbaa !79, !range !81, !noundef !82
  %499 = trunc i8 %498 to i1
  br i1 %499, label %501, label %500

500:                                              ; preds = %497
  store i32 58, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #0
  br label %533

501:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %502 = load ptr, ptr %32, align 8, !tbaa !5
  %503 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %502)
          to label %504 unwind label %510

504:                                              ; preds = %501
  store ptr %503, ptr %34, align 8, !tbaa !5
  br label %505

505:                                              ; preds = %520, %504
  %506 = load ptr, ptr %34, align 8, !tbaa !5
  %507 = load i8, ptr %33, align 1, !tbaa !79, !range !81, !noundef !82
  %508 = trunc i8 %507 to i1
  br i1 %508, label %514, label %509

509:                                              ; preds = %505
  store i32 61, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %531

510:                                              ; preds = %501
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %23, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %24, align 4
  br label %530

514:                                              ; preds = %505
  %515 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #0
  %516 = load ptr, ptr %5, align 8, !tbaa !5
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %35, ptr noundef nonnull align 8 dereferenceable(816) %516, ptr noundef nonnull align 8 dereferenceable(32) %517, ptr noundef null)
          to label %518 unwind label %521

518:                                              ; preds = %514
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %515, ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %519 unwind label %525

519:                                              ; preds = %518
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #0
  br label %520

520:                                              ; preds = %519
  store i8 0, ptr %33, align 1, !tbaa !79
  br label %505, !llvm.loop !100

521:                                              ; preds = %514
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %23, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %24, align 4
  br label %529

525:                                              ; preds = %518
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %23, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #0
  br label %529

529:                                              ; preds = %525, %521
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #0
  br label %530

530:                                              ; preds = %529, %510
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #0
  br label %3373

531:                                              ; preds = %509
  br label %532

532:                                              ; preds = %531
  store i8 0, ptr %33, align 1, !tbaa !79
  br label %497, !llvm.loop !101

533:                                              ; preds = %500
  br label %3371

534:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #0
  store i8 1, ptr %36, align 1, !tbaa !79
  br label %535

535:                                              ; preds = %564, %534
  %536 = load i8, ptr %36, align 1, !tbaa !79, !range !81, !noundef !82
  %537 = trunc i8 %536 to i1
  br i1 %537, label %539, label %538

538:                                              ; preds = %535
  store i32 64, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #0
  br label %565

539:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  %540 = load ptr, ptr %32, align 8, !tbaa !5
  %541 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %540)
          to label %542 unwind label %548

542:                                              ; preds = %539
  store ptr %541, ptr %37, align 8, !tbaa !5
  br label %543

543:                                              ; preds = %557, %542
  %544 = load ptr, ptr %37, align 8, !tbaa !5
  %545 = load i8, ptr %36, align 1, !tbaa !79, !range !81, !noundef !82
  %546 = trunc i8 %545 to i1
  br i1 %546, label %552, label %547

547:                                              ; preds = %543
  store i32 67, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %563

548:                                              ; preds = %552, %539
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %23, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %24, align 4
  br label %562

552:                                              ; preds = %543
  %553 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %554 unwind label %548

554:                                              ; preds = %552
  %555 = load ptr, ptr %37, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry11write_constENS0_8ValueRefERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(816) %553, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(40) %555)
          to label %556 unwind label %558

556:                                              ; preds = %554
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #0
  br label %557

557:                                              ; preds = %556
  store i8 0, ptr %36, align 1, !tbaa !79
  br label %543, !llvm.loop !102

558:                                              ; preds = %554
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %23, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #0
  br label %562

562:                                              ; preds = %558, %548
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #0
  br label %3373

563:                                              ; preds = %547
  br label %564

564:                                              ; preds = %563
  store i8 0, ptr %36, align 1, !tbaa !79
  br label %535, !llvm.loop !103

565:                                              ; preds = %538
  br label %3371

566:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #0
  store i8 1, ptr %39, align 1, !tbaa !79
  br label %567

567:                                              ; preds = %600, %566
  %568 = load i8, ptr %39, align 1, !tbaa !79, !range !81, !noundef !82
  %569 = trunc i8 %568 to i1
  br i1 %569, label %571, label %570

570:                                              ; preds = %567
  store i32 70, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #0
  br label %601

571:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %572)
          to label %574 unwind label %580

574:                                              ; preds = %571
  store ptr %573, ptr %40, align 8, !tbaa !5
  br label %575

575:                                              ; preds = %593, %574
  %576 = load ptr, ptr %40, align 8, !tbaa !5
  %577 = load i8, ptr %39, align 1, !tbaa !79, !range !81, !noundef !82
  %578 = trunc i8 %577 to i1
  br i1 %578, label %584, label %579

579:                                              ; preds = %575
  store i32 73, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  br label %599

580:                                              ; preds = %584, %571
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %23, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %24, align 4
  br label %598

584:                                              ; preds = %575
  %585 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %586 unwind label %580

586:                                              ; preds = %584
  %587 = load ptr, ptr %40, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %587, i32 0, i32 0
  %589 = load i32, ptr %588, align 8, !tbaa !104
  %590 = load ptr, ptr %40, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %590, i32 0, i32 1
  invoke void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816) %585, ptr noundef %41, i32 noundef %589, ptr noundef nonnull align 8 dereferenceable(32) %591)
          to label %592 unwind label %594

592:                                              ; preds = %586
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #0
  br label %593

593:                                              ; preds = %592
  store i8 0, ptr %39, align 1, !tbaa !79
  br label %575, !llvm.loop !113

594:                                              ; preds = %586
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %23, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #0
  br label %598

598:                                              ; preds = %594, %580
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #0
  br label %3373

599:                                              ; preds = %579
  br label %600

600:                                              ; preds = %599
  store i8 0, ptr %39, align 1, !tbaa !79
  br label %567, !llvm.loop !114

601:                                              ; preds = %570
  br label %3371

602:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #0
  store i8 1, ptr %42, align 1, !tbaa !79
  br label %603

603:                                              ; preds = %1155, %602
  %604 = load i8, ptr %42, align 1, !tbaa !79, !range !81, !noundef !82
  %605 = trunc i8 %604 to i1
  br i1 %605, label %607, label %606

606:                                              ; preds = %603
  store i32 76, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #0
  br label %1156

607:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  %608 = load ptr, ptr %32, align 8, !tbaa !5
  %609 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %608)
          to label %610 unwind label %616

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

611:                                              ; preds = %1149, %610
  %612 = load ptr, ptr %43, align 8, !tbaa !5
  %613 = load i8, ptr %42, align 1, !tbaa !79, !range !81, !noundef !82
  %614 = trunc i8 %613 to i1
  br i1 %614, label %620, label %615

615:                                              ; preds = %611
  store i32 79, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %1154

616:                                              ; preds = %607
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %23, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %24, align 4
  br label %1153

620:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %621 unwind label %635

621:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %622 = load ptr, ptr %7, align 8, !tbaa !5
  %623 = load ptr, ptr %43, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %623, i32 0, i32 0
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %622, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(32) %624, i32 noundef 0)
          to label %626 unwind label %639

626:                                              ; preds = %621
  store ptr %625, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #0
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = load ptr, ptr %43, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %628, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(816) %627, ptr noundef nonnull align 8 dereferenceable(32) %629, ptr noundef null)
          to label %630 unwind label %643

630:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #0
  store i8 1, ptr %47, align 1, !tbaa !79
  br label %631

631:                                              ; preds = %1147, %630
  %632 = load i8, ptr %47, align 1, !tbaa !79, !range !81, !noundef !82
  %633 = trunc i8 %632 to i1
  br i1 %633, label %647, label %634

634:                                              ; preds = %631
  store i32 82, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  br label %1148

635:                                              ; preds = %620
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %23, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %24, align 4
  br label %1152

639:                                              ; preds = %621
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %23, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %24, align 4
  br label %1151

643:                                              ; preds = %626
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %23, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %24, align 4
  br label %1150

647:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %648 = load ptr, ptr %43, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %648, i32 0, i32 1
  %650 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %649)
          to label %651 unwind label %656

651:                                              ; preds = %647
  store ptr %650, ptr %48, align 8, !tbaa !5
  br label %652

652:                                              ; preds = %1144, %651
  %653 = load i8, ptr %47, align 1, !tbaa !79, !range !81, !noundef !82
  %654 = trunc i8 %653 to i1
  br i1 %654, label %660, label %655

655:                                              ; preds = %652
  store i32 85, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %1146

656:                                              ; preds = %674, %660, %647
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %23, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %24, align 4
  br label %1145

660:                                              ; preds = %652
  %661 = load ptr, ptr %48, align 8, !tbaa !5
  %662 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %661)
          to label %663 unwind label %656

663:                                              ; preds = %660
  switch i32 %662, label %665 [
    i32 0, label %664
    i32 3, label %687
    i32 12, label %1087
    i32 14, label %1087
  ]

664:                                              ; preds = %663
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2054, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

665:                                              ; preds = %663
  br label %666

666:                                              ; preds = %665
  %667 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #0
  %668 = getelementptr inbounds %class.anon.185, ptr %50, i32 0, i32 0
  %669 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %669, ptr %668, align 8, !tbaa !5
  %670 = getelementptr inbounds %class.anon.185, ptr %50, i32 0, i32 1
  %671 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %671, ptr %670, align 8, !tbaa !5
  %672 = getelementptr inbounds %class.anon.185, ptr %50, i32 0, i32 2
  store ptr %46, ptr %672, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(24) %50)
          to label %673 unwind label %676

673:                                              ; preds = %666
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %667, ptr noundef %49)
          to label %674 unwind label %680

674:                                              ; preds = %673
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #0
  %675 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %675, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %675, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %656

676:                                              ; preds = %666
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %23, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %24, align 4
  br label %684

680:                                              ; preds = %673
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %23, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #0
  br label %684

684:                                              ; preds = %680, %676
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #0
  br label %1145

685:                                              ; No predecessors!
  br label %686

686:                                              ; preds = %685
  br label %1143

687:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #0
  store i8 1, ptr %51, align 1, !tbaa !79
  br label %688

688:                                              ; preds = %1085, %687
  %689 = load i8, ptr %51, align 1, !tbaa !79, !range !81, !noundef !82
  %690 = trunc i8 %689 to i1
  br i1 %690, label %692, label %691

691:                                              ; preds = %688
  store i32 91, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #0
  br label %1086

692:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  %693 = load ptr, ptr %48, align 8, !tbaa !5
  %694 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %693)
          to label %695 unwind label %701

695:                                              ; preds = %692
  store ptr %694, ptr %52, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %1080, %695
  %697 = load ptr, ptr %52, align 8, !tbaa !5
  %698 = load i8, ptr %51, align 1, !tbaa !79, !range !81, !noundef !82
  %699 = trunc i8 %698 to i1
  br i1 %699, label %705, label %700

700:                                              ; preds = %696
  store i32 94, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %1084

701:                                              ; preds = %692
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %23, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %24, align 4
  br label %1083

705:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #0
  %706 = load ptr, ptr %52, align 8, !tbaa !5
  %707 = load i32, ptr %706, align 4, !tbaa !115
  %708 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo13for_primitiveEN3HIR8CoreTypeE(i32 noundef %707)
          to label %709 unwind label %715

709:                                              ; preds = %705
  store i64 %708, ptr %53, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  %710 = load ptr, ptr %45, align 8, !tbaa !5
  %711 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %710)
          to label %712 unwind label %719

712:                                              ; preds = %709
  store i64 %711, ptr %54, align 4
  %713 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 0
  %714 = load i32, ptr %713, align 4, !tbaa !117
  switch i32 %714, label %1065 [
    i32 2, label %723
    i32 3, label %723
    i32 1, label %973
  ]

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

719:                                              ; preds = %1071, %1056, %1049, %1041, %849, %847, %844, %828, %826, %823, %820, %817, %812, %804, %801, %793, %779, %771, %759, %756, %709
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %23, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %24, align 4
  br label %1081

723:                                              ; preds = %712, %712
  %724 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 0
  %725 = load i32, ptr %724, align 4, !tbaa !117
  switch i32 %725, label %972 [
    i32 2, label %726
    i32 3, label %755
    i32 1, label %789
    i32 0, label %816
  ]

726:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #0
  %727 = load ptr, ptr %7, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %729 = load i32, ptr %728, align 4, !tbaa !119
  %730 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_sintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %727, i32 noundef %729)
          to label %731 unwind label %751

731:                                              ; preds = %726
  %732 = getelementptr inbounds %class.S128, ptr %55, i32 0, i32 0
  %733 = getelementptr inbounds { i64, i64 }, ptr %732, i32 0, i32 0
  %734 = extractvalue { i64, i64 } %730, 0
  store i64 %734, ptr %733, align 8
  %735 = getelementptr inbounds { i64, i64 }, ptr %732, i32 0, i32 1
  %736 = extractvalue { i64, i64 } %730, 1
  store i64 %736, ptr %735, align 8
  %737 = load ptr, ptr %7, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %739 = load i32, ptr %738, align 4, !tbaa !119
  %740 = invoke { i64, i64 } @_ZNK4S1289get_innerEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
          to label %741 unwind label %751

741:                                              ; preds = %731
  %742 = getelementptr inbounds { i64, i64 }, ptr %56, i32 0, i32 0
  %743 = extractvalue { i64, i64 } %740, 0
  store i64 %743, ptr %742, align 8
  %744 = getelementptr inbounds { i64, i64 }, ptr %56, i32 0, i32 1
  %745 = extractvalue { i64, i64 } %740, 1
  store i64 %745, ptr %744, align 8
  %746 = getelementptr inbounds { i64, i64 }, ptr %56, i32 0, i32 0
  %747 = load i64, ptr %746, align 8
  %748 = getelementptr inbounds { i64, i64 }, ptr %56, i32 0, i32 1
  %749 = load i64, ptr %748, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %737, i32 noundef %739, i64 %747, i64 %749)
          to label %750 unwind label %751

750:                                              ; preds = %741
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #0
  br label %972

751:                                              ; preds = %741, %731, %726
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %23, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #0
  br label %1081

755:                                              ; preds = %723
  br label %756

756:                                              ; preds = %755
  %757 = load ptr, ptr %45, align 8, !tbaa !5
  %758 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %757)
          to label %759 unwind label %719

759:                                              ; preds = %756
  %760 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %758)
          to label %761 unwind label %719

761:                                              ; preds = %759
  br i1 %760, label %762, label %769

762:                                              ; preds = %761
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 1 dereferenceable(1) %58) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %763, ptr noundef %57)
          to label %764 unwind label %765

764:                                              ; preds = %762
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #0
  br label %769

765:                                              ; preds = %762
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %23, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #0
  br label %1081

769:                                              ; preds = %764, %761
  br label %770

770:                                              ; preds = %769
  br label %771

771:                                              ; preds = %770
  %772 = load ptr, ptr %7, align 8, !tbaa !5
  %773 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %774 = load i32, ptr %773, align 4, !tbaa !119
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  %776 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %777 = load i32, ptr %776, align 4, !tbaa !119
  %778 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %775, i32 noundef %777)
          to label %779 unwind label %719

779:                                              ; preds = %771
  %780 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 0
  %781 = extractvalue { i64, i64 } %778, 0
  store i64 %781, ptr %780, align 8
  %782 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 1
  %783 = extractvalue { i64, i64 } %778, 1
  store i64 %783, ptr %782, align 8
  %784 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 0
  %785 = load i64, ptr %784, align 8
  %786 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 1
  %787 = load i64, ptr %786, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %772, i32 noundef %774, i64 %785, i64 %787)
          to label %788 unwind label %719

788:                                              ; preds = %779
  br label %972

789:                                              ; preds = %723
  %790 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 0
  %791 = load i32, ptr %790, align 4, !tbaa !117
  %792 = icmp eq i32 %791, 2
  br i1 %792, label %793, label %804

793:                                              ; preds = %789
  %794 = load ptr, ptr %7, align 8, !tbaa !5
  %795 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %796 = load i32, ptr %795, align 4, !tbaa !119
  %797 = load ptr, ptr %7, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %799 = load i32, ptr %798, align 4, !tbaa !119
  %800 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %797, i32 noundef %799)
          to label %801 unwind label %719

801:                                              ; preds = %793
  %802 = fptosi double %800 to i64
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %794, i32 noundef %796, i64 noundef %802)
          to label %803 unwind label %719

803:                                              ; preds = %801
  br label %815

804:                                              ; preds = %789
  %805 = load ptr, ptr %7, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %807 = load i32, ptr %806, align 4, !tbaa !119
  %808 = load ptr, ptr %7, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %810 = load i32, ptr %809, align 4, !tbaa !119
  %811 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %808, i32 noundef %810)
          to label %812 unwind label %719

812:                                              ; preds = %804
  %813 = fptoui double %811 to i64
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %805, i32 noundef %807, i64 noundef %813)
          to label %814 unwind label %719

814:                                              ; preds = %812
  br label %815

815:                                              ; preds = %814, %803
  br label %972

816:                                              ; preds = %723
  br label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr %45, align 8, !tbaa !5
  %819 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %818)
          to label %820 unwind label %719

820:                                              ; preds = %817
  %821 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %819)
          to label %822 unwind label %719

822:                                              ; preds = %820
  br i1 %821, label %823, label %832

823:                                              ; preds = %822
  %824 = load ptr, ptr %45, align 8, !tbaa !5
  %825 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %826 unwind label %719

826:                                              ; preds = %823
  %827 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %825)
          to label %828 unwind label %719

828:                                              ; preds = %826
  %829 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %827, i32 0, i32 1
  %830 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %829)
          to label %831 unwind label %719

831:                                              ; preds = %828
  br i1 %830, label %841, label %832

832:                                              ; preds = %831, %822
  %833 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #0
  %834 = getelementptr inbounds %class.anon.187, ptr %61, i32 0, i32 0
  %835 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %835, ptr %834, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %833, ptr noundef %60)
          to label %836 unwind label %837

836:                                              ; preds = %832
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #0
  br label %841

837:                                              ; preds = %832
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %23, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #0
  br label %1081

841:                                              ; preds = %836, %831
  br label %842

842:                                              ; preds = %841
  br label %843

843:                                              ; preds = %842
  br label %844

844:                                              ; preds = %843
  %845 = load ptr, ptr %45, align 8, !tbaa !5
  %846 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %845)
          to label %847 unwind label %719

847:                                              ; preds = %844
  %848 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %846)
          to label %849 unwind label %719

849:                                              ; preds = %847
  %850 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %848, i32 0, i32 1
  %851 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %850)
          to label %852 unwind label %719

852:                                              ; preds = %849
  %853 = load ptr, ptr %851, align 8, !tbaa !5
  %854 = icmp ne ptr %853, null
  br i1 %854, label %864, label %855

855:                                              ; preds = %852
  %856 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #0
  %857 = getelementptr inbounds %class.anon.188, ptr %63, i32 0, i32 0
  %858 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %858, ptr %857, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %856, ptr noundef %62)
          to label %859 unwind label %860

859:                                              ; preds = %855
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %864

860:                                              ; preds = %855
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %23, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %1081

864:                                              ; preds = %859, %852
  br label %865

865:                                              ; preds = %864
  br label %866

866:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #0
  %867 = load ptr, ptr %45, align 8, !tbaa !5
  %868 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %867)
          to label %869 unwind label %885

869:                                              ; preds = %866
  %870 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %868)
          to label %871 unwind label %885

871:                                              ; preds = %869
  %872 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %870, i32 0, i32 1
  %873 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %872)
          to label %874 unwind label %885

874:                                              ; preds = %871
  %875 = load ptr, ptr %873, align 8, !tbaa !5
  store ptr %875, ptr %64, align 8, !tbaa !5
  br label %876

876:                                              ; preds = %874
  %877 = load ptr, ptr %64, align 8, !tbaa !5
  %878 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %877)
          to label %879 unwind label %885

879:                                              ; preds = %876
  br i1 %878, label %893, label %880

880:                                              ; preds = %879
  %881 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #0
  %882 = getelementptr inbounds %class.anon.205, ptr %66, i32 0, i32 0
  %883 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %883, ptr %882, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %881, ptr noundef %65)
          to label %884 unwind label %889

884:                                              ; preds = %880
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  br label %893

885:                                              ; preds = %876, %871, %869, %866
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %23, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %24, align 4
  br label %971

889:                                              ; preds = %880
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %23, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  br label %971

893:                                              ; preds = %884, %879
  br label %894

894:                                              ; preds = %893
  br label %895

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %896 = load ptr, ptr %7, align 8, !tbaa !5
  %897 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %896, i32 0, i32 1
  %898 = load ptr, ptr %897, align 8, !tbaa !120
  %899 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %900 = load ptr, ptr %45, align 8, !tbaa !5
  %901 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %898, ptr noundef nonnull align 8 dereferenceable(424) %899, ptr noundef nonnull align 8 dereferenceable(8) %900)
          to label %902 unwind label %907

902:                                              ; preds = %895
  store ptr %901, ptr %67, align 8, !tbaa !5
  %903 = load ptr, ptr %67, align 8, !tbaa !5
  %904 = icmp ne ptr %903, null
  br i1 %904, label %911, label %905

905:                                              ; preds = %902
  %906 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %906, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %3428 unwind label %907

907:                                              ; preds = %905, %895
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %23, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %24, align 4
  br label %970

911:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  %912 = load ptr, ptr %67, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.TypeRepr, ptr %912, i32 0, i32 2
  %914 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %913)
          to label %915 unwind label %951

915:                                              ; preds = %911
  store ptr %914, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #0
  %916 = load ptr, ptr %67, align 8, !tbaa !5
  %917 = load ptr, ptr %7, align 8, !tbaa !5
  %918 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %917, i32 0, i32 1
  %919 = load ptr, ptr %918, align 8, !tbaa !120
  %920 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %921 = load ptr, ptr %68, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %921, i32 0, i32 0
  %923 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %916, ptr noundef nonnull align 8 dereferenceable(8) %919, ptr noundef nonnull align 8 dereferenceable(424) %920, ptr noundef nonnull align 8 dereferenceable(40) %922)
          to label %924 unwind label %955

924:                                              ; preds = %915
  %925 = load ptr, ptr %68, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %925, i32 0, i32 0
  %927 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %926, i32 0, i32 1
  %928 = load i64, ptr %927, align 8, !tbaa !121
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %70, ptr noundef nonnull align 8 dereferenceable(16) %46, i64 noundef %923, i64 noundef %928)
          to label %929 unwind label %955

929:                                              ; preds = %924
  %930 = load ptr, ptr %7, align 8, !tbaa !5
  %931 = load ptr, ptr %68, align 8, !tbaa !5
  %932 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %931, i32 0, i32 0
  %933 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %932, i32 0, i32 1
  %934 = load i64, ptr %933, align 8, !tbaa !121
  %935 = mul i64 %934, 8
  %936 = trunc i64 %935 to i32
  %937 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(120) %930, i32 noundef %936)
          to label %938 unwind label %959

938:                                              ; preds = %929
  %939 = getelementptr inbounds { i64, i64 }, ptr %69, i32 0, i32 0
  %940 = extractvalue { i64, i64 } %937, 0
  store i64 %940, ptr %939, align 8
  %941 = getelementptr inbounds { i64, i64 }, ptr %69, i32 0, i32 1
  %942 = extractvalue { i64, i64 } %937, 1
  store i64 %942, ptr %941, align 8
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #0
  %943 = load ptr, ptr %7, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %945 = load i32, ptr %944, align 4, !tbaa !119
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %71, ptr align 8 %69, i64 16, i1 false), !tbaa.struct !128
  %946 = getelementptr inbounds { i64, i64 }, ptr %71, i32 0, i32 0
  %947 = load i64, ptr %946, align 8
  %948 = getelementptr inbounds { i64, i64 }, ptr %71, i32 0, i32 1
  %949 = load i64, ptr %948, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %943, i32 noundef %945, i64 %947, i64 %949)
          to label %950 unwind label %964

950:                                              ; preds = %938
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  br label %972

951:                                              ; preds = %911
  %952 = landingpad { ptr, i32 }
          cleanup
  %953 = extractvalue { ptr, i32 } %952, 0
  store ptr %953, ptr %23, align 8
  %954 = extractvalue { ptr, i32 } %952, 1
  store i32 %954, ptr %24, align 4
  br label %969

955:                                              ; preds = %924, %915
  %956 = landingpad { ptr, i32 }
          cleanup
  %957 = extractvalue { ptr, i32 } %956, 0
  store ptr %957, ptr %23, align 8
  %958 = extractvalue { ptr, i32 } %956, 1
  store i32 %958, ptr %24, align 4
  br label %963

959:                                              ; preds = %929
  %960 = landingpad { ptr, i32 }
          cleanup
  %961 = extractvalue { ptr, i32 } %960, 0
  store ptr %961, ptr %23, align 8
  %962 = extractvalue { ptr, i32 } %960, 1
  store i32 %962, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #0
  br label %963

963:                                              ; preds = %959, %955
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #0
  br label %968

964:                                              ; preds = %938
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %23, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %24, align 4
  br label %968

968:                                              ; preds = %964, %963
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #0
  br label %969

969:                                              ; preds = %968, %951
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %970

970:                                              ; preds = %969, %907
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %971

971:                                              ; preds = %970, %889, %885
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  br label %1081

972:                                              ; preds = %950, %815, %788, %750, %723
  br label %1079

973:                                              ; preds = %712
  %974 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 0
  %975 = load i32, ptr %974, align 4, !tbaa !117
  switch i32 %975, label %1064 [
    i32 2, label %976
    i32 3, label %1011
    i32 1, label %1041
    i32 0, label %1051
  ]

976:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #0
  %977 = load ptr, ptr %7, align 8, !tbaa !5
  %978 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %979 = load i32, ptr %978, align 4, !tbaa !119
  %980 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %977, i32 noundef %979)
          to label %981 unwind label %1007

981:                                              ; preds = %976
  %982 = getelementptr inbounds { i64, i64 }, ptr %73, i32 0, i32 0
  %983 = extractvalue { i64, i64 } %980, 0
  store i64 %983, ptr %982, align 8
  %984 = getelementptr inbounds { i64, i64 }, ptr %73, i32 0, i32 1
  %985 = extractvalue { i64, i64 } %980, 1
  store i64 %985, ptr %984, align 8
  %986 = getelementptr inbounds { i64, i64 }, ptr %73, i32 0, i32 0
  %987 = load i64, ptr %986, align 8
  %988 = getelementptr inbounds { i64, i64 }, ptr %73, i32 0, i32 1
  %989 = load i64, ptr %988, align 8
  invoke void @_ZN4S128C2E4U128(ptr noundef nonnull align 8 dereferenceable(16) %72, i64 %987, i64 %989)
          to label %990 unwind label %1007

990:                                              ; preds = %981
  %991 = load ptr, ptr %7, align 8, !tbaa !5
  %992 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %993 = load i32, ptr %992, align 4, !tbaa !119
  %994 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %995 = load i32, ptr %994, align 4, !tbaa !119
  %996 = icmp eq i32 %995, 32
  br i1 %996, label %997, label %1001

997:                                              ; preds = %990
  %998 = invoke noundef float @_ZNK4S1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %999 unwind label %1007

999:                                              ; preds = %997
  %1000 = fpext float %998 to double
  br label %1004

1001:                                             ; preds = %990
  %1002 = invoke noundef double @_ZNK4S1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %1003 unwind label %1007

1003:                                             ; preds = %1001
  br label %1004

1004:                                             ; preds = %1003, %999
  %1005 = phi double [ %1000, %999 ], [ %1002, %1003 ]
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %991, i32 noundef %993, double noundef %1005)
          to label %1006 unwind label %1007

1006:                                             ; preds = %1004
  store i32 107, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #0
  br label %1064

1007:                                             ; preds = %1004, %1001, %997, %981, %976
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %23, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #0
  br label %1081

1011:                                             ; preds = %973
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #0
  %1012 = load ptr, ptr %7, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %1014 = load i32, ptr %1013, align 4, !tbaa !119
  %1015 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %1012, i32 noundef %1014)
          to label %1016 unwind label %1037

1016:                                             ; preds = %1011
  %1017 = getelementptr inbounds { i64, i64 }, ptr %74, i32 0, i32 0
  %1018 = extractvalue { i64, i64 } %1015, 0
  store i64 %1018, ptr %1017, align 8
  %1019 = getelementptr inbounds { i64, i64 }, ptr %74, i32 0, i32 1
  %1020 = extractvalue { i64, i64 } %1015, 1
  store i64 %1020, ptr %1019, align 8
  %1021 = load ptr, ptr %7, align 8, !tbaa !5
  %1022 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %1023 = load i32, ptr %1022, align 4, !tbaa !119
  %1024 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %1025 = load i32, ptr %1024, align 4, !tbaa !119
  %1026 = icmp eq i32 %1025, 32
  br i1 %1026, label %1027, label %1031

1027:                                             ; preds = %1016
  %1028 = invoke noundef float @_ZNK4U1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
          to label %1029 unwind label %1037

1029:                                             ; preds = %1027
  %1030 = fpext float %1028 to double
  br label %1034

1031:                                             ; preds = %1016
  %1032 = invoke noundef double @_ZNK4U1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %74)
          to label %1033 unwind label %1037

1033:                                             ; preds = %1031
  br label %1034

1034:                                             ; preds = %1033, %1029
  %1035 = phi double [ %1030, %1029 ], [ %1032, %1033 ]
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1021, i32 noundef %1023, double noundef %1035)
          to label %1036 unwind label %1037

1036:                                             ; preds = %1034
  store i32 107, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #0
  br label %1064

1037:                                             ; preds = %1034, %1031, %1027, %1011
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %23, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #0
  br label %1081

1041:                                             ; preds = %973
  %1042 = load ptr, ptr %7, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %53, i32 0, i32 1
  %1044 = load i32, ptr %1043, align 4, !tbaa !119
  %1045 = load ptr, ptr %7, align 8, !tbaa !5
  %1046 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %54, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 4, !tbaa !119
  %1048 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %1045, i32 noundef %1047)
          to label %1049 unwind label %719

1049:                                             ; preds = %1041
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1042, i32 noundef %1044, double noundef %1048)
          to label %1050 unwind label %719

1050:                                             ; preds = %1049
  br label %1064

1051:                                             ; preds = %973
  br label %1052

1052:                                             ; preds = %1051
  %1053 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #0
  %1054 = getelementptr inbounds %class.anon.211, ptr %76, i32 0, i32 0
  %1055 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1055, ptr %1054, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1053, ptr noundef %75)
          to label %1056 unwind label %1058

1056:                                             ; preds = %1052
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  %1057 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1057, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1057, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %719

1058:                                             ; preds = %1052
  %1059 = landingpad { ptr, i32 }
          cleanup
  %1060 = extractvalue { ptr, i32 } %1059, 0
  store ptr %1060, ptr %23, align 8
  %1061 = extractvalue { ptr, i32 } %1059, 1
  store i32 %1061, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  br label %1081

1062:                                             ; No predecessors!
  br label %1063

1063:                                             ; preds = %1062
  br label %1064

1064:                                             ; preds = %1063, %1050, %1036, %1006, %973
  br label %1079

1065:                                             ; preds = %712
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #0
  %1068 = getelementptr inbounds %class.anon.212, ptr %78, i32 0, i32 0
  %1069 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1069, ptr %1068, align 8, !tbaa !5
  %1070 = getelementptr inbounds %class.anon.212, ptr %78, i32 0, i32 1
  store ptr %46, ptr %1070, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(16) %78) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1067, ptr noundef %77)
          to label %1071 unwind label %1073

1071:                                             ; preds = %1066
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #0
  %1072 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1072, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1072, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %719

1073:                                             ; preds = %1066
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %23, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #0
  br label %1081

1077:                                             ; No predecessors!
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078, %1064, %972
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  br label %1080

1080:                                             ; preds = %1079
  store i8 0, ptr %51, align 1, !tbaa !79
  br label %696, !llvm.loop !130

1081:                                             ; preds = %1073, %1058, %1037, %1007, %971, %860, %837, %765, %751, %719
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %1082

1082:                                             ; preds = %1081, %715
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  br label %1083

1083:                                             ; preds = %1082, %701
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #0
  br label %1145

1084:                                             ; preds = %700
  br label %1085

1085:                                             ; preds = %1084
  store i8 0, ptr %51, align 1, !tbaa !79
  br label %688, !llvm.loop !131

1086:                                             ; preds = %691
  br label %1143

1087:                                             ; preds = %663, %663
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #0
  %1088 = load ptr, ptr %45, align 8, !tbaa !5
  %1089 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1088)
          to label %1090 unwind label %1103

1090:                                             ; preds = %1087
  %1091 = invoke noundef ptr @_ZNK3HIR8TypeData17opt_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1089)
          to label %1092 unwind label %1103

1092:                                             ; preds = %1090
  store ptr %1091, ptr %79, align 8, !tbaa !5
  %1093 = load ptr, ptr %79, align 8, !tbaa !5
  %1094 = icmp ne ptr %1093, null
  br i1 %1094, label %1095, label %1116

1095:                                             ; preds = %1092
  %1096 = load ptr, ptr %7, align 8, !tbaa !5
  %1097 = load ptr, ptr %5, align 8, !tbaa !5
  %1098 = load ptr, ptr %79, align 8, !tbaa !5
  %1099 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %1098, i32 0, i32 0
  invoke void @_ZNK3MIR4eval14CallStackEntry18get_staticref_monoERKN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %81, ptr noundef nonnull align 8 dereferenceable(816) %1097, ptr noundef nonnull align 8 dereferenceable(88) %1099, ptr noundef null)
          to label %1100 unwind label %1103

1100:                                             ; preds = %1095
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef %81)
          to label %1101 unwind label %1107

1101:                                             ; preds = %1100
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1096, i64 noundef 4096, ptr noundef %80)
          to label %1102 unwind label %1111

1102:                                             ; preds = %1101
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #0
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #0
  br label %1141

1103:                                             ; preds = %1095, %1090, %1087
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %23, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %24, align 4
  br label %1142

1107:                                             ; preds = %1100
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %23, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %24, align 4
  br label %1115

1111:                                             ; preds = %1101
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %23, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %24, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #0
  br label %1115

1115:                                             ; preds = %1111, %1107
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #0
  br label %1142

1116:                                             ; preds = %1092
  %1117 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #0
  %1118 = invoke noundef i64 @_ZNK3MIR4eval8ValueRef7get_lenEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %1119 unwind label %1127

1119:                                             ; preds = %1116
  store i64 %1118, ptr %83, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #0
  %1120 = invoke noundef i64 @_ZNK3MIR4eval8ValueRef7get_lenEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %1121 unwind label %1131

1121:                                             ; preds = %1119
  store i64 %1120, ptr %84, align 8, !tbaa !129
  %1122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %1123 unwind label %1131

1123:                                             ; preds = %1121
  %1124 = load i64, ptr %1122, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %46, i64 noundef 0, i64 noundef %1124)
          to label %1125 unwind label %1131

1125:                                             ; preds = %1123
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1117, ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %1126 unwind label %1135

1126:                                             ; preds = %1125
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #0
  br label %1141

1127:                                             ; preds = %1116
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %23, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %24, align 4
  br label %1140

1131:                                             ; preds = %1123, %1121, %1119
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %23, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %24, align 4
  br label %1139

1135:                                             ; preds = %1125
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %23, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #0
  br label %1139

1139:                                             ; preds = %1135, %1131
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  br label %1140

1140:                                             ; preds = %1139, %1127
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #0
  br label %1142

1141:                                             ; preds = %1126, %1102
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %1143

1142:                                             ; preds = %1140, %1115, %1103
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %1145

1143:                                             ; preds = %1141, %1086, %686
  br label %1144

1144:                                             ; preds = %1143
  store i8 0, ptr %47, align 1, !tbaa !79
  br label %652, !llvm.loop !132

1145:                                             ; preds = %1142, %1083, %684, %656
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #0
  br label %1150

1146:                                             ; preds = %655
  br label %1147

1147:                                             ; preds = %1146
  store i8 0, ptr %47, align 1, !tbaa !79
  br label %631, !llvm.loop !133

1148:                                             ; preds = %634
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %1149

1149:                                             ; preds = %1148
  store i8 0, ptr %42, align 1, !tbaa !79
  br label %611, !llvm.loop !134

1150:                                             ; preds = %1145, %643
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #0
  br label %1151

1151:                                             ; preds = %1150, %639
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  br label %1152

1152:                                             ; preds = %1151, %635
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %1153

1153:                                             ; preds = %1152, %616
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #0
  br label %3373

1154:                                             ; preds = %615
  br label %1155

1155:                                             ; preds = %1154
  store i8 0, ptr %42, align 1, !tbaa !79
  br label %603, !llvm.loop !135

1156:                                             ; preds = %606
  br label %3371

1157:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #0
  store i8 1, ptr %85, align 1, !tbaa !79
  br label %1158

1158:                                             ; preds = %1259, %1157
  %1159 = load i8, ptr %85, align 1, !tbaa !79, !range !81, !noundef !82
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1162, label %1161

1161:                                             ; preds = %1158
  store i32 112, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #0
  br label %1260

1162:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #0
  %1163 = load ptr, ptr %32, align 8, !tbaa !5
  %1164 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %1163)
          to label %1165 unwind label %1171

1165:                                             ; preds = %1162
  store ptr %1164, ptr %86, align 8, !tbaa !5
  br label %1166

1166:                                             ; preds = %1253, %1165
  %1167 = load ptr, ptr %86, align 8, !tbaa !5
  %1168 = load i8, ptr %85, align 1, !tbaa !79, !range !81, !noundef !82
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1175, label %1170

1170:                                             ; preds = %1166
  store i32 115, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  br label %1258

1171:                                             ; preds = %1162
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %23, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %24, align 4
  br label %1257

1175:                                             ; preds = %1166
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %1176 unwind label %1197

1176:                                             ; preds = %1175
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #0
  %1177 = load ptr, ptr %7, align 8, !tbaa !5
  %1178 = load ptr, ptr %86, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %1178, i32 0, i32 0
  %1180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %1177, ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(48) %1179)
          to label %1181 unwind label %1201

1181:                                             ; preds = %1176
  store ptr %1180, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #0
  %1182 = load ptr, ptr %5, align 8, !tbaa !5
  %1183 = load ptr, ptr %88, align 8, !tbaa !5
  %1184 = load ptr, ptr %86, align 8, !tbaa !5
  %1185 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %1184, i32 0, i32 0
  %1186 = load ptr, ptr %86, align 8, !tbaa !5
  %1187 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %1186, i32 0, i32 1
  %1188 = load i32, ptr %1187, align 8, !tbaa !136
  %1189 = load ptr, ptr %86, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %1189, i32 0, i32 2
  %1191 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %1182, ptr noundef nonnull align 8 dereferenceable(8) %1183, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(48) %1185, i32 noundef %1188, ptr noundef nonnull align 8 dereferenceable(48) %1190, i1 noundef zeroext false)
          to label %1192 unwind label %1205

1192:                                             ; preds = %1181
  %1193 = zext i1 %1191 to i8
  store i8 %1193, ptr %89, align 1, !tbaa !79
  %1194 = load ptr, ptr %86, align 8, !tbaa !5
  %1195 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %1194, i32 0, i32 1
  %1196 = load i32, ptr %1195, align 8, !tbaa !136
  switch i32 %1196, label %1251 [
    i32 6, label %1209
    i32 8, label %1209
    i32 13, label %1230
    i32 12, label %1230
  ]

1197:                                             ; preds = %1175
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %23, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %24, align 4
  br label %1256

1201:                                             ; preds = %1176
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %23, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %24, align 4
  br label %1255

1205:                                             ; preds = %1181
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %23, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %24, align 4
  br label %1254

1209:                                             ; preds = %1192, %1192
  %1210 = load i8, ptr %89, align 1, !tbaa !79, !range !81, !noundef !82
  %1211 = trunc i8 %1210 to i1
  br i1 %1211, label %1212, label %1229

1212:                                             ; preds = %1209
  br label %1213

1213:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #0
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %90, align 8, !tbaa !5
  %1214 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  %1215 = getelementptr inbounds %class.anon.213, ptr %92, i32 0, i32 0
  store ptr %90, ptr %1215, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1214, ptr noundef %91)
          to label %1216 unwind label %1218

1216:                                             ; preds = %1213
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  %1217 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1217, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1217, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1222

1218:                                             ; preds = %1213
  %1219 = landingpad { ptr, i32 }
          cleanup
  %1220 = extractvalue { ptr, i32 } %1219, 0
  store ptr %1220, ptr %23, align 8
  %1221 = extractvalue { ptr, i32 } %1219, 1
  store i32 %1221, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %1226

1222:                                             ; preds = %1216
  %1223 = landingpad { ptr, i32 }
          cleanup
  %1224 = extractvalue { ptr, i32 } %1223, 0
  store ptr %1224, ptr %23, align 8
  %1225 = extractvalue { ptr, i32 } %1223, 1
  store i32 %1225, ptr %24, align 4
  br label %1226

1226:                                             ; preds = %1222, %1218
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  br label %1254

1227:                                             ; No predecessors!
  br label %1228

1228:                                             ; preds = %1227
  br label %1229

1229:                                             ; preds = %1228, %1209
  br label %1252

1230:                                             ; preds = %1192, %1192
  %1231 = load i8, ptr %89, align 1, !tbaa !79, !range !81, !noundef !82
  %1232 = trunc i8 %1231 to i1
  br i1 %1232, label %1233, label %1250

1233:                                             ; preds = %1230
  br label %1234

1234:                                             ; preds = %1233
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %93, align 8, !tbaa !5
  %1235 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #0
  %1236 = getelementptr inbounds %class.anon.214, ptr %95, i32 0, i32 0
  store ptr %93, ptr %1236, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1235, ptr noundef %94)
          to label %1237 unwind label %1239

1237:                                             ; preds = %1234
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  %1238 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1238, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1238, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1243

1239:                                             ; preds = %1234
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %23, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  br label %1247

1243:                                             ; preds = %1237
  %1244 = landingpad { ptr, i32 }
          cleanup
  %1245 = extractvalue { ptr, i32 } %1244, 0
  store ptr %1245, ptr %23, align 8
  %1246 = extractvalue { ptr, i32 } %1244, 1
  store i32 %1246, ptr %24, align 4
  br label %1247

1247:                                             ; preds = %1243, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1254

1248:                                             ; No predecessors!
  br label %1249

1249:                                             ; preds = %1248
  br label %1250

1250:                                             ; preds = %1249, %1230
  br label %1252

1251:                                             ; preds = %1192
  br label %1252

1252:                                             ; preds = %1251, %1250, %1229
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1253

1253:                                             ; preds = %1252
  store i8 0, ptr %85, align 1, !tbaa !79
  br label %1166, !llvm.loop !141

1254:                                             ; preds = %1247, %1226, %1205
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #0
  br label %1255

1255:                                             ; preds = %1254, %1201
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  br label %1256

1256:                                             ; preds = %1255, %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1257

1257:                                             ; preds = %1256, %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #0
  br label %3373

1258:                                             ; preds = %1170
  br label %1259

1259:                                             ; preds = %1258
  store i8 0, ptr %85, align 1, !tbaa !79
  br label %1158, !llvm.loop !142

1260:                                             ; preds = %1161
  br label %3371

1261:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #0
  store i8 1, ptr %96, align 1, !tbaa !79
  br label %1262

1262:                                             ; preds = %1460, %1261
  %1263 = load i8, ptr %96, align 1, !tbaa !79, !range !81, !noundef !82
  %1264 = trunc i8 %1263 to i1
  br i1 %1264, label %1266, label %1265

1265:                                             ; preds = %1262
  store i32 123, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #0
  br label %1461

1266:                                             ; preds = %1262
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #0
  %1267 = load ptr, ptr %32, align 8, !tbaa !5
  %1268 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %1267)
          to label %1269 unwind label %1275

1269:                                             ; preds = %1266
  store ptr %1268, ptr %97, align 8, !tbaa !5
  br label %1270

1270:                                             ; preds = %1454, %1269
  %1271 = load ptr, ptr %97, align 8, !tbaa !5
  %1272 = load i8, ptr %96, align 1, !tbaa !79, !range !81, !noundef !82
  %1273 = trunc i8 %1272 to i1
  br i1 %1273, label %1279, label %1274

1274:                                             ; preds = %1270
  store i32 126, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  br label %1459

1275:                                             ; preds = %1266
  %1276 = landingpad { ptr, i32 }
          cleanup
  %1277 = extractvalue { ptr, i32 } %1276, 0
  store ptr %1277, ptr %23, align 8
  %1278 = extractvalue { ptr, i32 } %1276, 1
  store i32 %1278, ptr %24, align 4
  br label %1458

1279:                                             ; preds = %1270
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %1280 unwind label %1291

1280:                                             ; preds = %1279
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1281 = load ptr, ptr %7, align 8, !tbaa !5
  %1282 = load ptr, ptr %97, align 8, !tbaa !5
  %1283 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1282, i32 0, i32 0
  %1284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %1281, ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(32) %1283, i32 noundef 0)
          to label %1285 unwind label %1295

1285:                                             ; preds = %1280
  store ptr %1284, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #0
  %1286 = load ptr, ptr %99, align 8, !tbaa !5
  %1287 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1286)
          to label %1288 unwind label %1299

1288:                                             ; preds = %1285
  store i64 %1287, ptr %100, align 4
  %1289 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %100, i32 0, i32 0
  %1290 = load i32, ptr %1289, align 4, !tbaa !117
  switch i32 %1290, label %1453 [
    i32 3, label %1303
    i32 2, label %1303
    i32 1, label %1381
    i32 0, label %1434
  ]

1291:                                             ; preds = %1279
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %23, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %24, align 4
  br label %1457

1295:                                             ; preds = %1280
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %23, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %24, align 4
  br label %1456

1299:                                             ; preds = %1285
  %1300 = landingpad { ptr, i32 }
          cleanup
  %1301 = extractvalue { ptr, i32 } %1300, 0
  store ptr %1301, ptr %23, align 8
  %1302 = extractvalue { ptr, i32 } %1300, 1
  store i32 %1302, ptr %24, align 4
  br label %1455

1303:                                             ; preds = %1288, %1288
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #0
  %1304 = load ptr, ptr %5, align 8, !tbaa !5
  %1305 = load ptr, ptr %97, align 8, !tbaa !5
  %1306 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1305, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(816) %1304, ptr noundef nonnull align 8 dereferenceable(32) %1306, ptr noundef null)
          to label %1307 unwind label %1320

1307:                                             ; preds = %1303
  %1308 = load ptr, ptr %7, align 8, !tbaa !5
  %1309 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %100, i32 0, i32 1
  %1310 = load i32, ptr %1309, align 4, !tbaa !119
  %1311 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(120) %1308, i32 noundef %1310)
          to label %1312 unwind label %1324

1312:                                             ; preds = %1307
  %1313 = getelementptr inbounds { i64, i64 }, ptr %101, i32 0, i32 0
  %1314 = extractvalue { i64, i64 } %1311, 0
  store i64 %1314, ptr %1313, align 8
  %1315 = getelementptr inbounds { i64, i64 }, ptr %101, i32 0, i32 1
  %1316 = extractvalue { i64, i64 } %1311, 1
  store i64 %1316, ptr %1315, align 8
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #0
  %1317 = load ptr, ptr %97, align 8, !tbaa !5
  %1318 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1317, i32 0, i32 1
  %1319 = load i32, ptr %1318, align 8, !tbaa !143
  switch i32 %1319, label %1367 [
    i32 0, label %1329
    i32 1, label %1350
  ]

1320:                                             ; preds = %1303
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %23, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %24, align 4
  br label %1328

1324:                                             ; preds = %1307
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %23, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #0
  br label %1328

1328:                                             ; preds = %1324, %1320
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #0
  br label %1380

1329:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #0
  %1330 = invoke { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %1331 unwind label %1346

1331:                                             ; preds = %1329
  %1332 = getelementptr inbounds { i64, i64 }, ptr %104, i32 0, i32 0
  %1333 = extractvalue { i64, i64 } %1330, 0
  store i64 %1333, ptr %1332, align 8
  %1334 = getelementptr inbounds { i64, i64 }, ptr %104, i32 0, i32 1
  %1335 = extractvalue { i64, i64 } %1330, 1
  store i64 %1335, ptr %1334, align 8
  %1336 = getelementptr inbounds { i64, i64 }, ptr %104, i32 0, i32 0
  %1337 = load i64, ptr %1336, align 8
  %1338 = getelementptr inbounds { i64, i64 }, ptr %104, i32 0, i32 1
  %1339 = load i64, ptr %1338, align 8
  %1340 = invoke { i64, i64 } @_ZNK12_GLOBAL__N_18TypeInfo4maskE4U128(ptr noundef nonnull align 4 dereferenceable(8) %100, i64 %1337, i64 %1339)
          to label %1341 unwind label %1346

1341:                                             ; preds = %1331
  %1342 = getelementptr inbounds { i64, i64 }, ptr %103, i32 0, i32 0
  %1343 = extractvalue { i64, i64 } %1340, 0
  store i64 %1343, ptr %1342, align 8
  %1344 = getelementptr inbounds { i64, i64 }, ptr %103, i32 0, i32 1
  %1345 = extractvalue { i64, i64 } %1340, 1
  store i64 %1345, ptr %1344, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %101, ptr align 8 %103, i64 16, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #0
  br label %1367

1346:                                             ; preds = %1331, %1329
  %1347 = landingpad { ptr, i32 }
          cleanup
  %1348 = extractvalue { ptr, i32 } %1347, 0
  store ptr %1348, ptr %23, align 8
  %1349 = extractvalue { ptr, i32 } %1347, 1
  store i32 %1349, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #0
  br label %1380

1350:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #0
  %1351 = invoke { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %1352 unwind label %1363

1352:                                             ; preds = %1350
  %1353 = getelementptr inbounds { i64, i64 }, ptr %106, i32 0, i32 0
  %1354 = extractvalue { i64, i64 } %1351, 0
  store i64 %1354, ptr %1353, align 8
  %1355 = getelementptr inbounds { i64, i64 }, ptr %106, i32 0, i32 1
  %1356 = extractvalue { i64, i64 } %1351, 1
  store i64 %1356, ptr %1355, align 8
  %1357 = invoke { i64, i64 } @_ZNK4U128plEj(ptr noundef nonnull align 8 dereferenceable(16) %106, i32 noundef 1)
          to label %1358 unwind label %1363

1358:                                             ; preds = %1352
  %1359 = getelementptr inbounds { i64, i64 }, ptr %105, i32 0, i32 0
  %1360 = extractvalue { i64, i64 } %1357, 0
  store i64 %1360, ptr %1359, align 8
  %1361 = getelementptr inbounds { i64, i64 }, ptr %105, i32 0, i32 1
  %1362 = extractvalue { i64, i64 } %1357, 1
  store i64 %1362, ptr %1361, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %101, ptr align 8 %105, i64 16, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #0
  br label %1367

1363:                                             ; preds = %1352, %1350
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %23, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #0
  br label %1380

1367:                                             ; preds = %1358, %1341, %1312
  %1368 = load ptr, ptr %7, align 8, !tbaa !5
  %1369 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %100, i32 0, i32 1
  %1370 = load i32, ptr %1369, align 4, !tbaa !119
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %107, ptr align 8 %101, i64 16, i1 false), !tbaa.struct !128
  %1371 = getelementptr inbounds { i64, i64 }, ptr %107, i32 0, i32 0
  %1372 = load i64, ptr %1371, align 8
  %1373 = getelementptr inbounds { i64, i64 }, ptr %107, i32 0, i32 1
  %1374 = load i64, ptr %1373, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1368, i32 noundef %1370, i64 %1372, i64 %1374)
          to label %1375 unwind label %1376

1375:                                             ; preds = %1367
  store i32 129, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #0
  br label %1453

1376:                                             ; preds = %1367
  %1377 = landingpad { ptr, i32 }
          cleanup
  %1378 = extractvalue { ptr, i32 } %1377, 0
  store ptr %1378, ptr %23, align 8
  %1379 = extractvalue { ptr, i32 } %1377, 1
  store i32 %1379, ptr %24, align 4
  br label %1380

1380:                                             ; preds = %1376, %1363, %1346, %1328
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #0
  br label %1455

1381:                                             ; preds = %1288
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #0
  %1382 = load ptr, ptr %5, align 8, !tbaa !5
  %1383 = load ptr, ptr %97, align 8, !tbaa !5
  %1384 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1383, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %109, ptr noundef nonnull align 8 dereferenceable(816) %1382, ptr noundef nonnull align 8 dereferenceable(32) %1384, ptr noundef null)
          to label %1385 unwind label %1394

1385:                                             ; preds = %1381
  %1386 = load ptr, ptr %7, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %100, i32 0, i32 1
  %1388 = load i32, ptr %1387, align 4, !tbaa !119
  %1389 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 8 dereferenceable(120) %1386, i32 noundef %1388)
          to label %1390 unwind label %1398

1390:                                             ; preds = %1385
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #0
  store double %1389, ptr %108, align 8, !tbaa !146
  %1391 = load ptr, ptr %97, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1391, i32 0, i32 1
  %1393 = load i32, ptr %1392, align 8, !tbaa !143
  switch i32 %1393, label %1423 [
    i32 0, label %1403
    i32 1, label %1420
  ]

1394:                                             ; preds = %1381
  %1395 = landingpad { ptr, i32 }
          cleanup
  %1396 = extractvalue { ptr, i32 } %1395, 0
  store ptr %1396, ptr %23, align 8
  %1397 = extractvalue { ptr, i32 } %1395, 1
  store i32 %1397, ptr %24, align 4
  br label %1402

1398:                                             ; preds = %1385
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %23, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #0
  br label %1402

1402:                                             ; preds = %1398, %1394
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #0
  br label %1433

1403:                                             ; preds = %1390
  br label %1404

1404:                                             ; preds = %1403
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #0
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %110, align 8, !tbaa !5
  %1405 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #0
  %1406 = getelementptr inbounds %class.anon.215, ptr %112, i32 0, i32 0
  store ptr %110, ptr %1406, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(8) %112) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1405, ptr noundef %111)
          to label %1407 unwind label %1409

1407:                                             ; preds = %1404
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  %1408 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1408, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1408, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1413

1409:                                             ; preds = %1404
  %1410 = landingpad { ptr, i32 }
          cleanup
  %1411 = extractvalue { ptr, i32 } %1410, 0
  store ptr %1411, ptr %23, align 8
  %1412 = extractvalue { ptr, i32 } %1410, 1
  store i32 %1412, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  br label %1417

1413:                                             ; preds = %1407
  %1414 = landingpad { ptr, i32 }
          cleanup
  %1415 = extractvalue { ptr, i32 } %1414, 0
  store ptr %1415, ptr %23, align 8
  %1416 = extractvalue { ptr, i32 } %1414, 1
  store i32 %1416, ptr %24, align 4
  br label %1417

1417:                                             ; preds = %1413, %1409
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #0
  br label %1433

1418:                                             ; No predecessors!
  br label %1419

1419:                                             ; preds = %1418
  br label %1420

1420:                                             ; preds = %1419, %1390
  %1421 = load double, ptr %108, align 8, !tbaa !146
  %1422 = fneg double %1421
  store double %1422, ptr %108, align 8, !tbaa !146
  br label %1423

1423:                                             ; preds = %1420, %1390
  %1424 = load ptr, ptr %7, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %100, i32 0, i32 1
  %1426 = load i32, ptr %1425, align 4, !tbaa !119
  %1427 = load double, ptr %108, align 8, !tbaa !146
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1424, i32 noundef %1426, double noundef %1427)
          to label %1428 unwind label %1429

1428:                                             ; preds = %1423
  store i32 129, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #0
  br label %1453

1429:                                             ; preds = %1423
  %1430 = landingpad { ptr, i32 }
          cleanup
  %1431 = extractvalue { ptr, i32 } %1430, 0
  store ptr %1431, ptr %23, align 8
  %1432 = extractvalue { ptr, i32 } %1430, 1
  store i32 %1432, ptr %24, align 4
  br label %1433

1433:                                             ; preds = %1429, %1417, %1402
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #0
  br label %1455

1434:                                             ; preds = %1288
  br label %1435

1435:                                             ; preds = %1434
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #0
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %113, align 8, !tbaa !5
  %1436 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #0
  %1437 = getelementptr inbounds %class.anon.216, ptr %115, i32 0, i32 0
  store ptr %113, ptr %1437, align 8, !tbaa !5
  %1438 = getelementptr inbounds %class.anon.216, ptr %115, i32 0, i32 1
  %1439 = load ptr, ptr %99, align 8, !tbaa !5
  store ptr %1439, ptr %1438, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(16) %115) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1436, ptr noundef %114)
          to label %1440 unwind label %1442

1440:                                             ; preds = %1435
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #0
  %1441 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1441, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1441, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1446

1442:                                             ; preds = %1435
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %23, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #0
  br label %1450

1446:                                             ; preds = %1440
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %23, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %24, align 4
  br label %1450

1450:                                             ; preds = %1446, %1442
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  br label %1455

1451:                                             ; No predecessors!
  br label %1452

1452:                                             ; preds = %1451
  br label %1453

1453:                                             ; preds = %1452, %1428, %1375, %1288
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %1454

1454:                                             ; preds = %1453
  store i8 0, ptr %96, align 1, !tbaa !79
  br label %1270, !llvm.loop !148

1455:                                             ; preds = %1450, %1433, %1380, %1299
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  br label %1456

1456:                                             ; preds = %1455, %1295
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #0
  br label %1457

1457:                                             ; preds = %1456, %1291
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %1458

1458:                                             ; preds = %1457, %1275
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #0
  br label %3373

1459:                                             ; preds = %1274
  br label %1460

1460:                                             ; preds = %1459
  store i8 0, ptr %96, align 1, !tbaa !79
  br label %1262, !llvm.loop !149

1461:                                             ; preds = %1265
  br label %3371

1462:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #0
  store i8 1, ptr %116, align 1, !tbaa !79
  br label %1463

1463:                                             ; preds = %1515, %1462
  %1464 = load i8, ptr %116, align 1, !tbaa !79, !range !81, !noundef !82
  %1465 = trunc i8 %1464 to i1
  br i1 %1465, label %1467, label %1466

1466:                                             ; preds = %1463
  store i32 136, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %1516

1467:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  %1468 = load ptr, ptr %32, align 8, !tbaa !5
  %1469 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %1468)
          to label %1470 unwind label %1476

1470:                                             ; preds = %1467
  store ptr %1469, ptr %117, align 8, !tbaa !5
  br label %1471

1471:                                             ; preds = %1493, %1470
  %1472 = load ptr, ptr %117, align 8, !tbaa !5
  %1473 = load i8, ptr %116, align 1, !tbaa !79, !range !81, !noundef !82
  %1474 = trunc i8 %1473 to i1
  br i1 %1474, label %1480, label %1475

1475:                                             ; preds = %1471
  store i32 139, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1514

1476:                                             ; preds = %1467
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %23, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %24, align 4
  br label %1513

1480:                                             ; preds = %1471
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #0
  %1481 = load ptr, ptr %5, align 8, !tbaa !5
  %1482 = load ptr, ptr %117, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1482, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %118, ptr noundef nonnull align 8 dereferenceable(816) %1481, ptr noundef nonnull align 8 dereferenceable(32) %1483, ptr noundef null)
          to label %1484 unwind label %1494

1484:                                             ; preds = %1480
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #0
  %1485 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1486 unwind label %1498

1486:                                             ; preds = %1484
  %1487 = udiv i32 %1485, 8
  %1488 = zext i32 %1487 to i64
  store i64 %1488, ptr %119, align 8, !tbaa !129
  %1489 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #0
  %1490 = load i64, ptr %119, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %120, ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %1490)
          to label %1491 unwind label %1502

1491:                                             ; preds = %1486
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1489, ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %1492 unwind label %1506

1492:                                             ; preds = %1491
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #0
  br label %1493

1493:                                             ; preds = %1492
  store i8 0, ptr %116, align 1, !tbaa !79
  br label %1471, !llvm.loop !150

1494:                                             ; preds = %1480
  %1495 = landingpad { ptr, i32 }
          cleanup
  %1496 = extractvalue { ptr, i32 } %1495, 0
  store ptr %1496, ptr %23, align 8
  %1497 = extractvalue { ptr, i32 } %1495, 1
  store i32 %1497, ptr %24, align 4
  br label %1512

1498:                                             ; preds = %1484
  %1499 = landingpad { ptr, i32 }
          cleanup
  %1500 = extractvalue { ptr, i32 } %1499, 0
  store ptr %1500, ptr %23, align 8
  %1501 = extractvalue { ptr, i32 } %1499, 1
  store i32 %1501, ptr %24, align 4
  br label %1511

1502:                                             ; preds = %1486
  %1503 = landingpad { ptr, i32 }
          cleanup
  %1504 = extractvalue { ptr, i32 } %1503, 0
  store ptr %1504, ptr %23, align 8
  %1505 = extractvalue { ptr, i32 } %1503, 1
  store i32 %1505, ptr %24, align 4
  br label %1510

1506:                                             ; preds = %1491
  %1507 = landingpad { ptr, i32 }
          cleanup
  %1508 = extractvalue { ptr, i32 } %1507, 0
  store ptr %1508, ptr %23, align 8
  %1509 = extractvalue { ptr, i32 } %1507, 1
  store i32 %1509, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #0
  br label %1510

1510:                                             ; preds = %1506, %1502
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #0
  br label %1511

1511:                                             ; preds = %1510, %1498
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #0
  br label %1512

1512:                                             ; preds = %1511, %1494
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #0
  br label %1513

1513:                                             ; preds = %1512, %1476
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %3373

1514:                                             ; preds = %1475
  br label %1515

1515:                                             ; preds = %1514
  store i8 0, ptr %116, align 1, !tbaa !79
  br label %1463, !llvm.loop !151

1516:                                             ; preds = %1466
  br label %3371

1517:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #0
  store i8 1, ptr %121, align 1, !tbaa !79
  br label %1518

1518:                                             ; preds = %1570, %1517
  %1519 = load i8, ptr %121, align 1, !tbaa !79, !range !81, !noundef !82
  %1520 = trunc i8 %1519 to i1
  br i1 %1520, label %1522, label %1521

1521:                                             ; preds = %1518
  store i32 142, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  br label %1571

1522:                                             ; preds = %1518
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #0
  %1523 = load ptr, ptr %32, align 8, !tbaa !5
  %1524 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %1523)
          to label %1525 unwind label %1531

1525:                                             ; preds = %1522
  store ptr %1524, ptr %122, align 8, !tbaa !5
  br label %1526

1526:                                             ; preds = %1548, %1525
  %1527 = load ptr, ptr %122, align 8, !tbaa !5
  %1528 = load i8, ptr %121, align 1, !tbaa !79, !range !81, !noundef !82
  %1529 = trunc i8 %1528 to i1
  br i1 %1529, label %1535, label %1530

1530:                                             ; preds = %1526
  store i32 145, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  br label %1569

1531:                                             ; preds = %1522
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %23, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %24, align 4
  br label %1568

1535:                                             ; preds = %1526
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #0
  %1536 = load ptr, ptr %5, align 8, !tbaa !5
  %1537 = load ptr, ptr %122, align 8, !tbaa !5
  %1538 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1537, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %123, ptr noundef nonnull align 8 dereferenceable(816) %1536, ptr noundef nonnull align 8 dereferenceable(32) %1538, ptr noundef null)
          to label %1539 unwind label %1549

1539:                                             ; preds = %1535
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #0
  %1540 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1541 unwind label %1553

1541:                                             ; preds = %1539
  %1542 = udiv i32 %1540, 8
  %1543 = zext i32 %1542 to i64
  store i64 %1543, ptr %124, align 8, !tbaa !129
  %1544 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #0
  %1545 = load i64, ptr %124, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %125, ptr noundef nonnull align 8 dereferenceable(16) %123, i64 noundef 0, i64 noundef %1545)
          to label %1546 unwind label %1557

1546:                                             ; preds = %1541
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(120) %1544, ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %1547 unwind label %1561

1547:                                             ; preds = %1546
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #0
  br label %1548

1548:                                             ; preds = %1547
  store i8 0, ptr %121, align 1, !tbaa !79
  br label %1526, !llvm.loop !152

1549:                                             ; preds = %1535
  %1550 = landingpad { ptr, i32 }
          cleanup
  %1551 = extractvalue { ptr, i32 } %1550, 0
  store ptr %1551, ptr %23, align 8
  %1552 = extractvalue { ptr, i32 } %1550, 1
  store i32 %1552, ptr %24, align 4
  br label %1567

1553:                                             ; preds = %1539
  %1554 = landingpad { ptr, i32 }
          cleanup
  %1555 = extractvalue { ptr, i32 } %1554, 0
  store ptr %1555, ptr %23, align 8
  %1556 = extractvalue { ptr, i32 } %1554, 1
  store i32 %1556, ptr %24, align 4
  br label %1566

1557:                                             ; preds = %1541
  %1558 = landingpad { ptr, i32 }
          cleanup
  %1559 = extractvalue { ptr, i32 } %1558, 0
  store ptr %1559, ptr %23, align 8
  %1560 = extractvalue { ptr, i32 } %1558, 1
  store i32 %1560, ptr %24, align 4
  br label %1565

1561:                                             ; preds = %1546
  %1562 = landingpad { ptr, i32 }
          cleanup
  %1563 = extractvalue { ptr, i32 } %1562, 0
  store ptr %1563, ptr %23, align 8
  %1564 = extractvalue { ptr, i32 } %1562, 1
  store i32 %1564, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #0
  br label %1565

1565:                                             ; preds = %1561, %1557
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #0
  br label %1566

1566:                                             ; preds = %1565, %1553
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #0
  br label %1567

1567:                                             ; preds = %1566, %1549
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #0
  br label %1568

1568:                                             ; preds = %1567, %1531
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  br label %3373

1569:                                             ; preds = %1530
  br label %1570

1570:                                             ; preds = %1569
  store i8 0, ptr %121, align 1, !tbaa !79
  br label %1518, !llvm.loop !153

1571:                                             ; preds = %1521
  br label %3371

1572:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #0
  store i8 1, ptr %126, align 1, !tbaa !79
  br label %1573

1573:                                             ; preds = %2161, %1572
  %1574 = load i8, ptr %126, align 1, !tbaa !79, !range !81, !noundef !82
  %1575 = trunc i8 %1574 to i1
  br i1 %1575, label %1577, label %1576

1576:                                             ; preds = %1573
  store i32 148, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #0
  br label %2162

1577:                                             ; preds = %1573
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #0
  %1578 = load ptr, ptr %32, align 8, !tbaa !5
  %1579 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %1578)
          to label %1580 unwind label %1586

1580:                                             ; preds = %1577
  store ptr %1579, ptr %127, align 8, !tbaa !5
  br label %1581

1581:                                             ; preds = %2158, %1580
  %1582 = load ptr, ptr %127, align 8, !tbaa !5
  %1583 = load i8, ptr %126, align 1, !tbaa !79, !range !81, !noundef !82
  %1584 = trunc i8 %1583 to i1
  br i1 %1584, label %1590, label %1585

1585:                                             ; preds = %1581
  store i32 151, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  br label %2160

1586:                                             ; preds = %1606, %1602, %1599, %1595, %1590, %1577
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %23, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %24, align 4
  br label %2159

1590:                                             ; preds = %1581
  %1591 = load ptr, ptr %127, align 8, !tbaa !5
  %1592 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1591, i32 0, i32 1
  %1593 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1592)
          to label %1594 unwind label %1586

1594:                                             ; preds = %1590
  br i1 %1593, label %1595, label %2127

1595:                                             ; preds = %1594
  %1596 = load ptr, ptr %127, align 8, !tbaa !5
  %1597 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1596, i32 0, i32 1
  %1598 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1597)
          to label %1599 unwind label %1586

1599:                                             ; preds = %1595
  %1600 = invoke noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1598)
          to label %1601 unwind label %1586

1601:                                             ; preds = %1599
  br i1 %1600, label %1602, label %2127

1602:                                             ; preds = %1601
  %1603 = load ptr, ptr %127, align 8, !tbaa !5
  %1604 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1603, i32 0, i32 1
  %1605 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1604)
          to label %1606 unwind label %1586

1606:                                             ; preds = %1602
  %1607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1605)
          to label %1608 unwind label %1586

1608:                                             ; preds = %1606
  %1609 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1607) #0
  %1610 = icmp eq ptr %1609, null
  br i1 %1610, label %1611, label %2127

1611:                                             ; preds = %1608
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1612 unwind label %1628

1612:                                             ; preds = %1611
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #0
  %1613 = load ptr, ptr %7, align 8, !tbaa !5
  %1614 = load ptr, ptr %127, align 8, !tbaa !5
  %1615 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1614, i32 0, i32 0
  %1616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %1613, ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(48) %1615)
          to label %1617 unwind label %1632

1617:                                             ; preds = %1612
  store ptr %1616, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130)
          to label %1618 unwind label %1636

1618:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #0
  %1619 = load ptr, ptr %7, align 8, !tbaa !5
  %1620 = load ptr, ptr %29, align 8, !tbaa !5
  %1621 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1620, i32 0, i32 0
  %1622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %1619, ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(32) %1621, i32 noundef 0)
          to label %1623 unwind label %1640

1623:                                             ; preds = %1618
  store ptr %1622, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #0
  store i8 1, ptr %132, align 1, !tbaa !79
  br label %1624

1624:                                             ; preds = %2046, %1623
  %1625 = load i8, ptr %132, align 1, !tbaa !79, !range !81, !noundef !82
  %1626 = trunc i8 %1625 to i1
  br i1 %1626, label %1644, label %1627

1627:                                             ; preds = %1624
  store i32 154, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #0
  br label %2047

1628:                                             ; preds = %1611
  %1629 = landingpad { ptr, i32 }
          cleanup
  %1630 = extractvalue { ptr, i32 } %1629, 0
  store ptr %1630, ptr %23, align 8
  %1631 = extractvalue { ptr, i32 } %1629, 1
  store i32 %1631, ptr %24, align 4
  br label %2126

1632:                                             ; preds = %1612
  %1633 = landingpad { ptr, i32 }
          cleanup
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %23, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %24, align 4
  br label %2125

1636:                                             ; preds = %1617
  %1637 = landingpad { ptr, i32 }
          cleanup
  %1638 = extractvalue { ptr, i32 } %1637, 0
  store ptr %1638, ptr %23, align 8
  %1639 = extractvalue { ptr, i32 } %1637, 1
  store i32 %1639, ptr %24, align 4
  br label %2124

1640:                                             ; preds = %1618
  %1641 = landingpad { ptr, i32 }
          cleanup
  %1642 = extractvalue { ptr, i32 } %1641, 0
  store ptr %1642, ptr %23, align 8
  %1643 = extractvalue { ptr, i32 } %1641, 1
  store i32 %1643, ptr %24, align 4
  br label %2123

1644:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #0
  %1645 = load ptr, ptr %131, align 8, !tbaa !5
  %1646 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1645)
          to label %1647 unwind label %1652

1647:                                             ; preds = %1644
  store ptr %1646, ptr %133, align 8, !tbaa !5
  br label %1648

1648:                                             ; preds = %2043, %1647
  %1649 = load i8, ptr %132, align 1, !tbaa !79, !range !81, !noundef !82
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1656, label %1651

1651:                                             ; preds = %1648
  store i32 157, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  br label %2045

1652:                                             ; preds = %1666, %1656, %1644
  %1653 = landingpad { ptr, i32 }
          cleanup
  %1654 = extractvalue { ptr, i32 } %1653, 0
  store ptr %1654, ptr %23, align 8
  %1655 = extractvalue { ptr, i32 } %1653, 1
  store i32 %1655, ptr %24, align 4
  br label %2044

1656:                                             ; preds = %1648
  %1657 = load ptr, ptr %133, align 8, !tbaa !5
  %1658 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1657)
          to label %1659 unwind label %1652

1659:                                             ; preds = %1656
  switch i32 %1658, label %1661 [
    i32 0, label %1660
    i32 4, label %1674
    i32 11, label %1769
  ]

1660:                                             ; preds = %1659
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2204, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

1661:                                             ; preds = %1659
  br label %1662

1662:                                             ; preds = %1661
  %1663 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #0
  %1664 = getelementptr inbounds %class.anon.217, ptr %135, i32 0, i32 0
  %1665 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %1665, ptr %1664, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(8) %135) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1663, ptr noundef %134)
          to label %1666 unwind label %1668

1666:                                             ; preds = %1662
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  %1667 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1667, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1667, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1652

1668:                                             ; preds = %1662
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %23, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %2044

1672:                                             ; No predecessors!
  br label %1673

1673:                                             ; preds = %1672
  br label %2042

1674:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 1, ptr %136) #0
  store i8 1, ptr %136, align 1, !tbaa !79
  br label %1675

1675:                                             ; preds = %1767, %1674
  %1676 = load i8, ptr %136, align 1, !tbaa !79, !range !81, !noundef !82
  %1677 = trunc i8 %1676 to i1
  br i1 %1677, label %1679, label %1678

1678:                                             ; preds = %1675
  store i32 163, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #0
  br label %1768

1679:                                             ; preds = %1675
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #0
  %1680 = load ptr, ptr %133, align 8, !tbaa !5
  %1681 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1680)
          to label %1682 unwind label %1688

1682:                                             ; preds = %1679
  store ptr %1681, ptr %137, align 8, !tbaa !5
  br label %1683

1683:                                             ; preds = %1763, %1682
  %1684 = load ptr, ptr %137, align 8, !tbaa !5
  %1685 = load i8, ptr %136, align 1, !tbaa !79, !range !81, !noundef !82
  %1686 = trunc i8 %1685 to i1
  br i1 %1686, label %1692, label %1687

1687:                                             ; preds = %1683
  store i32 166, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  br label %1766

1688:                                             ; preds = %1679
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %23, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %24, align 4
  br label %1765

1692:                                             ; preds = %1683
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #0
  store i8 0, ptr %138, align 1, !tbaa !79
  %1693 = load ptr, ptr %137, align 8, !tbaa !5
  %1694 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1693, i32 0, i32 1
  %1695 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1694)
          to label %1696 unwind label %1736

1696:                                             ; preds = %1692
  br i1 %1695, label %1697, label %1746

1697:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #0
  %1698 = load ptr, ptr %137, align 8, !tbaa !5
  %1699 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1698, i32 0, i32 1
  %1700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1699)
          to label %1701 unwind label %1740

1701:                                             ; preds = %1697
  %1702 = load ptr, ptr %1700, align 8, !tbaa !5
  store ptr %1702, ptr %139, align 8, !tbaa !5
  %1703 = load ptr, ptr %129, align 8, !tbaa !5
  %1704 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1703)
          to label %1705 unwind label %1740

1705:                                             ; preds = %1701
  %1706 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1704)
          to label %1707 unwind label %1740

1707:                                             ; preds = %1705
  br i1 %1706, label %1708, label %1745

1708:                                             ; preds = %1707
  %1709 = load ptr, ptr %129, align 8, !tbaa !5
  %1710 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1709)
          to label %1711 unwind label %1740

1711:                                             ; preds = %1708
  %1712 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1710)
          to label %1713 unwind label %1740

1713:                                             ; preds = %1711
  %1714 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1712, i32 0, i32 1
  %1715 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1714)
          to label %1716 unwind label %1740

1716:                                             ; preds = %1713
  br i1 %1715, label %1717, label %1745

1717:                                             ; preds = %1716
  %1718 = load ptr, ptr %129, align 8, !tbaa !5
  %1719 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1718)
          to label %1720 unwind label %1740

1720:                                             ; preds = %1717
  %1721 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1719)
          to label %1722 unwind label %1740

1722:                                             ; preds = %1720
  %1723 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1721, i32 0, i32 1
  %1724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1723)
          to label %1725 unwind label %1740

1725:                                             ; preds = %1722
  %1726 = load ptr, ptr %1724, align 8, !tbaa !5
  %1727 = load ptr, ptr %139, align 8, !tbaa !5
  %1728 = icmp eq ptr %1726, %1727
  br i1 %1728, label %1729, label %1745

1729:                                             ; preds = %1725
  %1730 = load ptr, ptr %139, align 8, !tbaa !5
  %1731 = getelementptr inbounds %"class.HIR::Struct", ptr %1730, i32 0, i32 7
  %1732 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1731, i32 0, i32 4
  %1733 = load i32, ptr %1732, align 8, !tbaa !154
  %1734 = icmp ne i32 %1733, 0
  br i1 %1734, label %1735, label %1744

1735:                                             ; preds = %1729
  store i8 1, ptr %138, align 1, !tbaa !79
  br label %1744

1736:                                             ; preds = %1754, %1692
  %1737 = landingpad { ptr, i32 }
          cleanup
  %1738 = extractvalue { ptr, i32 } %1737, 0
  store ptr %1738, ptr %23, align 8
  %1739 = extractvalue { ptr, i32 } %1737, 1
  store i32 %1739, ptr %24, align 4
  br label %1764

1740:                                             ; preds = %1722, %1720, %1717, %1713, %1711, %1708, %1705, %1701, %1697
  %1741 = landingpad { ptr, i32 }
          cleanup
  %1742 = extractvalue { ptr, i32 } %1741, 0
  store ptr %1742, ptr %23, align 8
  %1743 = extractvalue { ptr, i32 } %1741, 1
  store i32 %1743, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #0
  br label %1764

1744:                                             ; preds = %1735, %1729
  br label %1745

1745:                                             ; preds = %1744, %1725, %1716, %1707
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #0
  br label %1746

1746:                                             ; preds = %1745, %1696
  %1747 = load i8, ptr %138, align 1, !tbaa !79, !range !81, !noundef !82
  %1748 = trunc i8 %1747 to i1
  br i1 %1748, label %1762, label %1749

1749:                                             ; preds = %1746
  br label %1750

1750:                                             ; preds = %1749
  %1751 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #0
  %1752 = getelementptr inbounds %class.anon.228, ptr %141, i32 0, i32 0
  %1753 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %1753, ptr %1752, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(8) %141) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1751, ptr noundef %140)
          to label %1754 unwind label %1756

1754:                                             ; preds = %1750
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #0
  %1755 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %1755, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1755, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %1736

1756:                                             ; preds = %1750
  %1757 = landingpad { ptr, i32 }
          cleanup
  %1758 = extractvalue { ptr, i32 } %1757, 0
  store ptr %1758, ptr %23, align 8
  %1759 = extractvalue { ptr, i32 } %1757, 1
  store i32 %1759, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #0
  br label %1764

1760:                                             ; No predecessors!
  br label %1761

1761:                                             ; preds = %1760
  br label %1762

1762:                                             ; preds = %1761, %1746
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #0
  br label %1763

1763:                                             ; preds = %1762
  store i8 0, ptr %136, align 1, !tbaa !79
  br label %1683, !llvm.loop !187

1764:                                             ; preds = %1756, %1740, %1736
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #0
  br label %1765

1765:                                             ; preds = %1764, %1688
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #0
  br label %2044

1766:                                             ; preds = %1687
  br label %1767

1767:                                             ; preds = %1766
  store i8 0, ptr %136, align 1, !tbaa !79
  br label %1675, !llvm.loop !188

1768:                                             ; preds = %1678
  br label %2042

1769:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #0
  store i8 1, ptr %142, align 1, !tbaa !79
  br label %1770

1770:                                             ; preds = %2040, %1769
  %1771 = load i8, ptr %142, align 1, !tbaa !79, !range !81, !noundef !82
  %1772 = trunc i8 %1771 to i1
  br i1 %1772, label %1774, label %1773

1773:                                             ; preds = %1770
  store i32 171, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #0
  br label %2041

1774:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #0
  %1775 = load ptr, ptr %133, align 8, !tbaa !5
  %1776 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1775)
          to label %1777 unwind label %1783

1777:                                             ; preds = %1774
  store ptr %1776, ptr %143, align 8, !tbaa !5
  br label %1778

1778:                                             ; preds = %2035, %1777
  %1779 = load ptr, ptr %143, align 8, !tbaa !5
  %1780 = load i8, ptr %142, align 1, !tbaa !79, !range !81, !noundef !82
  %1781 = trunc i8 %1780 to i1
  br i1 %1781, label %1787, label %1782

1782:                                             ; preds = %1778
  store i32 174, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #0
  br label %2039

1783:                                             ; preds = %1774
  %1784 = landingpad { ptr, i32 }
          cleanup
  %1785 = extractvalue { ptr, i32 } %1784, 0
  store ptr %1785, ptr %23, align 8
  %1786 = extractvalue { ptr, i32 } %1784, 1
  store i32 %1786, ptr %24, align 4
  br label %2038

1787:                                             ; preds = %1778
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #0
  %1788 = load ptr, ptr %143, align 8, !tbaa !5
  %1789 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1788, i32 0, i32 2
  store ptr %1789, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #0
  %1790 = load ptr, ptr %129, align 8, !tbaa !5
  %1791 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1790)
          to label %1792 unwind label %1814

1792:                                             ; preds = %1787
  %1793 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1791)
          to label %1794 unwind label %1814

1794:                                             ; preds = %1792
  %1795 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1793, i32 0, i32 2
  store ptr %1795, ptr %145, align 8, !tbaa !5
  br label %1796

1796:                                             ; preds = %1873, %1794
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  %1797 = load ptr, ptr %144, align 8, !tbaa !5
  %1798 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1797)
          to label %1799 unwind label %1818

1799:                                             ; preds = %1796
  %1800 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1798)
          to label %1801 unwind label %1818

1801:                                             ; preds = %1799
  store ptr %1800, ptr %146, align 8, !tbaa !5
  %1802 = load ptr, ptr %146, align 8, !tbaa !5
  %1803 = icmp ne ptr %1802, null
  br i1 %1803, label %1804, label %1869

1804:                                             ; preds = %1801
  br label %1805

1805:                                             ; preds = %1804
  %1806 = load ptr, ptr %146, align 8, !tbaa !5
  %1807 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1806, i32 0, i32 1
  %1808 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1807)
          to label %1809 unwind label %1818

1809:                                             ; preds = %1805
  br i1 %1808, label %1826, label %1810

1810:                                             ; preds = %1809
  %1811 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #0
  %1812 = getelementptr inbounds %class.anon.229, ptr %148, i32 0, i32 0
  store ptr %144, ptr %1812, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef nonnull align 8 dereferenceable(8) %148) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1811, ptr noundef %147)
          to label %1813 unwind label %1822

1813:                                             ; preds = %1810
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  br label %1826

1814:                                             ; preds = %1792, %1787
  %1815 = landingpad { ptr, i32 }
          cleanup
  %1816 = extractvalue { ptr, i32 } %1815, 0
  store ptr %1816, ptr %23, align 8
  %1817 = extractvalue { ptr, i32 } %1815, 1
  store i32 %1817, ptr %24, align 4
  br label %2037

1818:                                             ; preds = %1805, %1799, %1796
  %1819 = landingpad { ptr, i32 }
          cleanup
  %1820 = extractvalue { ptr, i32 } %1819, 0
  store ptr %1820, ptr %23, align 8
  %1821 = extractvalue { ptr, i32 } %1819, 1
  store i32 %1821, ptr %24, align 4
  br label %1874

1822:                                             ; preds = %1810
  %1823 = landingpad { ptr, i32 }
          cleanup
  %1824 = extractvalue { ptr, i32 } %1823, 0
  store ptr %1824, ptr %23, align 8
  %1825 = extractvalue { ptr, i32 } %1823, 1
  store i32 %1825, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  br label %1874

1826:                                             ; preds = %1813, %1809
  br label %1827

1827:                                             ; preds = %1826
  br label %1828

1828:                                             ; preds = %1827
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #0
  %1829 = load ptr, ptr %146, align 8, !tbaa !5
  %1830 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1829, i32 0, i32 1
  %1831 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1830)
          to label %1832 unwind label %1865

1832:                                             ; preds = %1828
  %1833 = load ptr, ptr %1831, align 8, !tbaa !5
  %1834 = getelementptr inbounds %"class.HIR::Struct", ptr %1833, i32 0, i32 7
  store ptr %1834, ptr %149, align 8, !tbaa !5
  %1835 = load ptr, ptr %146, align 8, !tbaa !5
  %1836 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1835, i32 0, i32 0
  %1837 = getelementptr inbounds %"class.HIR::Path", ptr %1836, i32 0, i32 0
  %1838 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1837)
          to label %1839 unwind label %1865

1839:                                             ; preds = %1832
  %1840 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1838, i32 0, i32 1
  %1841 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1840, i32 0, i32 1
  %1842 = load ptr, ptr %149, align 8, !tbaa !5
  %1843 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1842, i32 0, i32 1
  %1844 = load i32, ptr %1843, align 4, !tbaa !189
  %1845 = zext i32 %1844 to i64
  %1846 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1841, i64 noundef %1845)
          to label %1847 unwind label %1865

1847:                                             ; preds = %1839
  store ptr %1846, ptr %144, align 8, !tbaa !5
  %1848 = load ptr, ptr %145, align 8, !tbaa !5
  %1849 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1848)
          to label %1850 unwind label %1865

1850:                                             ; preds = %1847
  %1851 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1849)
          to label %1852 unwind label %1865

1852:                                             ; preds = %1850
  %1853 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1851, i32 0, i32 0
  %1854 = getelementptr inbounds %"class.HIR::Path", ptr %1853, i32 0, i32 0
  %1855 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1854)
          to label %1856 unwind label %1865

1856:                                             ; preds = %1852
  %1857 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1855, i32 0, i32 1
  %1858 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1857, i32 0, i32 1
  %1859 = load ptr, ptr %149, align 8, !tbaa !5
  %1860 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1859, i32 0, i32 1
  %1861 = load i32, ptr %1860, align 4, !tbaa !189
  %1862 = zext i32 %1861 to i64
  %1863 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1858, i64 noundef %1862)
          to label %1864 unwind label %1865

1864:                                             ; preds = %1856
  store ptr %1863, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  br label %1870

1865:                                             ; preds = %1856, %1852, %1850, %1847, %1839, %1832, %1828
  %1866 = landingpad { ptr, i32 }
          cleanup
  %1867 = extractvalue { ptr, i32 } %1866, 0
  store ptr %1867, ptr %23, align 8
  %1868 = extractvalue { ptr, i32 } %1866, 1
  store i32 %1868, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  br label %1874

1869:                                             ; preds = %1801
  store i32 177, ptr %9, align 4
  br label %1871

1870:                                             ; preds = %1864
  store i32 0, ptr %9, align 4
  br label %1871

1871:                                             ; preds = %1870, %1869
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  %1872 = load i32, ptr %9, align 4
  switch i32 %1872, label %3428 [
    i32 0, label %1873
    i32 177, label %1875
  ]

1873:                                             ; preds = %1871
  br label %1796, !llvm.loop !190

1874:                                             ; preds = %1865, %1822, %1818
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  br label %2037

1875:                                             ; preds = %1871
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #0
  %1876 = load ptr, ptr %144, align 8, !tbaa !5
  %1877 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1876)
          to label %1878 unwind label %1912

1878:                                             ; preds = %1875
  %1879 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1877)
          to label %1880 unwind label %1912

1880:                                             ; preds = %1878
  store ptr %1879, ptr %150, align 8, !tbaa !5
  %1881 = load ptr, ptr %150, align 8, !tbaa !5
  %1882 = icmp ne ptr %1881, null
  br i1 %1882, label %1883, label %1963

1883:                                             ; preds = %1880
  %1884 = load atomic i8, ptr @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable acquire, align 8
  %1885 = icmp eq i8 %1884, 0
  br i1 %1885, label %1886, label %1892, !prof !191

1886:                                             ; preds = %1883
  %1887 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #0
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1889, label %1892

1889:                                             ; preds = %1886
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable, ptr noundef @.str.20)
          to label %1890 unwind label %1916

1890:                                             ; preds = %1889
  %1891 = call i32 @__cxa_atexit(ptr @_ZN8RcStringD1Ev, ptr @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #0
  br label %1892

1892:                                             ; preds = %1890, %1886, %1883
  call void @llvm.lifetime.start.p0(i64 88, ptr %151) #0
  %1893 = load ptr, ptr %145, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %152, ptr noundef nonnull align 8 dereferenceable(8) %1893)
          to label %1894 unwind label %1920

1894:                                             ; preds = %1892
  %1895 = load ptr, ptr %150, align 8, !tbaa !5
  %1896 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1895, i32 0, i32 0
  %1897 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1896, i32 0, i32 1
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %153, ptr noundef nonnull align 8 dereferenceable(32) %1897)
          to label %1898 unwind label %1924

1898:                                             ; preds = %1894
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable)
          to label %1899 unwind label %1928

1899:                                             ; preds = %1898
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %155)
          to label %1900 unwind label %1932

1900:                                             ; preds = %1899
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %151, ptr noundef %152, ptr noundef %153, ptr noundef %154, ptr noundef %155)
          to label %1901 unwind label %1936

1901:                                             ; preds = %1900
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %155) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #0
  %1902 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1903 unwind label %1943

1903:                                             ; preds = %1901
  %1904 = udiv i32 %1902, 8
  %1905 = zext i32 %1904 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %156, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %1905)
          to label %1906 unwind label %1943

1906:                                             ; preds = %1903
  %1907 = load ptr, ptr %7, align 8, !tbaa !5
  %1908 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %159, ptr noundef nonnull align 8 dereferenceable(88) %151) #0
  invoke void @_ZNK3MIR4eval14CallStackEntry13get_staticrefEN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %158, ptr noundef nonnull align 8 dereferenceable(816) %1908, ptr noundef %159, ptr noundef null)
          to label %1909 unwind label %1947

1909:                                             ; preds = %1906
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef %158)
          to label %1910 unwind label %1951

1910:                                             ; preds = %1909
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %156, ptr noundef nonnull align 8 dereferenceable(120) %1907, i64 noundef 4096, ptr noundef %157)
          to label %1911 unwind label %1955

1911:                                             ; preds = %1910
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #0
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %159) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %151) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %151) #0
  br label %2034

1912:                                             ; preds = %1966, %1963, %1878, %1875
  %1913 = landingpad { ptr, i32 }
          cleanup
  %1914 = extractvalue { ptr, i32 } %1913, 0
  store ptr %1914, ptr %23, align 8
  %1915 = extractvalue { ptr, i32 } %1913, 1
  store i32 %1915, ptr %24, align 4
  br label %2036

1916:                                             ; preds = %1889
  %1917 = landingpad { ptr, i32 }
          cleanup
  %1918 = extractvalue { ptr, i32 } %1917, 0
  store ptr %1918, ptr %23, align 8
  %1919 = extractvalue { ptr, i32 } %1917, 1
  store i32 %1919, ptr %24, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #0
  br label %2036

1920:                                             ; preds = %1892
  %1921 = landingpad { ptr, i32 }
          cleanup
  %1922 = extractvalue { ptr, i32 } %1921, 0
  store ptr %1922, ptr %23, align 8
  %1923 = extractvalue { ptr, i32 } %1921, 1
  store i32 %1923, ptr %24, align 4
  br label %1962

1924:                                             ; preds = %1894
  %1925 = landingpad { ptr, i32 }
          cleanup
  %1926 = extractvalue { ptr, i32 } %1925, 0
  store ptr %1926, ptr %23, align 8
  %1927 = extractvalue { ptr, i32 } %1925, 1
  store i32 %1927, ptr %24, align 4
  br label %1942

1928:                                             ; preds = %1898
  %1929 = landingpad { ptr, i32 }
          cleanup
  %1930 = extractvalue { ptr, i32 } %1929, 0
  store ptr %1930, ptr %23, align 8
  %1931 = extractvalue { ptr, i32 } %1929, 1
  store i32 %1931, ptr %24, align 4
  br label %1941

1932:                                             ; preds = %1899
  %1933 = landingpad { ptr, i32 }
          cleanup
  %1934 = extractvalue { ptr, i32 } %1933, 0
  store ptr %1934, ptr %23, align 8
  %1935 = extractvalue { ptr, i32 } %1933, 1
  store i32 %1935, ptr %24, align 4
  br label %1940

1936:                                             ; preds = %1900
  %1937 = landingpad { ptr, i32 }
          cleanup
  %1938 = extractvalue { ptr, i32 } %1937, 0
  store ptr %1938, ptr %23, align 8
  %1939 = extractvalue { ptr, i32 } %1937, 1
  store i32 %1939, ptr %24, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %155) #0
  br label %1940

1940:                                             ; preds = %1936, %1932
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  br label %1941

1941:                                             ; preds = %1940, %1928
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #0
  br label %1942

1942:                                             ; preds = %1941, %1924
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #0
  br label %1962

1943:                                             ; preds = %1903, %1901
  %1944 = landingpad { ptr, i32 }
          cleanup
  %1945 = extractvalue { ptr, i32 } %1944, 0
  store ptr %1945, ptr %23, align 8
  %1946 = extractvalue { ptr, i32 } %1944, 1
  store i32 %1946, ptr %24, align 4
  br label %1961

1947:                                             ; preds = %1906
  %1948 = landingpad { ptr, i32 }
          cleanup
  %1949 = extractvalue { ptr, i32 } %1948, 0
  store ptr %1949, ptr %23, align 8
  %1950 = extractvalue { ptr, i32 } %1948, 1
  store i32 %1950, ptr %24, align 4
  br label %1960

1951:                                             ; preds = %1909
  %1952 = landingpad { ptr, i32 }
          cleanup
  %1953 = extractvalue { ptr, i32 } %1952, 0
  store ptr %1953, ptr %23, align 8
  %1954 = extractvalue { ptr, i32 } %1952, 1
  store i32 %1954, ptr %24, align 4
  br label %1959

1955:                                             ; preds = %1910
  %1956 = landingpad { ptr, i32 }
          cleanup
  %1957 = extractvalue { ptr, i32 } %1956, 0
  store ptr %1957, ptr %23, align 8
  %1958 = extractvalue { ptr, i32 } %1956, 1
  store i32 %1958, ptr %24, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #0
  br label %1959

1959:                                             ; preds = %1955, %1951
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #0
  br label %1960

1960:                                             ; preds = %1959, %1947
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %159) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #0
  br label %1961

1961:                                             ; preds = %1960, %1943
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %151) #0
  br label %1962

1962:                                             ; preds = %1961, %1942, %1920
  call void @llvm.lifetime.end.p0(i64 88, ptr %151) #0
  br label %2036

1963:                                             ; preds = %1880
  %1964 = load ptr, ptr %144, align 8, !tbaa !5
  %1965 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1964)
          to label %1966 unwind label %1912

1966:                                             ; preds = %1963
  %1967 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1965)
          to label %1968 unwind label %1912

1968:                                             ; preds = %1966
  %1969 = icmp ne ptr %1967, null
  br i1 %1969, label %1970, label %2004

1970:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #0
  %1971 = load ptr, ptr %145, align 8, !tbaa !5
  %1972 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1971)
          to label %1973 unwind label %1990

1973:                                             ; preds = %1970
  %1974 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1972)
          to label %1975 unwind label %1990

1975:                                             ; preds = %1973
  %1976 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1974, i32 0, i32 1
  %1977 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1976)
          to label %1978 unwind label %1990

1978:                                             ; preds = %1975
  %1979 = load i64, ptr %1977, align 8, !tbaa !129
  store i64 %1979, ptr %160, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #0
  %1980 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1981 unwind label %1994

1981:                                             ; preds = %1978
  %1982 = udiv i32 %1980, 8
  %1983 = zext i32 %1982 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %161, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %1983)
          to label %1984 unwind label %1994

1984:                                             ; preds = %1981
  %1985 = load ptr, ptr %7, align 8, !tbaa !5
  %1986 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1987 unwind label %1998

1987:                                             ; preds = %1984
  %1988 = load i64, ptr %160, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef nonnull align 8 dereferenceable(120) %1985, i32 noundef %1986, i64 noundef %1988)
          to label %1989 unwind label %1998

1989:                                             ; preds = %1987
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %161) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  br label %2033

1990:                                             ; preds = %1975, %1973, %1970
  %1991 = landingpad { ptr, i32 }
          cleanup
  %1992 = extractvalue { ptr, i32 } %1991, 0
  store ptr %1992, ptr %23, align 8
  %1993 = extractvalue { ptr, i32 } %1991, 1
  store i32 %1993, ptr %24, align 4
  br label %2003

1994:                                             ; preds = %1981, %1978
  %1995 = landingpad { ptr, i32 }
          cleanup
  %1996 = extractvalue { ptr, i32 } %1995, 0
  store ptr %1996, ptr %23, align 8
  %1997 = extractvalue { ptr, i32 } %1995, 1
  store i32 %1997, ptr %24, align 4
  br label %2002

1998:                                             ; preds = %1987, %1984
  %1999 = landingpad { ptr, i32 }
          cleanup
  %2000 = extractvalue { ptr, i32 } %1999, 0
  store ptr %2000, ptr %23, align 8
  %2001 = extractvalue { ptr, i32 } %1999, 1
  store i32 %2001, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %161) #0
  br label %2002

2002:                                             ; preds = %1998, %1994
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #0
  br label %2003

2003:                                             ; preds = %2002, %1990
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  br label %2036

2004:                                             ; preds = %1968
  br label %2005

2005:                                             ; preds = %2004
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #0
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %162, align 8, !tbaa !5
  %2006 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %164) #0
  %2007 = getelementptr inbounds %class.anon.230, ptr %164, i32 0, i32 0
  store ptr %162, ptr %2007, align 8, !tbaa !5
  %2008 = getelementptr inbounds %class.anon.230, ptr %164, i32 0, i32 1
  %2009 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %2009, ptr %2008, align 8, !tbaa !5
  %2010 = getelementptr inbounds %class.anon.230, ptr %164, i32 0, i32 2
  %2011 = load ptr, ptr %129, align 8, !tbaa !5
  store ptr %2011, ptr %2010, align 8, !tbaa !5
  %2012 = getelementptr inbounds %class.anon.230, ptr %164, i32 0, i32 3
  store ptr %144, ptr %2012, align 8, !tbaa !5
  %2013 = getelementptr inbounds %class.anon.230, ptr %164, i32 0, i32 4
  store ptr %145, ptr %2013, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %163, ptr noundef nonnull align 8 dereferenceable(40) %164)
          to label %2014 unwind label %2017

2014:                                             ; preds = %2005
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2006, ptr noundef %163)
          to label %2015 unwind label %2021

2015:                                             ; preds = %2014
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %164) #0
  %2016 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.19, ptr %2016, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2016, ptr @_ZTIPKc, ptr null) #11
          to label %3428 unwind label %2026

2017:                                             ; preds = %2005
  %2018 = landingpad { ptr, i32 }
          cleanup
  %2019 = extractvalue { ptr, i32 } %2018, 0
  store ptr %2019, ptr %23, align 8
  %2020 = extractvalue { ptr, i32 } %2018, 1
  store i32 %2020, ptr %24, align 4
  br label %2025

2021:                                             ; preds = %2014
  %2022 = landingpad { ptr, i32 }
          cleanup
  %2023 = extractvalue { ptr, i32 } %2022, 0
  store ptr %2023, ptr %23, align 8
  %2024 = extractvalue { ptr, i32 } %2022, 1
  store i32 %2024, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #0
  br label %2025

2025:                                             ; preds = %2021, %2017
  call void @llvm.lifetime.end.p0(i64 40, ptr %164) #0
  br label %2030

2026:                                             ; preds = %2015
  %2027 = landingpad { ptr, i32 }
          cleanup
  %2028 = extractvalue { ptr, i32 } %2027, 0
  store ptr %2028, ptr %23, align 8
  %2029 = extractvalue { ptr, i32 } %2027, 1
  store i32 %2029, ptr %24, align 4
  br label %2030

2030:                                             ; preds = %2026, %2025
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #0
  br label %2036

2031:                                             ; No predecessors!
  br label %2032

2032:                                             ; preds = %2031
  br label %2033

2033:                                             ; preds = %2032, %1989
  br label %2034

2034:                                             ; preds = %2033, %1911
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  br label %2035

2035:                                             ; preds = %2034
  store i8 0, ptr %142, align 1, !tbaa !79
  br label %1778, !llvm.loop !192

2036:                                             ; preds = %2030, %2003, %1962, %1916, %1912
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  br label %2037

2037:                                             ; preds = %2036, %1874, %1814
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  br label %2038

2038:                                             ; preds = %2037, %1783
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #0
  br label %2044

2039:                                             ; preds = %1782
  br label %2040

2040:                                             ; preds = %2039
  store i8 0, ptr %142, align 1, !tbaa !79
  br label %1770, !llvm.loop !193

2041:                                             ; preds = %1773
  br label %2042

2042:                                             ; preds = %2041, %1768, %1673
  br label %2043

2043:                                             ; preds = %2042
  store i8 0, ptr %132, align 1, !tbaa !79
  br label %1648, !llvm.loop !194

2044:                                             ; preds = %2038, %1765, %1668, %1652
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #0
  br label %2123

2045:                                             ; preds = %1651
  br label %2046

2046:                                             ; preds = %2045
  store i8 0, ptr %132, align 1, !tbaa !79
  br label %1624, !llvm.loop !195

2047:                                             ; preds = %1627
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #0
  %2048 = load ptr, ptr %127, align 8, !tbaa !5
  %2049 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %2048, i32 0, i32 0
  %2050 = invoke noundef ptr @_ZNK3MIR5Param10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %2049)
          to label %2051 unwind label %2063

2051:                                             ; preds = %2047
  store ptr %2050, ptr %165, align 8, !tbaa !5
  %2052 = load ptr, ptr %165, align 8, !tbaa !5
  %2053 = icmp ne ptr %2052, null
  br i1 %2053, label %2054, label %2071

2054:                                             ; preds = %2051
  %2055 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %166, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %2056 unwind label %2063

2056:                                             ; preds = %2054
  %2057 = load ptr, ptr %165, align 8, !tbaa !5
  %2058 = getelementptr inbounds %"struct.MIR::Param::Data_Borrow", ptr %2057, i32 0, i32 0
  %2059 = load i32, ptr %2058, align 8, !tbaa !196
  %2060 = load ptr, ptr %165, align 8, !tbaa !5
  %2061 = getelementptr inbounds %"struct.MIR::Param::Data_Borrow", ptr %2060, i32 0, i32 1
  invoke void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816) %2055, ptr noundef %166, i32 noundef %2059, ptr noundef nonnull align 8 dereferenceable(32) %2061)
          to label %2062 unwind label %2067

2062:                                             ; preds = %2056
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %166) #0
  br label %2121

2063:                                             ; preds = %2054, %2047
  %2064 = landingpad { ptr, i32 }
          cleanup
  %2065 = extractvalue { ptr, i32 } %2064, 0
  store ptr %2065, ptr %23, align 8
  %2066 = extractvalue { ptr, i32 } %2064, 1
  store i32 %2066, ptr %24, align 4
  br label %2122

2067:                                             ; preds = %2056
  %2068 = landingpad { ptr, i32 }
          cleanup
  %2069 = extractvalue { ptr, i32 } %2068, 0
  store ptr %2069, ptr %23, align 8
  %2070 = extractvalue { ptr, i32 } %2068, 1
  store i32 %2070, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %166) #0
  br label %2122

2071:                                             ; preds = %2051
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #0
  %2072 = load ptr, ptr %127, align 8, !tbaa !5
  %2073 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %2072, i32 0, i32 0
  %2074 = invoke noundef ptr @_ZNK3MIR5Param12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %2073)
          to label %2075 unwind label %2083

2075:                                             ; preds = %2071
  store ptr %2074, ptr %167, align 8, !tbaa !5
  %2076 = load ptr, ptr %167, align 8, !tbaa !5
  %2077 = icmp ne ptr %2076, null
  br i1 %2077, label %2078, label %2091

2078:                                             ; preds = %2075
  %2079 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %2080 unwind label %2083

2080:                                             ; preds = %2078
  %2081 = load ptr, ptr %167, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry11write_constENS0_8ValueRefERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(816) %2079, ptr noundef %168, ptr noundef nonnull align 8 dereferenceable(40) %2081)
          to label %2082 unwind label %2087

2082:                                             ; preds = %2080
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #0
  br label %2119

2083:                                             ; preds = %2078, %2071
  %2084 = landingpad { ptr, i32 }
          cleanup
  %2085 = extractvalue { ptr, i32 } %2084, 0
  store ptr %2085, ptr %23, align 8
  %2086 = extractvalue { ptr, i32 } %2084, 1
  store i32 %2086, ptr %24, align 4
  br label %2120

2087:                                             ; preds = %2080
  %2088 = landingpad { ptr, i32 }
          cleanup
  %2089 = extractvalue { ptr, i32 } %2088, 0
  store ptr %2089, ptr %23, align 8
  %2090 = extractvalue { ptr, i32 } %2088, 1
  store i32 %2090, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168) #0
  br label %2120

2091:                                             ; preds = %2075
  call void @llvm.lifetime.start.p0(i64 16, ptr %169) #0
  %2092 = load ptr, ptr %5, align 8, !tbaa !5
  %2093 = load ptr, ptr %127, align 8, !tbaa !5
  %2094 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %2093, i32 0, i32 0
  %2095 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2094)
          to label %2096 unwind label %2105

2096:                                             ; preds = %2091
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %169, ptr noundef nonnull align 8 dereferenceable(816) %2092, ptr noundef nonnull align 8 dereferenceable(32) %2095, ptr noundef null)
          to label %2097 unwind label %2105

2097:                                             ; preds = %2096
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #0
  %2098 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2099 unwind label %2109

2099:                                             ; preds = %2097
  %2100 = udiv i32 %2098, 8
  %2101 = zext i32 %2100 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %170, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef 0, i64 noundef %2101)
          to label %2102 unwind label %2109

2102:                                             ; preds = %2099
  %2103 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %170, ptr noundef nonnull align 8 dereferenceable(120) %2103, ptr noundef nonnull align 8 dereferenceable(16) %169)
          to label %2104 unwind label %2113

2104:                                             ; preds = %2102
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #0
  br label %2119

2105:                                             ; preds = %2096, %2091
  %2106 = landingpad { ptr, i32 }
          cleanup
  %2107 = extractvalue { ptr, i32 } %2106, 0
  store ptr %2107, ptr %23, align 8
  %2108 = extractvalue { ptr, i32 } %2106, 1
  store i32 %2108, ptr %24, align 4
  br label %2118

2109:                                             ; preds = %2099, %2097
  %2110 = landingpad { ptr, i32 }
          cleanup
  %2111 = extractvalue { ptr, i32 } %2110, 0
  store ptr %2111, ptr %23, align 8
  %2112 = extractvalue { ptr, i32 } %2110, 1
  store i32 %2112, ptr %24, align 4
  br label %2117

2113:                                             ; preds = %2102
  %2114 = landingpad { ptr, i32 }
          cleanup
  %2115 = extractvalue { ptr, i32 } %2114, 0
  store ptr %2115, ptr %23, align 8
  %2116 = extractvalue { ptr, i32 } %2114, 1
  store i32 %2116, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #0
  br label %2117

2117:                                             ; preds = %2113, %2109
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %169) #0
  br label %2118

2118:                                             ; preds = %2117, %2105
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #0
  br label %2120

2119:                                             ; preds = %2104, %2082
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #0
  br label %2121

2120:                                             ; preds = %2118, %2087, %2083
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #0
  br label %2122

2121:                                             ; preds = %2119, %2062
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %2157

2122:                                             ; preds = %2120, %2067, %2063
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #0
  br label %2123

2123:                                             ; preds = %2122, %2044, %1640
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #0
  br label %2124

2124:                                             ; preds = %2123, %1636
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #0
  br label %2125

2125:                                             ; preds = %2124, %1632
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  br label %2126

2126:                                             ; preds = %2125, %1628
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %2159

2127:                                             ; preds = %1608, %1601, %1594
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #0
  %2128 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2129 unwind label %2144

2129:                                             ; preds = %2127
  %2130 = udiv i32 %2128, 8
  %2131 = zext i32 %2130 to i64
  store i64 %2131, ptr %171, align 8, !tbaa !129
  %2132 = load ptr, ptr %5, align 8, !tbaa !5
  %2133 = load i64, ptr %171, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %172, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef 0, i64 noundef %2133)
          to label %2134 unwind label %2144

2134:                                             ; preds = %2129
  %2135 = load ptr, ptr %127, align 8, !tbaa !5
  %2136 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %2135, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2132, ptr noundef %172, ptr noundef nonnull align 8 dereferenceable(48) %2136)
          to label %2137 unwind label %2148

2137:                                             ; preds = %2134
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #0
  %2138 = load ptr, ptr %5, align 8, !tbaa !5
  %2139 = load i64, ptr %171, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %173, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2139)
          to label %2140 unwind label %2144

2140:                                             ; preds = %2137
  %2141 = load ptr, ptr %127, align 8, !tbaa !5
  %2142 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %2141, i32 0, i32 1
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2138, ptr noundef %173, ptr noundef nonnull align 8 dereferenceable(48) %2142)
          to label %2143 unwind label %2152

2143:                                             ; preds = %2140
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  br label %2157

2144:                                             ; preds = %2137, %2129, %2127
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %23, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %24, align 4
  br label %2156

2148:                                             ; preds = %2134
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %23, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #0
  br label %2156

2152:                                             ; preds = %2140
  %2153 = landingpad { ptr, i32 }
          cleanup
  %2154 = extractvalue { ptr, i32 } %2153, 0
  store ptr %2154, ptr %23, align 8
  %2155 = extractvalue { ptr, i32 } %2153, 1
  store i32 %2155, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #0
  br label %2156

2156:                                             ; preds = %2152, %2148, %2144
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  br label %2159

2157:                                             ; preds = %2143, %2121
  br label %2158

2158:                                             ; preds = %2157
  store i8 0, ptr %126, align 1, !tbaa !79
  br label %1581, !llvm.loop !198

2159:                                             ; preds = %2156, %2126, %1586
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #0
  br label %3373

2160:                                             ; preds = %1585
  br label %2161

2161:                                             ; preds = %2160
  store i8 0, ptr %126, align 1, !tbaa !79
  br label %1573, !llvm.loop !199

2162:                                             ; preds = %1576
  br label %3371

2163:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #0
  store i8 1, ptr %174, align 1, !tbaa !79
  br label %2164

2164:                                             ; preds = %2279, %2163
  %2165 = load i8, ptr %174, align 1, !tbaa !79, !range !81, !noundef !82
  %2166 = trunc i8 %2165 to i1
  br i1 %2166, label %2168, label %2167

2167:                                             ; preds = %2164
  store i32 183, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #0
  br label %2280

2168:                                             ; preds = %2164
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #0
  %2169 = load ptr, ptr %32, align 8, !tbaa !5
  %2170 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %2169)
          to label %2171 unwind label %2177

2171:                                             ; preds = %2168
  store ptr %2170, ptr %175, align 8, !tbaa !5
  br label %2172

2172:                                             ; preds = %2273, %2171
  %2173 = load ptr, ptr %175, align 8, !tbaa !5
  %2174 = load i8, ptr %174, align 1, !tbaa !79, !range !81, !noundef !82
  %2175 = trunc i8 %2174 to i1
  br i1 %2175, label %2181, label %2176

2176:                                             ; preds = %2172
  store i32 186, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #0
  br label %2278

2177:                                             ; preds = %2168
  %2178 = landingpad { ptr, i32 }
          cleanup
  %2179 = extractvalue { ptr, i32 } %2178, 0
  store ptr %2179, ptr %23, align 8
  %2180 = extractvalue { ptr, i32 } %2178, 1
  store i32 %2180, ptr %24, align 4
  br label %2277

2181:                                             ; preds = %2172
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176)
          to label %2182 unwind label %2199

2182:                                             ; preds = %2181
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #0
  %2183 = load ptr, ptr %7, align 8, !tbaa !5
  %2184 = load ptr, ptr %29, align 8, !tbaa !5
  %2185 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %2184, i32 0, i32 0
  %2186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2183, ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull align 8 dereferenceable(32) %2185, i32 noundef 0)
          to label %2187 unwind label %2203

2187:                                             ; preds = %2182
  store ptr %2186, ptr %177, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #0
  %2188 = load ptr, ptr %7, align 8, !tbaa !5
  %2189 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2188, i32 0, i32 1
  %2190 = load ptr, ptr %2189, align 8, !tbaa !120
  %2191 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %2192 = load ptr, ptr %177, align 8, !tbaa !5
  %2193 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2190, ptr noundef nonnull align 8 dereferenceable(424) %2191, ptr noundef nonnull align 8 dereferenceable(8) %2192)
          to label %2194 unwind label %2207

2194:                                             ; preds = %2187
  store ptr %2193, ptr %178, align 8, !tbaa !5
  %2195 = load ptr, ptr %178, align 8, !tbaa !5
  %2196 = icmp ne ptr %2195, null
  br i1 %2196, label %2211, label %2197

2197:                                             ; preds = %2194
  %2198 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %2198, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %3428 unwind label %2207

2199:                                             ; preds = %2181
  %2200 = landingpad { ptr, i32 }
          cleanup
  %2201 = extractvalue { ptr, i32 } %2200, 0
  store ptr %2201, ptr %23, align 8
  %2202 = extractvalue { ptr, i32 } %2200, 1
  store i32 %2202, ptr %24, align 4
  br label %2276

2203:                                             ; preds = %2182
  %2204 = landingpad { ptr, i32 }
          cleanup
  %2205 = extractvalue { ptr, i32 } %2204, 0
  store ptr %2205, ptr %23, align 8
  %2206 = extractvalue { ptr, i32 } %2204, 1
  store i32 %2206, ptr %24, align 4
  br label %2275

2207:                                             ; preds = %2197, %2187
  %2208 = landingpad { ptr, i32 }
          cleanup
  %2209 = extractvalue { ptr, i32 } %2208, 0
  store ptr %2209, ptr %23, align 8
  %2210 = extractvalue { ptr, i32 } %2208, 1
  store i32 %2210, ptr %24, align 4
  br label %2274

2211:                                             ; preds = %2194
  br label %2212

2212:                                             ; preds = %2211
  %2213 = load ptr, ptr %178, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.TypeRepr, ptr %2213, i32 0, i32 3
  %2215 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2214) #0
  %2216 = load ptr, ptr %175, align 8, !tbaa !5
  %2217 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %2216, i32 0, i32 0
  %2218 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2217) #0
  %2219 = icmp eq i64 %2215, %2218
  br i1 %2219, label %2227, label %2220

2220:                                             ; preds = %2212
  %2221 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %180) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 1 dereferenceable(1) %180) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2221, ptr noundef %179)
          to label %2222 unwind label %2223

2222:                                             ; preds = %2220
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #0
  br label %2227

2223:                                             ; preds = %2220
  %2224 = landingpad { ptr, i32 }
          cleanup
  %2225 = extractvalue { ptr, i32 } %2224, 0
  store ptr %2225, ptr %23, align 8
  %2226 = extractvalue { ptr, i32 } %2224, 1
  store i32 %2226, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #0
  br label %2274

2227:                                             ; preds = %2222, %2212
  br label %2228

2228:                                             ; preds = %2227
  br label %2229

2229:                                             ; preds = %2228
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #0
  store i64 0, ptr %181, align 8, !tbaa !129
  br label %2230

2230:                                             ; preds = %2260, %2229
  %2231 = load i64, ptr %181, align 8, !tbaa !129
  %2232 = load ptr, ptr %175, align 8, !tbaa !5
  %2233 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %2232, i32 0, i32 0
  %2234 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2233) #0
  %2235 = icmp ult i64 %2231, %2234
  br i1 %2235, label %2237, label %2236

2236:                                             ; preds = %2230
  store i32 191, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #0
  br label %2272

2237:                                             ; preds = %2230
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #0
  %2238 = load ptr, ptr %5, align 8, !tbaa !5
  %2239 = load ptr, ptr %178, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.TypeRepr, ptr %2239, i32 0, i32 3
  %2241 = load i64, ptr %181, align 8, !tbaa !129
  %2242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2240, i64 noundef %2241) #0
  %2243 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2242, i32 0, i32 1
  %2244 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %2238, ptr noundef nonnull align 8 dereferenceable(8) %2243)
          to label %2245 unwind label %2263

2245:                                             ; preds = %2237
  store i64 %2244, ptr %182, align 8, !tbaa !129
  %2246 = load ptr, ptr %5, align 8, !tbaa !5
  %2247 = load ptr, ptr %178, align 8, !tbaa !5
  %2248 = getelementptr inbounds %struct.TypeRepr, ptr %2247, i32 0, i32 3
  %2249 = load i64, ptr %181, align 8, !tbaa !129
  %2250 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2248, i64 noundef %2249) #0
  %2251 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2250, i32 0, i32 0
  %2252 = load i64, ptr %2251, align 8, !tbaa !200
  %2253 = load i64, ptr %182, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %183, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2252, i64 noundef %2253)
          to label %2254 unwind label %2263

2254:                                             ; preds = %2245
  %2255 = load ptr, ptr %175, align 8, !tbaa !5
  %2256 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %2255, i32 0, i32 0
  %2257 = load i64, ptr %181, align 8, !tbaa !129
  %2258 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2256, i64 noundef %2257) #0
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2246, ptr noundef %183, ptr noundef nonnull align 8 dereferenceable(48) %2258)
          to label %2259 unwind label %2267

2259:                                             ; preds = %2254
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #0
  br label %2260

2260:                                             ; preds = %2259
  %2261 = load i64, ptr %181, align 8, !tbaa !129
  %2262 = add i64 %2261, 1
  store i64 %2262, ptr %181, align 8, !tbaa !129
  br label %2230, !llvm.loop !202

2263:                                             ; preds = %2245, %2237
  %2264 = landingpad { ptr, i32 }
          cleanup
  %2265 = extractvalue { ptr, i32 } %2264, 0
  store ptr %2265, ptr %23, align 8
  %2266 = extractvalue { ptr, i32 } %2264, 1
  store i32 %2266, ptr %24, align 4
  br label %2271

2267:                                             ; preds = %2254
  %2268 = landingpad { ptr, i32 }
          cleanup
  %2269 = extractvalue { ptr, i32 } %2268, 0
  store ptr %2269, ptr %23, align 8
  %2270 = extractvalue { ptr, i32 } %2268, 1
  store i32 %2270, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %183) #0
  br label %2271

2271:                                             ; preds = %2267, %2263
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #0
  br label %2274

2272:                                             ; preds = %2236
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #0
  br label %2273

2273:                                             ; preds = %2272
  store i8 0, ptr %174, align 1, !tbaa !79
  br label %2172, !llvm.loop !203

2274:                                             ; preds = %2271, %2223, %2207
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  br label %2275

2275:                                             ; preds = %2274, %2203
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #0
  br label %2276

2276:                                             ; preds = %2275, %2199
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #0
  br label %2277

2277:                                             ; preds = %2276, %2177
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #0
  br label %3373

2278:                                             ; preds = %2176
  br label %2279

2279:                                             ; preds = %2278
  store i8 0, ptr %174, align 1, !tbaa !79
  br label %2164, !llvm.loop !204

2280:                                             ; preds = %2167
  br label %3371

2281:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #0
  store i8 1, ptr %184, align 1, !tbaa !79
  br label %2282

2282:                                             ; preds = %2436, %2281
  %2283 = load i8, ptr %184, align 1, !tbaa !79, !range !81, !noundef !82
  %2284 = trunc i8 %2283 to i1
  br i1 %2284, label %2286, label %2285

2285:                                             ; preds = %2282
  store i32 194, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #0
  br label %2437

2286:                                             ; preds = %2282
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #0
  %2287 = load ptr, ptr %32, align 8, !tbaa !5
  %2288 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %2287)
          to label %2289 unwind label %2295

2289:                                             ; preds = %2286
  store ptr %2288, ptr %185, align 8, !tbaa !5
  br label %2290

2290:                                             ; preds = %2430, %2289
  %2291 = load ptr, ptr %185, align 8, !tbaa !5
  %2292 = load i8, ptr %184, align 1, !tbaa !79, !range !81, !noundef !82
  %2293 = trunc i8 %2292 to i1
  br i1 %2293, label %2299, label %2294

2294:                                             ; preds = %2290
  store i32 197, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #0
  br label %2435

2295:                                             ; preds = %2286
  %2296 = landingpad { ptr, i32 }
          cleanup
  %2297 = extractvalue { ptr, i32 } %2296, 0
  store ptr %2297, ptr %23, align 8
  %2298 = extractvalue { ptr, i32 } %2296, 1
  store i32 %2298, ptr %24, align 4
  br label %2434

2299:                                             ; preds = %2290
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %2300 unwind label %2317

2300:                                             ; preds = %2299
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #0
  %2301 = load ptr, ptr %7, align 8, !tbaa !5
  %2302 = load ptr, ptr %29, align 8, !tbaa !5
  %2303 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %2302, i32 0, i32 0
  %2304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2301, ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(32) %2303, i32 noundef 0)
          to label %2305 unwind label %2321

2305:                                             ; preds = %2300
  store ptr %2304, ptr %187, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #0
  %2306 = load ptr, ptr %7, align 8, !tbaa !5
  %2307 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2306, i32 0, i32 1
  %2308 = load ptr, ptr %2307, align 8, !tbaa !120
  %2309 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %2310 = load ptr, ptr %187, align 8, !tbaa !5
  %2311 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2308, ptr noundef nonnull align 8 dereferenceable(424) %2309, ptr noundef nonnull align 8 dereferenceable(8) %2310)
          to label %2312 unwind label %2325

2312:                                             ; preds = %2305
  store ptr %2311, ptr %188, align 8, !tbaa !5
  %2313 = load ptr, ptr %188, align 8, !tbaa !5
  %2314 = icmp ne ptr %2313, null
  br i1 %2314, label %2329, label %2315

2315:                                             ; preds = %2312
  %2316 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %2316, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %3428 unwind label %2325

2317:                                             ; preds = %2299
  %2318 = landingpad { ptr, i32 }
          cleanup
  %2319 = extractvalue { ptr, i32 } %2318, 0
  store ptr %2319, ptr %23, align 8
  %2320 = extractvalue { ptr, i32 } %2318, 1
  store i32 %2320, ptr %24, align 4
  br label %2433

2321:                                             ; preds = %2300
  %2322 = landingpad { ptr, i32 }
          cleanup
  %2323 = extractvalue { ptr, i32 } %2322, 0
  store ptr %2323, ptr %23, align 8
  %2324 = extractvalue { ptr, i32 } %2322, 1
  store i32 %2324, ptr %24, align 4
  br label %2432

2325:                                             ; preds = %2315, %2305
  %2326 = landingpad { ptr, i32 }
          cleanup
  %2327 = extractvalue { ptr, i32 } %2326, 0
  store ptr %2327, ptr %23, align 8
  %2328 = extractvalue { ptr, i32 } %2326, 1
  store i32 %2328, ptr %24, align 4
  br label %2431

2329:                                             ; preds = %2312
  br label %2330

2330:                                             ; preds = %2329
  %2331 = load ptr, ptr %188, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.TypeRepr, ptr %2331, i32 0, i32 3
  %2333 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2332) #0
  %2334 = load ptr, ptr %185, align 8, !tbaa !5
  %2335 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %2334, i32 0, i32 1
  %2336 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2335) #0
  %2337 = icmp eq i64 %2333, %2336
  br i1 %2337, label %2345, label %2338

2338:                                             ; preds = %2330
  %2339 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %190) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %189, ptr noundef nonnull align 1 dereferenceable(1) %190) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2339, ptr noundef %189)
          to label %2340 unwind label %2341

2340:                                             ; preds = %2338
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #0
  br label %2345

2341:                                             ; preds = %2338
  %2342 = landingpad { ptr, i32 }
          cleanup
  %2343 = extractvalue { ptr, i32 } %2342, 0
  store ptr %2343, ptr %23, align 8
  %2344 = extractvalue { ptr, i32 } %2342, 1
  store i32 %2344, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #0
  br label %2431

2345:                                             ; preds = %2340, %2330
  br label %2346

2346:                                             ; preds = %2345
  br label %2347

2347:                                             ; preds = %2346
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #0
  store i64 0, ptr %191, align 8, !tbaa !129
  br label %2348

2348:                                             ; preds = %2423, %2347
  %2349 = load i64, ptr %191, align 8, !tbaa !129
  %2350 = load ptr, ptr %185, align 8, !tbaa !5
  %2351 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %2350, i32 0, i32 1
  %2352 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2351) #0
  %2353 = icmp ult i64 %2349, %2352
  br i1 %2353, label %2355, label %2354

2354:                                             ; preds = %2348
  store i32 202, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  br label %2429

2355:                                             ; preds = %2348
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #0
  %2356 = load ptr, ptr %5, align 8, !tbaa !5
  %2357 = load ptr, ptr %188, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.TypeRepr, ptr %2357, i32 0, i32 3
  %2359 = load i64, ptr %191, align 8, !tbaa !129
  %2360 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2358, i64 noundef %2359) #0
  %2361 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2360, i32 0, i32 1
  %2362 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %2356, ptr noundef nonnull align 8 dereferenceable(8) %2361)
          to label %2363 unwind label %2404

2363:                                             ; preds = %2355
  store i64 %2362, ptr %192, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 16, ptr %193) #0
  %2364 = load ptr, ptr %188, align 8, !tbaa !5
  %2365 = getelementptr inbounds %struct.TypeRepr, ptr %2364, i32 0, i32 3
  %2366 = load i64, ptr %191, align 8, !tbaa !129
  %2367 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2365, i64 noundef %2366) #0
  %2368 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2367, i32 0, i32 0
  %2369 = load i64, ptr %2368, align 8, !tbaa !200
  %2370 = load i64, ptr %192, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %193, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2369, i64 noundef %2370)
          to label %2371 unwind label %2408

2371:                                             ; preds = %2363
  %2372 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %194, ptr noundef nonnull align 8 dereferenceable(16) %193)
          to label %2373 unwind label %2412

2373:                                             ; preds = %2371
  %2374 = load ptr, ptr %185, align 8, !tbaa !5
  %2375 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %2374, i32 0, i32 1
  %2376 = load i64, ptr %191, align 8, !tbaa !129
  %2377 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2375, i64 noundef %2376) #0
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2372, ptr noundef %194, ptr noundef nonnull align 8 dereferenceable(48) %2377)
          to label %2378 unwind label %2416

2378:                                             ; preds = %2373
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #0
  br label %2379

2379:                                             ; preds = %2378
  %2380 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2381 unwind label %2412

2381:                                             ; preds = %2379
  br i1 %2380, label %2382, label %2420

2382:                                             ; preds = %2381
  %2383 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %2384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2383, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %2385 unwind label %2412

2385:                                             ; preds = %2382
  %2386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2384, ptr noundef @.str.21)
          to label %2387 unwind label %2412

2387:                                             ; preds = %2385
  %2388 = load ptr, ptr %188, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.TypeRepr, ptr %2388, i32 0, i32 3
  %2390 = load i64, ptr %191, align 8, !tbaa !129
  %2391 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2389, i64 noundef %2390) #0
  %2392 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2391, i32 0, i32 0
  %2393 = load i64, ptr %2392, align 8, !tbaa !200
  %2394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %2386, i64 noundef %2393)
          to label %2395 unwind label %2412

2395:                                             ; preds = %2387
  %2396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2394, ptr noundef @.str.22)
          to label %2397 unwind label %2412

2397:                                             ; preds = %2395
  %2398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %2396, ptr noundef nonnull align 8 dereferenceable(16) %193)
          to label %2399 unwind label %2412

2399:                                             ; preds = %2397
  %2400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2398, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2401 unwind label %2412

2401:                                             ; preds = %2399
  %2402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2400, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2403 unwind label %2412

2403:                                             ; preds = %2401
  br label %2420

2404:                                             ; preds = %2355
  %2405 = landingpad { ptr, i32 }
          cleanup
  %2406 = extractvalue { ptr, i32 } %2405, 0
  store ptr %2406, ptr %23, align 8
  %2407 = extractvalue { ptr, i32 } %2405, 1
  store i32 %2407, ptr %24, align 4
  br label %2428

2408:                                             ; preds = %2363
  %2409 = landingpad { ptr, i32 }
          cleanup
  %2410 = extractvalue { ptr, i32 } %2409, 0
  store ptr %2410, ptr %23, align 8
  %2411 = extractvalue { ptr, i32 } %2409, 1
  store i32 %2411, ptr %24, align 4
  br label %2427

2412:                                             ; preds = %2401, %2399, %2397, %2395, %2387, %2385, %2382, %2379, %2371
  %2413 = landingpad { ptr, i32 }
          cleanup
  %2414 = extractvalue { ptr, i32 } %2413, 0
  store ptr %2414, ptr %23, align 8
  %2415 = extractvalue { ptr, i32 } %2413, 1
  store i32 %2415, ptr %24, align 4
  br label %2426

2416:                                             ; preds = %2373
  %2417 = landingpad { ptr, i32 }
          cleanup
  %2418 = extractvalue { ptr, i32 } %2417, 0
  store ptr %2418, ptr %23, align 8
  %2419 = extractvalue { ptr, i32 } %2417, 1
  store i32 %2419, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #0
  br label %2426

2420:                                             ; preds = %2403, %2381
  br label %2421

2421:                                             ; preds = %2420
  br label %2422

2422:                                             ; preds = %2421
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #0
  br label %2423

2423:                                             ; preds = %2422
  %2424 = load i64, ptr %191, align 8, !tbaa !129
  %2425 = add i64 %2424, 1
  store i64 %2425, ptr %191, align 8, !tbaa !129
  br label %2348, !llvm.loop !205

2426:                                             ; preds = %2416, %2412
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %193) #0
  br label %2427

2427:                                             ; preds = %2426, %2408
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #0
  br label %2428

2428:                                             ; preds = %2427, %2404
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  br label %2431

2429:                                             ; preds = %2354
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #0
  br label %2430

2430:                                             ; preds = %2429
  store i8 0, ptr %184, align 1, !tbaa !79
  br label %2290, !llvm.loop !206

2431:                                             ; preds = %2428, %2341, %2325
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  br label %2432

2432:                                             ; preds = %2431, %2321
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #0
  br label %2433

2433:                                             ; preds = %2432, %2317
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #0
  br label %2434

2434:                                             ; preds = %2433, %2295
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #0
  br label %3373

2435:                                             ; preds = %2294
  br label %2436

2436:                                             ; preds = %2435
  store i8 0, ptr %184, align 1, !tbaa !79
  br label %2282, !llvm.loop !207

2437:                                             ; preds = %2285
  br label %3371

2438:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %195) #0
  store i8 1, ptr %195, align 1, !tbaa !79
  br label %2439

2439:                                             ; preds = %2669, %2438
  %2440 = load i8, ptr %195, align 1, !tbaa !79, !range !81, !noundef !82
  %2441 = trunc i8 %2440 to i1
  br i1 %2441, label %2443, label %2442

2442:                                             ; preds = %2439
  store i32 207, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #0
  br label %2670

2443:                                             ; preds = %2439
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #0
  %2444 = load ptr, ptr %32, align 8, !tbaa !5
  %2445 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %2444)
          to label %2446 unwind label %2452

2446:                                             ; preds = %2443
  store ptr %2445, ptr %196, align 8, !tbaa !5
  br label %2447

2447:                                             ; preds = %2665, %2446
  %2448 = load ptr, ptr %196, align 8, !tbaa !5
  %2449 = load i8, ptr %195, align 1, !tbaa !79, !range !81, !noundef !82
  %2450 = trunc i8 %2449 to i1
  br i1 %2450, label %2456, label %2451

2451:                                             ; preds = %2447
  store i32 210, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #0
  br label %2668

2452:                                             ; preds = %2443
  %2453 = landingpad { ptr, i32 }
          cleanup
  %2454 = extractvalue { ptr, i32 } %2453, 0
  store ptr %2454, ptr %23, align 8
  %2455 = extractvalue { ptr, i32 } %2453, 1
  store i32 %2455, ptr %24, align 4
  br label %2667

2456:                                             ; preds = %2447
  call void @llvm.lifetime.start.p0(i64 8, ptr %197) #0
  store i64 0, ptr %197, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 1, ptr %198) #0
  store i8 1, ptr %198, align 1, !tbaa !79
  br label %2457

2457:                                             ; preds = %2578, %2456
  %2458 = load i8, ptr %198, align 1, !tbaa !79, !range !81, !noundef !82
  %2459 = trunc i8 %2458 to i1
  br i1 %2459, label %2461, label %2460

2460:                                             ; preds = %2457
  store i32 213, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #0
  br label %2579

2461:                                             ; preds = %2457
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #0
  %2462 = load ptr, ptr %196, align 8, !tbaa !5
  %2463 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %2462, i32 0, i32 1
  store ptr %2463, ptr %199, align 8, !tbaa !5
  br label %2464

2464:                                             ; preds = %2575, %2461
  %2465 = load i8, ptr %198, align 1, !tbaa !79, !range !81, !noundef !82
  %2466 = trunc i8 %2465 to i1
  br i1 %2466, label %2468, label %2467

2467:                                             ; preds = %2464
  store i32 216, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  br label %2577

2468:                                             ; preds = %2464
  %2469 = load ptr, ptr %199, align 8, !tbaa !5
  %2470 = invoke noundef i32 @_ZNK3HIR9ArraySize3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %2469)
          to label %2471 unwind label %2472

2471:                                             ; preds = %2468
  switch i32 %2470, label %2574 [
    i32 0, label %2476
    i32 2, label %2477
    i32 1, label %2502
  ]

2472:                                             ; preds = %2468
  %2473 = landingpad { ptr, i32 }
          cleanup
  %2474 = extractvalue { ptr, i32 } %2473, 0
  store ptr %2474, ptr %23, align 8
  %2475 = extractvalue { ptr, i32 } %2473, 1
  store i32 %2475, ptr %24, align 4
  br label %2576

2476:                                             ; preds = %2471
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2309, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

2477:                                             ; preds = %2471
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #0
  store i8 1, ptr %200, align 1, !tbaa !79
  br label %2478

2478:                                             ; preds = %2500, %2477
  %2479 = load i8, ptr %200, align 1, !tbaa !79, !range !81, !noundef !82
  %2480 = trunc i8 %2479 to i1
  br i1 %2480, label %2482, label %2481

2481:                                             ; preds = %2478
  store i32 220, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #0
  br label %2501

2482:                                             ; preds = %2478
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #0
  %2483 = load ptr, ptr %199, align 8, !tbaa !5
  %2484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %2483)
          to label %2485 unwind label %2491

2485:                                             ; preds = %2482
  store ptr %2484, ptr %201, align 8, !tbaa !5
  br label %2486

2486:                                             ; preds = %2498, %2485
  %2487 = load ptr, ptr %201, align 8, !tbaa !5
  %2488 = load i8, ptr %200, align 1, !tbaa !79, !range !81, !noundef !82
  %2489 = trunc i8 %2488 to i1
  br i1 %2489, label %2495, label %2490

2490:                                             ; preds = %2486
  store i32 223, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  br label %2499

2491:                                             ; preds = %2482
  %2492 = landingpad { ptr, i32 }
          cleanup
  %2493 = extractvalue { ptr, i32 } %2492, 0
  store ptr %2493, ptr %23, align 8
  %2494 = extractvalue { ptr, i32 } %2492, 1
  store i32 %2494, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #0
  br label %2576

2495:                                             ; preds = %2486
  %2496 = load ptr, ptr %201, align 8, !tbaa !5
  %2497 = load i64, ptr %2496, align 8, !tbaa !129
  store i64 %2497, ptr %197, align 8, !tbaa !129
  br label %2498

2498:                                             ; preds = %2495
  store i8 0, ptr %200, align 1, !tbaa !79
  br label %2486, !llvm.loop !208

2499:                                             ; preds = %2490
  br label %2500

2500:                                             ; preds = %2499
  store i8 0, ptr %200, align 1, !tbaa !79
  br label %2478, !llvm.loop !209

2501:                                             ; preds = %2481
  br label %2574

2502:                                             ; preds = %2471
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #0
  store i8 1, ptr %202, align 1, !tbaa !79
  br label %2503

2503:                                             ; preds = %2572, %2502
  %2504 = load i8, ptr %202, align 1, !tbaa !79, !range !81, !noundef !82
  %2505 = trunc i8 %2504 to i1
  br i1 %2505, label %2507, label %2506

2506:                                             ; preds = %2503
  store i32 226, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #0
  br label %2573

2507:                                             ; preds = %2503
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #0
  %2508 = load ptr, ptr %199, align 8, !tbaa !5
  %2509 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %2508)
          to label %2510 unwind label %2516

2510:                                             ; preds = %2507
  store ptr %2509, ptr %203, align 8, !tbaa !5
  br label %2511

2511:                                             ; preds = %2562, %2510
  %2512 = load ptr, ptr %203, align 8, !tbaa !5
  %2513 = load i8, ptr %202, align 1, !tbaa !79, !range !81, !noundef !82
  %2514 = trunc i8 %2513 to i1
  br i1 %2514, label %2520, label %2515

2515:                                             ; preds = %2511
  store i32 229, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #0
  br label %2571

2516:                                             ; preds = %2507
  %2517 = landingpad { ptr, i32 }
          cleanup
  %2518 = extractvalue { ptr, i32 } %2517, 0
  store ptr %2518, ptr %23, align 8
  %2519 = extractvalue { ptr, i32 } %2517, 1
  store i32 %2519, ptr %24, align 4
  br label %2570

2520:                                             ; preds = %2511
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #0
  %2521 = load ptr, ptr %203, align 8, !tbaa !5
  store ptr %2521, ptr %204, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %205) #0
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205)
          to label %2522 unwind label %2538

2522:                                             ; preds = %2520
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #0
  %2523 = load ptr, ptr %203, align 8, !tbaa !5
  %2524 = invoke noundef ptr @_ZNK3HIR12ConstGeneric11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(24) %2523)
          to label %2525 unwind label %2542

2525:                                             ; preds = %2522
  store ptr %2524, ptr %206, align 8, !tbaa !5
  %2526 = load ptr, ptr %206, align 8, !tbaa !5
  %2527 = icmp ne ptr %2526, null
  br i1 %2527, label %2528, label %2555

2528:                                             ; preds = %2525
  call void @llvm.lifetime.start.p0(i64 24, ptr %207) #0
  %2529 = load ptr, ptr %5, align 8, !tbaa !5
  %2530 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %2529, i32 0, i32 6
  %2531 = load ptr, ptr %7, align 8, !tbaa !5
  %2532 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2531, i32 0, i32 1
  %2533 = load ptr, ptr %2532, align 8, !tbaa !120
  %2534 = load ptr, ptr %206, align 8, !tbaa !5
  invoke void @_ZNK15MonomorphiserPP9get_valueERK4SpanRKN3HIR10GenericRefE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8 %207, ptr noundef nonnull align 8 dereferenceable(96) %2530, ptr noundef nonnull align 8 dereferenceable(8) %2533, ptr noundef nonnull align 8 dereferenceable(12) %2534)
          to label %2535 unwind label %2546

2535:                                             ; preds = %2528
  %2536 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull align 8 dereferenceable(24) %207)
          to label %2537 unwind label %2550

2537:                                             ; preds = %2535
  store ptr %2536, ptr %204, align 8, !tbaa !5
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %207) #0
  br label %2555

2538:                                             ; preds = %2520
  %2539 = landingpad { ptr, i32 }
          cleanup
  %2540 = extractvalue { ptr, i32 } %2539, 0
  store ptr %2540, ptr %23, align 8
  %2541 = extractvalue { ptr, i32 } %2539, 1
  store i32 %2541, ptr %24, align 4
  br label %2569

2542:                                             ; preds = %2522
  %2543 = landingpad { ptr, i32 }
          cleanup
  %2544 = extractvalue { ptr, i32 } %2543, 0
  store ptr %2544, ptr %23, align 8
  %2545 = extractvalue { ptr, i32 } %2543, 1
  store i32 %2545, ptr %24, align 4
  br label %2563

2546:                                             ; preds = %2528
  %2547 = landingpad { ptr, i32 }
          cleanup
  %2548 = extractvalue { ptr, i32 } %2547, 0
  store ptr %2548, ptr %23, align 8
  %2549 = extractvalue { ptr, i32 } %2547, 1
  store i32 %2549, ptr %24, align 4
  br label %2554

2550:                                             ; preds = %2535
  %2551 = landingpad { ptr, i32 }
          cleanup
  %2552 = extractvalue { ptr, i32 } %2551, 0
  store ptr %2552, ptr %23, align 8
  %2553 = extractvalue { ptr, i32 } %2551, 1
  store i32 %2553, ptr %24, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #0
  br label %2554

2554:                                             ; preds = %2550, %2546
  call void @llvm.lifetime.end.p0(i64 24, ptr %207) #0
  br label %2563

2555:                                             ; preds = %2537, %2525
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %208) #0
  call void @_ZN14EncodedLiteralC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %208) #0
  %2556 = load ptr, ptr %5, align 8, !tbaa !5
  %2557 = load ptr, ptr %204, align 8, !tbaa !5
  %2558 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3MIR4eval14CallStackEntry9get_constERKN3HIR12ConstGenericER14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(816) %2556, ptr noundef nonnull align 8 dereferenceable(24) %2557, ptr noundef nonnull align 8 dereferenceable(48) %208)
          to label %2559 unwind label %2564

2559:                                             ; preds = %2555
  %2560 = invoke noundef i64 @_ZNK14EncodedLiteral10read_usizeEm(ptr noundef nonnull align 8 dereferenceable(48) %2558, i64 noundef 0)
          to label %2561 unwind label %2564

2561:                                             ; preds = %2559
  store i64 %2560, ptr %197, align 8, !tbaa !129
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %208) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %208) #0
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %205) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #0
  br label %2562

2562:                                             ; preds = %2561
  store i8 0, ptr %202, align 1, !tbaa !79
  br label %2511, !llvm.loop !210

2563:                                             ; preds = %2554, %2542
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  br label %2568

2564:                                             ; preds = %2559, %2555
  %2565 = landingpad { ptr, i32 }
          cleanup
  %2566 = extractvalue { ptr, i32 } %2565, 0
  store ptr %2566, ptr %23, align 8
  %2567 = extractvalue { ptr, i32 } %2565, 1
  store i32 %2567, ptr %24, align 4
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %208) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %208) #0
  br label %2568

2568:                                             ; preds = %2564, %2563
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %205) #0
  br label %2569

2569:                                             ; preds = %2568, %2538
  call void @llvm.lifetime.end.p0(i64 24, ptr %205) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #0
  br label %2570

2570:                                             ; preds = %2569, %2516
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #0
  br label %2576

2571:                                             ; preds = %2515
  br label %2572

2572:                                             ; preds = %2571
  store i8 0, ptr %202, align 1, !tbaa !79
  br label %2503, !llvm.loop !211

2573:                                             ; preds = %2506
  br label %2574

2574:                                             ; preds = %2573, %2501, %2471
  br label %2575

2575:                                             ; preds = %2574
  store i8 0, ptr %198, align 1, !tbaa !79
  br label %2464, !llvm.loop !212

2576:                                             ; preds = %2570, %2491, %2472
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #0
  br label %2666

2577:                                             ; preds = %2467
  br label %2578

2578:                                             ; preds = %2577
  store i8 0, ptr %198, align 1, !tbaa !79
  br label %2457, !llvm.loop !213

2579:                                             ; preds = %2460
  %2580 = load i64, ptr %197, align 8, !tbaa !129
  %2581 = icmp ugt i64 %2580, 0
  br i1 %2581, label %2582, label %2664

2582:                                             ; preds = %2579
  call void @llvm.lifetime.start.p0(i64 8, ptr %209) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %2583 unwind label %2611

2583:                                             ; preds = %2582
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #0
  %2584 = load ptr, ptr %7, align 8, !tbaa !5
  %2585 = load ptr, ptr %29, align 8, !tbaa !5
  %2586 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %2585, i32 0, i32 0
  %2587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2584, ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull align 8 dereferenceable(32) %2586, i32 noundef 0)
          to label %2588 unwind label %2615

2588:                                             ; preds = %2583
  store ptr %2587, ptr %210, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #0
  %2589 = load ptr, ptr %210, align 8, !tbaa !5
  %2590 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2589)
          to label %2591 unwind label %2619

2591:                                             ; preds = %2588
  %2592 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2590)
          to label %2593 unwind label %2619

2593:                                             ; preds = %2591
  %2594 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %2592, i32 0, i32 0
  store ptr %2594, ptr %211, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #0
  %2595 = load ptr, ptr %5, align 8, !tbaa !5
  %2596 = load ptr, ptr %211, align 8, !tbaa !5
  %2597 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %2595, ptr noundef nonnull align 8 dereferenceable(8) %2596)
          to label %2598 unwind label %2623

2598:                                             ; preds = %2593
  store i64 %2597, ptr %212, align 8, !tbaa !129
  %2599 = load ptr, ptr %5, align 8, !tbaa !5
  %2600 = load i64, ptr %212, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %213, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef 0, i64 noundef %2600)
          to label %2601 unwind label %2623

2601:                                             ; preds = %2598
  %2602 = load ptr, ptr %196, align 8, !tbaa !5
  %2603 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %2602, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2599, ptr noundef %213, ptr noundef nonnull align 8 dereferenceable(48) %2603)
          to label %2604 unwind label %2627

2604:                                             ; preds = %2601
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %214) #0
  store i32 1, ptr %214, align 4, !tbaa !9
  br label %2605

2605:                                             ; preds = %2642, %2604
  %2606 = load i32, ptr %214, align 4, !tbaa !9
  %2607 = zext i32 %2606 to i64
  %2608 = load i64, ptr %197, align 8, !tbaa !129
  %2609 = icmp ult i64 %2607, %2608
  br i1 %2609, label %2631, label %2610

2610:                                             ; preds = %2605
  store i32 232, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %214) #0
  br label %2659

2611:                                             ; preds = %2582
  %2612 = landingpad { ptr, i32 }
          cleanup
  %2613 = extractvalue { ptr, i32 } %2612, 0
  store ptr %2613, ptr %23, align 8
  %2614 = extractvalue { ptr, i32 } %2612, 1
  store i32 %2614, ptr %24, align 4
  br label %2663

2615:                                             ; preds = %2583
  %2616 = landingpad { ptr, i32 }
          cleanup
  %2617 = extractvalue { ptr, i32 } %2616, 0
  store ptr %2617, ptr %23, align 8
  %2618 = extractvalue { ptr, i32 } %2616, 1
  store i32 %2618, ptr %24, align 4
  br label %2662

2619:                                             ; preds = %2591, %2588
  %2620 = landingpad { ptr, i32 }
          cleanup
  %2621 = extractvalue { ptr, i32 } %2620, 0
  store ptr %2621, ptr %23, align 8
  %2622 = extractvalue { ptr, i32 } %2620, 1
  store i32 %2622, ptr %24, align 4
  br label %2661

2623:                                             ; preds = %2598, %2593
  %2624 = landingpad { ptr, i32 }
          cleanup
  %2625 = extractvalue { ptr, i32 } %2624, 0
  store ptr %2625, ptr %23, align 8
  %2626 = extractvalue { ptr, i32 } %2624, 1
  store i32 %2626, ptr %24, align 4
  br label %2660

2627:                                             ; preds = %2601
  %2628 = landingpad { ptr, i32 }
          cleanup
  %2629 = extractvalue { ptr, i32 } %2628, 0
  store ptr %2629, ptr %23, align 8
  %2630 = extractvalue { ptr, i32 } %2628, 1
  store i32 %2630, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #0
  br label %2660

2631:                                             ; preds = %2605
  call void @llvm.lifetime.start.p0(i64 16, ptr %215) #0
  %2632 = load i64, ptr %212, align 8, !tbaa !129
  %2633 = load i32, ptr %214, align 4, !tbaa !9
  %2634 = zext i32 %2633 to i64
  %2635 = mul i64 %2632, %2634
  %2636 = load i64, ptr %212, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %215, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2635, i64 noundef %2636)
          to label %2637 unwind label %2645

2637:                                             ; preds = %2631
  %2638 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %216) #0
  %2639 = load i64, ptr %212, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %216, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef 0, i64 noundef %2639)
          to label %2640 unwind label %2649

2640:                                             ; preds = %2637
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 8 dereferenceable(120) %2638, ptr noundef nonnull align 8 dereferenceable(16) %216)
          to label %2641 unwind label %2653

2641:                                             ; preds = %2640
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %215) #0
  br label %2642

2642:                                             ; preds = %2641
  %2643 = load i32, ptr %214, align 4, !tbaa !9
  %2644 = add i32 %2643, 1
  store i32 %2644, ptr %214, align 4, !tbaa !9
  br label %2605, !llvm.loop !214

2645:                                             ; preds = %2631
  %2646 = landingpad { ptr, i32 }
          cleanup
  %2647 = extractvalue { ptr, i32 } %2646, 0
  store ptr %2647, ptr %23, align 8
  %2648 = extractvalue { ptr, i32 } %2646, 1
  store i32 %2648, ptr %24, align 4
  br label %2658

2649:                                             ; preds = %2637
  %2650 = landingpad { ptr, i32 }
          cleanup
  %2651 = extractvalue { ptr, i32 } %2650, 0
  store ptr %2651, ptr %23, align 8
  %2652 = extractvalue { ptr, i32 } %2650, 1
  store i32 %2652, ptr %24, align 4
  br label %2657

2653:                                             ; preds = %2640
  %2654 = landingpad { ptr, i32 }
          cleanup
  %2655 = extractvalue { ptr, i32 } %2654, 0
  store ptr %2655, ptr %23, align 8
  %2656 = extractvalue { ptr, i32 } %2654, 1
  store i32 %2656, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %216) #0
  br label %2657

2657:                                             ; preds = %2653, %2649
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %215) #0
  br label %2658

2658:                                             ; preds = %2657, %2645
  call void @llvm.lifetime.end.p0(i64 16, ptr %215) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %214) #0
  br label %2660

2659:                                             ; preds = %2610
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #0
  br label %2664

2660:                                             ; preds = %2658, %2627, %2623
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #0
  br label %2661

2661:                                             ; preds = %2660, %2619
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  br label %2662

2662:                                             ; preds = %2661, %2615
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #0
  br label %2663

2663:                                             ; preds = %2662, %2611
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #0
  br label %2666

2664:                                             ; preds = %2659, %2579
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #0
  br label %2665

2665:                                             ; preds = %2664
  store i8 0, ptr %195, align 1, !tbaa !79
  br label %2447, !llvm.loop !215

2666:                                             ; preds = %2663, %2576
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #0
  br label %2667

2667:                                             ; preds = %2666, %2452
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #0
  br label %3373

2668:                                             ; preds = %2451
  br label %2669

2669:                                             ; preds = %2668
  store i8 0, ptr %195, align 1, !tbaa !79
  br label %2439, !llvm.loop !216

2670:                                             ; preds = %2442
  br label %3371

2671:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %217) #0
  store i8 1, ptr %217, align 1, !tbaa !79
  br label %2672

2672:                                             ; preds = %2763, %2671
  %2673 = load i8, ptr %217, align 1, !tbaa !79, !range !81, !noundef !82
  %2674 = trunc i8 %2673 to i1
  br i1 %2674, label %2676, label %2675

2675:                                             ; preds = %2672
  store i32 235, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %217) #0
  br label %2764

2676:                                             ; preds = %2672
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #0
  %2677 = load ptr, ptr %32, align 8, !tbaa !5
  %2678 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %2677)
          to label %2679 unwind label %2685

2679:                                             ; preds = %2676
  store ptr %2678, ptr %218, align 8, !tbaa !5
  br label %2680

2680:                                             ; preds = %2756, %2679
  %2681 = load ptr, ptr %218, align 8, !tbaa !5
  %2682 = load i8, ptr %217, align 1, !tbaa !79, !range !81, !noundef !82
  %2683 = trunc i8 %2682 to i1
  br i1 %2683, label %2689, label %2684

2684:                                             ; preds = %2680
  store i32 238, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #0
  br label %2762

2685:                                             ; preds = %2676
  %2686 = landingpad { ptr, i32 }
          cleanup
  %2687 = extractvalue { ptr, i32 } %2686, 0
  store ptr %2687, ptr %23, align 8
  %2688 = extractvalue { ptr, i32 } %2686, 1
  store i32 %2688, ptr %24, align 4
  br label %2761

2689:                                             ; preds = %2680
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %2690 unwind label %2717

2690:                                             ; preds = %2689
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #0
  %2691 = load ptr, ptr %7, align 8, !tbaa !5
  %2692 = load ptr, ptr %29, align 8, !tbaa !5
  %2693 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %2692, i32 0, i32 0
  %2694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2691, ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull align 8 dereferenceable(32) %2693, i32 noundef 0)
          to label %2695 unwind label %2721

2695:                                             ; preds = %2690
  store ptr %2694, ptr %220, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #0
  %2696 = load ptr, ptr %220, align 8, !tbaa !5
  %2697 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2696)
          to label %2698 unwind label %2725

2698:                                             ; preds = %2695
  %2699 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %2697)
          to label %2700 unwind label %2725

2700:                                             ; preds = %2698
  %2701 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %2699, i32 0, i32 0
  store ptr %2701, ptr %221, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #0
  %2702 = load ptr, ptr %5, align 8, !tbaa !5
  %2703 = load ptr, ptr %221, align 8, !tbaa !5
  %2704 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %2702, ptr noundef nonnull align 8 dereferenceable(8) %2703)
          to label %2705 unwind label %2729

2705:                                             ; preds = %2700
  store i64 %2704, ptr %222, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #0
  store i64 0, ptr %223, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #0
  %2706 = load ptr, ptr %218, align 8, !tbaa !5
  %2707 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %2706, i32 0, i32 0
  store ptr %2707, ptr %224, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #0
  %2708 = load ptr, ptr %224, align 8, !tbaa !5
  %2709 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2708) #0
  %2710 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.240", ptr %225, i32 0, i32 0
  store ptr %2709, ptr %2710, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #0
  %2711 = load ptr, ptr %224, align 8, !tbaa !5
  %2712 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2711) #0
  %2713 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.240", ptr %226, i32 0, i32 0
  store ptr %2712, ptr %2713, align 8
  br label %2714

2714:                                             ; preds = %2744, %2705
  %2715 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(8) %226) #0
  br i1 %2715, label %2733, label %2716

2716:                                             ; preds = %2714
  store i32 241, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  br label %2755

2717:                                             ; preds = %2689
  %2718 = landingpad { ptr, i32 }
          cleanup
  %2719 = extractvalue { ptr, i32 } %2718, 0
  store ptr %2719, ptr %23, align 8
  %2720 = extractvalue { ptr, i32 } %2718, 1
  store i32 %2720, ptr %24, align 4
  br label %2760

2721:                                             ; preds = %2690
  %2722 = landingpad { ptr, i32 }
          cleanup
  %2723 = extractvalue { ptr, i32 } %2722, 0
  store ptr %2723, ptr %23, align 8
  %2724 = extractvalue { ptr, i32 } %2722, 1
  store i32 %2724, ptr %24, align 4
  br label %2759

2725:                                             ; preds = %2698, %2695
  %2726 = landingpad { ptr, i32 }
          cleanup
  %2727 = extractvalue { ptr, i32 } %2726, 0
  store ptr %2727, ptr %23, align 8
  %2728 = extractvalue { ptr, i32 } %2726, 1
  store i32 %2728, ptr %24, align 4
  br label %2758

2729:                                             ; preds = %2700
  %2730 = landingpad { ptr, i32 }
          cleanup
  %2731 = extractvalue { ptr, i32 } %2730, 0
  store ptr %2731, ptr %23, align 8
  %2732 = extractvalue { ptr, i32 } %2730, 1
  store i32 %2732, ptr %24, align 4
  br label %2757

2733:                                             ; preds = %2714
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #0
  %2734 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %225) #0
  store ptr %2734, ptr %227, align 8, !tbaa !5
  %2735 = load ptr, ptr %5, align 8, !tbaa !5
  %2736 = load i64, ptr %223, align 8, !tbaa !129
  %2737 = load i64, ptr %222, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %228, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2736, i64 noundef %2737)
          to label %2738 unwind label %2746

2738:                                             ; preds = %2733
  %2739 = load ptr, ptr %227, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2735, ptr noundef %228, ptr noundef nonnull align 8 dereferenceable(48) %2739)
          to label %2740 unwind label %2750

2740:                                             ; preds = %2738
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #0
  %2741 = load i64, ptr %222, align 8, !tbaa !129
  %2742 = load i64, ptr %223, align 8, !tbaa !129
  %2743 = add i64 %2742, %2741
  store i64 %2743, ptr %223, align 8, !tbaa !129
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #0
  br label %2744

2744:                                             ; preds = %2740
  %2745 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %225) #0
  br label %2714

2746:                                             ; preds = %2733
  %2747 = landingpad { ptr, i32 }
          cleanup
  %2748 = extractvalue { ptr, i32 } %2747, 0
  store ptr %2748, ptr %23, align 8
  %2749 = extractvalue { ptr, i32 } %2747, 1
  store i32 %2749, ptr %24, align 4
  br label %2754

2750:                                             ; preds = %2738
  %2751 = landingpad { ptr, i32 }
          cleanup
  %2752 = extractvalue { ptr, i32 } %2751, 0
  store ptr %2752, ptr %23, align 8
  %2753 = extractvalue { ptr, i32 } %2751, 1
  store i32 %2753, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %228) #0
  br label %2754

2754:                                             ; preds = %2750, %2746
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  br label %2757

2755:                                             ; preds = %2716
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  br label %2756

2756:                                             ; preds = %2755
  store i8 0, ptr %217, align 1, !tbaa !79
  br label %2680, !llvm.loop !217

2757:                                             ; preds = %2754, %2729
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #0
  br label %2758

2758:                                             ; preds = %2757, %2725
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #0
  br label %2759

2759:                                             ; preds = %2758, %2721
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #0
  br label %2760

2760:                                             ; preds = %2759, %2717
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  br label %2761

2761:                                             ; preds = %2760, %2685
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %217) #0
  br label %3373

2762:                                             ; preds = %2684
  br label %2763

2763:                                             ; preds = %2762
  store i8 0, ptr %217, align 1, !tbaa !79
  br label %2672, !llvm.loop !218

2764:                                             ; preds = %2675
  br label %3371

2765:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #0
  store i8 1, ptr %229, align 1, !tbaa !79
  br label %2766

2766:                                             ; preds = %2796, %2765
  %2767 = load i8, ptr %229, align 1, !tbaa !79, !range !81, !noundef !82
  %2768 = trunc i8 %2767 to i1
  br i1 %2768, label %2770, label %2769

2769:                                             ; preds = %2766
  store i32 243, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #0
  br label %2797

2770:                                             ; preds = %2766
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #0
  %2771 = load ptr, ptr %32, align 8, !tbaa !5
  %2772 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %2771)
          to label %2773 unwind label %2779

2773:                                             ; preds = %2770
  store ptr %2772, ptr %230, align 8, !tbaa !5
  br label %2774

2774:                                             ; preds = %2789, %2773
  %2775 = load ptr, ptr %230, align 8, !tbaa !5
  %2776 = load i8, ptr %229, align 1, !tbaa !79, !range !81, !noundef !82
  %2777 = trunc i8 %2776 to i1
  br i1 %2777, label %2783, label %2778

2778:                                             ; preds = %2774
  store i32 246, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  br label %2795

2779:                                             ; preds = %2783, %2770
  %2780 = landingpad { ptr, i32 }
          cleanup
  %2781 = extractvalue { ptr, i32 } %2780, 0
  store ptr %2781, ptr %23, align 8
  %2782 = extractvalue { ptr, i32 } %2780, 1
  store i32 %2782, ptr %24, align 4
  br label %2794

2783:                                             ; preds = %2774
  %2784 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %231, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %2785 unwind label %2779

2785:                                             ; preds = %2783
  %2786 = load ptr, ptr %230, align 8, !tbaa !5
  %2787 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %2786, i32 0, i32 2
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2784, ptr noundef %231, ptr noundef nonnull align 8 dereferenceable(48) %2787)
          to label %2788 unwind label %2790

2788:                                             ; preds = %2785
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #0
  br label %2789

2789:                                             ; preds = %2788
  store i8 0, ptr %229, align 1, !tbaa !79
  br label %2774, !llvm.loop !219

2790:                                             ; preds = %2785
  %2791 = landingpad { ptr, i32 }
          cleanup
  %2792 = extractvalue { ptr, i32 } %2791, 0
  store ptr %2792, ptr %23, align 8
  %2793 = extractvalue { ptr, i32 } %2791, 1
  store i32 %2793, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %231) #0
  br label %2794

2794:                                             ; preds = %2790, %2779
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #0
  br label %3373

2795:                                             ; preds = %2778
  br label %2796

2796:                                             ; preds = %2795
  store i8 0, ptr %229, align 1, !tbaa !79
  br label %2766, !llvm.loop !220

2797:                                             ; preds = %2769
  br label %3371

2798:                                             ; preds = %490
  call void @llvm.lifetime.start.p0(i64 1, ptr %232) #0
  store i8 1, ptr %232, align 1, !tbaa !79
  br label %2799

2799:                                             ; preds = %3369, %2798
  %2800 = load i8, ptr %232, align 1, !tbaa !79, !range !81, !noundef !82
  %2801 = trunc i8 %2800 to i1
  br i1 %2801, label %2803, label %2802

2802:                                             ; preds = %2799
  store i32 249, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #0
  br label %3370

2803:                                             ; preds = %2799
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #0
  %2804 = load ptr, ptr %32, align 8, !tbaa !5
  %2805 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %2804)
          to label %2806 unwind label %2812

2806:                                             ; preds = %2803
  store ptr %2805, ptr %233, align 8, !tbaa !5
  br label %2807

2807:                                             ; preds = %3363, %2806
  %2808 = load ptr, ptr %233, align 8, !tbaa !5
  %2809 = load i8, ptr %232, align 1, !tbaa !79, !range !81, !noundef !82
  %2810 = trunc i8 %2809 to i1
  br i1 %2810, label %2816, label %2811

2811:                                             ; preds = %2807
  store i32 252, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  br label %3368

2812:                                             ; preds = %2803
  %2813 = landingpad { ptr, i32 }
          cleanup
  %2814 = extractvalue { ptr, i32 } %2813, 0
  store ptr %2814, ptr %23, align 8
  %2815 = extractvalue { ptr, i32 } %2813, 1
  store i32 %2815, ptr %24, align 4
  br label %3367

2816:                                             ; preds = %2807
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %2817 unwind label %2834

2817:                                             ; preds = %2816
  call void @llvm.lifetime.start.p0(i64 8, ptr %235) #0
  %2818 = load ptr, ptr %7, align 8, !tbaa !5
  %2819 = load ptr, ptr %29, align 8, !tbaa !5
  %2820 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %2819, i32 0, i32 0
  %2821 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2818, ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull align 8 dereferenceable(32) %2820, i32 noundef 0)
          to label %2822 unwind label %2838

2822:                                             ; preds = %2817
  store ptr %2821, ptr %235, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #0
  %2823 = load ptr, ptr %7, align 8, !tbaa !5
  %2824 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2823, i32 0, i32 1
  %2825 = load ptr, ptr %2824, align 8, !tbaa !120
  %2826 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %2827 = load ptr, ptr %235, align 8, !tbaa !5
  %2828 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2825, ptr noundef nonnull align 8 dereferenceable(424) %2826, ptr noundef nonnull align 8 dereferenceable(8) %2827)
          to label %2829 unwind label %2842

2829:                                             ; preds = %2822
  store ptr %2828, ptr %236, align 8, !tbaa !5
  %2830 = load ptr, ptr %236, align 8, !tbaa !5
  %2831 = icmp ne ptr %2830, null
  br i1 %2831, label %2846, label %2832

2832:                                             ; preds = %2829
  %2833 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %2833, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %3428 unwind label %2842

2834:                                             ; preds = %2816
  %2835 = landingpad { ptr, i32 }
          cleanup
  %2836 = extractvalue { ptr, i32 } %2835, 0
  store ptr %2836, ptr %23, align 8
  %2837 = extractvalue { ptr, i32 } %2835, 1
  store i32 %2837, ptr %24, align 4
  br label %3366

2838:                                             ; preds = %2817
  %2839 = landingpad { ptr, i32 }
          cleanup
  %2840 = extractvalue { ptr, i32 } %2839, 0
  store ptr %2840, ptr %23, align 8
  %2841 = extractvalue { ptr, i32 } %2839, 1
  store i32 %2841, ptr %24, align 4
  br label %3365

2842:                                             ; preds = %2832, %2822
  %2843 = landingpad { ptr, i32 }
          cleanup
  %2844 = extractvalue { ptr, i32 } %2843, 0
  store ptr %2844, ptr %23, align 8
  %2845 = extractvalue { ptr, i32 } %2843, 1
  store i32 %2845, ptr %24, align 4
  br label %3364

2846:                                             ; preds = %2829
  %2847 = load ptr, ptr %233, align 8, !tbaa !5
  %2848 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %2847, i32 0, i32 2
  %2849 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2848) #0
  %2850 = icmp ugt i64 %2849, 0
  br i1 %2850, label %2851, label %2972

2851:                                             ; preds = %2846
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #0
  %2852 = load ptr, ptr %236, align 8, !tbaa !5
  %2853 = getelementptr inbounds %struct.TypeRepr, ptr %2852, i32 0, i32 3
  %2854 = load ptr, ptr %233, align 8, !tbaa !5
  %2855 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %2854, i32 0, i32 1
  %2856 = load i32, ptr %2855, align 8, !tbaa !221
  %2857 = zext i32 %2856 to i64
  %2858 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2853, i64 noundef %2857) #0
  %2859 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2858, i32 0, i32 0
  %2860 = load i64, ptr %2859, align 8, !tbaa !200
  store i64 %2860, ptr %237, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %238) #0
  %2861 = load ptr, ptr %236, align 8, !tbaa !5
  %2862 = getelementptr inbounds %struct.TypeRepr, ptr %2861, i32 0, i32 3
  %2863 = load ptr, ptr %233, align 8, !tbaa !5
  %2864 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %2863, i32 0, i32 1
  %2865 = load i32, ptr %2864, align 8, !tbaa !221
  %2866 = zext i32 %2865 to i64
  %2867 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2862, i64 noundef %2866) #0
  %2868 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2867, i32 0, i32 1
  store ptr %2868, ptr %238, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #0
  %2869 = load ptr, ptr %7, align 8, !tbaa !5
  %2870 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %2869, i32 0, i32 1
  %2871 = load ptr, ptr %2870, align 8, !tbaa !120
  %2872 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %2873 = load ptr, ptr %238, align 8, !tbaa !5
  %2874 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2871, ptr noundef nonnull align 8 dereferenceable(424) %2872, ptr noundef nonnull align 8 dereferenceable(8) %2873)
          to label %2875 unwind label %2880

2875:                                             ; preds = %2851
  store ptr %2874, ptr %239, align 8, !tbaa !5
  %2876 = load ptr, ptr %239, align 8, !tbaa !5
  %2877 = icmp ne ptr %2876, null
  br i1 %2877, label %2884, label %2878

2878:                                             ; preds = %2875
  %2879 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %2879, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %3428 unwind label %2880

2880:                                             ; preds = %2878, %2851
  %2881 = landingpad { ptr, i32 }
          cleanup
  %2882 = extractvalue { ptr, i32 } %2881, 0
  store ptr %2882, ptr %23, align 8
  %2883 = extractvalue { ptr, i32 } %2881, 1
  store i32 %2883, ptr %24, align 4
  br label %2971

2884:                                             ; preds = %2875
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #0
  store i64 0, ptr %240, align 8, !tbaa !129
  br label %2885

2885:                                             ; preds = %2964, %2884
  %2886 = load i64, ptr %240, align 8, !tbaa !129
  %2887 = load ptr, ptr %233, align 8, !tbaa !5
  %2888 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %2887, i32 0, i32 2
  %2889 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2888) #0
  %2890 = icmp ult i64 %2886, %2889
  br i1 %2890, label %2892, label %2891

2891:                                             ; preds = %2885
  store i32 255, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #0
  br label %2970

2892:                                             ; preds = %2885
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #0
  %2893 = load ptr, ptr %5, align 8, !tbaa !5
  %2894 = load ptr, ptr %239, align 8, !tbaa !5
  %2895 = getelementptr inbounds %struct.TypeRepr, ptr %2894, i32 0, i32 3
  %2896 = load i64, ptr %240, align 8, !tbaa !129
  %2897 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2895, i64 noundef %2896) #0
  %2898 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2897, i32 0, i32 1
  %2899 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %2893, ptr noundef nonnull align 8 dereferenceable(8) %2898)
          to label %2900 unwind label %2945

2900:                                             ; preds = %2892
  store i64 %2899, ptr %241, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 16, ptr %242) #0
  %2901 = load i64, ptr %237, align 8, !tbaa !129
  %2902 = load ptr, ptr %239, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.TypeRepr, ptr %2902, i32 0, i32 3
  %2904 = load i64, ptr %240, align 8, !tbaa !129
  %2905 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2903, i64 noundef %2904) #0
  %2906 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2905, i32 0, i32 0
  %2907 = load i64, ptr %2906, align 8, !tbaa !200
  %2908 = add i64 %2901, %2907
  %2909 = load i64, ptr %241, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %242, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %2908, i64 noundef %2909)
          to label %2910 unwind label %2949

2910:                                             ; preds = %2900
  %2911 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %243, ptr noundef nonnull align 8 dereferenceable(16) %242)
          to label %2912 unwind label %2953

2912:                                             ; preds = %2910
  %2913 = load ptr, ptr %233, align 8, !tbaa !5
  %2914 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %2913, i32 0, i32 2
  %2915 = load i64, ptr %240, align 8, !tbaa !129
  %2916 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2914, i64 noundef %2915) #0
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2911, ptr noundef %243, ptr noundef nonnull align 8 dereferenceable(48) %2916)
          to label %2917 unwind label %2957

2917:                                             ; preds = %2912
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %243) #0
  br label %2918

2918:                                             ; preds = %2917
  %2919 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2920 unwind label %2953

2920:                                             ; preds = %2918
  br i1 %2919, label %2921, label %2961

2921:                                             ; preds = %2920
  %2922 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %2923 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2922, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %2924 unwind label %2953

2924:                                             ; preds = %2921
  %2925 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2923, ptr noundef @.str.21)
          to label %2926 unwind label %2953

2926:                                             ; preds = %2924
  %2927 = load i64, ptr %237, align 8, !tbaa !129
  %2928 = load ptr, ptr %239, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.TypeRepr, ptr %2928, i32 0, i32 3
  %2930 = load i64, ptr %240, align 8, !tbaa !129
  %2931 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2929, i64 noundef %2930) #0
  %2932 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %2931, i32 0, i32 0
  %2933 = load i64, ptr %2932, align 8, !tbaa !200
  %2934 = add i64 %2927, %2933
  %2935 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %2925, i64 noundef %2934)
          to label %2936 unwind label %2953

2936:                                             ; preds = %2926
  %2937 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2935, ptr noundef @.str.22)
          to label %2938 unwind label %2953

2938:                                             ; preds = %2936
  %2939 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %2937, ptr noundef nonnull align 8 dereferenceable(16) %242)
          to label %2940 unwind label %2953

2940:                                             ; preds = %2938
  %2941 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2939, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2942 unwind label %2953

2942:                                             ; preds = %2940
  %2943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2941, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2944 unwind label %2953

2944:                                             ; preds = %2942
  br label %2961

2945:                                             ; preds = %2892
  %2946 = landingpad { ptr, i32 }
          cleanup
  %2947 = extractvalue { ptr, i32 } %2946, 0
  store ptr %2947, ptr %23, align 8
  %2948 = extractvalue { ptr, i32 } %2946, 1
  store i32 %2948, ptr %24, align 4
  br label %2969

2949:                                             ; preds = %2900
  %2950 = landingpad { ptr, i32 }
          cleanup
  %2951 = extractvalue { ptr, i32 } %2950, 0
  store ptr %2951, ptr %23, align 8
  %2952 = extractvalue { ptr, i32 } %2950, 1
  store i32 %2952, ptr %24, align 4
  br label %2968

2953:                                             ; preds = %2942, %2940, %2938, %2936, %2926, %2924, %2921, %2918, %2910
  %2954 = landingpad { ptr, i32 }
          cleanup
  %2955 = extractvalue { ptr, i32 } %2954, 0
  store ptr %2955, ptr %23, align 8
  %2956 = extractvalue { ptr, i32 } %2954, 1
  store i32 %2956, ptr %24, align 4
  br label %2967

2957:                                             ; preds = %2912
  %2958 = landingpad { ptr, i32 }
          cleanup
  %2959 = extractvalue { ptr, i32 } %2958, 0
  store ptr %2959, ptr %23, align 8
  %2960 = extractvalue { ptr, i32 } %2958, 1
  store i32 %2960, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %243) #0
  br label %2967

2961:                                             ; preds = %2944, %2920
  br label %2962

2962:                                             ; preds = %2961
  br label %2963

2963:                                             ; preds = %2962
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %242) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  br label %2964

2964:                                             ; preds = %2963
  %2965 = load i64, ptr %240, align 8, !tbaa !129
  %2966 = add i64 %2965, 1
  store i64 %2966, ptr %240, align 8, !tbaa !129
  br label %2885, !llvm.loop !228

2967:                                             ; preds = %2957, %2953
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %242) #0
  br label %2968

2968:                                             ; preds = %2967, %2949
  call void @llvm.lifetime.end.p0(i64 16, ptr %242) #0
  br label %2969

2969:                                             ; preds = %2968, %2945
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #0
  br label %2971

2970:                                             ; preds = %2891
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #0
  br label %2972

2971:                                             ; preds = %2969, %2880
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #0
  br label %3364

2972:                                             ; preds = %2970, %2846
  call void @llvm.lifetime.start.p0(i64 1, ptr %244) #0
  store i8 1, ptr %244, align 1, !tbaa !79
  br label %2973

2973:                                             ; preds = %3361, %2972
  %2974 = load i8, ptr %244, align 1, !tbaa !79, !range !81, !noundef !82
  %2975 = trunc i8 %2974 to i1
  br i1 %2975, label %2977, label %2976

2976:                                             ; preds = %2973
  store i32 260, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #0
  br label %3362

2977:                                             ; preds = %2973
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #0
  %2978 = load ptr, ptr %236, align 8, !tbaa !5
  %2979 = getelementptr inbounds %struct.TypeRepr, ptr %2978, i32 0, i32 2
  store ptr %2979, ptr %245, align 8, !tbaa !5
  br label %2980

2980:                                             ; preds = %3358, %2977
  %2981 = load i8, ptr %244, align 1, !tbaa !79, !range !81, !noundef !82
  %2982 = trunc i8 %2981 to i1
  br i1 %2982, label %2984, label %2983

2983:                                             ; preds = %2980
  store i32 263, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  br label %3360

2984:                                             ; preds = %2980
  %2985 = load ptr, ptr %245, align 8, !tbaa !5
  %2986 = invoke noundef i32 @_ZNK8TypeRepr11VariantMode3tagEv(ptr noundef nonnull align 8 dereferenceable(72) %2985)
          to label %2987 unwind label %2988

2987:                                             ; preds = %2984
  switch i32 %2986, label %3357 [
    i32 0, label %2992
    i32 1, label %2993
    i32 4, label %3016
    i32 2, label %3172
    i32 3, label %3266
  ]

2988:                                             ; preds = %2984
  %2989 = landingpad { ptr, i32 }
          cleanup
  %2990 = extractvalue { ptr, i32 } %2989, 0
  store ptr %2990, ptr %23, align 8
  %2991 = extractvalue { ptr, i32 } %2989, 1
  store i32 %2991, ptr %24, align 4
  br label %3359

2992:                                             ; preds = %2987
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2374, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #10
  unreachable

2993:                                             ; preds = %2987
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #0
  store i8 1, ptr %246, align 1, !tbaa !79
  br label %2994

2994:                                             ; preds = %3014, %2993
  %2995 = load i8, ptr %246, align 1, !tbaa !79, !range !81, !noundef !82
  %2996 = trunc i8 %2995 to i1
  br i1 %2996, label %2998, label %2997

2997:                                             ; preds = %2994
  store i32 267, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #0
  br label %3015

2998:                                             ; preds = %2994
  call void @llvm.lifetime.start.p0(i64 8, ptr %247) #0
  %2999 = load ptr, ptr %245, align 8, !tbaa !5
  %3000 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %2999)
          to label %3001 unwind label %3007

3001:                                             ; preds = %2998
  store ptr %3000, ptr %247, align 8, !tbaa !5
  br label %3002

3002:                                             ; preds = %3012, %3001
  %3003 = load ptr, ptr %247, align 8, !tbaa !5
  %3004 = load i8, ptr %246, align 1, !tbaa !79, !range !81, !noundef !82
  %3005 = trunc i8 %3004 to i1
  br i1 %3005, label %3011, label %3006

3006:                                             ; preds = %3002
  store i32 270, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #0
  br label %3013

3007:                                             ; preds = %2998
  %3008 = landingpad { ptr, i32 }
          cleanup
  %3009 = extractvalue { ptr, i32 } %3008, 0
  store ptr %3009, ptr %23, align 8
  %3010 = extractvalue { ptr, i32 } %3008, 1
  store i32 %3010, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #0
  br label %3359

3011:                                             ; preds = %3002
  br label %3012

3012:                                             ; preds = %3011
  store i8 0, ptr %246, align 1, !tbaa !79
  br label %3002, !llvm.loop !229

3013:                                             ; preds = %3006
  br label %3014

3014:                                             ; preds = %3013
  store i8 0, ptr %246, align 1, !tbaa !79
  br label %2994, !llvm.loop !230

3015:                                             ; preds = %2997
  br label %3357

3016:                                             ; preds = %2987
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #0
  store i8 1, ptr %248, align 1, !tbaa !79
  br label %3017

3017:                                             ; preds = %3170, %3016
  %3018 = load i8, ptr %248, align 1, !tbaa !79, !range !81, !noundef !82
  %3019 = trunc i8 %3018 to i1
  br i1 %3019, label %3021, label %3020

3020:                                             ; preds = %3017
  store i32 273, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #0
  br label %3171

3021:                                             ; preds = %3017
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #0
  %3022 = load ptr, ptr %245, align 8, !tbaa !5
  %3023 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72) %3022)
          to label %3024 unwind label %3030

3024:                                             ; preds = %3021
  store ptr %3023, ptr %249, align 8, !tbaa !5
  br label %3025

3025:                                             ; preds = %3167, %3024
  %3026 = load ptr, ptr %249, align 8, !tbaa !5
  %3027 = load i8, ptr %248, align 1, !tbaa !79, !range !81, !noundef !82
  %3028 = trunc i8 %3027 to i1
  br i1 %3028, label %3034, label %3029

3029:                                             ; preds = %3025
  store i32 276, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  br label %3169

3030:                                             ; preds = %3021
  %3031 = landingpad { ptr, i32 }
          cleanup
  %3032 = extractvalue { ptr, i32 } %3031, 0
  store ptr %3032, ptr %23, align 8
  %3033 = extractvalue { ptr, i32 } %3031, 1
  store i32 %3033, ptr %24, align 4
  br label %3168

3034:                                             ; preds = %3025
  %3035 = load ptr, ptr %233, align 8, !tbaa !5
  %3036 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %3035, i32 0, i32 1
  %3037 = load i32, ptr %3036, align 8, !tbaa !221
  %3038 = load ptr, ptr %249, align 8, !tbaa !5
  %3039 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3038, i32 0, i32 1
  %3040 = load i32, ptr %3039, align 8, !tbaa !231
  %3041 = icmp eq i32 %3037, %3040
  br i1 %3041, label %3042, label %3165

3042:                                             ; preds = %3034
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #0
  %3043 = load ptr, ptr %7, align 8, !tbaa !5
  %3044 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3043, i32 0, i32 1
  %3045 = load ptr, ptr %3044, align 8, !tbaa !120
  %3046 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %3047 = load ptr, ptr %236, align 8, !tbaa !5
  %3048 = load ptr, ptr %249, align 8, !tbaa !5
  %3049 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3048, i32 0, i32 0
  %3050 = invoke noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8) %3045, ptr noundef nonnull align 8 dereferenceable(424) %3046, ptr noundef %3047, ptr noundef nonnull align 8 dereferenceable(40) %3049)
          to label %3051 unwind label %3062

3051:                                             ; preds = %3042
  store i64 %3050, ptr %250, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #0
  %3052 = load i64, ptr %250, align 8, !tbaa !129
  store i64 %3052, ptr %251, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #0
  store i64 0, ptr %252, align 8, !tbaa !129
  br label %3053

3053:                                             ; preds = %3073, %3051
  %3054 = load i64, ptr %252, align 8, !tbaa !129
  %3055 = add i64 %3054, 8
  %3056 = load ptr, ptr %249, align 8, !tbaa !5
  %3057 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3056, i32 0, i32 0
  %3058 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3057, i32 0, i32 1
  %3059 = load i64, ptr %3058, align 8, !tbaa !233
  %3060 = icmp ule i64 %3055, %3059
  br i1 %3060, label %3066, label %3061

3061:                                             ; preds = %3053
  store i32 279, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #0
  br label %3085

3062:                                             ; preds = %3042
  %3063 = landingpad { ptr, i32 }
          cleanup
  %3064 = extractvalue { ptr, i32 } %3063, 0
  store ptr %3064, ptr %23, align 8
  %3065 = extractvalue { ptr, i32 } %3063, 1
  store i32 %3065, ptr %24, align 4
  br label %3164

3066:                                             ; preds = %3053
  call void @llvm.lifetime.start.p0(i64 16, ptr %253) #0
  %3067 = load i64, ptr %250, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %253, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %3067, i64 noundef 8)
          to label %3068 unwind label %3076

3068:                                             ; preds = %3066
  %3069 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %253, ptr noundef nonnull align 8 dereferenceable(120) %3069, i32 noundef 64, i64 noundef 0)
          to label %3070 unwind label %3080

3070:                                             ; preds = %3068
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #0
  %3071 = load i64, ptr %250, align 8, !tbaa !129
  %3072 = add i64 %3071, 8
  store i64 %3072, ptr %250, align 8, !tbaa !129
  br label %3073

3073:                                             ; preds = %3070
  %3074 = load i64, ptr %252, align 8, !tbaa !129
  %3075 = add i64 %3074, 8
  store i64 %3075, ptr %252, align 8, !tbaa !129
  br label %3053, !llvm.loop !234

3076:                                             ; preds = %3066
  %3077 = landingpad { ptr, i32 }
          cleanup
  %3078 = extractvalue { ptr, i32 } %3077, 0
  store ptr %3078, ptr %23, align 8
  %3079 = extractvalue { ptr, i32 } %3077, 1
  store i32 %3079, ptr %24, align 4
  br label %3084

3080:                                             ; preds = %3068
  %3081 = landingpad { ptr, i32 }
          cleanup
  %3082 = extractvalue { ptr, i32 } %3081, 0
  store ptr %3082, ptr %23, align 8
  %3083 = extractvalue { ptr, i32 } %3081, 1
  store i32 %3083, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #0
  br label %3084

3084:                                             ; preds = %3080, %3076
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #0
  br label %3163

3085:                                             ; preds = %3061
  %3086 = load ptr, ptr %249, align 8, !tbaa !5
  %3087 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3086, i32 0, i32 0
  %3088 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3087, i32 0, i32 1
  %3089 = load i64, ptr %3088, align 8, !tbaa !233
  %3090 = urem i64 %3089, 8
  %3091 = icmp ugt i64 %3090, 0
  br i1 %3091, label %3092, label %3118

3092:                                             ; preds = %3085
  call void @llvm.lifetime.start.p0(i64 16, ptr %254) #0
  %3093 = load i64, ptr %250, align 8, !tbaa !129
  %3094 = load ptr, ptr %249, align 8, !tbaa !5
  %3095 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3094, i32 0, i32 0
  %3096 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3095, i32 0, i32 1
  %3097 = load i64, ptr %3096, align 8, !tbaa !233
  %3098 = urem i64 %3097, 8
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %254, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %3093, i64 noundef %3098)
          to label %3099 unwind label %3109

3099:                                             ; preds = %3092
  %3100 = load ptr, ptr %7, align 8, !tbaa !5
  %3101 = load ptr, ptr %249, align 8, !tbaa !5
  %3102 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3101, i32 0, i32 0
  %3103 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3102, i32 0, i32 1
  %3104 = load i64, ptr %3103, align 8, !tbaa !233
  %3105 = urem i64 %3104, 8
  %3106 = mul i64 %3105, 8
  %3107 = trunc i64 %3106 to i32
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %254, ptr noundef nonnull align 8 dereferenceable(120) %3100, i32 noundef %3107, i64 noundef 0)
          to label %3108 unwind label %3113

3108:                                             ; preds = %3099
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #0
  br label %3118

3109:                                             ; preds = %3092
  %3110 = landingpad { ptr, i32 }
          cleanup
  %3111 = extractvalue { ptr, i32 } %3110, 0
  store ptr %3111, ptr %23, align 8
  %3112 = extractvalue { ptr, i32 } %3110, 1
  store i32 %3112, ptr %24, align 4
  br label %3117

3113:                                             ; preds = %3099
  %3114 = landingpad { ptr, i32 }
          cleanup
  %3115 = extractvalue { ptr, i32 } %3114, 0
  store ptr %3115, ptr %23, align 8
  %3116 = extractvalue { ptr, i32 } %3114, 1
  store i32 %3116, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #0
  br label %3117

3117:                                             ; preds = %3113, %3109
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #0
  br label %3163

3118:                                             ; preds = %3108, %3085
  br label %3119

3119:                                             ; preds = %3118
  %3120 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3121 unwind label %3147

3121:                                             ; preds = %3119
  br i1 %3120, label %3122, label %3160

3122:                                             ; preds = %3121
  %3123 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %3124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3123, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %3125 unwind label %3147

3125:                                             ; preds = %3122
  %3126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3124, ptr noundef @.str.21)
          to label %3127 unwind label %3147

3127:                                             ; preds = %3125
  %3128 = load i64, ptr %250, align 8, !tbaa !129
  %3129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %3126, i64 noundef %3128)
          to label %3130 unwind label %3147

3130:                                             ; preds = %3127
  %3131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3129, ptr noundef @.str.22)
          to label %3132 unwind label %3147

3132:                                             ; preds = %3130
  call void @llvm.lifetime.start.p0(i64 16, ptr %255) #0
  %3133 = load i64, ptr %251, align 8, !tbaa !129
  %3134 = load ptr, ptr %249, align 8, !tbaa !5
  %3135 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %3134, i32 0, i32 0
  %3136 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3135, i32 0, i32 1
  %3137 = load i64, ptr %3136, align 8, !tbaa !233
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %255, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %3133, i64 noundef %3137)
          to label %3138 unwind label %3151

3138:                                             ; preds = %3132
  %3139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %3131, ptr noundef nonnull align 8 dereferenceable(16) %255)
          to label %3140 unwind label %3155

3140:                                             ; preds = %3138
  %3141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3139, ptr noundef @.str.23)
          to label %3142 unwind label %3155

3142:                                             ; preds = %3140
  %3143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3141, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3144 unwind label %3155

3144:                                             ; preds = %3142
  %3145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3143, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3146 unwind label %3155

3146:                                             ; preds = %3144
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %255) #0
  br label %3160

3147:                                             ; preds = %3130, %3127, %3125, %3122, %3119
  %3148 = landingpad { ptr, i32 }
          cleanup
  %3149 = extractvalue { ptr, i32 } %3148, 0
  store ptr %3149, ptr %23, align 8
  %3150 = extractvalue { ptr, i32 } %3148, 1
  store i32 %3150, ptr %24, align 4
  br label %3163

3151:                                             ; preds = %3132
  %3152 = landingpad { ptr, i32 }
          cleanup
  %3153 = extractvalue { ptr, i32 } %3152, 0
  store ptr %3153, ptr %23, align 8
  %3154 = extractvalue { ptr, i32 } %3152, 1
  store i32 %3154, ptr %24, align 4
  br label %3159

3155:                                             ; preds = %3144, %3142, %3140, %3138
  %3156 = landingpad { ptr, i32 }
          cleanup
  %3157 = extractvalue { ptr, i32 } %3156, 0
  store ptr %3157, ptr %23, align 8
  %3158 = extractvalue { ptr, i32 } %3156, 1
  store i32 %3158, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #0
  br label %3159

3159:                                             ; preds = %3155, %3151
  call void @llvm.lifetime.end.p0(i64 16, ptr %255) #0
  br label %3163

3160:                                             ; preds = %3146, %3121
  br label %3161

3161:                                             ; preds = %3160
  br label %3162

3162:                                             ; preds = %3161
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  br label %3166

3163:                                             ; preds = %3159, %3147, %3117, %3084
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #0
  br label %3164

3164:                                             ; preds = %3163, %3062
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  br label %3168

3165:                                             ; preds = %3034
  br label %3166

3166:                                             ; preds = %3165, %3162
  br label %3167

3167:                                             ; preds = %3166
  store i8 0, ptr %248, align 1, !tbaa !79
  br label %3025, !llvm.loop !235

3168:                                             ; preds = %3164, %3030
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #0
  br label %3359

3169:                                             ; preds = %3029
  br label %3170

3170:                                             ; preds = %3169
  store i8 0, ptr %248, align 1, !tbaa !79
  br label %3017, !llvm.loop !236

3171:                                             ; preds = %3020
  br label %3357

3172:                                             ; preds = %2987
  call void @llvm.lifetime.start.p0(i64 1, ptr %256) #0
  store i8 1, ptr %256, align 1, !tbaa !79
  br label %3173

3173:                                             ; preds = %3264, %3172
  %3174 = load i8, ptr %256, align 1, !tbaa !79, !range !81, !noundef !82
  %3175 = trunc i8 %3174 to i1
  br i1 %3175, label %3177, label %3176

3176:                                             ; preds = %3173
  store i32 284, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %256) #0
  br label %3265

3177:                                             ; preds = %3173
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #0
  %3178 = load ptr, ptr %245, align 8, !tbaa !5
  %3179 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72) %3178)
          to label %3180 unwind label %3186

3180:                                             ; preds = %3177
  store ptr %3179, ptr %257, align 8, !tbaa !5
  br label %3181

3181:                                             ; preds = %3261, %3180
  %3182 = load ptr, ptr %257, align 8, !tbaa !5
  %3183 = load i8, ptr %256, align 1, !tbaa !79, !range !81, !noundef !82
  %3184 = trunc i8 %3183 to i1
  br i1 %3184, label %3190, label %3185

3185:                                             ; preds = %3181
  store i32 287, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #0
  br label %3263

3186:                                             ; preds = %3190, %3177
  %3187 = landingpad { ptr, i32 }
          cleanup
  %3188 = extractvalue { ptr, i32 } %3187, 0
  store ptr %3188, ptr %23, align 8
  %3189 = extractvalue { ptr, i32 } %3187, 1
  store i32 %3189, ptr %24, align 4
  br label %3262

3190:                                             ; preds = %3181
  %3191 = load ptr, ptr %257, align 8, !tbaa !5
  %3192 = load ptr, ptr %233, align 8, !tbaa !5
  %3193 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %3192, i32 0, i32 1
  %3194 = load i32, ptr %3193, align 8, !tbaa !221
  %3195 = invoke noundef zeroext i1 @_ZNK8TypeRepr11VariantMode11Data_Linear8is_nicheEj(ptr noundef nonnull align 8 dereferenceable(56) %3191, i32 noundef %3194)
          to label %3196 unwind label %3186

3196:                                             ; preds = %3190
  br i1 %3195, label %3197, label %3198

3197:                                             ; preds = %3196
  br label %3260

3198:                                             ; preds = %3196
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #0
  %3199 = load ptr, ptr %7, align 8, !tbaa !5
  %3200 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3199, i32 0, i32 1
  %3201 = load ptr, ptr %3200, align 8, !tbaa !120
  %3202 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 1
  %3203 = load ptr, ptr %236, align 8, !tbaa !5
  %3204 = load ptr, ptr %257, align 8, !tbaa !5
  %3205 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %3204, i32 0, i32 0
  %3206 = invoke noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8) %3201, ptr noundef nonnull align 8 dereferenceable(424) %3202, ptr noundef %3203, ptr noundef nonnull align 8 dereferenceable(40) %3205)
          to label %3207 unwind label %3217

3207:                                             ; preds = %3198
  store i64 %3206, ptr %258, align 8, !tbaa !129
  br label %3208

3208:                                             ; preds = %3207
  %3209 = load ptr, ptr %257, align 8, !tbaa !5
  %3210 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %3209, i32 0, i32 0
  %3211 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3210, i32 0, i32 1
  %3212 = load i64, ptr %3211, align 8, !tbaa !237
  %3213 = icmp ult i64 %3212, 8
  br i1 %3213, label %3225, label %3214

3214:                                             ; preds = %3208
  %3215 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %260) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %259, ptr noundef nonnull align 1 dereferenceable(1) %260) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3215, ptr noundef %259)
          to label %3216 unwind label %3221

3216:                                             ; preds = %3214
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %260) #0
  br label %3225

3217:                                             ; preds = %3198
  %3218 = landingpad { ptr, i32 }
          cleanup
  %3219 = extractvalue { ptr, i32 } %3218, 0
  store ptr %3219, ptr %23, align 8
  %3220 = extractvalue { ptr, i32 } %3218, 1
  store i32 %3220, ptr %24, align 4
  br label %3259

3221:                                             ; preds = %3214
  %3222 = landingpad { ptr, i32 }
          cleanup
  %3223 = extractvalue { ptr, i32 } %3222, 0
  store ptr %3223, ptr %23, align 8
  %3224 = extractvalue { ptr, i32 } %3222, 1
  store i32 %3224, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %259) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %260) #0
  br label %3259

3225:                                             ; preds = %3216, %3208
  br label %3226

3226:                                             ; preds = %3225
  br label %3227

3227:                                             ; preds = %3226
  call void @llvm.lifetime.start.p0(i64 16, ptr %261) #0
  %3228 = load i64, ptr %258, align 8, !tbaa !129
  %3229 = load ptr, ptr %257, align 8, !tbaa !5
  %3230 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %3229, i32 0, i32 0
  %3231 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3230, i32 0, i32 1
  %3232 = load i64, ptr %3231, align 8, !tbaa !237
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %261, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %3228, i64 noundef %3232)
          to label %3233 unwind label %3250

3233:                                             ; preds = %3227
  %3234 = load ptr, ptr %7, align 8, !tbaa !5
  %3235 = load ptr, ptr %257, align 8, !tbaa !5
  %3236 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %3235, i32 0, i32 0
  %3237 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3236, i32 0, i32 1
  %3238 = load i64, ptr %3237, align 8, !tbaa !237
  %3239 = mul i64 %3238, 8
  %3240 = trunc i64 %3239 to i32
  %3241 = load ptr, ptr %257, align 8, !tbaa !5
  %3242 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %3241, i32 0, i32 1
  %3243 = load i64, ptr %3242, align 8, !tbaa !239
  %3244 = load ptr, ptr %233, align 8, !tbaa !5
  %3245 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %3244, i32 0, i32 1
  %3246 = load i32, ptr %3245, align 8, !tbaa !221
  %3247 = zext i32 %3246 to i64
  %3248 = add i64 %3243, %3247
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %261, ptr noundef nonnull align 8 dereferenceable(120) %3234, i32 noundef %3240, i64 noundef %3248)
          to label %3249 unwind label %3254

3249:                                             ; preds = %3233
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #0
  br label %3260

3250:                                             ; preds = %3227
  %3251 = landingpad { ptr, i32 }
          cleanup
  %3252 = extractvalue { ptr, i32 } %3251, 0
  store ptr %3252, ptr %23, align 8
  %3253 = extractvalue { ptr, i32 } %3251, 1
  store i32 %3253, ptr %24, align 4
  br label %3258

3254:                                             ; preds = %3233
  %3255 = landingpad { ptr, i32 }
          cleanup
  %3256 = extractvalue { ptr, i32 } %3255, 0
  store ptr %3256, ptr %23, align 8
  %3257 = extractvalue { ptr, i32 } %3255, 1
  store i32 %3257, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %261) #0
  br label %3258

3258:                                             ; preds = %3254, %3250
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #0
  br label %3259

3259:                                             ; preds = %3258, %3221, %3217
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #0
  br label %3262

3260:                                             ; preds = %3249, %3197
  br label %3261

3261:                                             ; preds = %3260
  store i8 0, ptr %256, align 1, !tbaa !79
  br label %3181, !llvm.loop !240

3262:                                             ; preds = %3259, %3186
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %256) #0
  br label %3359

3263:                                             ; preds = %3185
  br label %3264

3264:                                             ; preds = %3263
  store i8 0, ptr %256, align 1, !tbaa !79
  br label %3173, !llvm.loop !241

3265:                                             ; preds = %3176
  br label %3357

3266:                                             ; preds = %2987
  call void @llvm.lifetime.start.p0(i64 1, ptr %262) #0
  store i8 1, ptr %262, align 1, !tbaa !79
  br label %3267

3267:                                             ; preds = %3355, %3266
  %3268 = load i8, ptr %262, align 1, !tbaa !79, !range !81, !noundef !82
  %3269 = trunc i8 %3268 to i1
  br i1 %3269, label %3271, label %3270

3270:                                             ; preds = %3267
  store i32 292, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #0
  br label %3356

3271:                                             ; preds = %3267
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #0
  %3272 = load ptr, ptr %245, align 8, !tbaa !5
  %3273 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %3272)
          to label %3274 unwind label %3280

3274:                                             ; preds = %3271
  store ptr %3273, ptr %263, align 8, !tbaa !5
  br label %3275

3275:                                             ; preds = %3342, %3274
  %3276 = load ptr, ptr %263, align 8, !tbaa !5
  %3277 = load i8, ptr %262, align 1, !tbaa !79, !range !81, !noundef !82
  %3278 = trunc i8 %3277 to i1
  br i1 %3278, label %3284, label %3279

3279:                                             ; preds = %3275
  store i32 295, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #0
  br label %3354

3280:                                             ; preds = %3271
  %3281 = landingpad { ptr, i32 }
          cleanup
  %3282 = extractvalue { ptr, i32 } %3281, 0
  store ptr %3282, ptr %23, align 8
  %3283 = extractvalue { ptr, i32 } %3281, 1
  store i32 %3283, ptr %24, align 4
  br label %3353

3284:                                             ; preds = %3275
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #0
  %3285 = load ptr, ptr %236, align 8, !tbaa !5
  %3286 = getelementptr inbounds %struct.TypeRepr, ptr %3285, i32 0, i32 3
  %3287 = load ptr, ptr %263, align 8, !tbaa !5
  %3288 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %3287, i32 0, i32 0
  %3289 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %3288, i32 0, i32 0
  %3290 = load i64, ptr %3289, align 8, !tbaa !242
  %3291 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3286, i64 noundef %3290) #0
  store ptr %3291, ptr %264, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %265) #0
  %3292 = load ptr, ptr %264, align 8, !tbaa !5
  %3293 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %3292, i32 0, i32 1
  %3294 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %3293)
          to label %3295 unwind label %3309

3295:                                             ; preds = %3284
  store i64 %3294, ptr %265, align 4
  br label %3296

3296:                                             ; preds = %3295
  %3297 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %265, i32 0, i32 0
  %3298 = load i32, ptr %3297, align 4, !tbaa !117
  %3299 = icmp eq i32 %3298, 2
  br i1 %3299, label %3317, label %3300

3300:                                             ; preds = %3296
  %3301 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %265, i32 0, i32 0
  %3302 = load i32, ptr %3301, align 4, !tbaa !117
  %3303 = icmp eq i32 %3302, 3
  br i1 %3303, label %3317, label %3304

3304:                                             ; preds = %3300
  %3305 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #0
  %3306 = getelementptr inbounds %class.anon.243, ptr %267, i32 0, i32 0
  %3307 = load ptr, ptr %264, align 8, !tbaa !5
  store ptr %3307, ptr %3306, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %266, ptr noundef nonnull align 8 dereferenceable(8) %267) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3305, ptr noundef %266)
          to label %3308 unwind label %3313

3308:                                             ; preds = %3304
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  br label %3317

3309:                                             ; preds = %3284
  %3310 = landingpad { ptr, i32 }
          cleanup
  %3311 = extractvalue { ptr, i32 } %3310, 0
  store ptr %3311, ptr %23, align 8
  %3312 = extractvalue { ptr, i32 } %3310, 1
  store i32 %3312, ptr %24, align 4
  br label %3352

3313:                                             ; preds = %3304
  %3314 = landingpad { ptr, i32 }
          cleanup
  %3315 = extractvalue { ptr, i32 } %3314, 0
  store ptr %3315, ptr %23, align 8
  %3316 = extractvalue { ptr, i32 } %3314, 1
  store i32 %3316, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  br label %3352

3317:                                             ; preds = %3308, %3300, %3296
  br label %3318

3318:                                             ; preds = %3317
  br label %3319

3319:                                             ; preds = %3318
  call void @llvm.lifetime.start.p0(i64 16, ptr %268) #0
  %3320 = load ptr, ptr %264, align 8, !tbaa !5
  %3321 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %3320, i32 0, i32 0
  %3322 = load i64, ptr %3321, align 8, !tbaa !200
  %3323 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %265, i32 0, i32 1
  %3324 = load i32, ptr %3323, align 4, !tbaa !119
  %3325 = add i32 %3324, 7
  %3326 = udiv i32 %3325, 8
  %3327 = zext i32 %3326 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %268, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %3322, i64 noundef %3327)
          to label %3328 unwind label %3343

3328:                                             ; preds = %3319
  %3329 = load ptr, ptr %7, align 8, !tbaa !5
  %3330 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %265, i32 0, i32 1
  %3331 = load i32, ptr %3330, align 4, !tbaa !119
  %3332 = load ptr, ptr %263, align 8, !tbaa !5
  %3333 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %3332, i32 0, i32 1
  %3334 = load ptr, ptr %233, align 8, !tbaa !5
  %3335 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %3334, i32 0, i32 1
  %3336 = load i32, ptr %3335, align 8, !tbaa !221
  %3337 = zext i32 %3336 to i64
  %3338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3333, i64 noundef %3337)
          to label %3339 unwind label %3347

3339:                                             ; preds = %3328
  %3340 = load i64, ptr %3338, align 8, !tbaa !129
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %268, ptr noundef nonnull align 8 dereferenceable(120) %3329, i32 noundef %3331, i64 noundef %3340)
          to label %3341 unwind label %3347

3341:                                             ; preds = %3339
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %268) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %268) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #0
  br label %3342

3342:                                             ; preds = %3341
  store i8 0, ptr %262, align 1, !tbaa !79
  br label %3275, !llvm.loop !243

3343:                                             ; preds = %3319
  %3344 = landingpad { ptr, i32 }
          cleanup
  %3345 = extractvalue { ptr, i32 } %3344, 0
  store ptr %3345, ptr %23, align 8
  %3346 = extractvalue { ptr, i32 } %3344, 1
  store i32 %3346, ptr %24, align 4
  br label %3351

3347:                                             ; preds = %3339, %3328
  %3348 = landingpad { ptr, i32 }
          cleanup
  %3349 = extractvalue { ptr, i32 } %3348, 0
  store ptr %3349, ptr %23, align 8
  %3350 = extractvalue { ptr, i32 } %3348, 1
  store i32 %3350, ptr %24, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %268) #0
  br label %3351

3351:                                             ; preds = %3347, %3343
  call void @llvm.lifetime.end.p0(i64 16, ptr %268) #0
  br label %3352

3352:                                             ; preds = %3351, %3313, %3309
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #0
  br label %3353

3353:                                             ; preds = %3352, %3280
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #0
  br label %3359

3354:                                             ; preds = %3279
  br label %3355

3355:                                             ; preds = %3354
  store i8 0, ptr %262, align 1, !tbaa !79
  br label %3267, !llvm.loop !244

3356:                                             ; preds = %3270
  br label %3357

3357:                                             ; preds = %3356, %3265, %3171, %3015, %2987
  br label %3358

3358:                                             ; preds = %3357
  store i8 0, ptr %244, align 1, !tbaa !79
  br label %2980, !llvm.loop !245

3359:                                             ; preds = %3353, %3262, %3168, %3007, %2988
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #0
  br label %3364

3360:                                             ; preds = %2983
  br label %3361

3361:                                             ; preds = %3360
  store i8 0, ptr %244, align 1, !tbaa !79
  br label %2973, !llvm.loop !246

3362:                                             ; preds = %2976
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #0
  br label %3363

3363:                                             ; preds = %3362
  store i8 0, ptr %232, align 1, !tbaa !79
  br label %2807, !llvm.loop !247

3364:                                             ; preds = %3359, %2971, %2842
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  br label %3365

3365:                                             ; preds = %3364, %2838
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #0
  br label %3366

3366:                                             ; preds = %3365, %2834
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #0
  br label %3367

3367:                                             ; preds = %3366, %2812
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #0
  br label %3373

3368:                                             ; preds = %2811
  br label %3369

3369:                                             ; preds = %3368
  store i8 0, ptr %232, align 1, !tbaa !79
  br label %2799, !llvm.loop !248

3370:                                             ; preds = %2802
  br label %3371

3371:                                             ; preds = %3370, %2797, %2764, %2670, %2437, %2280, %2162, %1571, %1516, %1461, %1260, %1156, %601, %565, %533, %490
  br label %3372

3372:                                             ; preds = %3371
  store i8 0, ptr %31, align 1, !tbaa !79
  br label %483, !llvm.loop !249

3373:                                             ; preds = %3367, %2794, %2761, %2667, %2434, %2277, %2159, %1568, %1513, %1458, %1257, %1153, %598, %562, %530, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #0
  br label %3421

3374:                                             ; preds = %486
  br label %3375

3375:                                             ; preds = %3374
  store i8 0, ptr %31, align 1, !tbaa !79
  br label %476, !llvm.loop !250

3376:                                             ; preds = %479
  br label %3377

3377:                                             ; preds = %3376
  %3378 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3379 unwind label %3411

3379:                                             ; preds = %3377
  br i1 %3378, label %3380, label %3415

3380:                                             ; preds = %3379
  %3381 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %3382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3381, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %3383 unwind label %3411

3383:                                             ; preds = %3380
  %3384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3382, ptr noundef @.str.24)
          to label %3385 unwind label %3411

3385:                                             ; preds = %3383
  %3386 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %269, i32 0, i32 3
  %3387 = load i32, ptr %3386, align 8, !tbaa !11
  %3388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %3384, i32 noundef %3387)
          to label %3389 unwind label %3411

3389:                                             ; preds = %3385
  %3390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3388, ptr noundef @.str.16)
          to label %3391 unwind label %3411

3391:                                             ; preds = %3389
  %3392 = load ptr, ptr %5, align 8, !tbaa !5
  %3393 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %3392, i32 0, i32 0
  %3394 = load i32, ptr %3393, align 8, !tbaa !46
  %3395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %3390, i32 noundef %3394)
          to label %3396 unwind label %3411

3396:                                             ; preds = %3391
  %3397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3395, ptr noundef @.str.17)
          to label %3398 unwind label %3411

3398:                                             ; preds = %3396
  %3399 = load ptr, ptr %29, align 8, !tbaa !5
  %3400 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %3399, i32 0, i32 0
  %3401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %3397, ptr noundef nonnull align 8 dereferenceable(32) %3400)
          to label %3402 unwind label %3411

3402:                                             ; preds = %3398
  %3403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3401, ptr noundef @.str.25)
          to label %3404 unwind label %3411

3404:                                             ; preds = %3402
  %3405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %3403, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %3406 unwind label %3411

3406:                                             ; preds = %3404
  %3407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3405, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3408 unwind label %3411

3408:                                             ; preds = %3406
  %3409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3407, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3410 unwind label %3411

3410:                                             ; preds = %3408
  br label %3415

3411:                                             ; preds = %3408, %3406, %3404, %3402, %3398, %3396, %3391, %3389, %3385, %3383, %3380, %3377
  %3412 = landingpad { ptr, i32 }
          cleanup
  %3413 = extractvalue { ptr, i32 } %3412, 0
  store ptr %3413, ptr %23, align 8
  %3414 = extractvalue { ptr, i32 } %3412, 1
  store i32 %3414, ptr %24, align 4
  br label %3421

3415:                                             ; preds = %3410, %3379
  br label %3416

3416:                                             ; preds = %3415
  br label %3417

3417:                                             ; preds = %3416
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  store i32 0, ptr %9, align 4
  br label %3418

3418:                                             ; preds = %3417, %468
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #0
  %3419 = load i32, ptr %9, align 4
  switch i32 %3419, label %3428 [
    i32 0, label %3420
    i32 1, label %3420
  ]

3420:                                             ; preds = %3418, %3418
  ret void

3421:                                             ; preds = %3411, %3373
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %3422

3422:                                             ; preds = %3421, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #0
  br label %3423

3423:                                             ; preds = %3422
  %3424 = load ptr, ptr %23, align 8
  %3425 = load i32, ptr %24, align 4
  %3426 = insertvalue { ptr, i32 } poison, ptr %3424, 0
  %3427 = insertvalue { ptr, i32 } %3426, i32 %3425, 1
  resume { ptr, i32 } %3427

3428:                                             ; preds = %3418, %2878, %2832, %2315, %2197, %2015, %1871, %1754, %1666, %1440, %1407, %1237, %1216, %1071, %1056, %905, %674
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::ValueRef") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

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

declare noundef zeroext i1 @_Z13debug_enabledv() #7

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) #7

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden i64 @_ZN12_GLOBAL__N_18TypeInfo13for_primitiveEN3HIR8CoreTypeE(i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_sintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i64, i64 } @_ZNK4S1289get_innerEv(ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #4 align 2

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::ValueRef") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) #4 align 2

declare noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(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(40)) #7

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN4S128C2E4U128(ptr noundef nonnull align 8 dereferenceable(16), i64, i64) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK4S1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK4S1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK4U1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK4U1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry18get_staticref_monoERKN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::StaticRefPtr") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) #7

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 8 dereferenceable(48), i1 noundef zeroext) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { i64, i64 } @_ZNK12_GLOBAL__N_18TypeInfo4maskE4U128(ptr noundef nonnull align 4 dereferenceable(8), i64, i64) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128plEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::ValueRef") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

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

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

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

declare void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry13get_staticrefEN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::StaticRefPtr") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef, ptr noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK15MonomorphiserPP9get_valueERK4SpanRKN3HIR10GenericRefE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #7

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

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

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

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

declare noundef i64 @_ZNK14EncodedLiteral10read_usizeEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #7

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72)) #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72)) #5 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #7

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

declare void @_ZN3MIR4eval8RelocPtrD1Ev(ptr)

attributes #0 = { nounwind }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { "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 "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 #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 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 440}
!12 = !{!"_ZTSN3HIR9EvaluatorE", !13, i64 0, !14, i64 8, !6, i64 432, !10, i64 440, !10, i64 444, !42, i64 448}
!13 = !{!"_ZTS4Span", !6, i64 0}
!14 = !{!"_ZTS18StaticTraitResolve", !15, i64 8, !33, i64 224, !34, i64 232, !34, i64 280, !34, i64 328, !37, i64 376}
!15 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !16, i64 24, !25, i64 72, !31, i64 104, !31, i64 112, !31, i64 120, !31, i64 128, !31, i64 136, !31, i64 144, !31, i64 152, !31, i64 160, !31, i64 168, !31, i64 176, !31, i64 184, !31, i64 192, !31, i64 200, !31, i64 208}
!16 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !17, i64 0}
!17 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !18, i64 0}
!18 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !19, i64 0, !21, i64 8}
!19 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !20, i64 0}
!20 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!21 = !{!"_ZTSSt15_Rb_tree_header", !22, i64 0, !24, i64 32}
!22 = !{!"_ZTSSt18_Rb_tree_node_base", !23, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!23 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !26, i64 0, !30, i64 24}
!26 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!31 = !{!"_ZTSN3HIR10SimplePathE", !32, i64 0}
!32 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!33 = !{!"_ZTS12MetadataType", !7, i64 0}
!34 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !19, i64 0, !21, i64 8}
!37 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !40, i64 0, !21, i64 8}
!40 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !41, i64 0}
!41 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!42 = !{!"_ZTSSt6vectorIN3HIR9Evaluator6CsePtrESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!47, !10, i64 0}
!47 = !{!"_ZTSN3MIR4eval14CallStackEntryE", !10, i64 0, !48, i64 8, !52, i64 32, !6, i64 40, !14, i64 48, !53, i64 472, !57, i64 592, !69, i64 736, !71, i64 744, !75, i64 768, !71, i64 792}
!48 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!53 = !{!"_ZTSN3MIR11TypeResolveE", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !54, 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}
!54 = !{!"_ZTS9FmtLambda", !55, i64 0}
!55 = !{!"_ZTSSt8functionIFvRSoEE", !56, i64 0, !6, i64 24}
!56 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!57 = !{!"_ZTS14MonomorphState", !58, i64 0, !52, i64 96, !6, i64 104, !6, i64 112, !65, i64 120}
!58 = !{!"_ZTS15MonomorphiserPP", !59, i64 0}
!59 = !{!"_ZTS13Monomorphiser", !6, i64 8, !60, i64 16, !61, i64 72}
!60 = !{!"_ZTSN3HIR8ItemPathE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!61 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSN3HIR10PathParamsE", !66, i64 0, !67, i64 8, !68, i64 16}
!66 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!67 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!68 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!69 = !{!"_ZTSN3MIR4eval13AllocationPtrE", !70, i64 0}
!70 = !{!"_ZTSN3MIR4eval11RefCountPtrINS0_10AllocationEEE", !6, i64 0}
!71 = !{!"_ZTSSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!80, !80, i64 0}
!80 = !{!"bool", !7, i64 0}
!81 = !{i8 0, i8 2}
!82 = !{}
!83 = distinct !{!83, !84}
!84 = !{!"llvm.loop.mustprogress"}
!85 = distinct !{!85, !84}
!86 = distinct !{!86, !84}
!87 = distinct !{!87, !84}
!88 = distinct !{!88, !84}
!89 = distinct !{!89, !84}
!90 = !{!91, !10, i64 8}
!91 = !{!"_ZTSN3MIR9Statement16Data_SetDropFlagE", !10, i64 0, !80, i64 4, !10, i64 8}
!92 = distinct !{!92, !84}
!93 = distinct !{!93, !84}
!94 = distinct !{!94, !84}
!95 = distinct !{!95, !84}
!96 = distinct !{!96, !84}
!97 = distinct !{!97, !84}
!98 = distinct !{!98, !84}
!99 = distinct !{!99, !84}
!100 = distinct !{!100, !84}
!101 = distinct !{!101, !84}
!102 = distinct !{!102, !84}
!103 = distinct !{!103, !84}
!104 = !{!105, !106, i64 0}
!105 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !106, i64 0, !107, i64 8}
!106 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!107 = !{!"_ZTSN3MIR6LValueE", !108, i64 0, !109, i64 8}
!108 = !{!"_ZTSN3MIR6LValue7StorageE", !24, i64 0}
!109 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !110, i64 0}
!110 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!113 = distinct !{!113, !84}
!114 = distinct !{!114, !84}
!115 = !{!116, !116, i64 0}
!116 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!117 = !{!118, !7, i64 0}
!118 = !{!"_ZTSN12_GLOBAL__N_18TypeInfoE", !7, i64 0, !10, i64 4}
!119 = !{!118, !10, i64 4}
!120 = !{!53, !6, i64 8}
!121 = !{!122, !24, i64 8}
!122 = !{!"_ZTSN8TypeRepr11VariantMode11Data_ValuesE", !123, i64 0, !124, i64 40}
!123 = !{!"_ZTSN8TypeRepr9FieldPathE", !24, i64 0, !24, i64 8, !124, i64 16}
!124 = !{!"_ZTSSt6vectorImSaImEE", !125, i64 0}
!125 = !{!"_ZTSSt12_Vector_baseImSaImEE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !127, i64 0}
!127 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!128 = !{i64 0, i64 8, !129, i64 8, i64 8, !129}
!129 = !{!24, !24, i64 0}
!130 = distinct !{!130, !84}
!131 = distinct !{!131, !84}
!132 = distinct !{!132, !84}
!133 = distinct !{!133, !84}
!134 = distinct !{!134, !84}
!135 = distinct !{!135, !84}
!136 = !{!137, !140, i64 48}
!137 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !138, i64 0, !140, i64 48, !138, i64 56}
!138 = !{!"_ZTSN3MIR5ParamE", !139, i64 0, !7, i64 8}
!139 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!140 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!141 = distinct !{!141, !84}
!142 = distinct !{!142, !84}
!143 = !{!144, !145, i64 32}
!144 = !{!"_ZTSN3MIR6RValue10Data_UniOpE", !107, i64 0, !145, i64 32}
!145 = !{!"_ZTSN3MIR6eUniOpE", !7, i64 0}
!146 = !{!147, !147, i64 0}
!147 = !{!"double", !7, i64 0}
!148 = distinct !{!148, !84}
!149 = distinct !{!149, !84}
!150 = distinct !{!150, !84}
!151 = distinct !{!151, !84}
!152 = distinct !{!152, !84}
!153 = distinct !{!153, !84}
!154 = !{!155, !184, i64 216}
!155 = !{!"_ZTSN3HIR6StructE", !156, i64 0, !173, i64 96, !174, i64 104, !10, i64 136, !10, i64 140, !176, i64 144, !182, i64 200, !186, i64 248}
!156 = !{!"_ZTSN3HIR13GenericParamsE", !157, i64 0, !161, i64 24, !165, i64 48, !169, i64 72}
!157 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!161 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !162, i64 0}
!162 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !163, i64 0}
!163 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !164, i64 0}
!164 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!165 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !166, i64 0}
!166 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !167, i64 0}
!167 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !168, i64 0}
!168 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!169 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !170, i64 0}
!170 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !171, i64 0}
!171 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !172, i64 0}
!172 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!173 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!174 = !{!"_ZTSN3HIR6Struct4DataE", !175, i64 0, !7, i64 8}
!175 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!176 = !{!"_ZTSN3HIR13TraitMarkingsE", !80, i64 0, !80, i64 1, !80, i64 2, !177, i64 8}
!177 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !178, i64 0}
!178 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !179, i64 0}
!179 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !180, i64 0, !21, i64 8}
!180 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !181, i64 0}
!181 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!182 = !{!"_ZTSN3HIR14StructMarkingsE", !80, i64 0, !10, i64 4, !183, i64 8, !10, i64 12, !184, i64 16, !10, i64 20, !10, i64 24, !80, i64 28, !80, i64 29, !185, i64 32}
!183 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!184 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!185 = !{!"_ZTS4U128", !24, i64 0, !24, i64 8}
!186 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!187 = distinct !{!187, !84}
!188 = distinct !{!188, !84}
!189 = !{!182, !10, i64 4}
!190 = distinct !{!190, !84}
!191 = !{!"branch_weights", i32 1, i32 1048575}
!192 = distinct !{!192, !84}
!193 = distinct !{!193, !84}
!194 = distinct !{!194, !84}
!195 = distinct !{!195, !84}
!196 = !{!197, !106, i64 0}
!197 = !{!"_ZTSN3MIR5Param11Data_BorrowE", !106, i64 0, !107, i64 8}
!198 = distinct !{!198, !84}
!199 = distinct !{!199, !84}
!200 = !{!201, !24, i64 0}
!201 = !{!"_ZTSN8TypeRepr5FieldE", !24, i64 0, !52, i64 8}
!202 = distinct !{!202, !84}
!203 = distinct !{!203, !84}
!204 = distinct !{!204, !84}
!205 = distinct !{!205, !84}
!206 = distinct !{!206, !84}
!207 = distinct !{!207, !84}
!208 = distinct !{!208, !84}
!209 = distinct !{!209, !84}
!210 = distinct !{!210, !84}
!211 = distinct !{!211, !84}
!212 = distinct !{!212, !84}
!213 = distinct !{!213, !84}
!214 = distinct !{!214, !84}
!215 = distinct !{!215, !84}
!216 = distinct !{!216, !84}
!217 = distinct !{!217, !84}
!218 = distinct !{!218, !84}
!219 = distinct !{!219, !84}
!220 = distinct !{!220, !84}
!221 = !{!222, !10, i64 32}
!222 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !223, i64 0, !10, i64 32, !224, i64 40}
!223 = !{!"_ZTSN3HIR11GenericPathE", !31, i64 0, !65, i64 8}
!224 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !225, i64 0}
!225 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !226, i64 0}
!226 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !227, i64 0}
!227 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!228 = distinct !{!228, !84}
!229 = distinct !{!229, !84}
!230 = distinct !{!230, !84}
!231 = !{!232, !10, i64 40}
!232 = !{!"_ZTSN8TypeRepr11VariantMode12Data_NonZeroE", !123, i64 0, !10, i64 40}
!233 = !{!232, !24, i64 8}
!234 = distinct !{!234, !84}
!235 = distinct !{!235, !84}
!236 = distinct !{!236, !84}
!237 = !{!238, !24, i64 8}
!238 = !{!"_ZTSN8TypeRepr11VariantMode11Data_LinearE", !123, i64 0, !24, i64 40, !24, i64 48}
!239 = !{!238, !24, i64 40}
!240 = distinct !{!240, !84}
!241 = distinct !{!241, !84}
!242 = !{!122, !24, i64 0}
!243 = distinct !{!243, !84}
!244 = distinct !{!244, !84}
!245 = distinct !{!245, !84}
!246 = distinct !{!246, !84}
!247 = distinct !{!247, !84}
!248 = distinct !{!248, !84}
!249 = distinct !{!249, !84}
!250 = distinct !{!250, !84}


; 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.RcString = type { ptr }
%"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.137 = type { ptr }
%class.anon.138 = type { ptr }
%"class.MIR::eval::ValueRef" = type { %"class.MIR::eval::RelocPtr", i32, i32 }
%"class.MIR::eval::RelocPtr" = type { i64 }
%"class.HIR::TypeRef" = type { ptr }
%class.anon.185 = type { ptr, ptr, ptr }
%class.S128 = type { %class.U128 }
%class.U128 = type { i64, i64 }
%class.anon.186 = type { i8 }
%class.anon.187 = type { ptr }
%class.anon.188 = type { ptr }
%class.anon.205 = type { ptr }
%class.anon.211 = type { ptr }
%class.anon.212 = type { ptr, ptr }
%"class.MIR::eval::StaticRefPtr" = type { %"class.MIR::eval::RefCountPtr.25" }
%"class.MIR::eval::RefCountPtr.25" = type { ptr }
%class.anon.213 = type { ptr }
%class.anon.214 = type { ptr }
%"struct.(anonymous namespace)::TypeInfo" = type { i32, i32 }
%class.anon.215 = type { ptr }
%class.anon.216 = type { ptr, ptr }
%class.anon.217 = type { ptr }
%class.anon.228 = type { ptr }
%class.anon.229 = type { ptr }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.20, %class.ThinVector.21, %class.ThinVector.22 }
%class.ThinVector.20 = type { ptr }
%class.ThinVector.21 = type { ptr }
%class.ThinVector.22 = 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.24" }
%"struct.std::_Head_base.24" = type { ptr }
%class.anon.230 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.231 = type { i8 }
%class.anon.233 = type { i8 }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.113", [8 x i8] }
%"class.std::unique_ptr.113" = type { %"struct.std::__uniq_ptr_data.114" }
%"struct.std::__uniq_ptr_data.114" = type { %"class.std::__uniq_ptr_impl.115" }
%"class.std::__uniq_ptr_impl.115" = type { %"class.std::tuple.116" }
%"class.std::tuple.116" = type { %"struct.std::_Tuple_impl.117" }
%"struct.std::_Tuple_impl.117" = type { %"struct.std::_Head_base.120" }
%"struct.std::_Head_base.120" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.97", %"class.std::vector.235" }
%"class.std::vector.97" = type { %"struct.std::_Vector_base.98" }
%"struct.std::_Vector_base.98" = 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.std::vector.235" = type { %"struct.std::_Vector_base.236" }
%"struct.std::_Vector_base.236" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.240" = type { ptr }
%class.anon.241 = type { i8 }
%class.anon.243 = type { ptr }

@__dso_handle = external hidden global i8
@_ZTIN12_GLOBAL__N_15DeferE = external hidden constant { ptr, ptr }, align 8
@.str.8 = external hidden unnamed_addr constant [91 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE = external hidden unnamed_addr constant [92 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable = external hidden global %class.RcString, align 8
@_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable = external hidden global i64, align 8
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(152) %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::function", align 8
  %5 = alloca %class.anon.137, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.138, align 8
  %8 = alloca %"class.MIR::eval::ValueRef", align 8
  %9 = alloca %"class.MIR::eval::ValueRef", align 8
  %10 = alloca %"class.MIR::eval::ValueRef", align 8
  %11 = alloca %"class.MIR::eval::ValueRef", align 8
  %12 = alloca %"class.HIR::TypeRef", align 8
  %13 = alloca %"class.MIR::eval::ValueRef", align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.185, align 8
  %16 = alloca %class.S128, align 8
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.186, align 1
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.187, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.188, align 8
  %23 = alloca %"class.std::function", align 8
  %24 = alloca %class.anon.205, align 8
  %25 = alloca %"class.MIR::eval::ValueRef", align 8
  %26 = alloca %class.S128, align 8
  %27 = alloca %class.U128, align 8
  %28 = alloca %"class.std::function", align 8
  %29 = alloca %class.anon.211, align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.212, align 8
  %32 = alloca %"class.MIR::eval::RelocPtr", align 8
  %33 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %34 = alloca %"class.MIR::eval::ValueRef", align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.std::function", align 8
  %40 = alloca %class.anon.213, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.std::function", align 8
  %43 = alloca %class.anon.214, align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca %"struct.(anonymous namespace)::TypeInfo", align 8
  %46 = alloca %class.U128, align 8
  %47 = alloca %"class.MIR::eval::ValueRef", align 8
  %48 = alloca %class.U128, align 8
  %49 = alloca %"class.MIR::eval::ValueRef", align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.std::function", align 8
  %52 = alloca %class.anon.215, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.std::function", align 8
  %55 = alloca %class.anon.216, align 8
  %56 = alloca %"class.MIR::eval::ValueRef", align 8
  %57 = alloca %"class.MIR::eval::ValueRef", align 8
  %58 = alloca %"class.MIR::eval::ValueRef", align 8
  %59 = alloca %"class.MIR::eval::ValueRef", align 8
  %60 = alloca %"class.HIR::TypeRef", align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.217, align 8
  %64 = alloca %"class.std::function", align 8
  %65 = alloca %class.anon.228, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.229, align 8
  %70 = alloca %"class.HIR::Path", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %"class.HIR::GenericPath", align 8
  %73 = alloca %class.RcString, align 8
  %74 = alloca %"struct.HIR::PathParams", align 8
  %75 = alloca %"class.MIR::eval::ValueRef", align 8
  %76 = alloca %"class.MIR::eval::RelocPtr", align 8
  %77 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %78 = alloca %"class.HIR::Path", align 8
  %79 = alloca %"class.MIR::eval::ValueRef", align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"class.std::function", align 8
  %82 = alloca %class.anon.230, align 8
  %83 = alloca %"class.MIR::eval::ValueRef", align 8
  %84 = alloca %"class.MIR::eval::ValueRef", align 8
  %85 = alloca %"class.MIR::eval::ValueRef", align 8
  %86 = alloca %"class.MIR::eval::ValueRef", align 8
  %87 = alloca %"class.MIR::eval::ValueRef", align 8
  %88 = alloca %"class.MIR::eval::ValueRef", align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"class.std::function", align 8
  %91 = alloca %class.anon.231, align 1
  %92 = alloca %"class.MIR::eval::ValueRef", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.std::function", align 8
  %95 = alloca %class.anon.233, align 1
  %96 = alloca %"class.MIR::eval::ValueRef", align 8
  %97 = alloca %"class.MIR::eval::ValueRef", align 8
  %98 = alloca %"class.HIR::ConstGeneric", align 8
  %99 = alloca %"class.HIR::ConstGeneric", align 8
  %100 = alloca %struct.EncodedLiteral, align 8
  %101 = alloca %"class.HIR::TypeRef", align 8
  %102 = alloca %"class.MIR::eval::ValueRef", align 8
  %103 = alloca %"class.MIR::eval::ValueRef", align 8
  %104 = alloca %"class.MIR::eval::ValueRef", align 8
  %105 = alloca %"class.HIR::TypeRef", align 8
  %106 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %107 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %108 = alloca %"class.MIR::eval::ValueRef", align 8
  %109 = alloca %"class.MIR::eval::ValueRef", align 8
  %110 = alloca %"class.HIR::TypeRef", align 8
  %111 = alloca %"class.MIR::eval::ValueRef", align 8
  %112 = alloca %"class.MIR::eval::ValueRef", align 8
  %113 = alloca %"class.MIR::eval::ValueRef", align 8
  %114 = alloca %"class.MIR::eval::ValueRef", align 8
  %115 = alloca %"class.MIR::eval::ValueRef", align 8
  %116 = alloca %"class.std::function", align 8
  %117 = alloca %class.anon.241, align 1
  %118 = alloca %"class.MIR::eval::ValueRef", align 8
  %119 = alloca %"class.std::function", align 8
  %120 = alloca %class.anon.243, align 8
  %121 = alloca %"class.MIR::eval::ValueRef", align 8
  %122 = getelementptr inbounds i8, ptr %1, i64 472
  %123 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %123, label %124, label %.lr.ph

124:                                              ; preds = %3
  %125 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %125, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
  %127 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull @.str.15)
  %128 = getelementptr inbounds i8, ptr %0, i64 440
  %129 = load i32, ptr %128, align 8, !tbaa !9
  %130 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %127, i32 noundef %129)
  %131 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull @.str.16)
  %132 = load i32, ptr %1, align 8, !tbaa !45
  %133 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %131, i32 noundef %132)
  %134 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @.str.17)
  %135 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(120) %122)
  %136 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(152) %2)
  %137 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %138 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.lr.ph

.lr.ph:                                           ; preds = %3, %124
  %139 = tail call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  switch i32 %139, label %.lr.ph3271 [
    i32 0, label %.split
    i32 1, label %.preheader1027
    i32 5, label %.split1175
    i32 6, label %.split1177
    i32 4, label %.split1180
    i32 2, label %.split1183
    i32 3, label %.split1185
  ]

.preheader1027:                                   ; preds = %.lr.ph
  %140 = tail call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  br label %.lr.ph3271

.split:                                           ; preds = %.lr.ph
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2009, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

.split1175:                                       ; preds = %.lr.ph
  %141 = tail call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  br label %1222

.split1177:                                       ; preds = %.lr.ph
  %142 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  br label %1222

.split1180:                                       ; preds = %.lr.ph
  %143 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  br label %1222

.split1183:                                       ; preds = %.lr.ph
  %144 = tail call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  store ptr %2, ptr %5, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %4)
          to label %145 unwind label %147

145:                                              ; preds = %.split1183
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  %146 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %146, align 16, !tbaa !78
  call void @__cxa_throw(ptr nonnull %146, ptr nonnull @_ZTIPKc, ptr null) #11
  unreachable

147:                                              ; preds = %.split1183
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  br label %1224

.split1185:                                       ; preds = %.lr.ph
  %149 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  store ptr %2, ptr %7, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %6)
          to label %150 unwind label %152

150:                                              ; preds = %.split1185
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %151 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %151, align 16, !tbaa !78
  call void @__cxa_throw(ptr nonnull %151, ptr nonnull @_ZTIPKc, ptr null) #11
  unreachable

152:                                              ; preds = %.split1185
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  br label %1224

.loopexit1025:                                    ; preds = %.preheader957.lr.ph, %.lr.ph3271, %..loopexit960_crit_edge, %..loopexit961_crit_edge, %..loopexit962_crit_edge, %..loopexit964_crit_edge, %..loopexit966_crit_edge, %..loopexit967_crit_edge, %..loopexit983_crit_edge, %..loopexit963_crit_edge, %..loopexit965_crit_edge, %777, %764, %..loopexit969_crit_edge, %..loopexit975_crit_edge, %..loopexit953_crit_edge, %._crit_edge1970, %..loopexit982_crit_edge, %..loopexit984_crit_edge
  %154 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1192 unwind label %1219

.lr.ph3271:                                       ; preds = %.lr.ph, %.preheader1027
  %155 = tail call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %8, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef null)
  %156 = getelementptr inbounds i8, ptr %155, i64 32
  %157 = getelementptr inbounds i8, ptr %1, i64 480
  %158 = getelementptr inbounds i8, ptr %0, i64 8
  %159 = getelementptr inbounds i8, ptr %1, i64 592
  %160 = getelementptr inbounds i8, ptr %45, i64 4
  %161 = getelementptr inbounds i8, ptr %46, i64 8
  %162 = getelementptr inbounds i8, ptr %48, i64 8
  %163 = getelementptr inbounds i8, ptr %27, i64 8
  %164 = getelementptr inbounds i8, ptr %16, i64 8
  %165 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  switch i32 %165, label %.loopexit1025 [
    i32 0, label %175
    i32 1, label %.preheader995.split.split
    i32 3, label %.preheader997.split.split
    i32 2, label %.preheader999.split.split
    i32 5, label %.lr.ph2683
    i32 6, label %.preheader1003.split.split
    i32 7, label %.lr.ph2461
    i32 8, label %.preheader1007.split.split
    i32 9, label %.preheader1009.split.split
    i32 10, label %.lr.ph2064
    i32 11, label %.lr.ph1985
    i32 15, label %.lr.ph1978
    i32 4, label %.preheader957.lr.ph
    i32 12, label %.lr.ph1754
    i32 13, label %.preheader1021.split.split
    i32 14, label %.lr.ph1571
  ]

.preheader1021.split.split:                       ; preds = %.lr.ph3271
  %166 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %982 unwind label %.split1576.split

.preheader1009.split.split:                       ; preds = %.lr.ph3271
  %167 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %58, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef null)
          to label %528 unwind label %.split2069.split

.preheader1007.split.split:                       ; preds = %.lr.ph3271
  %168 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef null)
          to label %515 unwind label %.split2265.split

.preheader1003.split.split:                       ; preds = %.lr.ph3271
  %169 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %170 = getelementptr inbounds i8, ptr %169, i64 48
  %171 = getelementptr inbounds i8, ptr %169, i64 56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %396 unwind label %.split2466.split

.preheader999.split.split:                        ; preds = %.lr.ph3271
  %172 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %184 unwind label %.split2688.split

.preheader997.split.split:                        ; preds = %.lr.ph3271
  %173 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %181 unwind label %.split2883.split

.preheader995.split.split:                        ; preds = %.lr.ph3271
  %174 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %9, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef null)
          to label %176 unwind label %.split3077.split

175:                                              ; preds = %.lr.ph3271
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2038, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

176:                                              ; preds = %.preheader995.split.split
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %..loopexit960_crit_edge unwind label %.split3080.split

..loopexit960_crit_edge:                          ; preds = %176
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  br label %.loopexit1025

.split3077.split:                                 ; preds = %.preheader995.split.split
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %179

.split3080.split:                                 ; preds = %176
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #10
  br label %179

179:                                              ; preds = %.split3080.split, %.split3077.split
  %.pn908 = phi { ptr, i32 } [ %178, %.split3080.split ], [ %177, %.split3077.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  br label %1223

.split2883.split:                                 ; preds = %.preheader997.split.split
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %1223

181:                                              ; preds = %.preheader997.split.split
  invoke void @_ZN3MIR4eval14CallStackEntry11write_constENS0_8ValueRefERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %10, ptr noundef nonnull align 8 dereferenceable(40) %173)
          to label %..loopexit961_crit_edge unwind label %.split2886.split

..loopexit961_crit_edge:                          ; preds = %181
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  br label %.loopexit1025

.split2886.split:                                 ; preds = %181
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  br label %1223

.split2688.split:                                 ; preds = %.preheader999.split.split
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %1223

184:                                              ; preds = %.preheader999.split.split
  %185 = getelementptr inbounds i8, ptr %172, i64 8
  %186 = load i32, ptr %172, align 8, !tbaa !79
  invoke void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %11, i32 noundef %186, ptr noundef nonnull align 8 dereferenceable(32) %185)
          to label %..loopexit962_crit_edge unwind label %.split2691.split

..loopexit962_crit_edge:                          ; preds = %184
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  br label %.loopexit1025

.split2691.split:                                 ; preds = %184
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  br label %1223

.lr.ph2683:                                       ; preds = %.lr.ph3271
  %188 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %189 = getelementptr inbounds i8, ptr %188, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %190 unwind label %193

190:                                              ; preds = %.lr.ph2683
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(32) %188, i32 noundef 0)
          to label %192 unwind label %195

192:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %13, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef null)
          to label %.lr.ph2680 unwind label %197

..loopexit963_crit_edge:                          ; preds = %.invoke, %386, %375, %244, %232, %223, %359, %354, %337, %322, %312
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %.loopexit1025

193:                                              ; preds = %.lr.ph2683
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %395

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

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

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

.lr.ph2680:                                       ; preds = %192
  %201 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %189)
  %202 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %201)
  switch i32 %202, label %204 [
    i32 0, label %203
    i32 3, label %.lr.ph2677
    i32 12, label %370
    i32 14, label %370
  ]

203:                                              ; preds = %.lr.ph2680
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2054, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

204:                                              ; preds = %.lr.ph2680
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #10
  store ptr %188, ptr %15, align 8, !tbaa !78
  %205 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %191, ptr %205, align 8, !tbaa !78
  %206 = getelementptr inbounds i8, ptr %15, i64 16
  store ptr %13, ptr %206, align 8, !tbaa !78
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %207 unwind label %210

207:                                              ; preds = %204
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %14)
          to label %208 unwind label %212

208:                                              ; preds = %207
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  %209 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %209, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %209, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %199

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

212:                                              ; preds = %207
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  br label %214

214:                                              ; preds = %212, %210
  %.pn897 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %392

.lr.ph2677:                                       ; preds = %.lr.ph2680
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %201)
  %216 = load i32, ptr %215, align 4, !tbaa !88
  %217 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo13for_primitiveEN3HIR8CoreTypeE(i32 noundef %216)
          to label %218 unwind label %221

218:                                              ; preds = %.lr.ph2677
  %.sroa.0297.0.extract.trunc = trunc i64 %217 to i32
  %.sroa.6299.0.extract.shift = lshr i64 %217, 32
  %.sroa.6299.0.extract.trunc = trunc nuw i64 %.sroa.6299.0.extract.shift to i32
  %219 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %220 unwind label %.loopexit919

220:                                              ; preds = %218
  %.sroa.0288.0.extract.trunc = trunc i64 %219 to i32
  %.sroa.6290.0.extract.shift = lshr i64 %219, 32
  %.sroa.6290.0.extract.trunc = trunc nuw i64 %.sroa.6290.0.extract.shift to i32
  switch i32 %.sroa.0297.0.extract.trunc, label %365 [
    i32 2, label %223
    i32 3, label %223
    i32 1, label %322
  ]

221:                                              ; preds = %.lr.ph2677
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %392

.loopexit919:                                     ; preds = %.invoke, %218, %242, %244, %249, %254, %357, %359
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %392

.loopexit.split-lp:                               ; preds = %.invoke3454
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %392

223:                                              ; preds = %220, %220
  switch i32 %.sroa.0288.0.extract.trunc, label %..loopexit963_crit_edge [
    i32 2, label %224
    i32 3, label %235
    i32 1, label %247
    i32 0, label %258
  ]

224:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #10
  %225 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_sintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %226 unwind label %233

226:                                              ; preds = %224
  %227 = extractvalue { i64, i64 } %225, 0
  store i64 %227, ptr %16, align 8
  %228 = extractvalue { i64, i64 } %225, 1
  store i64 %228, ptr %164, align 8
  %229 = call { i64, i64 } @_ZNK4S1289get_innerEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %230 = extractvalue { i64, i64 } %229, 0
  %231 = extractvalue { i64, i64 } %229, 1
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, i64 %230, i64 %231)
          to label %232 unwind label %233

232:                                              ; preds = %226
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #10
  br label %..loopexit963_crit_edge

233:                                              ; preds = %226, %224
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #10
  br label %392

235:                                              ; preds = %223
  %236 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %237 = call noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %236)
  br i1 %237, label %238, label %242

238:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %17)
          to label %239 unwind label %240

239:                                              ; preds = %238
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  br label %242

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

242:                                              ; preds = %239, %235
  %243 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %244 unwind label %.loopexit919

244:                                              ; preds = %242
  %245 = extractvalue { i64, i64 } %243, 0
  %246 = extractvalue { i64, i64 } %243, 1
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, i64 %245, i64 %246)
          to label %..loopexit963_crit_edge unwind label %.loopexit919

247:                                              ; preds = %223
  %248 = icmp eq i32 %.sroa.0297.0.extract.trunc, 2
  br i1 %248, label %249, label %254

249:                                              ; preds = %247
  %250 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %251 unwind label %.loopexit919

251:                                              ; preds = %249
  %252 = fptosi double %250 to i64
  br label %.invoke

.invoke:                                          ; preds = %256, %251
  %253 = phi i64 [ %252, %251 ], [ %257, %256 ]
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, i64 noundef %253)
          to label %..loopexit963_crit_edge unwind label %.loopexit919

254:                                              ; preds = %247
  %255 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %256 unwind label %.loopexit919

256:                                              ; preds = %254
  %257 = fptoui double %255 to i64
  br label %.invoke

258:                                              ; preds = %223
  %259 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %260 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %259)
  br i1 %260, label %261, label %266

261:                                              ; preds = %258
  %262 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %263 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %262)
  %264 = getelementptr inbounds i8, ptr %263, i64 88
  %265 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %264)
  br i1 %265, label %270, label %266

266:                                              ; preds = %261, %258
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  store ptr %191, ptr %20, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %19)
          to label %267 unwind label %268

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

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

270:                                              ; preds = %261, %267
  %271 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %272 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %271)
  %273 = getelementptr inbounds i8, ptr %272, i64 88
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %273)
  %275 = load ptr, ptr %274, align 8, !tbaa !78
  %.not885 = icmp eq ptr %275, null
  br i1 %.not885, label %276, label %280

276:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  store ptr %191, ptr %22, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %21)
          to label %277 unwind label %278

277:                                              ; preds = %276
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %280

278:                                              ; preds = %276
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %392

280:                                              ; preds = %277, %270
  %281 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %282 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %281)
  %283 = getelementptr inbounds i8, ptr %282, i64 88
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %283)
  %285 = load ptr, ptr %284, align 8, !tbaa !78
  %286 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %285)
          to label %287 unwind label %290

287:                                              ; preds = %280
  br i1 %286, label %294, label %288

288:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  store ptr %191, ptr %24, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %23)
          to label %289 unwind label %292

289:                                              ; preds = %288
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %294

290:                                              ; preds = %280
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %392

292:                                              ; preds = %288
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %392

294:                                              ; preds = %289, %287
  %295 = load ptr, ptr %157, align 8, !tbaa !90
  %296 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %297 unwind label %.loopexit920

297:                                              ; preds = %294
  %.not886 = icmp eq ptr %296, null
  br i1 %.not886, label %298, label %300

298:                                              ; preds = %297
  %299 = call ptr @__cxa_allocate_exception(i64 1) #10
  invoke void @__cxa_throw(ptr %299, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %1225 unwind label %.loopexit.split-lp921

.loopexit920:                                     ; preds = %294
  %lpad.loopexit922 = landingpad { ptr, i32 }
          cleanup
  br label %392

.loopexit.split-lp921:                            ; preds = %298
  %lpad.loopexit.split-lp923 = landingpad { ptr, i32 }
          cleanup
  br label %392

300:                                              ; preds = %297
  %301 = getelementptr inbounds i8, ptr %296, i64 16
  %302 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %301)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #10
  %303 = load ptr, ptr %157, align 8, !tbaa !90
  %304 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %296, ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(40) %302)
          to label %305 unwind label %315

305:                                              ; preds = %300
  %306 = getelementptr inbounds i8, ptr %302, i64 8
  %307 = load i64, ptr %306, align 8, !tbaa !91
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %304, i64 noundef %307)
          to label %308 unwind label %315

308:                                              ; preds = %305
  %309 = load i64, ptr %306, align 8, !tbaa !91
  %.tr887 = trunc i64 %309 to i32
  %310 = shl i32 %.tr887, 3
  %311 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %310)
          to label %312 unwind label %317

312:                                              ; preds = %308
  %313 = extractvalue { i64, i64 } %311, 0
  %314 = extractvalue { i64, i64 } %311, 1
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #10
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, i64 %313, i64 %314)
          to label %..loopexit963_crit_edge unwind label %320

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

317:                                              ; preds = %308
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #10
  br label %319

319:                                              ; preds = %317, %315
  %.pn888 = phi { ptr, i32 } [ %318, %317 ], [ %316, %315 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #10
  br label %392

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

322:                                              ; preds = %220
  switch i32 %.sroa.0288.0.extract.trunc, label %..loopexit963_crit_edge [
    i32 2, label %323
    i32 3, label %340
    i32 1, label %357
    i32 0, label %360
  ]

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #10
  %324 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %325 unwind label %338

325:                                              ; preds = %323
  %326 = extractvalue { i64, i64 } %324, 0
  %327 = extractvalue { i64, i64 } %324, 1
  call void @_ZN4S128C2E4U128(ptr noundef nonnull align 8 dereferenceable(16) %26, i64 %326, i64 %327)
  %328 = icmp eq i64 %.sroa.6299.0.extract.shift, 32
  br i1 %328, label %329, label %333

329:                                              ; preds = %325
  %330 = invoke noundef float @_ZNK4S1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %331 unwind label %338

331:                                              ; preds = %329
  %332 = fpext float %330 to double
  br label %335

333:                                              ; preds = %325
  %334 = invoke noundef double @_ZNK4S1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %335 unwind label %338

335:                                              ; preds = %333, %331
  %336 = phi double [ %332, %331 ], [ %334, %333 ]
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, double noundef %336)
          to label %337 unwind label %338

337:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #10
  br label %..loopexit963_crit_edge

338:                                              ; preds = %335, %333, %329, %323
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #10
  br label %392

340:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #10
  %341 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %342 unwind label %355

342:                                              ; preds = %340
  %343 = extractvalue { i64, i64 } %341, 0
  store i64 %343, ptr %27, align 8
  %344 = extractvalue { i64, i64 } %341, 1
  store i64 %344, ptr %163, align 8
  %345 = icmp eq i64 %.sroa.6299.0.extract.shift, 32
  br i1 %345, label %346, label %350

346:                                              ; preds = %342
  %347 = invoke noundef float @_ZNK4U1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %348 unwind label %355

348:                                              ; preds = %346
  %349 = fpext float %347 to double
  br label %352

350:                                              ; preds = %342
  %351 = invoke noundef double @_ZNK4U1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %352 unwind label %355

352:                                              ; preds = %350, %348
  %353 = phi double [ %349, %348 ], [ %351, %350 ]
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, double noundef %353)
          to label %354 unwind label %355

354:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #10
  br label %..loopexit963_crit_edge

355:                                              ; preds = %352, %350, %346, %340
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #10
  br label %392

357:                                              ; preds = %322
  %358 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6290.0.extract.trunc)
          to label %359 unwind label %.loopexit919

359:                                              ; preds = %357
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6299.0.extract.trunc, double noundef %358)
          to label %..loopexit963_crit_edge unwind label %.loopexit919

360:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  store ptr %191, ptr %29, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %28)
          to label %361 unwind label %363

361:                                              ; preds = %360
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  br label %.invoke3454

.invoke3454:                                      ; preds = %367, %361
  %362 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %362, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %362, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %.cont unwind label %.loopexit.split-lp

.cont:                                            ; preds = %.invoke3454
  unreachable

363:                                              ; preds = %360
  %364 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  br label %392

365:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #10
  store ptr %188, ptr %31, align 8, !tbaa !78
  %366 = getelementptr inbounds i8, ptr %31, i64 8
  store ptr %13, ptr %366, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %30)
          to label %367 unwind label %368

367:                                              ; preds = %365
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #10
  br label %.invoke3454

368:                                              ; preds = %365
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #10
  br label %392

370:                                              ; preds = %.lr.ph2680, %.lr.ph2680
  %371 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
  %372 = call noundef ptr @_ZNK3HIR8TypeData17opt_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %371)
  %.not880 = icmp eq ptr %372, null
  br i1 %.not880, label %380, label %373

373:                                              ; preds = %370
  invoke void @_ZNK3MIR4eval14CallStackEntry18get_staticref_monoERKN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %33, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(88) %372, ptr noundef null)
          to label %374 unwind label %376

374:                                              ; preds = %373
  call void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull %33)
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i64 noundef 4096, ptr noundef nonnull %32)
          to label %375 unwind label %378

375:                                              ; preds = %374
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  br label %..loopexit963_crit_edge

376:                                              ; preds = %373
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %392

378:                                              ; preds = %374
  %379 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  br label %392

380:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #10
  %381 = call noundef i64 @_ZNK3MIR4eval8ValueRef7get_lenEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  store i64 %381, ptr %35, align 8, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  %382 = call noundef i64 @_ZNK3MIR4eval8ValueRef7get_lenEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  store i64 %382, ptr %36, align 8, !tbaa !98
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
  %384 = load i64, ptr %383, align 8, !tbaa !98
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef 0, i64 noundef %384)
          to label %385 unwind label %387

385:                                              ; preds = %380
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %386 unwind label %389

386:                                              ; preds = %385
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #10
  br label %..loopexit963_crit_edge

387:                                              ; preds = %380
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %391

389:                                              ; preds = %385
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #10
  br label %391

391:                                              ; preds = %389, %387
  %.pn881 = phi { ptr, i32 } [ %390, %389 ], [ %388, %387 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #10
  br label %392

392:                                              ; preds = %.loopexit920, %.loopexit.split-lp921, %.loopexit919, %.loopexit.split-lp, %376, %378, %391, %221, %290, %292, %319, %320, %368, %363, %355, %338, %278, %268, %240, %233, %214, %199
  %.pn899 = phi { ptr, i32 } [ %200, %199 ], [ %.pn897, %214 ], [ %222, %221 ], [ %369, %368 ], [ %364, %363 ], [ %356, %355 ], [ %339, %338 ], [ %279, %278 ], [ %269, %268 ], [ %241, %240 ], [ %234, %233 ], [ %293, %292 ], [ %291, %290 ], [ %321, %320 ], [ %.pn888, %319 ], [ %379, %378 ], [ %377, %376 ], [ %.pn881, %391 ], [ %lpad.loopexit, %.loopexit919 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit922, %.loopexit920 ], [ %lpad.loopexit.split-lp923, %.loopexit.split-lp921 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  br label %393

393:                                              ; preds = %392, %197
  %.pn899.pn = phi { ptr, i32 } [ %.pn899, %392 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  br label %394

394:                                              ; preds = %393, %195
  %.pn899.pn.pn = phi { ptr, i32 } [ %.pn899.pn, %393 ], [ %196, %195 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  br label %395

395:                                              ; preds = %394, %193
  %.pn899.pn.pn.pn = phi { ptr, i32 } [ %.pn899.pn.pn, %394 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %1223

396:                                              ; preds = %.preheader1003.split.split
  %397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(48) %169)
          to label %398 unwind label %.split2469.split

398:                                              ; preds = %396
  %399 = load i32, ptr %170, align 8, !tbaa !99
  %400 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %397, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(48) %169, i32 noundef %399, ptr noundef nonnull align 8 dereferenceable(48) %171, i1 noundef zeroext false)
          to label %401 unwind label %.split2472.split

401:                                              ; preds = %398
  %402 = load i32, ptr %170, align 8, !tbaa !99
  switch i32 %402, label %..loopexit964_crit_edge [
    i32 6, label %406
    i32 8, label %406
    i32 13, label %414
    i32 12, label %414
  ]

.split2466.split:                                 ; preds = %.preheader1003.split.split
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %423

.split2469.split:                                 ; preds = %396
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %422

.split2472.split:                                 ; preds = %398
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %422

406:                                              ; preds = %401, %401
  br i1 %400, label %.split2477, label %..loopexit964_crit_edge

.split2477:                                       ; preds = %406
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #10
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %38, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #10
  store ptr %38, ptr %40, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %39)
          to label %407 unwind label %409

407:                                              ; preds = %.split2477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #10
  %408 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %408, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %408, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %411

409:                                              ; preds = %.split2477
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #10
  br label %413

411:                                              ; preds = %407
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %413

413:                                              ; preds = %411, %409
  %.pn875 = phi { ptr, i32 } [ %412, %411 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  br label %422

414:                                              ; preds = %401, %401
  br i1 %400, label %.split2475, label %..loopexit964_crit_edge

.split2475:                                       ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #10
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %41, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #10
  store ptr %41, ptr %43, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %42)
          to label %415 unwind label %417

415:                                              ; preds = %.split2475
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  %416 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %416, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %416, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %419

417:                                              ; preds = %.split2475
  %418 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  br label %421

419:                                              ; preds = %415
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %421

421:                                              ; preds = %419, %417
  %.pn873 = phi { ptr, i32 } [ %420, %419 ], [ %418, %417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %422

..loopexit964_crit_edge:                          ; preds = %401, %414, %406
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  br label %.loopexit1025

422:                                              ; preds = %.split2472.split, %413, %421, %.split2469.split
  %.pn873.pn.pn = phi { ptr, i32 } [ %404, %.split2469.split ], [ %.pn873, %421 ], [ %.pn875, %413 ], [ %405, %.split2472.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  br label %423

423:                                              ; preds = %422, %.split2466.split
  %.pn873.pn.pn.pn = phi { ptr, i32 } [ %.pn873.pn.pn, %422 ], [ %403, %.split2466.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  br label %1223

.lr.ph2461:                                       ; preds = %.lr.ph3271
  %424 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %425 = getelementptr inbounds i8, ptr %424, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %426 unwind label %434

426:                                              ; preds = %.lr.ph2461
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(32) %424, i32 noundef 0)
          to label %428 unwind label %436

428:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #10
  %429 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %427)
          to label %430 unwind label %438

430:                                              ; preds = %428
  store i64 %429, ptr %45, align 8
  %431 = trunc i64 %429 to i32
  %432 = lshr i64 %429, 32
  %433 = trunc nuw i64 %432 to i32
  switch i32 %431, label %..loopexit965_crit_edge [
    i32 3, label %440
    i32 2, label %440
    i32 1, label %480
    i32 0, label %503
  ]

434:                                              ; preds = %.lr.ph2461
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %514

436:                                              ; preds = %426
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %513

438:                                              ; preds = %428
  %439 = landingpad { ptr, i32 }
          cleanup
  br label %512

440:                                              ; preds = %430, %430
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %47, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %424, ptr noundef null)
          to label %441 unwind label %447

441:                                              ; preds = %440
  %442 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %433)
          to label %443 unwind label %449

443:                                              ; preds = %441
  %444 = extractvalue { i64, i64 } %442, 0
  store i64 %444, ptr %46, align 8
  %445 = extractvalue { i64, i64 } %442, 1
  store i64 %445, ptr %161, align 8
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #10
  %446 = load i32, ptr %425, align 8, !tbaa !104
  switch i32 %446, label %._crit_edge3444 [
    i32 0, label %452
    i32 1, label %463
  ]

._crit_edge3444:                                  ; preds = %443
  %.sroa.0242.0.copyload.pre = load i64, ptr %46, align 8, !tbaa !98
  %.sroa.2.0.copyload.pre = load i64, ptr %161, align 8, !tbaa !98
  br label %474

447:                                              ; preds = %440
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %451

449:                                              ; preds = %441
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  br label %451

451:                                              ; preds = %449, %447
  %.pn866 = phi { ptr, i32 } [ %450, %449 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #10
  br label %479

452:                                              ; preds = %443
  %453 = invoke { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %454 unwind label %461

454:                                              ; preds = %452
  %455 = extractvalue { i64, i64 } %453, 0
  %456 = extractvalue { i64, i64 } %453, 1
  %457 = invoke { i64, i64 } @_ZNK12_GLOBAL__N_18TypeInfo4maskE4U128(ptr noundef nonnull align 4 dereferenceable(8) %45, i64 %455, i64 %456)
          to label %458 unwind label %461

458:                                              ; preds = %454
  %459 = extractvalue { i64, i64 } %457, 0
  %460 = extractvalue { i64, i64 } %457, 1
  store i64 %459, ptr %46, align 8, !tbaa !98
  store i64 %460, ptr %161, align 8, !tbaa !98
  %.pre3443 = load i32, ptr %160, align 4, !tbaa !107
  br label %474

461:                                              ; preds = %454, %452
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %479

463:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #10
  %464 = invoke { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %465 unwind label %472

465:                                              ; preds = %463
  %466 = extractvalue { i64, i64 } %464, 0
  store i64 %466, ptr %48, align 8
  %467 = extractvalue { i64, i64 } %464, 1
  store i64 %467, ptr %162, align 8
  %468 = invoke { i64, i64 } @_ZNK4U128plEj(ptr noundef nonnull align 8 dereferenceable(16) %48, i32 noundef 1)
          to label %469 unwind label %472

469:                                              ; preds = %465
  %470 = extractvalue { i64, i64 } %468, 0
  %471 = extractvalue { i64, i64 } %468, 1
  store i64 %470, ptr %46, align 8, !tbaa !98
  store i64 %471, ptr %161, align 8, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #10
  br label %474

472:                                              ; preds = %465, %463
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #10
  br label %479

474:                                              ; preds = %._crit_edge3444, %469, %458
  %.sroa.2.0.copyload = phi i64 [ %471, %469 ], [ %460, %458 ], [ %.sroa.2.0.copyload.pre, %._crit_edge3444 ]
  %.sroa.0242.0.copyload = phi i64 [ %470, %469 ], [ %459, %458 ], [ %.sroa.0242.0.copyload.pre, %._crit_edge3444 ]
  %475 = phi i32 [ %433, %469 ], [ %.pre3443, %458 ], [ %433, %._crit_edge3444 ]
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %475, i64 %.sroa.0242.0.copyload, i64 %.sroa.2.0.copyload)
          to label %476 unwind label %477

476:                                              ; preds = %474
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #10
  br label %..loopexit965_crit_edge

477:                                              ; preds = %474
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %479

479:                                              ; preds = %477, %472, %461, %451
  %.pn868 = phi { ptr, i32 } [ %478, %477 ], [ %473, %472 ], [ %462, %461 ], [ %.pn866, %451 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #10
  br label %512

480:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #10
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %49, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %424, ptr noundef null)
          to label %481 unwind label %485

481:                                              ; preds = %480
  %482 = invoke noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %433)
          to label %483 unwind label %487

483:                                              ; preds = %481
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #10
  %484 = load i32, ptr %425, align 8, !tbaa !104
  switch i32 %484, label %500 [
    i32 0, label %490
    i32 1, label %498
  ]

485:                                              ; preds = %480
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %489

487:                                              ; preds = %481
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #10
  br label %489

489:                                              ; preds = %487, %485
  %.pn860 = phi { ptr, i32 } [ %488, %487 ], [ %486, %485 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #10
  br label %512

490:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #10
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %50, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #10
  store ptr %50, ptr %52, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %51)
          to label %491 unwind label %493

491:                                              ; preds = %490
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #10
  %492 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %492, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %492, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %495

493:                                              ; preds = %490
  %494 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #10
  br label %497

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

497:                                              ; preds = %495, %493
  %.pn862 = phi { ptr, i32 } [ %496, %495 ], [ %494, %493 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #10
  br label %512

498:                                              ; preds = %483
  %499 = fneg double %482
  br label %500

500:                                              ; preds = %498, %483
  %.0687 = phi double [ %482, %483 ], [ %499, %498 ]
  invoke void @_ZN3MIR4eval8ValueRef11write_floatERKNS_11TypeResolveEjd(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %433, double noundef %.0687)
          to label %..loopexit965_crit_edge unwind label %501

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

503:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #10
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %53, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #10
  store ptr %53, ptr %55, align 8, !tbaa !78
  %504 = getelementptr inbounds i8, ptr %55, i64 8
  store ptr %427, ptr %504, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(16) %55) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %54)
          to label %505 unwind label %507

505:                                              ; preds = %503
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #10
  %506 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %506, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %506, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %509

507:                                              ; preds = %503
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #10
  br label %511

509:                                              ; preds = %505
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %511

511:                                              ; preds = %509, %507
  %.pn858 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #10
  br label %512

..loopexit965_crit_edge:                          ; preds = %500, %476, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #10
  br label %.loopexit1025

512:                                              ; preds = %489, %497, %501, %511, %479, %438
  %.pn858.pn = phi { ptr, i32 } [ %.pn858, %511 ], [ %.pn868, %479 ], [ %439, %438 ], [ %502, %501 ], [ %.pn862, %497 ], [ %.pn860, %489 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  br label %513

513:                                              ; preds = %512, %436
  %.pn858.pn.pn = phi { ptr, i32 } [ %.pn858.pn, %512 ], [ %437, %436 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  br label %514

514:                                              ; preds = %513, %434
  %.pn858.pn.pn.pn = phi { ptr, i32 } [ %.pn858.pn.pn, %513 ], [ %435, %434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #10
  br label %1223

515:                                              ; preds = %.preheader1007.split.split
  %516 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %517 unwind label %.split2268.split

517:                                              ; preds = %515
  %518 = lshr i32 %516, 3
  %519 = zext nneg i32 %518 to i64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %56, i64 noundef %519)
          to label %520 unwind label %.split2271.split

520:                                              ; preds = %517
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %..loopexit966_crit_edge unwind label %.split2274.split

..loopexit966_crit_edge:                          ; preds = %520
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #10
  br label %.loopexit1025

.split2265.split:                                 ; preds = %.preheader1007.split.split
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %527

.split2268.split:                                 ; preds = %515
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %526

.split2271.split:                                 ; preds = %517
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %525

.split2274.split:                                 ; preds = %520
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  br label %525

525:                                              ; preds = %.split2274.split, %.split2271.split
  %.pn854 = phi { ptr, i32 } [ %524, %.split2274.split ], [ %523, %.split2271.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  br label %526

526:                                              ; preds = %525, %.split2268.split
  %.pn854.pn = phi { ptr, i32 } [ %.pn854, %525 ], [ %522, %.split2268.split ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  br label %527

527:                                              ; preds = %526, %.split2265.split
  %.pn854.pn.pn = phi { ptr, i32 } [ %.pn854.pn, %526 ], [ %521, %.split2265.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #10
  br label %1223

528:                                              ; preds = %.preheader1009.split.split
  %529 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %530 unwind label %.split2072.split

530:                                              ; preds = %528
  %531 = lshr i32 %529, 3
  %532 = zext nneg i32 %531 to i64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %59, ptr noundef nonnull align 8 dereferenceable(16) %58, i64 noundef 0, i64 noundef %532)
          to label %533 unwind label %.split2075.split

533:                                              ; preds = %530
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %..loopexit967_crit_edge unwind label %.split2078.split

..loopexit967_crit_edge:                          ; preds = %533
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #10
  br label %.loopexit1025

.split2069.split:                                 ; preds = %.preheader1009.split.split
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %540

.split2072.split:                                 ; preds = %528
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %539

.split2075.split:                                 ; preds = %530
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %538

.split2078.split:                                 ; preds = %533
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #10
  br label %538

538:                                              ; preds = %.split2078.split, %.split2075.split
  %.pn850 = phi { ptr, i32 } [ %537, %.split2078.split ], [ %536, %.split2075.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #10
  br label %539

539:                                              ; preds = %538, %.split2072.split
  %.pn850.pn = phi { ptr, i32 } [ %.pn850, %538 ], [ %535, %.split2072.split ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #10
  br label %540

540:                                              ; preds = %539, %.split2069.split
  %.pn850.pn.pn = phi { ptr, i32 } [ %.pn850.pn, %539 ], [ %534, %.split2069.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #10
  br label %1223

.lr.ph2064:                                       ; preds = %.lr.ph3271
  %541 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %542 = getelementptr inbounds i8, ptr %541, i64 48
  %543 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %542)
  br i1 %543, label %544, label %769

544:                                              ; preds = %.lr.ph2064
  %545 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %542)
  %546 = call noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %545)
  br i1 %546, label %547, label %769

547:                                              ; preds = %544
  %548 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %542)
  %549 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %548)
  %550 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %549) #10
  %551 = icmp eq ptr %550, null
  br i1 %551, label %552, label %769

552:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %553 unwind label %559

553:                                              ; preds = %552
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(48) %541)
          to label %555 unwind label %561

555:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %556 unwind label %563

556:                                              ; preds = %555
  %557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %.lr.ph2061 unwind label %565

.loopexit952:                                     ; preds = %597, %..loopexit926_crit_edge
  %558 = call noundef ptr @_ZNK3MIR5Param10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %541)
  %.not810 = icmp eq ptr %558, null
  br i1 %.not810, label %738, label %729

559:                                              ; preds = %552
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %768

561:                                              ; preds = %553
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %767

563:                                              ; preds = %555
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %766

565:                                              ; preds = %556
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %765

567:                                              ; preds = %576
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %765

.lr.ph2061:                                       ; preds = %556
  %569 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %557)
  %570 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %569)
  switch i32 %570, label %575 [
    i32 0, label %574
    i32 4, label %.preheader935.split
    i32 11, label %.lr.ph1988
  ]

.preheader935.split:                              ; preds = %.lr.ph2061
  %571 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %569)
  %572 = getelementptr inbounds i8, ptr %571, i64 88
  %573 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %572)
  br i1 %573, label %580, label %.critedge916

574:                                              ; preds = %.lr.ph2061
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2204, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

575:                                              ; preds = %.lr.ph2061
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #10
  store ptr %557, ptr %63, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %62)
          to label %576 unwind label %578

576:                                              ; preds = %575
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  %577 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %577, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %577, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %567

578:                                              ; preds = %575
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  br label %765

580:                                              ; preds = %.preheader935.split
  %581 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %572)
  %582 = load ptr, ptr %581, align 8, !tbaa !78
  %583 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %554)
  %584 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %583)
  br i1 %584, label %585, label %.critedge916

585:                                              ; preds = %580
  %586 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %554)
  %587 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %586)
  %588 = getelementptr inbounds i8, ptr %587, i64 88
  %589 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %588)
  br i1 %589, label %590, label %.critedge916

590:                                              ; preds = %585
  %591 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %554)
  %592 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %591)
  %593 = getelementptr inbounds i8, ptr %592, i64 88
  %594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %593)
  %595 = load ptr, ptr %594, align 8, !tbaa !78
  %596 = icmp eq ptr %595, %582
  br i1 %596, label %597, label %.critedge916

597:                                              ; preds = %590
  %598 = getelementptr inbounds i8, ptr %582, i64 216
  %599 = load i32, ptr %598, align 8, !tbaa !109
  %.not840.not = icmp eq i32 %599, 0
  br i1 %.not840.not, label %.critedge916, label %.loopexit952, !llvm.loop !143

600:                                              ; preds = %602
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %765

.critedge916:                                     ; preds = %597, %580, %585, %590, %.preheader935.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #10
  store ptr %557, ptr %65, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %64)
          to label %602 unwind label %604

602:                                              ; preds = %.critedge916
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #10
  %603 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %603, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %603, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %600

604:                                              ; preds = %.critedge916
  %605 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #10
  br label %765

.lr.ph1988:                                       ; preds = %.lr.ph2061
  %606 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %569)
  %607 = getelementptr inbounds i8, ptr %606, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #10
  store ptr %607, ptr %66, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #10
  %608 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %554)
  %609 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %608)
  %610 = getelementptr inbounds i8, ptr %609, i64 8
  br label %611

611:                                              ; preds = %632, %.lr.ph1988
  %612 = phi ptr [ %610, %.lr.ph1988 ], [ %639, %632 ]
  store ptr %612, ptr %67, align 8, !tbaa !78
  %613 = load ptr, ptr %66, align 8, !tbaa !78
  %614 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %613)
  %615 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %614)
  %.not819 = icmp eq ptr %615, null
  br i1 %.not819, label %642, label %616

616:                                              ; preds = %611
  %617 = getelementptr inbounds i8, ptr %615, i64 88
  %618 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %617)
  br i1 %618, label %623, label %619

619:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #10
  store ptr %66, ptr %69, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %68)
          to label %620 unwind label %621

620:                                              ; preds = %619
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  br label %623

621:                                              ; preds = %619
  %622 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  br label %728

623:                                              ; preds = %620, %616
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %617)
  %625 = load ptr, ptr %624, align 8, !tbaa !78
  %626 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %615)
  %627 = getelementptr inbounds i8, ptr %626, i64 16
  %628 = getelementptr inbounds i8, ptr %625, i64 204
  %629 = load i32, ptr %628, align 4, !tbaa !145
  %630 = zext i32 %629 to i64
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %627, i64 noundef %630)
          to label %632 unwind label %640

632:                                              ; preds = %623
  store ptr %631, ptr %66, align 8, !tbaa !78
  %633 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %612)
  %634 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %633)
  %635 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %634)
  %636 = getelementptr inbounds i8, ptr %635, i64 16
  %637 = load i32, ptr %628, align 4, !tbaa !145
  %638 = zext i32 %637 to i64
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %636, i64 noundef %638)
          to label %611 unwind label %640

640:                                              ; preds = %632, %623
  %641 = landingpad { ptr, i32 }
          cleanup
  br label %728

642:                                              ; preds = %611
  %643 = load ptr, ptr %66, align 8, !tbaa !78
  %644 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %643)
  %645 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %644)
  %.not822 = icmp eq ptr %645, null
  br i1 %.not822, label %689, label %646

646:                                              ; preds = %642
  %647 = load atomic i8, ptr @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable acquire, align 8
  %648 = icmp eq i8 %647, 0
  br i1 %648, label %649, label %654, !prof !146

649:                                              ; preds = %646
  %650 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #10
  %.not830 = icmp eq i32 %650, 0
  br i1 %.not830, label %654, label %651

651:                                              ; preds = %649
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable, ptr noundef nonnull @.str.20)
          to label %652 unwind label %668

652:                                              ; preds = %651
  %653 = call i32 @__cxa_atexit(ptr nonnull @_ZN8RcStringD1Ev, ptr nonnull @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #10
  br label %654

654:                                              ; preds = %652, %649, %646
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %70) #10
  %655 = load ptr, ptr %67, align 8, !tbaa !78
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %71, ptr noundef nonnull align 8 dereferenceable(8) %655)
          to label %656 unwind label %670

656:                                              ; preds = %654
  %657 = getelementptr inbounds i8, ptr %645, i64 8
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %72, ptr noundef nonnull align 8 dereferenceable(32) %657)
          to label %658 unwind label %672

658:                                              ; preds = %656
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) @_ZZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %74)
          to label %659 unwind label %674

659:                                              ; preds = %658
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %70, ptr noundef nonnull %71, ptr noundef nonnull %72, ptr noundef nonnull %73, ptr noundef nonnull %74)
          to label %660 unwind label %676

660:                                              ; preds = %659
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #10
  %661 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %662 unwind label %680

662:                                              ; preds = %660
  %663 = lshr i32 %661, 3
  %664 = zext nneg i32 %663 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %664)
          to label %665 unwind label %680

665:                                              ; preds = %662
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %78, ptr noundef nonnull align 8 dereferenceable(88) %70) #10
  invoke void @_ZNK3MIR4eval14CallStackEntry13get_staticrefEN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %77, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %78, ptr noundef null)
          to label %666 unwind label %682

666:                                              ; preds = %665
  call void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull %77)
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(120) %122, i64 noundef 4096, ptr noundef nonnull %76)
          to label %667 unwind label %684

667:                                              ; preds = %666
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %78) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %70) #10
  br label %..loopexit926_crit_edge

668:                                              ; preds = %651
  %669 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementEE15rcstring_vtable) #10
  br label %728

670:                                              ; preds = %654
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %688

672:                                              ; preds = %656
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %679

674:                                              ; preds = %658
  %675 = landingpad { ptr, i32 }
          cleanup
  br label %678

676:                                              ; preds = %659
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #10
  br label %678

678:                                              ; preds = %676, %674
  %.pn831 = phi { ptr, i32 } [ %677, %676 ], [ %675, %674 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  br label %679

679:                                              ; preds = %678, %672
  %.pn831.pn = phi { ptr, i32 } [ %.pn831, %678 ], [ %673, %672 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %688

680:                                              ; preds = %662, %660
  %681 = landingpad { ptr, i32 }
          cleanup
  br label %687

682:                                              ; preds = %665
  %683 = landingpad { ptr, i32 }
          cleanup
  br label %686

684:                                              ; preds = %666
  %685 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #10
  br label %686

686:                                              ; preds = %684, %682
  %.pn834 = phi { ptr, i32 } [ %685, %684 ], [ %683, %682 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %78) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  br label %687

687:                                              ; preds = %686, %680
  %.pn834.pn = phi { ptr, i32 } [ %.pn834, %686 ], [ %681, %680 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #10
  br label %688

688:                                              ; preds = %687, %679, %670
  %.pn834.pn.pn = phi { ptr, i32 } [ %.pn834.pn, %687 ], [ %.pn831.pn, %679 ], [ %671, %670 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %70) #10
  br label %728

689:                                              ; preds = %642
  %690 = load ptr, ptr %66, align 8, !tbaa !78
  %691 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %690)
  %692 = call noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %691)
  %.not823 = icmp eq ptr %692, null
  br i1 %.not823, label %712, label %693

693:                                              ; preds = %689
  %694 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %612)
  %695 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %694)
  %696 = getelementptr inbounds i8, ptr %695, i64 8
  %697 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %696)
  %698 = load i64, ptr %697, align 8, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #10
  %699 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %700 unwind label %707

700:                                              ; preds = %693
  %701 = lshr i32 %699, 3
  %702 = zext nneg i32 %701 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %79, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %702)
          to label %703 unwind label %707

703:                                              ; preds = %700
  %704 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %705 unwind label %709

705:                                              ; preds = %703
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %704, i64 noundef %698)
          to label %706 unwind label %709

706:                                              ; preds = %705
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #10
  br label %..loopexit926_crit_edge

707:                                              ; preds = %700, %693
  %708 = landingpad { ptr, i32 }
          cleanup
  br label %711

709:                                              ; preds = %705, %703
  %710 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #10
  br label %711

711:                                              ; preds = %709, %707
  %.pn828 = phi { ptr, i32 } [ %710, %709 ], [ %708, %707 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #10
  br label %728

712:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #10
  store ptr @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE, ptr %80, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %82) #10
  store ptr %80, ptr %82, align 8, !tbaa !78
  %713 = getelementptr inbounds i8, ptr %82, i64 8
  store ptr %557, ptr %713, align 8, !tbaa !78
  %714 = getelementptr inbounds i8, ptr %82, i64 16
  store ptr %554, ptr %714, align 8, !tbaa !78
  %715 = getelementptr inbounds i8, ptr %82, i64 24
  store ptr %66, ptr %715, align 8, !tbaa !78
  %716 = getelementptr inbounds i8, ptr %82, i64 32
  store ptr %67, ptr %716, align 8, !tbaa !78
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(40) %82)
          to label %717 unwind label %720

717:                                              ; preds = %712
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %81)
          to label %718 unwind label %722

718:                                              ; preds = %717
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %82) #10
  %719 = call ptr @__cxa_allocate_exception(i64 8) #10
  store ptr @.str.19, ptr %719, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %719, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %1225 unwind label %725

720:                                              ; preds = %712
  %721 = landingpad { ptr, i32 }
          cleanup
  br label %724

722:                                              ; preds = %717
  %723 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #10
  br label %724

724:                                              ; preds = %722, %720
  %.pn824 = phi { ptr, i32 } [ %723, %722 ], [ %721, %720 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %82) #10
  br label %727

725:                                              ; preds = %718
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %727

727:                                              ; preds = %725, %724
  %.pn826 = phi { ptr, i32 } [ %726, %725 ], [ %.pn824, %724 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #10
  br label %728

..loopexit926_crit_edge:                          ; preds = %706, %667
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #10
  br label %.loopexit952

728:                                              ; preds = %668, %688, %711, %727, %621, %640
  %.pn834.pn.pn.pn.pn = phi { ptr, i32 } [ %641, %640 ], [ %622, %621 ], [ %.pn834.pn.pn, %688 ], [ %669, %668 ], [ %.pn828, %711 ], [ %.pn826, %727 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #10
  br label %765

729:                                              ; preds = %.loopexit952
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %730 unwind label %734

730:                                              ; preds = %729
  %731 = load i32, ptr %558, align 8, !tbaa !147
  %732 = getelementptr inbounds i8, ptr %558, i64 8
  invoke void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %83, i32 noundef %731, ptr noundef nonnull align 8 dereferenceable(32) %732)
          to label %733 unwind label %736

733:                                              ; preds = %730
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  br label %764

734:                                              ; preds = %729
  %735 = landingpad { ptr, i32 }
          cleanup
  br label %765

736:                                              ; preds = %730
  %737 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  br label %765

738:                                              ; preds = %.loopexit952
  %739 = call noundef ptr @_ZNK3MIR5Param12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %541)
  %.not811 = icmp eq ptr %739, null
  br i1 %.not811, label %747, label %740

740:                                              ; preds = %738
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %741 unwind label %743

741:                                              ; preds = %740
  invoke void @_ZN3MIR4eval14CallStackEntry11write_constENS0_8ValueRefERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %84, ptr noundef nonnull align 8 dereferenceable(40) %739)
          to label %742 unwind label %745

742:                                              ; preds = %741
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #10
  br label %764

743:                                              ; preds = %740
  %744 = landingpad { ptr, i32 }
          cleanup
  br label %765

745:                                              ; preds = %741
  %746 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #10
  br label %765

747:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #10
  %748 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %541)
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %85, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %748, ptr noundef null)
          to label %749 unwind label %756

749:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #10
  %750 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %751 unwind label %758

751:                                              ; preds = %749
  %752 = lshr i32 %750, 3
  %753 = zext nneg i32 %752 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0, i64 noundef %753)
          to label %754 unwind label %758

754:                                              ; preds = %751
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %85)
          to label %755 unwind label %760

755:                                              ; preds = %754
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #10
  br label %764

756:                                              ; preds = %747
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %763

758:                                              ; preds = %751, %749
  %759 = landingpad { ptr, i32 }
          cleanup
  br label %762

760:                                              ; preds = %754
  %761 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  br label %762

762:                                              ; preds = %760, %758
  %.pn812 = phi { ptr, i32 } [ %761, %760 ], [ %759, %758 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  br label %763

763:                                              ; preds = %762, %756
  %.pn812.pn = phi { ptr, i32 } [ %.pn812, %762 ], [ %757, %756 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #10
  br label %765

764:                                              ; preds = %742, %755, %733
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #10
  br label %.loopexit1025

765:                                              ; preds = %734, %736, %763, %745, %743, %567, %578, %728, %604, %600, %565
  %.pn843.pn = phi { ptr, i32 } [ %566, %565 ], [ %568, %567 ], [ %579, %578 ], [ %.pn834.pn.pn.pn.pn, %728 ], [ %601, %600 ], [ %605, %604 ], [ %737, %736 ], [ %735, %734 ], [ %746, %745 ], [ %744, %743 ], [ %.pn812.pn, %763 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  br label %766

766:                                              ; preds = %765, %563
  %.pn843.pn.pn = phi { ptr, i32 } [ %.pn843.pn, %765 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  br label %767

767:                                              ; preds = %766, %561
  %.pn843.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn, %766 ], [ %562, %561 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br label %768

768:                                              ; preds = %767, %559
  %.pn843.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn, %767 ], [ %560, %559 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #10
  br label %1223

769:                                              ; preds = %547, %544, %.lr.ph2064
  %770 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %771 unwind label %778

771:                                              ; preds = %769
  %772 = lshr i32 %770, 3
  %773 = zext nneg i32 %772 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0, i64 noundef %773)
          to label %774 unwind label %778

774:                                              ; preds = %771
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %87, ptr noundef nonnull align 8 dereferenceable(48) %541)
          to label %775 unwind label %780

775:                                              ; preds = %774
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %88, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %773)
          to label %776 unwind label %778

776:                                              ; preds = %775
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %88, ptr noundef nonnull align 8 dereferenceable(48) %542)
          to label %777 unwind label %782

777:                                              ; preds = %776
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #10
  br label %.loopexit1025

778:                                              ; preds = %775, %771, %769
  %779 = landingpad { ptr, i32 }
          cleanup
  br label %1223

780:                                              ; preds = %774
  %781 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #10
  br label %1223

782:                                              ; preds = %776
  %783 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #10
  br label %1223

.lr.ph1985:                                       ; preds = %.lr.ph3271
  %784 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %785 unwind label %793

785:                                              ; preds = %.lr.ph1985
  %786 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %787 unwind label %795

787:                                              ; preds = %785
  %788 = load ptr, ptr %157, align 8, !tbaa !90
  %789 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %788, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %790 unwind label %.loopexit970

790:                                              ; preds = %787
  %.not802 = icmp eq ptr %789, null
  br i1 %.not802, label %791, label %797

791:                                              ; preds = %790
  %792 = call ptr @__cxa_allocate_exception(i64 1) #10
  invoke void @__cxa_throw(ptr %792, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %1225 unwind label %.loopexit.split-lp971

793:                                              ; preds = %.lr.ph1985
  %794 = landingpad { ptr, i32 }
          cleanup
  br label %825

795:                                              ; preds = %785
  %796 = landingpad { ptr, i32 }
          cleanup
  br label %824

.loopexit970:                                     ; preds = %787
  %lpad.loopexit972 = landingpad { ptr, i32 }
          cleanup
  br label %824

.loopexit.split-lp971:                            ; preds = %791
  %lpad.loopexit.split-lp973 = landingpad { ptr, i32 }
          cleanup
  br label %824

797:                                              ; preds = %790
  %798 = getelementptr inbounds i8, ptr %789, i64 88
  %799 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %798) #10
  %800 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #10
  %801 = icmp eq i64 %799, %800
  br i1 %801, label %806, label %802

802:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 1 dereferenceable(1) %91) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %90)
          to label %803 unwind label %804

803:                                              ; preds = %802
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #10
  br label %806

804:                                              ; preds = %802
  %805 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #10
  br label %824

806:                                              ; preds = %803, %797
  %807 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #10
  %.not3276 = icmp eq i64 %807, 0
  br i1 %.not3276, label %..loopexit969_crit_edge, label %.lr.ph1982

..loopexit969_crit_edge:                          ; preds = %816, %806
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #10
  br label %.loopexit1025

.lr.ph1982:                                       ; preds = %806, %816
  %.07091980 = phi i64 [ %817, %816 ], [ 0, %806 ]
  %808 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %798, i64 noundef %.07091980) #10
  %809 = getelementptr inbounds i8, ptr %808, i64 8
  %810 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %809)
          to label %811 unwind label %820

811:                                              ; preds = %.lr.ph1982
  %812 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %798, i64 noundef %.07091980) #10
  %813 = load i64, ptr %812, align 8, !tbaa !149
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %92, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %813, i64 noundef %810)
          to label %814 unwind label %820

814:                                              ; preds = %811
  %815 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %784, i64 noundef %.07091980) #10
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %92, ptr noundef nonnull align 8 dereferenceable(48) %815)
          to label %816 unwind label %822

816:                                              ; preds = %814
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #10
  %817 = add nuw i64 %.07091980, 1
  %818 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #10
  %819 = icmp ult i64 %817, %818
  br i1 %819, label %.lr.ph1982, label %..loopexit969_crit_edge, !llvm.loop !151

820:                                              ; preds = %811, %.lr.ph1982
  %821 = landingpad { ptr, i32 }
          cleanup
  br label %824

822:                                              ; preds = %814
  %823 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #10
  br label %824

824:                                              ; preds = %.loopexit970, %.loopexit.split-lp971, %804, %822, %820, %795
  %.pn803.pn.pn = phi { ptr, i32 } [ %796, %795 ], [ %805, %804 ], [ %823, %822 ], [ %821, %820 ], [ %lpad.loopexit972, %.loopexit970 ], [ %lpad.loopexit.split-lp973, %.loopexit.split-lp971 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  br label %825

825:                                              ; preds = %824, %793
  %.pn803.pn.pn.pn = phi { ptr, i32 } [ %.pn803.pn.pn, %824 ], [ %794, %793 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #10
  br label %1223

.lr.ph1978:                                       ; preds = %.lr.ph3271
  %826 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %827 = getelementptr inbounds i8, ptr %826, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %828 unwind label %836

828:                                              ; preds = %.lr.ph1978
  %829 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %830 unwind label %838

830:                                              ; preds = %828
  %831 = load ptr, ptr %157, align 8, !tbaa !90
  %832 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %831, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(8) %829)
          to label %833 unwind label %.loopexit976

833:                                              ; preds = %830
  %.not794 = icmp eq ptr %832, null
  br i1 %.not794, label %834, label %840

834:                                              ; preds = %833
  %835 = call ptr @__cxa_allocate_exception(i64 1) #10
  invoke void @__cxa_throw(ptr %835, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %1225 unwind label %.loopexit.split-lp977

836:                                              ; preds = %.lr.ph1978
  %837 = landingpad { ptr, i32 }
          cleanup
  br label %895

838:                                              ; preds = %828
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %894

.loopexit976:                                     ; preds = %830
  %lpad.loopexit978 = landingpad { ptr, i32 }
          cleanup
  br label %894

.loopexit.split-lp977:                            ; preds = %834
  %lpad.loopexit.split-lp979 = landingpad { ptr, i32 }
          cleanup
  br label %894

840:                                              ; preds = %833
  %841 = getelementptr inbounds i8, ptr %832, i64 88
  %842 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %841) #10
  %843 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %827) #10
  %844 = icmp eq i64 %842, %843
  br i1 %844, label %849, label %845

845:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %95) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 1 dereferenceable(1) %95) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %94)
          to label %846 unwind label %847

846:                                              ; preds = %845
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #10
  br label %849

847:                                              ; preds = %845
  %848 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %95) #10
  br label %894

849:                                              ; preds = %846, %840
  %850 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %827) #10
  %.not3275 = icmp eq i64 %850, 0
  br i1 %.not3275, label %..loopexit975_crit_edge, label %.lr.ph1975

..loopexit975_crit_edge:                          ; preds = %888, %849
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #10
  br label %.loopexit1025

.lr.ph1975:                                       ; preds = %849, %888
  %.07161973 = phi i64 [ %889, %888 ], [ 0, %849 ]
  %851 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %841, i64 noundef %.07161973) #10
  %852 = getelementptr inbounds i8, ptr %851, i64 8
  %853 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %852)
          to label %854 unwind label %880

854:                                              ; preds = %.lr.ph1975
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #10
  %855 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %841, i64 noundef %.07161973) #10
  %856 = load i64, ptr %855, align 8, !tbaa !149
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %96, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %856, i64 noundef %853)
          to label %857 unwind label %882

857:                                              ; preds = %854
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %97, ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %858 unwind label %884

858:                                              ; preds = %857
  %859 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %827, i64 noundef %.07161973) #10
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %97, ptr noundef nonnull align 8 dereferenceable(48) %859)
          to label %860 unwind label %886

860:                                              ; preds = %858
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  %861 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %862 unwind label %884

862:                                              ; preds = %860
  br i1 %861, label %863, label %888

863:                                              ; preds = %862
  %864 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %865 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %864, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %866 unwind label %884

866:                                              ; preds = %863
  %867 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %865, ptr noundef nonnull @.str.21)
          to label %868 unwind label %884

868:                                              ; preds = %866
  %869 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %841, i64 noundef %.07161973) #10
  %870 = load i64, ptr %869, align 8, !tbaa !149
  %871 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %867, i64 noundef %870)
          to label %872 unwind label %884

872:                                              ; preds = %868
  %873 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %871, ptr noundef nonnull @.str.22)
          to label %874 unwind label %884

874:                                              ; preds = %872
  %875 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %873, ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %876 unwind label %884

876:                                              ; preds = %874
  %877 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %875, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %878 unwind label %884

878:                                              ; preds = %876
  %879 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %877, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %888 unwind label %884

880:                                              ; preds = %.lr.ph1975
  %881 = landingpad { ptr, i32 }
          cleanup
  br label %894

882:                                              ; preds = %854
  %883 = landingpad { ptr, i32 }
          cleanup
  br label %893

884:                                              ; preds = %878, %876, %874, %872, %868, %866, %863, %860, %857
  %885 = landingpad { ptr, i32 }
          cleanup
  br label %892

886:                                              ; preds = %858
  %887 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  br label %892

888:                                              ; preds = %878, %862
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #10
  %889 = add nuw i64 %.07161973, 1
  %890 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %827) #10
  %891 = icmp ult i64 %889, %890
  br i1 %891, label %.lr.ph1975, label %..loopexit975_crit_edge, !llvm.loop !152

892:                                              ; preds = %886, %884
  %.pn795 = phi { ptr, i32 } [ %885, %884 ], [ %887, %886 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  br label %893

893:                                              ; preds = %892, %882
  %.pn795.pn = phi { ptr, i32 } [ %.pn795, %892 ], [ %883, %882 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #10
  br label %894

894:                                              ; preds = %.loopexit976, %.loopexit.split-lp977, %847, %893, %880, %838
  %.pn795.pn.pn.pn.pn = phi { ptr, i32 } [ %839, %838 ], [ %848, %847 ], [ %.pn795.pn, %893 ], [ %881, %880 ], [ %lpad.loopexit978, %.loopexit976 ], [ %lpad.loopexit.split-lp979, %.loopexit.split-lp977 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %895

895:                                              ; preds = %894, %836
  %.pn795.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn795.pn.pn.pn.pn, %894 ], [ %837, %836 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #10
  br label %1223

.preheader957.lr.ph:                              ; preds = %.lr.ph3271
  %896 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %897 = getelementptr inbounds i8, ptr %896, i64 48
  %898 = call noundef i32 @_ZNK3HIR9ArraySize3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %897)
  switch i32 %898, label %.loopexit1025 [
    i32 0, label %.split1876
    i32 2, label %.preheader939
    i32 1, label %.preheader941
  ]

.preheader941:                                    ; preds = %.preheader957.lr.ph
  %899 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR9ArraySize14as_UnevaluatedEv(ptr noundef nonnull align 8 dereferenceable(32) %897)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %98) #10
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98)
          to label %902 unwind label %.split1782.split.split.split

.preheader939:                                    ; preds = %.preheader957.lr.ph
  %900 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %897)
  %901 = load i64, ptr %900, align 8, !tbaa !98
  br label %..loopexit953_crit_edge

.split1876:                                       ; preds = %.preheader957.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2309, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

902:                                              ; preds = %.preheader941
  %903 = call noundef ptr @_ZNK3HIR12ConstGeneric11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(24) %899)
  %.not787 = icmp eq ptr %903, null
  br i1 %.not787, label %913, label %904

904:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %99) #10
  %905 = load ptr, ptr %157, align 8, !tbaa !90
  invoke void @_ZNK15MonomorphiserPP9get_valueERK4SpanRKN3HIR10GenericRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ConstGeneric") align 8 %99, ptr noundef nonnull align 8 dereferenceable(96) %159, ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef nonnull align 8 dereferenceable(12) %903)
          to label %906 unwind label %.split1785.split.split.split

906:                                              ; preds = %904
  %907 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %908 unwind label %.split1788.split.split.split

908:                                              ; preds = %906
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #10
  br label %913

.split1782.split.split.split:                     ; preds = %.preheader941
  %909 = landingpad { ptr, i32 }
          cleanup
  br label %919

.split1785.split.split.split:                     ; preds = %904
  %910 = landingpad { ptr, i32 }
          cleanup
  br label %912

.split1788.split.split.split:                     ; preds = %906
  %911 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  br label %912

912:                                              ; preds = %.split1788.split.split.split, %.split1785.split.split.split
  %.pn788 = phi { ptr, i32 } [ %911, %.split1788.split.split.split ], [ %910, %.split1785.split.split.split ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #10
  br label %918

913:                                              ; preds = %908, %902
  %.0708 = phi ptr [ %907, %908 ], [ %899, %902 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %100) #10
  call void @_ZN14EncodedLiteralC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #10
  %914 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3MIR4eval14CallStackEntry9get_constERKN3HIR12ConstGenericER14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(24) %.0708, ptr noundef nonnull align 8 dereferenceable(48) %100)
          to label %915 unwind label %.split1791.split.split.split

915:                                              ; preds = %913
  %916 = invoke noundef i64 @_ZNK14EncodedLiteral10read_usizeEm(ptr noundef nonnull align 8 dereferenceable(48) %914, i64 noundef 0)
          to label %..loopexit928_crit_edge unwind label %.split1791.split.split.split

..loopexit928_crit_edge:                          ; preds = %915
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #10
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %98) #10
  br label %..loopexit953_crit_edge

.split1791.split.split.split:                     ; preds = %915, %913
  %917 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14EncodedLiteralD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #10
  br label %918

918:                                              ; preds = %.split1791.split.split.split, %912
  %.pn790 = phi { ptr, i32 } [ %917, %.split1791.split.split.split ], [ %.pn788, %912 ]
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  br label %919

919:                                              ; preds = %918, %.split1782.split.split.split
  %.pn790.pn = phi { ptr, i32 } [ %.pn790, %918 ], [ %909, %.split1782.split.split.split ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %98) #10
  br label %1223

..loopexit953_crit_edge:                          ; preds = %..loopexit928_crit_edge, %.preheader939
  %.6725 = phi i64 [ %901, %.preheader939 ], [ %916, %..loopexit928_crit_edge ]
  %.not780 = icmp eq i64 %.6725, 0
  br i1 %.not780, label %.loopexit1025, label %920

920:                                              ; preds = %..loopexit953_crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %921 unwind label %930

921:                                              ; preds = %920
  %922 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %923 unwind label %932

923:                                              ; preds = %921
  %924 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %922)
  %925 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %924)
  %926 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %925)
          to label %927 unwind label %934

927:                                              ; preds = %923
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0, i64 noundef %926)
          to label %928 unwind label %934

928:                                              ; preds = %927
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %102, ptr noundef nonnull align 8 dereferenceable(48) %896)
          to label %929 unwind label %936

929:                                              ; preds = %928
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #10
  %.not3274 = icmp eq i64 %.6725, 1
  br i1 %.not3274, label %._crit_edge1970, label %.lr.ph1969

._crit_edge1970:                                  ; preds = %942, %929
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #10
  br label %.loopexit1025

930:                                              ; preds = %920
  %931 = landingpad { ptr, i32 }
          cleanup
  br label %955

932:                                              ; preds = %921
  %933 = landingpad { ptr, i32 }
          cleanup
  br label %954

934:                                              ; preds = %927, %923
  %935 = landingpad { ptr, i32 }
          cleanup
  br label %954

936:                                              ; preds = %928
  %937 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #10
  br label %954

.lr.ph1969:                                       ; preds = %929, %942
  %938 = phi i64 [ %944, %942 ], [ 1, %929 ]
  %.06991967 = phi i32 [ %943, %942 ], [ 1, %929 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %103) #10
  %939 = mul i64 %938, %926
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %103, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %939, i64 noundef %926)
          to label %940 unwind label %946

940:                                              ; preds = %.lr.ph1969
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %104) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0, i64 noundef %926)
          to label %941 unwind label %948

941:                                              ; preds = %940
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(16) %104)
          to label %942 unwind label %950

942:                                              ; preds = %941
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #10
  %943 = add i32 %.06991967, 1
  %944 = zext i32 %943 to i64
  %945 = icmp ugt i64 %.6725, %944
  br i1 %945, label %.lr.ph1969, label %._crit_edge1970, !llvm.loop !153

946:                                              ; preds = %.lr.ph1969
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %953

948:                                              ; preds = %940
  %949 = landingpad { ptr, i32 }
          cleanup
  br label %952

950:                                              ; preds = %941
  %951 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #10
  br label %952

952:                                              ; preds = %950, %948
  %.pn781 = phi { ptr, i32 } [ %951, %950 ], [ %949, %948 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #10
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  br label %953

953:                                              ; preds = %952, %946
  %.pn781.pn = phi { ptr, i32 } [ %.pn781, %952 ], [ %947, %946 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #10
  br label %954

954:                                              ; preds = %934, %936, %953, %932
  %.pn781.pn.pn.pn = phi { ptr, i32 } [ %933, %932 ], [ %.pn781.pn, %953 ], [ %937, %936 ], [ %935, %934 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  br label %955

955:                                              ; preds = %954, %930
  %.pn781.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn781.pn.pn.pn, %954 ], [ %931, %930 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #10
  br label %1223

.lr.ph1754:                                       ; preds = %.lr.ph3271
  %956 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %957 unwind label %.split1756

957:                                              ; preds = %.lr.ph1754
  %958 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %959 unwind label %.split1759

959:                                              ; preds = %957
  %960 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %958)
  %961 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %960)
  %962 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %961)
          to label %963 unwind label %.split1762

963:                                              ; preds = %959
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #10
  %964 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %956) #10
  store ptr %964, ptr %106, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #10
  %965 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %956) #10
  store ptr %965, ptr %107, align 8
  %966 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %107) #10
  br i1 %966, label %.lr.ph1751, label %..loopexit982_crit_edge

..loopexit982_crit_edge:                          ; preds = %972, %963
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #10
  br label %.loopexit1025

.split1756:                                       ; preds = %.lr.ph1754
  %967 = landingpad { ptr, i32 }
          cleanup
  br label %980

.split1759:                                       ; preds = %957
  %968 = landingpad { ptr, i32 }
          cleanup
  br label %979

.split1762:                                       ; preds = %959
  %969 = landingpad { ptr, i32 }
          cleanup
  br label %979

.lr.ph1751:                                       ; preds = %963, %972
  %.06881749 = phi i64 [ %973, %972 ], [ 0, %963 ]
  %970 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %108, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %.06881749, i64 noundef %962)
          to label %971 unwind label %.split1765

971:                                              ; preds = %.lr.ph1751
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %108, ptr noundef nonnull align 8 dereferenceable(48) %970)
          to label %972 unwind label %.split1768

972:                                              ; preds = %971
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #10
  %973 = add i64 %.06881749, %962
  %974 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  %975 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %107) #10
  br i1 %975, label %.lr.ph1751, label %..loopexit982_crit_edge

.split1765:                                       ; preds = %.lr.ph1751
  %976 = landingpad { ptr, i32 }
          cleanup
  br label %978

.split1768:                                       ; preds = %971
  %977 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #10
  br label %978

978:                                              ; preds = %.split1768, %.split1765
  %.pn775 = phi { ptr, i32 } [ %977, %.split1768 ], [ %976, %.split1765 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #10
  br label %979

979:                                              ; preds = %.split1762, %978, %.split1759
  %.pn775.pn.pn = phi { ptr, i32 } [ %968, %.split1759 ], [ %.pn775, %978 ], [ %969, %.split1762 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  br label %980

980:                                              ; preds = %979, %.split1756
  %.pn775.pn.pn.pn = phi { ptr, i32 } [ %.pn775.pn.pn, %979 ], [ %967, %.split1756 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #10
  br label %1223

.split1576.split:                                 ; preds = %.preheader1021.split.split
  %981 = landingpad { ptr, i32 }
          cleanup
  br label %1223

982:                                              ; preds = %.preheader1021.split.split
  %983 = getelementptr inbounds i8, ptr %166, i64 40
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %109, ptr noundef nonnull align 8 dereferenceable(48) %983)
          to label %..loopexit983_crit_edge unwind label %.split1579.split

..loopexit983_crit_edge:                          ; preds = %982
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #10
  br label %.loopexit1025

.split1579.split:                                 ; preds = %982
  %984 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #10
  br label %1223

.lr.ph1571:                                       ; preds = %.lr.ph3271
  %985 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %156)
  %986 = getelementptr inbounds i8, ptr %985, i64 40
  %987 = getelementptr inbounds i8, ptr %985, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %988 unwind label %996

988:                                              ; preds = %.lr.ph1571
  %989 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(32) %155, i32 noundef 0)
          to label %990 unwind label %998

990:                                              ; preds = %988
  %991 = load ptr, ptr %157, align 8, !tbaa !90
  %992 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %991, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(8) %989)
          to label %993 unwind label %.loopexit985

993:                                              ; preds = %990
  %.not = icmp eq ptr %992, null
  br i1 %.not, label %994, label %1000

994:                                              ; preds = %993
  %995 = call ptr @__cxa_allocate_exception(i64 1) #10
  invoke void @__cxa_throw(ptr %995, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %1225 unwind label %.loopexit.split-lp986

996:                                              ; preds = %.lr.ph1571
  %997 = landingpad { ptr, i32 }
          cleanup
  br label %1191

998:                                              ; preds = %988
  %999 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.loopexit985:                                     ; preds = %990
  %lpad.loopexit987 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.loopexit.split-lp986:                            ; preds = %994
  %lpad.loopexit.split-lp988 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1000:                                             ; preds = %993
  %1001 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %986) #10
  %.not744 = icmp eq i64 %1001, 0
  br i1 %.not744, label %.lr.ph1567, label %1002

1002:                                             ; preds = %1000
  %1003 = getelementptr inbounds i8, ptr %992, i64 88
  %1004 = load i32, ptr %987, align 8, !tbaa !154
  %1005 = zext i32 %1004 to i64
  %1006 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1003, i64 noundef %1005) #10
  %1007 = load i64, ptr %1006, align 8, !tbaa !149
  %1008 = load i32, ptr %987, align 8, !tbaa !154
  %1009 = zext i32 %1008 to i64
  %1010 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1003, i64 noundef %1009) #10
  %1011 = getelementptr inbounds i8, ptr %1010, i64 8
  %1012 = load ptr, ptr %157, align 8, !tbaa !90
  %1013 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1012, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull align 8 dereferenceable(8) %1011)
          to label %1014 unwind label %.loopexit990

1014:                                             ; preds = %1002
  %.not745 = icmp eq ptr %1013, null
  br i1 %.not745, label %1017, label %.preheader958

.preheader958:                                    ; preds = %1014
  %1015 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %986) #10
  %.not3273 = icmp eq i64 %1015, 0
  br i1 %.not3273, label %.lr.ph1567, label %.lr.ph1207

.lr.ph1207:                                       ; preds = %.preheader958
  %1016 = getelementptr inbounds i8, ptr %1013, i64 88
  br label %1019

1017:                                             ; preds = %1014
  %1018 = call ptr @__cxa_allocate_exception(i64 1) #10
  invoke void @__cxa_throw(ptr %1018, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #11
          to label %1225 unwind label %.loopexit.split-lp991

.loopexit990:                                     ; preds = %1002
  %lpad.loopexit992 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.loopexit.split-lp991:                            ; preds = %1017
  %lpad.loopexit.split-lp993 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1019:                                             ; preds = %.lr.ph1207, %1059
  %.06661206 = phi i64 [ 0, %.lr.ph1207 ], [ %1060, %1059 ]
  %1020 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1016, i64 noundef %.06661206) #10
  %1021 = getelementptr inbounds i8, ptr %1020, i64 8
  %1022 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1021)
          to label %1023 unwind label %1051

1023:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #10
  %1024 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1016, i64 noundef %.06661206) #10
  %1025 = load i64, ptr %1024, align 8, !tbaa !149
  %1026 = add i64 %1025, %1007
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %111, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %1026, i64 noundef %1022)
          to label %1027 unwind label %1053

1027:                                             ; preds = %1023
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef nonnull align 8 dereferenceable(16) %111)
          to label %1028 unwind label %1055

1028:                                             ; preds = %1027
  %1029 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %986, i64 noundef %.06661206) #10
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %112, ptr noundef nonnull align 8 dereferenceable(48) %1029)
          to label %1030 unwind label %1057

1030:                                             ; preds = %1028
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #10
  %1031 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1032 unwind label %1055

1032:                                             ; preds = %1030
  br i1 %1031, label %1033, label %1059

1033:                                             ; preds = %1032
  %1034 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %1035 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1034, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %1036 unwind label %1055

1036:                                             ; preds = %1033
  %1037 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1035, ptr noundef nonnull @.str.21)
          to label %1038 unwind label %1055

1038:                                             ; preds = %1036
  %1039 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1016, i64 noundef %.06661206) #10
  %1040 = load i64, ptr %1039, align 8, !tbaa !149
  %1041 = add i64 %1040, %1007
  %1042 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1037, i64 noundef %1041)
          to label %1043 unwind label %1055

1043:                                             ; preds = %1038
  %1044 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1042, ptr noundef nonnull @.str.22)
          to label %1045 unwind label %1055

1045:                                             ; preds = %1043
  %1046 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %1044, ptr noundef nonnull align 8 dereferenceable(16) %111)
          to label %1047 unwind label %1055

1047:                                             ; preds = %1045
  %1048 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1046, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1049 unwind label %1055

1049:                                             ; preds = %1047
  %1050 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1048, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1059 unwind label %1055

1051:                                             ; preds = %1019
  %1052 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1053:                                             ; preds = %1023
  %1054 = landingpad { ptr, i32 }
          cleanup
  br label %1064

1055:                                             ; preds = %1049, %1047, %1045, %1043, %1038, %1036, %1033, %1030, %1027
  %1056 = landingpad { ptr, i32 }
          cleanup
  br label %1063

1057:                                             ; preds = %1028
  %1058 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #10
  br label %1063

1059:                                             ; preds = %1049, %1032
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #10
  %1060 = add nuw i64 %.06661206, 1
  %1061 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %986) #10
  %1062 = icmp ult i64 %1060, %1061
  br i1 %1062, label %1019, label %.lr.ph1567, !llvm.loop !161

1063:                                             ; preds = %1057, %1055
  %.pn765 = phi { ptr, i32 } [ %1056, %1055 ], [ %1058, %1057 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #10
  br label %1064

1064:                                             ; preds = %1063, %1053
  %.pn765.pn = phi { ptr, i32 } [ %.pn765, %1063 ], [ %1054, %1053 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #10
  br label %1190

..loopexit984_crit_edge:                          ; preds = %.preheader943, %.lr.ph1567, %..loopexit932_crit_edge, %1166, %1146, %1137, %1117, %.lr.ph1538
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #10
  br label %.loopexit1025

.lr.ph1567:                                       ; preds = %1059, %1000, %.preheader958
  %1065 = getelementptr inbounds i8, ptr %992, i64 16
  %1066 = call noundef i32 @_ZNK8TypeRepr11VariantMode3tagEv(ptr noundef nonnull align 8 dereferenceable(72) %1065)
  switch i32 %1066, label %..loopexit984_crit_edge [
    i32 0, label %1080
    i32 1, label %.preheader943
    i32 4, label %.lr.ph1538
    i32 2, label %.preheader947
    i32 3, label %.preheader949
  ]

.preheader949:                                    ; preds = %.lr.ph1567
  %1067 = getelementptr inbounds i8, ptr %992, i64 88
  %1068 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %1065)
  %1069 = getelementptr inbounds i8, ptr %1068, i64 40
  %1070 = load i64, ptr %1068, align 8, !tbaa !162
  %1071 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1067, i64 noundef %1070) #10
  %1072 = getelementptr inbounds i8, ptr %1071, i64 8
  %1073 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1072)
          to label %1170 unwind label %.split1210.split

.preheader947:                                    ; preds = %.lr.ph1567
  %1074 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72) %1065)
  %1075 = getelementptr inbounds i8, ptr %1074, i64 8
  %1076 = getelementptr inbounds i8, ptr %1074, i64 40
  %1077 = load i32, ptr %987, align 8, !tbaa !154
  %1078 = invoke noundef zeroext i1 @_ZNK8TypeRepr11VariantMode11Data_Linear8is_nicheEj(ptr noundef nonnull align 8 dereferenceable(56) %1074, i32 noundef %1077)
          to label %1146 unwind label %.split1283.split

.preheader943:                                    ; preds = %.lr.ph1567
  %1079 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %1065)
  br label %..loopexit984_crit_edge

1080:                                             ; preds = %.lr.ph1567
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2374, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE) #9
  unreachable

.lr.ph1538:                                       ; preds = %.lr.ph1567
  %1081 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72) %1065)
  %1082 = getelementptr inbounds i8, ptr %1081, i64 40
  %1083 = getelementptr inbounds i8, ptr %1081, i64 8
  %1084 = load i32, ptr %987, align 8, !tbaa !154
  %1085 = load i32, ptr %1082, align 8, !tbaa !163
  %1086 = icmp eq i32 %1084, %1085
  br i1 %1086, label %.lr.ph1538.split, label %..loopexit984_crit_edge

.lr.ph1538.split:                                 ; preds = %.lr.ph1538
  %1087 = load ptr, ptr %157, align 8, !tbaa !90
  %1088 = invoke noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8) %1087, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull %992, ptr noundef nonnull align 8 dereferenceable(40) %1081)
          to label %.preheader unwind label %1091

.preheader:                                       ; preds = %.lr.ph1538.split
  %1089 = load i64, ptr %1083, align 8, !tbaa !165
  %.not7531533 = icmp ult i64 %1089, 8
  br i1 %.not7531533, label %._crit_edge, label %.lr.ph1535

._crit_edge:                                      ; preds = %1095, %.preheader
  %.0542.lcssa = phi i64 [ %1088, %.preheader ], [ %1096, %1095 ]
  %.lcssa = phi i64 [ %1089, %.preheader ], [ %1098, %1095 ]
  %1090 = and i64 %.lcssa, 7
  %.not754 = icmp eq i64 %1090, 0
  br i1 %.not754, label %1115, label %1104

1091:                                             ; preds = %.lr.ph1538.split
  %1092 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.lr.ph1535:                                       ; preds = %.preheader, %1095
  %1093 = phi i64 [ %1097, %1095 ], [ 8, %.preheader ]
  %.05421534 = phi i64 [ %1096, %1095 ], [ %1088, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %113, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %.05421534, i64 noundef 8)
          to label %1094 unwind label %1099

1094:                                             ; preds = %.lr.ph1535
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef 64, i64 noundef 0)
          to label %1095 unwind label %1101

1095:                                             ; preds = %1094
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #10
  %1096 = add i64 %.05421534, 8
  %1097 = add i64 %1093, 8
  %1098 = load i64, ptr %1083, align 8, !tbaa !165
  %.not753 = icmp ugt i64 %1097, %1098
  br i1 %.not753, label %._crit_edge, label %.lr.ph1535, !llvm.loop !166

1099:                                             ; preds = %.lr.ph1535
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1103

1101:                                             ; preds = %1094
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  br label %1103

1103:                                             ; preds = %1101, %1099
  %.pn760 = phi { ptr, i32 } [ %1102, %1101 ], [ %1100, %1099 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #10
  br label %1190

1104:                                             ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %114) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %114, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %.0542.lcssa, i64 noundef %1090)
          to label %1105 unwind label %1110

1105:                                             ; preds = %1104
  %1106 = load i64, ptr %1083, align 8, !tbaa !165
  %.tr755 = trunc i64 %1106 to i32
  %1107 = shl i32 %.tr755, 3
  %1108 = and i32 %1107, 56
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %1108, i64 noundef 0)
          to label %1109 unwind label %1112

1109:                                             ; preds = %1105
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #10
  br label %1115

1110:                                             ; preds = %1104
  %1111 = landingpad { ptr, i32 }
          cleanup
  br label %1114

1112:                                             ; preds = %1105
  %1113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #10
  br label %1114

1114:                                             ; preds = %1112, %1110
  %.pn756 = phi { ptr, i32 } [ %1113, %1112 ], [ %1111, %1110 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #10
  br label %1190

1115:                                             ; preds = %._crit_edge, %1109
  %1116 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1117 unwind label %1138

1117:                                             ; preds = %1115
  br i1 %1116, label %1118, label %..loopexit984_crit_edge

1118:                                             ; preds = %1117
  %1119 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %1120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1119, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %1121 unwind label %1138

1121:                                             ; preds = %1118
  %1122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1120, ptr noundef nonnull @.str.21)
          to label %1123 unwind label %1138

1123:                                             ; preds = %1121
  %1124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1122, i64 noundef %.0542.lcssa)
          to label %1125 unwind label %1138

1125:                                             ; preds = %1123
  %1126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1124, ptr noundef nonnull @.str.22)
          to label %1127 unwind label %1138

1127:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %115) #10
  %1128 = load i64, ptr %1083, align 8, !tbaa !165
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %115, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %1088, i64 noundef %1128)
          to label %1129 unwind label %1140

1129:                                             ; preds = %1127
  %1130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %1126, ptr noundef nonnull align 8 dereferenceable(16) %115)
          to label %1131 unwind label %1142

1131:                                             ; preds = %1129
  %1132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1130, ptr noundef nonnull @.str.23)
          to label %1133 unwind label %1142

1133:                                             ; preds = %1131
  %1134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1132, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1135 unwind label %1142

1135:                                             ; preds = %1133
  %1136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1134, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1137 unwind label %1142

1137:                                             ; preds = %1135
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #10
  br label %..loopexit984_crit_edge

1138:                                             ; preds = %1125, %1123, %1121, %1118, %1115
  %1139 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1140:                                             ; preds = %1127
  %1141 = landingpad { ptr, i32 }
          cleanup
  br label %1144

1142:                                             ; preds = %1135, %1133, %1131, %1129
  %1143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #10
  br label %1144

1144:                                             ; preds = %1142, %1140
  %.pn758 = phi { ptr, i32 } [ %1143, %1142 ], [ %1141, %1140 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #10
  br label %1190

.split1283.split:                                 ; preds = %.preheader947
  %1145 = landingpad { ptr, i32 }
          cleanup
  br label %1190

1146:                                             ; preds = %.preheader947
  br i1 %1078, label %..loopexit984_crit_edge, label %1147

1147:                                             ; preds = %1146
  %1148 = load ptr, ptr %157, align 8, !tbaa !90
  %1149 = invoke noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8) %1148, ptr noundef nonnull align 8 dereferenceable(424) %158, ptr noundef nonnull %992, ptr noundef nonnull align 8 dereferenceable(40) %1074)
          to label %1150 unwind label %.split1286.split

1150:                                             ; preds = %1147
  %1151 = load i64, ptr %1075, align 8, !tbaa !167
  %1152 = icmp ult i64 %1151, 8
  br i1 %1152, label %1157, label %1153

1153:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %117) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 1 dereferenceable(1) %117) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %116)
          to label %1154 unwind label %.split1289.split

1154:                                             ; preds = %1153
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #10
  %.pre = load i64, ptr %1075, align 8, !tbaa !167
  br label %1157

.split1286.split:                                 ; preds = %1147
  %1155 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.split1289.split:                                 ; preds = %1153
  %1156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %117) #10
  br label %1190

1157:                                             ; preds = %1154, %1150
  %1158 = phi i64 [ %.pre, %1154 ], [ %1151, %1150 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #10
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %118, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %1149, i64 noundef %1158)
          to label %1159 unwind label %.split1292.split

1159:                                             ; preds = %1157
  %1160 = load i64, ptr %1075, align 8, !tbaa !167
  %.tr = trunc i64 %1160 to i32
  %1161 = shl i32 %.tr, 3
  %1162 = load i64, ptr %1076, align 8, !tbaa !169
  %1163 = load i32, ptr %987, align 8, !tbaa !154
  %1164 = zext i32 %1163 to i64
  %1165 = add i64 %1162, %1164
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %1161, i64 noundef %1165)
          to label %1166 unwind label %.split1295.split

1166:                                             ; preds = %1159
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #10
  br label %..loopexit984_crit_edge

.split1292.split:                                 ; preds = %1157
  %1167 = landingpad { ptr, i32 }
          cleanup
  br label %1169

.split1295.split:                                 ; preds = %1159
  %1168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #10
  br label %1169

1169:                                             ; preds = %.split1295.split, %.split1292.split
  %.pn749 = phi { ptr, i32 } [ %1168, %.split1295.split ], [ %1167, %.split1292.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #10
  br label %1190

1170:                                             ; preds = %.preheader949
  %.sroa.6.0.extract.shift = lshr i64 %1073, 32
  %.sroa.6.0.extract.trunc = trunc nuw i64 %.sroa.6.0.extract.shift to i32
  %1171 = and i64 %1073, 4294967294
  %or.cond = icmp eq i64 %1171, 2
  br i1 %or.cond, label %1176, label %1172

1172:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #10
  store ptr %1071, ptr %120, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(8) %120) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %122, ptr noundef nonnull %119)
          to label %1173 unwind label %.split1213.split

1173:                                             ; preds = %1172
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #10
  br label %1176

.split1210.split:                                 ; preds = %.preheader949
  %1174 = landingpad { ptr, i32 }
          cleanup
  br label %1190

.split1213.split:                                 ; preds = %1172
  %1175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #10
  br label %1190

1176:                                             ; preds = %1173, %1170
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %121) #10
  %1177 = load i64, ptr %1071, align 8, !tbaa !149
  %1178 = add nuw nsw i64 %.sroa.6.0.extract.shift, 7
  %1179 = lshr i64 %1178, 3
  %1180 = and i64 %1179, 536870911
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %121, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %1177, i64 noundef %1180)
          to label %1181 unwind label %.split1216.split

1181:                                             ; preds = %1176
  %1182 = load i32, ptr %987, align 8, !tbaa !154
  %1183 = zext i32 %1182 to i64
  %1184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1069, i64 noundef %1183)
          to label %1185 unwind label %.split1219.split

1185:                                             ; preds = %1181
  %1186 = load i64, ptr %1184, align 8, !tbaa !98
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(120) %122, i32 noundef %.sroa.6.0.extract.trunc, i64 noundef %1186)
          to label %..loopexit932_crit_edge unwind label %.split1219.split

..loopexit932_crit_edge:                          ; preds = %1185
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #10
  br label %..loopexit984_crit_edge

.split1216.split:                                 ; preds = %1176
  %1187 = landingpad { ptr, i32 }
          cleanup
  br label %1189

.split1219.split:                                 ; preds = %1185, %1181
  %1188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  br label %1189

1189:                                             ; preds = %.split1219.split, %.split1216.split
  %.pn746 = phi { ptr, i32 } [ %1188, %.split1219.split ], [ %1187, %.split1216.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #10
  br label %1190

1190:                                             ; preds = %.loopexit990, %.loopexit.split-lp991, %.loopexit985, %.loopexit.split-lp986, %1051, %1064, %.split1210.split, %.split1213.split, %1189, %.split1283.split, %1169, %.split1289.split, %.split1286.split, %1091, %1144, %1138, %1114, %1103, %998
  %.pn765.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %999, %998 ], [ %.pn765.pn, %1064 ], [ %1052, %1051 ], [ %1092, %1091 ], [ %.pn760, %1103 ], [ %.pn758, %1144 ], [ %1139, %1138 ], [ %.pn756, %1114 ], [ %1145, %.split1283.split ], [ %.pn749, %1169 ], [ %1156, %.split1289.split ], [ %1155, %.split1286.split ], [ %.pn746, %1189 ], [ %1175, %.split1213.split ], [ %1174, %.split1210.split ], [ %lpad.loopexit987, %.loopexit985 ], [ %lpad.loopexit.split-lp988, %.loopexit.split-lp986 ], [ %lpad.loopexit992, %.loopexit990 ], [ %lpad.loopexit.split-lp993, %.loopexit.split-lp991 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #10
  br label %1191

1191:                                             ; preds = %1190, %996
  %.pn765.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn765.pn.pn.pn.pn.pn, %1190 ], [ %997, %996 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #10
  br label %1223

1192:                                             ; preds = %.loopexit1025
  br i1 %154, label %1193, label %1221

1193:                                             ; preds = %1192
  %1194 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %1195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1194, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS1_9StatementE)
          to label %1196 unwind label %1219

1196:                                             ; preds = %1193
  %1197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1195, ptr noundef nonnull @.str.24)
          to label %1198 unwind label %1219

1198:                                             ; preds = %1196
  %1199 = getelementptr inbounds i8, ptr %0, i64 440
  %1200 = load i32, ptr %1199, align 8, !tbaa !9
  %1201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1197, i32 noundef %1200)
          to label %1202 unwind label %1219

1202:                                             ; preds = %1198
  %1203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1201, ptr noundef nonnull @.str.16)
          to label %1204 unwind label %1219

1204:                                             ; preds = %1202
  %1205 = load i32, ptr %1, align 8, !tbaa !45
  %1206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1203, i32 noundef %1205)
          to label %1207 unwind label %1219

1207:                                             ; preds = %1204
  %1208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1206, ptr noundef nonnull @.str.17)
          to label %1209 unwind label %1219

1209:                                             ; preds = %1207
  %1210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1208, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %1211 unwind label %1219

1211:                                             ; preds = %1209
  %1212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1210, ptr noundef nonnull @.str.25)
          to label %1213 unwind label %1219

1213:                                             ; preds = %1211
  %1214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %1212, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %1215 unwind label %1219

1215:                                             ; preds = %1213
  %1216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1214, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1217 unwind label %1219

1217:                                             ; preds = %1215
  %1218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1216, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1221 unwind label %1219

1219:                                             ; preds = %1217, %1215, %1213, %1211, %1209, %1207, %1204, %1202, %1198, %1196, %1193, %.loopexit1025
  %1220 = landingpad { ptr, i32 }
          cleanup
  br label %1223

1221:                                             ; preds = %1217, %1192
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  br label %1222

1222:                                             ; preds = %.split1180, %.split1177, %.split1175, %1221
  ret void

1223:                                             ; preds = %179, %395, %423, %514, %527, %540, %825, %895, %980, %1191, %.split2886.split, %.split2883.split, %.split2691.split, %.split2688.split, %778, %780, %782, %768, %955, %919, %.split1579.split, %.split1576.split, %1219
  %.pn765.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1220, %1219 ], [ %.pn765.pn.pn.pn.pn.pn.pn, %1191 ], [ %.pn775.pn.pn.pn, %980 ], [ %.pn795.pn.pn.pn.pn.pn, %895 ], [ %.pn803.pn.pn.pn, %825 ], [ %.pn850.pn.pn, %540 ], [ %.pn854.pn.pn, %527 ], [ %.pn858.pn.pn.pn, %514 ], [ %.pn873.pn.pn.pn, %423 ], [ %.pn899.pn.pn.pn, %395 ], [ %.pn908, %179 ], [ %182, %.split2886.split ], [ %180, %.split2883.split ], [ %187, %.split2691.split ], [ %183, %.split2688.split ], [ %.pn843.pn.pn.pn.pn, %768 ], [ %783, %782 ], [ %779, %778 ], [ %781, %780 ], [ %.pn790.pn, %919 ], [ %.pn781.pn.pn.pn.pn, %955 ], [ %984, %.split1579.split ], [ %981, %.split1576.split ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  br label %1224

1224:                                             ; preds = %147, %152, %1223
  %.pn.pn = phi { ptr, i32 } [ %.pn765.pn.pn.pn.pn.pn.pn.pn.pn, %1223 ], [ %153, %152 ], [ %148, %147 ]
  resume { ptr, i32 } %.pn.pn

1225:                                             ; preds = %1017, %994, %834, %791, %718, %602, %576, %505, %491, %415, %407, %298, %208
  unreachable
}

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #7

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval14CallStackEntry12write_borrowENS0_8ValueRefEN3HIR10BorrowTypeERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(816), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden i64 @_ZN12_GLOBAL__N_18TypeInfo13for_primitiveEN3HIR8CoreTypeE(i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_sintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { i64, i64 } @_ZNK4S1289get_innerEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK3MIR4eval8ValueRef10read_floatERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::ValueRef") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) local_unnamed_addr #4 align 2

declare noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(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(40)) local_unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK4S1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK4S1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK4U1288to_floatEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK4U1289to_doubleEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry18get_staticref_monoERKN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::StaticRefPtr") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 8 dereferenceable(48), i1 noundef zeroext) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden { i64, i64 } @_ZNK12_GLOBAL__N_18TypeInfo4maskE4U128(ptr noundef nonnull align 4 dereferenceable(8), i64, i64) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128coEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128plEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::ValueRef") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

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

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(ptr) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7

declare void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry13get_staticrefEN3HIR4PathEPNS2_7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::StaticRefPtr") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator13run_statementERN3MIR4eval14CallStackEntryERKNS6_9StatementEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK15MonomorphiserPP9get_valueERK4SpanRKN3HIR10GenericRefE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #7

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

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

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

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

declare noundef i64 @_ZNK14EncodedLiteral10read_usizeEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZN12_GLOBAL__N_110get_offsetERK4SpanRK18StaticTraitResolvePK8TypeReprRKNS6_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

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

declare void @_ZN3MIR4eval8RelocPtrD1Ev(ptr) local_unnamed_addr

attributes #0 = { nofree nounwind }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "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 #9 = { noreturn nounwind }
attributes #10 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 440}
!10 = !{!"_ZTSN3HIR9EvaluatorE", !11, i64 0, !13, i64 8, !12, i64 432, !6, i64 440, !6, i64 444, !41, i64 448}
!11 = !{!"_ZTS4Span", !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!"_ZTS18StaticTraitResolve", !14, i64 8, !32, i64 224, !33, i64 232, !33, i64 280, !33, i64 328, !36, i64 376}
!14 = !{!"_ZTS18TraitResolveCommon", !12, i64 0, !12, i64 8, !12, i64 16, !15, i64 24, !24, i64 72, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208}
!15 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!29 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!30 = !{!"_ZTSN3HIR10SimplePathE", !31, i64 0}
!31 = !{!"_ZTS10ThinVectorI8RcStringE", !12, i64 0}
!32 = !{!"_ZTS12MetadataType", !7, i64 0}
!33 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !18, i64 0, !20, i64 8}
!36 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !39, i64 0, !20, i64 8}
!39 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !40, i64 0}
!40 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!41 = !{!"_ZTSSt6vectorIN3HIR9Evaluator6CsePtrESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3HIR9Evaluator6CsePtrESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!45 = !{!46, !6, i64 0}
!46 = !{!"_ZTSN3MIR4eval14CallStackEntryE", !6, i64 0, !47, i64 8, !51, i64 32, !12, i64 40, !13, i64 48, !52, i64 472, !56, i64 592, !68, i64 736, !70, i64 744, !74, i64 768, !70, i64 792}
!47 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!51 = !{!"_ZTSN3HIR7TypeRefE", !12, i64 0}
!52 = !{!"_ZTSN3MIR11TypeResolveE", !6, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !53, i64 32, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !6, i64 112, !6, i64 116}
!53 = !{!"_ZTS9FmtLambda", !54, i64 0}
!54 = !{!"_ZTSSt8functionIFvRSoEE", !55, i64 0, !12, i64 24}
!55 = !{!"_ZTSSt14_Function_base", !7, i64 0, !12, i64 16}
!56 = !{!"_ZTS14MonomorphState", !57, i64 0, !51, i64 96, !12, i64 104, !12, i64 112, !64, i64 120}
!57 = !{!"_ZTS15MonomorphiserPP", !58, i64 0}
!58 = !{!"_ZTS13Monomorphiser", !12, i64 8, !59, i64 16, !60, i64 72}
!59 = !{!"_ZTSN3HIR8ItemPathE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48}
!60 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!64 = !{!"_ZTSN3HIR10PathParamsE", !65, i64 0, !66, i64 8, !67, i64 16}
!65 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !12, i64 0}
!66 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !12, i64 0}
!67 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !12, i64 0}
!68 = !{!"_ZTSN3MIR4eval13AllocationPtrE", !69, i64 0}
!69 = !{!"_ZTSN3MIR4eval11RefCountPtrINS0_10AllocationEEE", !12, i64 0}
!70 = !{!"_ZTSSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN3MIR4eval13AllocationPtrESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!74 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!78 = !{!12, !12, i64 0}
!79 = !{!80, !81, i64 0}
!80 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !81, i64 0, !82, i64 8}
!81 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!82 = !{!"_ZTSN3MIR6LValueE", !83, i64 0, !84, i64 8}
!83 = !{!"_ZTSN3MIR6LValue7StorageE", !23, i64 0}
!84 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!88 = !{!89, !89, i64 0}
!89 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!90 = !{!52, !12, i64 8}
!91 = !{!92, !23, i64 8}
!92 = !{!"_ZTSN8TypeRepr11VariantMode11Data_ValuesE", !93, i64 0, !94, i64 40}
!93 = !{!"_ZTSN8TypeRepr9FieldPathE", !23, i64 0, !23, i64 8, !94, i64 16}
!94 = !{!"_ZTSSt6vectorImSaImEE", !95, i64 0}
!95 = !{!"_ZTSSt12_Vector_baseImSaImEE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!98 = !{!23, !23, i64 0}
!99 = !{!100, !103, i64 48}
!100 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !101, i64 0, !103, i64 48, !101, i64 56}
!101 = !{!"_ZTSN3MIR5ParamE", !102, i64 0, !7, i64 8}
!102 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!103 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!104 = !{!105, !106, i64 32}
!105 = !{!"_ZTSN3MIR6RValue10Data_UniOpE", !82, i64 0, !106, i64 32}
!106 = !{!"_ZTSN3MIR6eUniOpE", !7, i64 0}
!107 = !{!108, !6, i64 4}
!108 = !{!"_ZTSN12_GLOBAL__N_18TypeInfoE", !7, i64 0, !6, i64 4}
!109 = !{!110, !140, i64 216}
!110 = !{!"_ZTSN3HIR6StructE", !111, i64 0, !128, i64 96, !129, i64 104, !6, i64 136, !6, i64 140, !131, i64 144, !138, i64 200, !142, i64 248}
!111 = !{!"_ZTSN3HIR13GenericParamsE", !112, i64 0, !116, i64 24, !120, i64 48, !124, i64 72}
!112 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !113, i64 0}
!113 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!116 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !117, i64 0}
!117 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !118, i64 0}
!118 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !119, i64 0}
!119 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!120 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!124 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !125, i64 0}
!125 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !127, i64 0}
!127 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!128 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!129 = !{!"_ZTSN3HIR6Struct4DataE", !130, i64 0, !7, i64 8}
!130 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!131 = !{!"_ZTSN3HIR13TraitMarkingsE", !132, i64 0, !132, i64 1, !132, i64 2, !133, i64 8}
!132 = !{!"bool", !7, i64 0}
!133 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !134, i64 0}
!134 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !135, i64 0}
!135 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !136, i64 0, !20, i64 8}
!136 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !137, i64 0}
!137 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!138 = !{!"_ZTSN3HIR14StructMarkingsE", !132, i64 0, !6, i64 4, !139, i64 8, !6, i64 12, !140, i64 16, !6, i64 20, !6, i64 24, !132, i64 28, !132, i64 29, !141, i64 32}
!139 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!140 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!141 = !{!"_ZTS4U128", !23, i64 0, !23, i64 8}
!142 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!143 = distinct !{!143, !144}
!144 = !{!"llvm.loop.mustprogress"}
!145 = !{!138, !6, i64 4}
!146 = !{!"branch_weights", i32 1, i32 1048575}
!147 = !{!148, !81, i64 0}
!148 = !{!"_ZTSN3MIR5Param11Data_BorrowE", !81, i64 0, !82, i64 8}
!149 = !{!150, !23, i64 0}
!150 = !{!"_ZTSN8TypeRepr5FieldE", !23, i64 0, !51, i64 8}
!151 = distinct !{!151, !144}
!152 = distinct !{!152, !144}
!153 = distinct !{!153, !144}
!154 = !{!155, !6, i64 32}
!155 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !156, i64 0, !6, i64 32, !157, i64 40}
!156 = !{!"_ZTSN3HIR11GenericPathE", !30, i64 0, !64, i64 8}
!157 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !158, i64 0}
!158 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!161 = distinct !{!161, !144}
!162 = !{!92, !23, i64 0}
!163 = !{!164, !6, i64 40}
!164 = !{!"_ZTSN8TypeRepr11VariantMode12Data_NonZeroE", !93, i64 0, !6, i64 40}
!165 = !{!164, !23, i64 8}
!166 = distinct !{!166, !144}
!167 = !{!168, !23, i64 8}
!168 = !{!"_ZTSN8TypeRepr11VariantMode11Data_LinearE", !93, i64 0, !23, i64 40, !23, i64 48}
!169 = !{!168, !23, i64 40}


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