; 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.MIR::eval::ConstantPtr" = type { %"class.MIR::eval::RefCountPtr.0" }
%"class.MIR::eval::RefCountPtr.0" = type { ptr }
%"class.MIR::eval::AllocationPtr" = type { %"class.MIR::eval::RefCountPtr" }
%"class.MIR::eval::RefCountPtr" = type { ptr }
%"class.MIR::eval::StaticRefPtr" = type { %"class.MIR::eval::RefCountPtr.25" }
%"class.MIR::eval::RefCountPtr.25" = 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.244 = type { ptr, ptr }
%class.U128 = type { i64, i64 }
%"class.MIR::eval::ValueRef" = type { %"class.MIR::eval::RelocPtr", i32, i32 }
%"class.MIR::eval::RelocPtr" = type { i64 }
%"class.HIR::TypeRef" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.245" = type { ptr }
%struct.Span = type { ptr }
%class.anon.246 = type { ptr, ptr }
%class.anon.247 = type { ptr, ptr }
%"struct.(anonymous namespace)::TypeInfo" = type { i32, i32 }
%class.anon.248 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"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 }
%class.RcString = 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.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%class.anon.396 = type { i8 }
%class.anon.398 = type { i8 }
%class.anon.400 = type { ptr }
%class.anon.401 = type { ptr }
%class.anon.402 = type { ptr }
%class.anon.403 = type { ptr }
%class.anon.404 = type { ptr }
%class.anon.405 = type { ptr }
%class.anon.406 = type { ptr }
%class.anon.407 = type { ptr }
%class.anon.408 = type { ptr, ptr }
%class.anon.409 = type { i8 }
%class.anon.411 = type { ptr, ptr }
%"struct.std::pair" = type { %"class.MIR::eval::ValueRef", %"class.MIR::eval::ValueRef" }
%class.anon.412 = type { ptr, ptr }
%class.anon.413 = type { ptr, ptr }
%class.anon.414 = type { ptr, ptr }
%class.anon.415 = type { ptr, ptr }
%class.anon.416 = type { ptr, ptr }
%class.anon.417 = type { ptr, ptr }
%class.anon.418 = type { ptr, ptr }
%class.anon.419 = type { ptr, ptr }
%class.anon.420 = type { ptr }
%class.anon.421 = type { ptr, ptr }
%class.anon.422 = type { ptr }
%class.anon.423 = type { ptr, ptr }
%class.anon.424 = type { ptr }
%class.anon.425 = type { ptr, ptr }
%class.anon.426 = type { ptr, ptr }
%class.anon.427 = type { i8 }
%class.anon.429 = type { ptr }
%class.anon.430 = type { ptr, ptr }
%"class.std::shared_ptr.431" = type { %"class.std::__shared_ptr.432" }
%"class.std::__shared_ptr.432" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair.434" = type { i64, %"class.MIR::eval::RelocPtr" }
%class.anon.436 = type { i8 }
%class.anon.438 = type { i8 }
%class.anon.440 = type { ptr, ptr }
%class.anon.441 = type { 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 }
%"class.__gnu_cxx::__normal_iterator.442" = type { ptr }
%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.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.__gnu_cxx::__normal_iterator.443" = type { ptr }
%"struct.std::pair.444" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.446", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.446" = type { %"struct.std::_Vector_base.447" }
%"struct.std::_Vector_base.447" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"class.HIR::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%class.anon.477 = type { ptr }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.478 = type { %"class.std::shared_ptr.431" }
%class.anon.479 = type { ptr }
%class.anon.480 = type { ptr }
%class.anon.481 = type { i8 }
%class.anon.483 = type { i8 }
%class.anon.485 = type { ptr }
%class.anon.486 = type { ptr }
%class.anon.487 = type { i8 }
%class.anon.489 = type { ptr }
%class.anon.490 = type { ptr }
%class.anon.491 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.240" = type { ptr }
%class.anon.492 = type { i8 }
%class.anon.494 = type { ptr }
%class.anon.495 = type { ptr }
%class.anon.496 = type { %"class.std::shared_ptr.431" }
%class.anon.497 = type { ptr, 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.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 }
%"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 }
%"struct.HIR::Evaluator" = type { %struct.Span, %class.StaticTraitResolve, ptr, i32, i32, %"class.std::vector.46" }
%"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::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"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 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.70" }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.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.TypeRepr::VariantMode::Data_Linear" = type { %"struct.TypeRepr::FieldPath", i64, i64 }
%"struct.TypeRepr::VariantMode::Data_NonZero" = type <{ %"struct.TypeRepr::FieldPath", i32, [4 x i8] }>
%"struct.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.70", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.75" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.92" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"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.MIR::CallTarget::Data_Intrinsic" = type { %class.RcString, %"struct.HIR::PathParams" }
%"struct.TypeRepr::Field" = type { i64, %"class.HIR::TypeRef" }
%"struct.MIR::Constant::Data_Function" = type { %"class.std::unique_ptr.105" }
%"class.std::unique_ptr.105" = type { %"struct.std::__uniq_ptr_data.106" }
%"struct.std::__uniq_ptr_data.106" = type { %"class.std::__uniq_ptr_impl.107" }
%"class.std::__uniq_ptr_impl.107" = type { %"class.std::tuple.108" }
%"class.std::tuple.108" = type { %"struct.std::_Tuple_impl.109" }
%"struct.std::_Tuple_impl.109" = type { %"struct.std::_Head_base.112" }
%"struct.std::_Head_base.112" = type { ptr }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.26", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.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::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.41", %"class.std::vector.41", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.70", i8, i32 }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }

@_ZTIN12_GLOBAL__N_15DeferE = external hidden constant { ptr, ptr }, align 8
@.str.8 = external hidden unnamed_addr constant [91 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@g_debug_indent_level = external global i32, align 4
@.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
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.22 = external hidden unnamed_addr constant [4 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__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [13 x i8], align 1

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.MIR::eval::AllocationPtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

declare noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(168) %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.244, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca ptr, align 8
  %23 = alloca i8, align 1
  %24 = alloca %class.U128, align 8
  %25 = alloca %class.U128, align 8
  %26 = alloca %"class.MIR::eval::ValueRef", align 8
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.MIR::eval::ValueRef", align 8
  %33 = alloca i32, align 4
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca i8, align 1
  %39 = alloca ptr, align 8
  %40 = alloca i64, align 8
  %41 = alloca %class.U128, align 8
  %42 = alloca %"class.MIR::eval::ValueRef", align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca i64, align 8
  %46 = alloca %class.U128, align 8
  %47 = alloca %"class.MIR::eval::ValueRef", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.246, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca i64, align 8
  %59 = alloca i8, align 1
  %60 = alloca i64, align 8
  %61 = alloca %class.U128, align 8
  %62 = alloca %"class.MIR::eval::ValueRef", align 8
  %63 = alloca %"class.std::function", align 8
  %64 = alloca %class.anon.247, align 8
  %65 = alloca i8, align 1
  %66 = alloca ptr, align 8
  %67 = alloca %"class.HIR::TypeRef", align 8
  %68 = alloca ptr, align 8
  %69 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %70 = alloca %"class.MIR::eval::ValueRef", align 8
  %71 = alloca i32, align 4
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  %74 = alloca %"class.std::function", align 8
  %75 = alloca %class.anon.248, align 8
  %76 = alloca i8, align 1
  %77 = alloca ptr, align 8
  %78 = alloca %class.U128, align 8
  %79 = alloca i64, align 8
  %80 = alloca i8, align 1
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca %"class.MIR::eval::ValueRef", align 8
  %85 = alloca %"class.HIR::TypeRef", align 8
  %86 = alloca i64, align 8
  %87 = alloca %class.U128, align 8
  %88 = alloca %"class.HIR::TypeRef", align 8
  %89 = alloca i64, align 8
  %90 = alloca %class.U128, align 8
  %91 = alloca %"class.HIR::TypeRef", align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %94 = alloca %"class.MIR::eval::RelocPtr", align 8
  %95 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %96 = alloca %"class.MIR::eval::ValueRef", align 8
  %97 = alloca %"class.HIR::TypeRef", align 8
  %98 = alloca %"class.MIR::eval::RelocPtr", align 8
  %99 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %100 = alloca %"class.HIR::Path", align 8
  %101 = alloca %"class.HIR::TypeRef", align 8
  %102 = alloca %class.RcString, align 8
  %103 = alloca %"struct.HIR::PathParams", align 8
  %104 = alloca %"class.HIR::TypeRef", align 8
  %105 = alloca %"struct.HIR::SimplePath", align 8
  %106 = alloca %"class.HIR::TypeRef", align 8
  %107 = alloca %"class.HIR::Path", align 8
  %108 = alloca %"struct.HIR::SimplePath", align 8
  %109 = alloca %"class.HIR::TypePathBinding", align 8
  %110 = alloca ptr, align 8
  %111 = alloca %"class.std::function", align 8
  %112 = alloca %class.anon.396, align 1
  %113 = alloca %"class.std::function", align 8
  %114 = alloca %class.anon.398, align 1
  %115 = alloca %"class.MIR::eval::RelocPtr", align 8
  %116 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %117 = alloca %"class.MIR::eval::RelocPtr", align 8
  %118 = alloca %"class.MIR::eval::ValueRef", align 8
  %119 = alloca %"class.MIR::eval::RelocPtr", align 8
  %120 = alloca i32, align 4
  %121 = alloca %"class.MIR::eval::ValueRef", align 8
  %122 = alloca %"class.MIR::eval::RelocPtr", align 8
  %123 = alloca %"class.MIR::eval::ConstantPtr", align 8
  %124 = alloca %"class.MIR::eval::ValueRef", align 8
  %125 = alloca %"class.MIR::eval::ValueRef", align 8
  %126 = alloca %"class.MIR::eval::ValueRef", align 8
  %127 = alloca %"class.HIR::TypeRef", align 8
  %128 = alloca %"class.std::function", align 8
  %129 = alloca %class.anon.400, align 8
  %130 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %131 = alloca %class.U128, align 8
  %132 = alloca i32, align 4
  %133 = alloca %class.U128, align 8
  %134 = alloca %"class.HIR::TypeRef", align 8
  %135 = alloca %"class.std::function", align 8
  %136 = alloca %class.anon.401, align 8
  %137 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %138 = alloca %"class.std::function", align 8
  %139 = alloca %class.anon.402, align 8
  %140 = alloca %class.U128, align 8
  %141 = alloca i32, align 4
  %142 = alloca %class.U128, align 8
  %143 = alloca %class.U128, align 8
  %144 = alloca %class.U128, align 8
  %145 = alloca %class.U128, align 8
  %146 = alloca %"class.HIR::TypeRef", align 8
  %147 = alloca %"class.std::function", align 8
  %148 = alloca %class.anon.403, align 8
  %149 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %150 = alloca %"class.std::function", align 8
  %151 = alloca %class.anon.404, align 8
  %152 = alloca %class.U128, align 8
  %153 = alloca i32, align 4
  %154 = alloca %class.U128, align 8
  %155 = alloca %class.U128, align 8
  %156 = alloca %"class.HIR::TypeRef", align 8
  %157 = alloca %"class.std::function", align 8
  %158 = alloca %class.anon.405, align 8
  %159 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %160 = alloca %class.U128, align 8
  %161 = alloca %class.U128, align 8
  %162 = alloca %class.U128, align 8
  %163 = alloca %class.U128, align 8
  %164 = alloca %class.U128, align 8
  %165 = alloca %class.U128, align 8
  %166 = alloca %class.U128, align 8
  %167 = alloca %"class.std::function", align 8
  %168 = alloca %class.anon.406, align 8
  %169 = alloca %class.U128, align 8
  %170 = alloca %"class.HIR::TypeRef", align 8
  %171 = alloca %"class.std::function", align 8
  %172 = alloca %class.anon.407, align 8
  %173 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %174 = alloca %class.U128, align 8
  %175 = alloca %class.U128, align 8
  %176 = alloca i64, align 8
  %177 = alloca %class.U128, align 8
  %178 = alloca %class.U128, align 8
  %179 = alloca %"class.HIR::TypeRef", align 8
  %180 = alloca %"class.std::function", align 8
  %181 = alloca %class.anon.408, align 8
  %182 = alloca %"struct.(anonymous namespace)::TypeInfo", align 4
  %183 = alloca %class.U128, align 8
  %184 = alloca %class.U128, align 8
  %185 = alloca %"class.std::function", align 8
  %186 = alloca %class.anon.409, align 1
  %187 = alloca i32, align 4
  %188 = alloca %class.U128, align 8
  %189 = alloca %class.U128, align 8
  %190 = alloca %class.U128, align 8
  %191 = alloca %class.U128, align 8
  %192 = alloca %class.U128, align 8
  %193 = alloca %class.U128, align 8
  %194 = alloca %class.U128, align 8
  %195 = alloca %class.U128, align 8
  %196 = alloca %class.U128, align 8
  %197 = alloca %class.U128, align 8
  %198 = alloca %"class.HIR::TypeRef", align 8
  %199 = alloca %"class.std::function", align 8
  %200 = alloca %class.anon.411, align 8
  %201 = alloca %"struct.std::pair", align 8
  %202 = alloca i8, align 1
  %203 = alloca %class.U128, align 8
  %204 = alloca %"class.HIR::TypeRef", align 8
  %205 = alloca %"class.std::function", align 8
  %206 = alloca %class.anon.412, align 8
  %207 = alloca %"struct.std::pair", align 8
  %208 = alloca i8, align 1
  %209 = alloca %class.U128, align 8
  %210 = alloca %"class.HIR::TypeRef", align 8
  %211 = alloca %"class.std::function", align 8
  %212 = alloca %class.anon.413, align 8
  %213 = alloca %"struct.std::pair", align 8
  %214 = alloca i8, align 1
  %215 = alloca %class.U128, align 8
  %216 = alloca %"class.HIR::TypeRef", align 8
  %217 = alloca %"class.std::function", align 8
  %218 = alloca %class.anon.414, align 8
  %219 = alloca %"class.HIR::TypeRef", align 8
  %220 = alloca %"class.std::function", align 8
  %221 = alloca %class.anon.415, align 8
  %222 = alloca %"class.HIR::TypeRef", align 8
  %223 = alloca %"class.std::function", align 8
  %224 = alloca %class.anon.416, align 8
  %225 = alloca %"class.HIR::TypeRef", align 8
  %226 = alloca %"class.std::function", align 8
  %227 = alloca %class.anon.417, align 8
  %228 = alloca %"class.HIR::TypeRef", align 8
  %229 = alloca %"class.std::function", align 8
  %230 = alloca %class.anon.418, align 8
  %231 = alloca %"class.HIR::TypeRef", align 8
  %232 = alloca %"class.std::function", align 8
  %233 = alloca %class.anon.419, align 8
  %234 = alloca i8, align 1
  %235 = alloca %"class.std::function", align 8
  %236 = alloca %class.anon.420, align 8
  %237 = alloca %"class.HIR::TypeRef", align 8
  %238 = alloca %"class.std::function", align 8
  %239 = alloca %class.anon.421, align 8
  %240 = alloca i8, align 1
  %241 = alloca %"class.std::function", align 8
  %242 = alloca %class.anon.422, align 8
  %243 = alloca %"class.HIR::TypeRef", align 8
  %244 = alloca %"class.std::function", align 8
  %245 = alloca %class.anon.423, align 8
  %246 = alloca i8, align 1
  %247 = alloca %"class.std::function", align 8
  %248 = alloca %class.anon.424, align 8
  %249 = alloca %"class.HIR::TypeRef", align 8
  %250 = alloca %"class.std::function", align 8
  %251 = alloca %class.anon.425, align 8
  %252 = alloca %"class.HIR::TypeRef", align 8
  %253 = alloca %"class.std::function", align 8
  %254 = alloca %class.anon.426, align 8
  %255 = alloca %"class.MIR::eval::ValueRef", align 8
  %256 = alloca %"class.MIR::eval::ValueRef", align 8
  %257 = alloca %class.U128, align 8
  %258 = alloca %"class.std::function", align 8
  %259 = alloca %class.anon.427, align 1
  %260 = alloca %"class.HIR::TypeRef", align 8
  %261 = alloca i8, align 1
  %262 = alloca %"class.std::function", align 8
  %263 = alloca %class.anon.429, align 8
  %264 = alloca %"class.HIR::TypeRef", align 8
  %265 = alloca %"class.std::function", align 8
  %266 = alloca %class.anon.430, align 8
  %267 = alloca ptr, align 8
  %268 = alloca %"class.MIR::eval::ValueRef", align 8
  %269 = alloca ptr, align 8
  %270 = alloca %"class.std::shared_ptr.431", align 8
  %271 = alloca i8, align 1
  %272 = alloca ptr, align 8
  %273 = alloca i8, align 1
  %274 = alloca ptr, align 8
  %275 = alloca %"struct.std::pair.434", align 8
  %276 = alloca %"class.MIR::eval::ValueRef", align 8
  %277 = alloca %"class.std::function", align 8
  %278 = alloca %class.anon.436, align 1
  %279 = alloca ptr, align 8
  %280 = alloca %"class.std::function", align 8
  %281 = alloca %class.anon.438, align 1
  %282 = alloca %"class.std::shared_ptr.431", align 8
  %283 = alloca %"class.HIR::Path", align 8
  %284 = alloca i8, align 1
  %285 = alloca ptr, align 8
  %286 = alloca ptr, align 8
  %287 = alloca %"class.std::function", align 8
  %288 = alloca %class.anon.440, align 8
  %289 = alloca i8, align 1
  %290 = alloca ptr, align 8
  %291 = alloca ptr, align 8
  %292 = alloca %"class.std::shared_ptr.431", align 8
  %293 = alloca %"class.HIR::Path", align 8
  %294 = alloca ptr, align 8
  %295 = alloca %"class.std::shared_ptr.431", align 8
  %296 = alloca %"class.HIR::Path", align 8
  %297 = alloca ptr, align 8
  %298 = alloca %"class.std::function", align 8
  %299 = alloca %class.anon.441, align 8
  %300 = alloca %"class.std::vector.36", align 8
  %301 = alloca ptr, align 8
  %302 = alloca %"class.__gnu_cxx::__normal_iterator.442", align 8
  %303 = alloca %"class.__gnu_cxx::__normal_iterator.442", align 8
  %304 = alloca ptr, align 8
  %305 = alloca i64, align 8
  %306 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %307 = alloca %"class.MIR::eval::ValueRef", align 8
  %308 = alloca %"class.MIR::eval::RelocPtr", align 8
  %309 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %310 = alloca %"class.MIR::eval::ValueRef", align 8
  %311 = alloca %struct.MonomorphState, align 8
  %312 = alloca ptr, align 8
  %313 = alloca ptr, align 8
  %314 = alloca %"class.std::vector.26", align 8
  %315 = alloca ptr, align 8
  %316 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %317 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %318 = alloca ptr, align 8
  %319 = alloca %"struct.std::pair.444", align 8
  %320 = alloca %"struct.HIR::Pattern", align 8
  %321 = alloca %"class.HIR::TypeRef", align 8
  %322 = alloca %"class.HIR::TypeRef", align 8
  %323 = alloca ptr, align 8
  %324 = alloca %"class.HIR::ItemPath", align 8
  %325 = alloca %"class.std::function", align 8
  %326 = alloca %class.anon.477, align 8
  %327 = alloca %struct.FmtLambda, align 8
  %328 = alloca %"class.std::function", align 8
  %329 = alloca %class.anon.478, align 8
  %330 = alloca %struct.MonomorphState, align 8
  %331 = alloca %"class.HIR::TypeRef", align 8
  %332 = alloca %"class.std::vector.26", align 8
  %333 = alloca %"class.std::vector.36", align 8
  %334 = alloca %"class.HIR::TypeRef", align 8
  %335 = alloca i64, align 8
  %336 = alloca %"struct.std::pair.434", align 8
  %337 = alloca %"class.MIR::eval::ValueRef", align 8
  %338 = alloca %"struct.std::pair.434", align 8
  %339 = alloca %"class.MIR::eval::ValueRef", align 8
  %340 = alloca %class.U128, align 8
  %341 = alloca %"class.std::function", align 8
  %342 = alloca %class.anon.479, align 8
  %343 = alloca %class.U128, align 8
  %344 = alloca %class.U128, align 8
  %345 = alloca %"class.std::function", align 8
  %346 = alloca %class.anon.480, align 8
  %347 = alloca i64, align 8
  %348 = alloca %"class.std::function", align 8
  %349 = alloca %class.anon.481, align 1
  %350 = alloca %"class.std::function", align 8
  %351 = alloca %class.anon.483, align 1
  %352 = alloca %"class.MIR::eval::ValueRef", align 8
  %353 = alloca %"class.MIR::eval::ValueRef", align 8
  %354 = alloca %"class.MIR::eval::RelocPtr", align 8
  %355 = alloca %"class.MIR::eval::ValueRef", align 8
  %356 = alloca %"class.MIR::eval::ValueRef", align 8
  %357 = alloca %"class.MIR::eval::RelocPtr", align 8
  %358 = alloca %"class.HIR::TypeRef", align 8
  %359 = alloca i64, align 8
  %360 = alloca %"struct.std::pair.434", align 8
  %361 = alloca %class.U128, align 8
  %362 = alloca %"class.MIR::eval::RelocPtr", align 8
  %363 = alloca %"class.HIR::TypeRef", align 8
  %364 = alloca i64, align 8
  %365 = alloca %"struct.std::pair.434", align 8
  %366 = alloca %"class.MIR::eval::ValueRef", align 8
  %367 = alloca %class.U128, align 8
  %368 = alloca %class.U128, align 8
  %369 = alloca %"class.std::function", align 8
  %370 = alloca %class.anon.485, align 8
  %371 = alloca %class.U128, align 8
  %372 = alloca %class.U128, align 8
  %373 = alloca %"class.std::function", align 8
  %374 = alloca %class.anon.486, align 8
  %375 = alloca i64, align 8
  %376 = alloca %"class.std::function", align 8
  %377 = alloca %class.anon.487, align 1
  %378 = alloca %"class.MIR::eval::ValueRef", align 8
  %379 = alloca %"class.MIR::eval::ValueRef", align 8
  %380 = alloca %"class.MIR::eval::RelocPtr", align 8
  %381 = alloca %"class.HIR::TypeRef", align 8
  %382 = alloca %"class.std::function", align 8
  %383 = alloca %class.anon.489, align 8
  %384 = alloca %"class.std::function", align 8
  %385 = alloca %class.anon.490, align 8
  %386 = alloca ptr, align 8
  %387 = alloca %"class.std::function", align 8
  %388 = alloca %class.anon.491, align 8
  %389 = alloca ptr, align 8
  %390 = alloca ptr, align 8
  %391 = alloca %"class.std::shared_ptr.431", align 8
  %392 = alloca %"class.HIR::Path", align 8
  %393 = alloca %struct.MonomorphState, align 8
  %394 = alloca ptr, align 8
  %395 = alloca ptr, align 8
  %396 = alloca %"class.std::vector.36", align 8
  %397 = alloca ptr, align 8
  %398 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %399 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %400 = alloca ptr, align 8
  %401 = alloca %"class.HIR::TypeRef", align 8
  %402 = alloca ptr, align 8
  %403 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %404 = alloca %"class.MIR::eval::ValueRef", align 8
  %405 = alloca %"class.MIR::eval::RelocPtr", align 8
  %406 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %407 = alloca %"class.MIR::eval::ValueRef", align 8
  %408 = alloca %"class.std::vector.26", align 8
  %409 = alloca ptr, align 8
  %410 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %411 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %412 = alloca ptr, align 8
  %413 = alloca %"struct.std::pair.444", align 8
  %414 = alloca %"struct.HIR::Pattern", align 8
  %415 = alloca %"class.HIR::TypeRef", align 8
  %416 = alloca %"class.HIR::TypeRef", align 8
  %417 = alloca %"class.std::function", align 8
  %418 = alloca %class.anon.492, align 1
  %419 = alloca %"class.std::function", align 8
  %420 = alloca %class.anon.494, align 8
  %421 = alloca ptr, align 8
  %422 = alloca %"class.HIR::ItemPath", align 8
  %423 = alloca %"class.std::function", align 8
  %424 = alloca %class.anon.495, align 8
  %425 = alloca %struct.FmtLambda, align 8
  %426 = alloca %"class.std::function", align 8
  %427 = alloca %class.anon.496, align 8
  %428 = alloca %struct.MonomorphState, align 8
  %429 = alloca %"class.HIR::TypeRef", align 8
  %430 = alloca %"class.std::vector.26", align 8
  %431 = alloca %"class.std::vector.36", align 8
  %432 = alloca ptr, align 8
  %433 = alloca %"class.std::function", align 8
  %434 = alloca %class.anon.497, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %435 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  %436 = load ptr, ptr %6, align 8, !tbaa !5
  %437 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %436, i32 0, i32 5
  store ptr %437, ptr %8, align 8, !tbaa !5
  br label %438

438:                                              ; preds = %3
  %439 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %439, label %440, label %459

440:                                              ; preds = %438
  %441 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %441, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
  %443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef @.str.15)
  %444 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 3
  %445 = load i32, ptr %444, align 8, !tbaa !11
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %443, i32 noundef %445)
  %447 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %446, ptr noundef @.str.16)
  %448 = load ptr, ptr %6, align 8, !tbaa !5
  %449 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %448, i32 0, i32 0
  %450 = load i32, ptr %449, align 8, !tbaa !46
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %447, i32 noundef %450)
  %452 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef @.str.17)
  %453 = load ptr, ptr %8, align 8, !tbaa !5
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef nonnull align 8 dereferenceable(120) %453)
  %455 = load ptr, ptr %7, align 8, !tbaa !5
  %456 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(168) %455)
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef @_ZSt3decRSt8ios_base)
  %458 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %459

459:                                              ; preds = %440, %438
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #11
  store i8 1, ptr %9, align 1, !tbaa !79
  br label %462

462:                                              ; preds = %5065, %461
  %463 = load i8, ptr %9, align 1, !tbaa !79, !range !81, !noundef !82
  %464 = trunc i8 %463 to i1
  br i1 %464, label %466, label %465

465:                                              ; preds = %462
  store i32 4, ptr %10, align 4
  br label %5066

466:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %467 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %467, ptr %11, align 8, !tbaa !5
  br label %468

468:                                              ; preds = %5060, %466
  %469 = load i8, ptr %9, align 1, !tbaa !79, !range !81, !noundef !82
  %470 = trunc i8 %469 to i1
  br i1 %470, label %472, label %471

471:                                              ; preds = %468
  store i32 7, ptr %10, align 4
  br label %5061

472:                                              ; preds = %468
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %473)
  switch i32 %474, label %476 [
    i32 0, label %475
    i32 4, label %490
    i32 2, label %514
    i32 6, label %536
    i32 7, label %603
    i32 8, label %1095
    i32 9, label %1263
  ]

475:                                              ; preds = %472
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2424, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #12
  unreachable

476:                                              ; preds = %472
  br label %477

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %12, align 8, !tbaa !5
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #11
  %479 = getelementptr inbounds %class.anon.244, ptr %14, i32 0, i32 0
  store ptr %12, ptr %479, align 8, !tbaa !5
  %480 = getelementptr inbounds %class.anon.244, ptr %14, i32 0, i32 1
  %481 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %481, ptr %480, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(16) %14) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %478, ptr noundef %13)
          to label %482 unwind label %484

482:                                              ; preds = %477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #11
  %483 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %483, align 16, !tbaa !5
  call void @__cxa_throw(ptr %483, ptr @_ZTIPKc, ptr null) #13
  unreachable

484:                                              ; preds = %477
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %15, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %5063

488:                                              ; No predecessors!
  br label %489

489:                                              ; preds = %488
  br label %5059

490:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #11
  store i8 1, ptr %17, align 1, !tbaa !79
  br label %491

491:                                              ; preds = %510, %490
  %492 = load i8, ptr %17, align 1, !tbaa !79, !range !81, !noundef !82
  %493 = trunc i8 %492 to i1
  br i1 %493, label %495, label %494

494:                                              ; preds = %491
  store i32 13, ptr %10, align 4
  br label %511

495:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  %496 = load ptr, ptr %11, align 8, !tbaa !5
  %497 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %496)
  store ptr %497, ptr %18, align 8, !tbaa !5
  br label %498

498:                                              ; preds = %506, %495
  %499 = load ptr, ptr %18, align 8, !tbaa !5
  %500 = load i8, ptr %17, align 1, !tbaa !79, !range !81, !noundef !82
  %501 = trunc i8 %500 to i1
  br i1 %501, label %503, label %502

502:                                              ; preds = %498
  store i32 16, ptr %10, align 4
  br label %507

503:                                              ; preds = %498
  %504 = load ptr, ptr %18, align 8, !tbaa !5
  %505 = load i32, ptr %504, align 4, !tbaa !9
  store i32 %505, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %507

506:                                              ; No predecessors!
  store i8 0, ptr %17, align 1, !tbaa !79
  br label %498, !llvm.loop !83

507:                                              ; preds = %503, %502
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  %508 = load i32, ptr %10, align 4
  switch i32 %508, label %511 [
    i32 16, label %509
  ]

509:                                              ; preds = %507
  br label %510

510:                                              ; preds = %509
  store i8 0, ptr %17, align 1, !tbaa !79
  br label %491, !llvm.loop !85

511:                                              ; preds = %507, %494
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #11
  %512 = load i32, ptr %10, align 4
  switch i32 %512, label %5061 [
    i32 13, label %513
  ]

513:                                              ; preds = %511
  br label %5059

514:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #11
  store i8 1, ptr %19, align 1, !tbaa !79
  br label %515

515:                                              ; preds = %532, %514
  %516 = load i8, ptr %19, align 1, !tbaa !79, !range !81, !noundef !82
  %517 = trunc i8 %516 to i1
  br i1 %517, label %519, label %518

518:                                              ; preds = %515
  store i32 19, ptr %10, align 4
  br label %533

519:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  %520 = load ptr, ptr %11, align 8, !tbaa !5
  %521 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %520)
  store ptr %521, ptr %20, align 8, !tbaa !5
  br label %522

522:                                              ; preds = %528, %519
  %523 = load ptr, ptr %20, align 8, !tbaa !5
  %524 = load i8, ptr %19, align 1, !tbaa !79, !range !81, !noundef !82
  %525 = trunc i8 %524 to i1
  br i1 %525, label %527, label %526

526:                                              ; preds = %522
  store i32 22, ptr %10, align 4
  br label %529

527:                                              ; preds = %522
  store i32 -1, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %529

528:                                              ; No predecessors!
  store i8 0, ptr %19, align 1, !tbaa !79
  br label %522, !llvm.loop !86

529:                                              ; preds = %527, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  %530 = load i32, ptr %10, align 4
  switch i32 %530, label %533 [
    i32 22, label %531
  ]

531:                                              ; preds = %529
  br label %532

532:                                              ; preds = %531
  store i8 0, ptr %19, align 1, !tbaa !79
  br label %515, !llvm.loop !87

533:                                              ; preds = %529, %518
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  %534 = load i32, ptr %10, align 4
  switch i32 %534, label %5061 [
    i32 19, label %535
  ]

535:                                              ; preds = %533
  br label %5059

536:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #11
  store i8 1, ptr %21, align 1, !tbaa !79
  br label %537

537:                                              ; preds = %599, %536
  %538 = load i8, ptr %21, align 1, !tbaa !79, !range !81, !noundef !82
  %539 = trunc i8 %538 to i1
  br i1 %539, label %541, label %540

540:                                              ; preds = %537
  store i32 25, ptr %10, align 4
  br label %600

541:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %542 = load ptr, ptr %11, align 8, !tbaa !5
  %543 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %542)
  store ptr %543, ptr %22, align 8, !tbaa !5
  br label %544

544:                                              ; preds = %595, %541
  %545 = load ptr, ptr %22, align 8, !tbaa !5
  %546 = load i8, ptr %21, align 1, !tbaa !79, !range !81, !noundef !82
  %547 = trunc i8 %546 to i1
  br i1 %547, label %549, label %548

548:                                              ; preds = %544
  store i32 28, ptr %10, align 4
  br label %596

549:                                              ; preds = %544
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #11
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %24, i64 noundef 0, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #11
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %551, i32 0, i32 0
  call void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(816) %550, ptr noundef nonnull align 8 dereferenceable(32) %552, ptr noundef null)
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  %554 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(120) %553, i32 noundef 1)
          to label %555 unwind label %576

555:                                              ; preds = %549
  %556 = getelementptr inbounds { i64, i64 }, ptr %25, i32 0, i32 0
  %557 = extractvalue { i64, i64 } %554, 0
  store i64 %557, ptr %556, align 8
  %558 = getelementptr inbounds { i64, i64 }, ptr %25, i32 0, i32 1
  %559 = extractvalue { i64, i64 } %554, 1
  store i64 %559, ptr %558, align 8
  %560 = invoke noundef zeroext i1 @_ZNK4U128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %561 unwind label %576

561:                                              ; preds = %555
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  %562 = zext i1 %560 to i8
  store i8 %562, ptr %23, align 1, !tbaa !79
  br label %563

563:                                              ; preds = %561
  %564 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %564, label %565, label %580

565:                                              ; preds = %563
  %566 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %567 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %566, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
  %568 = load ptr, ptr %8, align 8, !tbaa !5
  %569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull align 8 dereferenceable(120) %568)
  %570 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef @.str.26)
  %571 = load i8, ptr %23, align 1, !tbaa !79, !range !81, !noundef !82
  %572 = trunc i8 %571 to i1
  %573 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %570, i1 noundef zeroext %572)
  %574 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %573, ptr noundef @_ZSt3decRSt8ios_base)
  %575 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %574, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %580

576:                                              ; preds = %555, %549
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %15, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #11
  br label %5063

580:                                              ; preds = %565, %563
  br label %581

581:                                              ; preds = %580
  br label %582

582:                                              ; preds = %581
  %583 = load i8, ptr %23, align 1, !tbaa !79, !range !81, !noundef !82
  %584 = trunc i8 %583 to i1
  br i1 %584, label %585, label %589

585:                                              ; preds = %582
  %586 = load ptr, ptr %22, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %586, i32 0, i32 1
  %588 = load i32, ptr %587, align 8, !tbaa !88
  br label %593

589:                                              ; preds = %582
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %590, i32 0, i32 2
  %592 = load i32, ptr %591, align 4, !tbaa !96
  br label %593

593:                                              ; preds = %589, %585
  %594 = phi i32 [ %588, %585 ], [ %592, %589 ]
  store i32 %594, ptr %4, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #11
  br label %596

595:                                              ; No predecessors!
  store i8 0, ptr %21, align 1, !tbaa !79
  br label %544, !llvm.loop !97

596:                                              ; preds = %593, %548
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  %597 = load i32, ptr %10, align 4
  switch i32 %597, label %600 [
    i32 28, label %598
  ]

598:                                              ; preds = %596
  br label %599

599:                                              ; preds = %598
  store i8 0, ptr %21, align 1, !tbaa !79
  br label %537, !llvm.loop !98

600:                                              ; preds = %596, %540
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #11
  %601 = load i32, ptr %10, align 4
  switch i32 %601, label %5061 [
    i32 25, label %602
  ]

602:                                              ; preds = %600
  br label %5059

603:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #11
  store i8 1, ptr %27, align 1, !tbaa !79
  br label %604

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

607:                                              ; preds = %604
  store i32 33, ptr %10, align 4
  br label %1092

608:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %609)
  store ptr %610, ptr %28, align 8, !tbaa !5
  br label %611

611:                                              ; preds = %1087, %608
  %612 = load ptr, ptr %28, align 8, !tbaa !5
  %613 = load i8, ptr %27, align 1, !tbaa !79, !range !81, !noundef !82
  %614 = trunc i8 %613 to i1
  br i1 %614, label %616, label %615

615:                                              ; preds = %611
  store i32 36, ptr %10, align 4
  br label %1088

616:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %617 = load ptr, ptr %8, align 8, !tbaa !5
  %618 = load ptr, ptr %28, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %618, i32 0, i32 0
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %617, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(32) %619, i32 noundef 0)
          to label %621 unwind label %637

621:                                              ; preds = %616
  store ptr %620, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %622, i32 0, i32 1
  %624 = load ptr, ptr %623, align 8, !tbaa !99
  %625 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %626 = load ptr, ptr %30, align 8, !tbaa !5
  %627 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %624, ptr noundef nonnull align 8 dereferenceable(424) %625, ptr noundef nonnull align 8 dereferenceable(8) %626)
          to label %628 unwind label %641

628:                                              ; preds = %621
  store ptr %627, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #11
  %629 = load ptr, ptr %6, align 8, !tbaa !5
  %630 = load ptr, ptr %28, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %630, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %32, ptr noundef nonnull align 8 dereferenceable(816) %629, ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef null)
          to label %632 unwind label %645

632:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #11
  store i8 1, ptr %34, align 1, !tbaa !79
  br label %633

633:                                              ; preds = %1029, %632
  %634 = load i8, ptr %34, align 1, !tbaa !79, !range !81, !noundef !82
  %635 = trunc i8 %634 to i1
  br i1 %635, label %649, label %636

636:                                              ; preds = %633
  store i32 39, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #11
  br label %1030

637:                                              ; preds = %616
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %15, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %16, align 4
  br label %1086

641:                                              ; preds = %621
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %15, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %16, align 4
  br label %1085

645:                                              ; preds = %628
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %15, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %16, align 4
  br label %1084

649:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %650 = load ptr, ptr %31, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.TypeRepr, ptr %650, i32 0, i32 2
  store ptr %651, ptr %35, align 8, !tbaa !5
  br label %652

652:                                              ; preds = %1026, %649
  %653 = load i8, ptr %34, align 1, !tbaa !79, !range !81, !noundef !82
  %654 = trunc i8 %653 to i1
  br i1 %654, label %656, label %655

655:                                              ; preds = %652
  store i32 42, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %1028

656:                                              ; preds = %652
  %657 = load ptr, ptr %35, align 8, !tbaa !5
  %658 = invoke noundef i32 @_ZNK8TypeRepr11VariantMode3tagEv(ptr noundef nonnull align 8 dereferenceable(72) %657)
          to label %659 unwind label %660

659:                                              ; preds = %656
  switch i32 %658, label %1025 [
    i32 0, label %664
    i32 1, label %665
    i32 2, label %688
    i32 3, label %812
    i32 4, label %935
  ]

660:                                              ; preds = %656
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %15, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %16, align 4
  br label %1027

664:                                              ; preds = %659
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2446, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #12
  unreachable

665:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #11
  store i8 1, ptr %36, align 1, !tbaa !79
  br label %666

666:                                              ; preds = %686, %665
  %667 = load i8, ptr %36, align 1, !tbaa !79, !range !81, !noundef !82
  %668 = trunc i8 %667 to i1
  br i1 %668, label %670, label %669

669:                                              ; preds = %666
  store i32 46, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #11
  br label %687

670:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  %671 = load ptr, ptr %35, align 8, !tbaa !5
  %672 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %671)
          to label %673 unwind label %679

673:                                              ; preds = %670
  store ptr %672, ptr %37, align 8, !tbaa !5
  br label %674

674:                                              ; preds = %684, %673
  %675 = load ptr, ptr %37, align 8, !tbaa !5
  %676 = load i8, ptr %36, align 1, !tbaa !79, !range !81, !noundef !82
  %677 = trunc i8 %676 to i1
  br i1 %677, label %683, label %678

678:                                              ; preds = %674
  store i32 49, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  br label %685

679:                                              ; preds = %670
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %15, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #11
  br label %1027

683:                                              ; preds = %674
  br label %684

684:                                              ; preds = %683
  store i8 0, ptr %36, align 1, !tbaa !79
  br label %674, !llvm.loop !100

685:                                              ; preds = %678
  br label %686

686:                                              ; preds = %685
  store i8 0, ptr %36, align 1, !tbaa !79
  br label %666, !llvm.loop !101

687:                                              ; preds = %669
  br label %1025

688:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #11
  store i8 1, ptr %38, align 1, !tbaa !79
  br label %689

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

692:                                              ; preds = %689
  store i32 52, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #11
  br label %811

693:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %694 = load ptr, ptr %35, align 8, !tbaa !5
  %695 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72) %694)
          to label %696 unwind label %702

696:                                              ; preds = %693
  store ptr %695, ptr %39, align 8, !tbaa !5
  br label %697

697:                                              ; preds = %806, %696
  %698 = load ptr, ptr %39, align 8, !tbaa !5
  %699 = load i8, ptr %38, align 1, !tbaa !79, !range !81, !noundef !82
  %700 = trunc i8 %699 to i1
  br i1 %700, label %706, label %701

701:                                              ; preds = %697
  store i32 55, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %809

702:                                              ; preds = %693
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %15, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %16, align 4
  br label %808

706:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #11
  %707 = load ptr, ptr %31, align 8, !tbaa !5
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %708, i32 0, i32 1
  %710 = load ptr, ptr %709, align 8, !tbaa !99
  %711 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %712 = load ptr, ptr %39, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %712, i32 0, i32 0
  %714 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %707, ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef nonnull align 8 dereferenceable(424) %711, ptr noundef nonnull align 8 dereferenceable(40) %713)
          to label %715 unwind label %763

715:                                              ; preds = %706
  %716 = load ptr, ptr %39, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %716, i32 0, i32 0
  %718 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %717, i32 0, i32 1
  %719 = load i64, ptr %718, align 8, !tbaa !102
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %714, i64 noundef %719)
          to label %720 unwind label %763

720:                                              ; preds = %715
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = load ptr, ptr %39, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %722, i32 0, i32 0
  %724 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %723, i32 0, i32 1
  %725 = load i64, ptr %724, align 8, !tbaa !102
  %726 = mul i64 8, %725
  %727 = trunc i64 %726 to i32
  %728 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(120) %721, i32 noundef %727)
          to label %729 unwind label %767

729:                                              ; preds = %720
  %730 = getelementptr inbounds { i64, i64 }, ptr %41, i32 0, i32 0
  %731 = extractvalue { i64, i64 } %728, 0
  store i64 %731, ptr %730, align 8
  %732 = getelementptr inbounds { i64, i64 }, ptr %41, i32 0, i32 1
  %733 = extractvalue { i64, i64 } %728, 1
  store i64 %733, ptr %732, align 8
  %734 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %735 unwind label %767

735:                                              ; preds = %729
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #11
  store i64 %734, ptr %40, align 8, !tbaa !109
  %736 = load i64, ptr %40, align 8, !tbaa !109
  %737 = load ptr, ptr %39, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %737, i32 0, i32 1
  %739 = load i64, ptr %738, align 8, !tbaa !110
  %740 = icmp ult i64 %736, %739
  br i1 %740, label %741, label %779

741:                                              ; preds = %735
  %742 = load ptr, ptr %39, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %743, i32 0, i32 0
  %745 = load i64, ptr %744, align 8, !tbaa !111
  %746 = trunc i64 %745 to i32
  store i32 %746, ptr %33, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %741
  %748 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %749 unwind label %772

749:                                              ; preds = %747
  br i1 %748, label %750, label %776

750:                                              ; preds = %749
  %751 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %752 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %751, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %753 unwind label %772

753:                                              ; preds = %750
  %754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %752, ptr noundef @.str.27)
          to label %755 unwind label %772

755:                                              ; preds = %753
  %756 = load i32, ptr %33, align 4, !tbaa !9
  %757 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %754, i32 noundef %756)
          to label %758 unwind label %772

758:                                              ; preds = %755
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %757, ptr noundef @_ZSt3decRSt8ios_base)
          to label %760 unwind label %772

760:                                              ; preds = %758
  %761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %762 unwind label %772

762:                                              ; preds = %760
  br label %776

763:                                              ; preds = %715, %706
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %15, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %16, align 4
  br label %771

767:                                              ; preds = %729, %720
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %15, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #11
  br label %771

771:                                              ; preds = %767, %763
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #11
  br label %807

772:                                              ; preds = %799, %797, %794, %792, %789, %786, %760, %758, %755, %753, %750, %747
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %15, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %16, align 4
  br label %807

776:                                              ; preds = %762, %749
  br label %777

777:                                              ; preds = %776
  br label %778

778:                                              ; preds = %777
  br label %805

779:                                              ; preds = %735
  %780 = load i64, ptr %40, align 8, !tbaa !109
  %781 = load ptr, ptr %39, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Linear", ptr %781, i32 0, i32 1
  %783 = load i64, ptr %782, align 8, !tbaa !110
  %784 = sub i64 %780, %783
  %785 = trunc i64 %784 to i32
  store i32 %785, ptr %33, align 4, !tbaa !9
  br label %786

786:                                              ; preds = %779
  %787 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %788 unwind label %772

788:                                              ; preds = %786
  br i1 %787, label %789, label %802

789:                                              ; preds = %788
  %790 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %791 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %790, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %792 unwind label %772

792:                                              ; preds = %789
  %793 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %791, ptr noundef @.str.28)
          to label %794 unwind label %772

794:                                              ; preds = %792
  %795 = load i32, ptr %33, align 4, !tbaa !9
  %796 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %793, i32 noundef %795)
          to label %797 unwind label %772

797:                                              ; preds = %794
  %798 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %796, ptr noundef @_ZSt3decRSt8ios_base)
          to label %799 unwind label %772

799:                                              ; preds = %797
  %800 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %798, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %801 unwind label %772

801:                                              ; preds = %799
  br label %802

802:                                              ; preds = %801, %788
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803
  br label %805

805:                                              ; preds = %804, %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %806

806:                                              ; preds = %805
  store i8 0, ptr %38, align 1, !tbaa !79
  br label %697, !llvm.loop !112

807:                                              ; preds = %772, %771
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %808

808:                                              ; preds = %807, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #11
  br label %1027

809:                                              ; preds = %701
  br label %810

810:                                              ; preds = %809
  store i8 0, ptr %38, align 1, !tbaa !79
  br label %689, !llvm.loop !113

811:                                              ; preds = %692
  br label %1025

812:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #11
  store i8 1, ptr %43, align 1, !tbaa !79
  br label %813

813:                                              ; preds = %933, %812
  %814 = load i8, ptr %43, align 1, !tbaa !79, !range !81, !noundef !82
  %815 = trunc i8 %814 to i1
  br i1 %815, label %817, label %816

816:                                              ; preds = %813
  store i32 62, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  br label %934

817:                                              ; preds = %813
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  %818 = load ptr, ptr %35, align 8, !tbaa !5
  %819 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %818)
          to label %820 unwind label %826

820:                                              ; preds = %817
  store ptr %819, ptr %44, align 8, !tbaa !5
  br label %821

821:                                              ; preds = %928, %820
  %822 = load ptr, ptr %44, align 8, !tbaa !5
  %823 = load i8, ptr %43, align 1, !tbaa !79, !range !81, !noundef !82
  %824 = trunc i8 %823 to i1
  br i1 %824, label %830, label %825

825:                                              ; preds = %821
  store i32 65, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  br label %932

826:                                              ; preds = %817
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %15, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %16, align 4
  br label %931

830:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #11
  %831 = load ptr, ptr %31, align 8, !tbaa !5
  %832 = load ptr, ptr %8, align 8, !tbaa !5
  %833 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %832, i32 0, i32 1
  %834 = load ptr, ptr %833, align 8, !tbaa !99
  %835 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %836 = load ptr, ptr %44, align 8, !tbaa !5
  %837 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %836, i32 0, i32 0
  %838 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %831, ptr noundef nonnull align 8 dereferenceable(8) %834, ptr noundef nonnull align 8 dereferenceable(424) %835, ptr noundef nonnull align 8 dereferenceable(40) %837)
          to label %839 unwind label %893

839:                                              ; preds = %830
  %840 = load ptr, ptr %44, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %840, i32 0, i32 0
  %842 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %841, i32 0, i32 1
  %843 = load i64, ptr %842, align 8, !tbaa !114
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %838, i64 noundef %843)
          to label %844 unwind label %893

844:                                              ; preds = %839
  %845 = load ptr, ptr %8, align 8, !tbaa !5
  %846 = load ptr, ptr %44, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %847, i32 0, i32 1
  %849 = load i64, ptr %848, align 8, !tbaa !114
  %850 = mul i64 8, %849
  %851 = trunc i64 %850 to i32
  %852 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(120) %845, i32 noundef %851)
          to label %853 unwind label %897

853:                                              ; preds = %844
  %854 = getelementptr inbounds { i64, i64 }, ptr %46, i32 0, i32 0
  %855 = extractvalue { i64, i64 } %852, 0
  store i64 %855, ptr %854, align 8
  %856 = getelementptr inbounds { i64, i64 }, ptr %46, i32 0, i32 1
  %857 = extractvalue { i64, i64 } %852, 1
  store i64 %857, ptr %856, align 8
  %858 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %859 unwind label %897

859:                                              ; preds = %853
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #11
  store i64 %858, ptr %45, align 8, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %860 = load ptr, ptr %44, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %860, i32 0, i32 1
  %862 = call ptr @_ZNKSt6vectorImSaImEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %861) #11
  %863 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %49, i32 0, i32 0
  store ptr %862, ptr %863, align 8
  %864 = load ptr, ptr %44, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %864, i32 0, i32 1
  %866 = call ptr @_ZNKSt6vectorImSaImEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %865) #11
  %867 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %50, i32 0, i32 0
  store ptr %866, ptr %867, align 8
  %868 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %49, i32 0, i32 0
  %869 = load ptr, ptr %868, align 8
  %870 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %50, i32 0, i32 0
  %871 = load ptr, ptr %870, align 8
  %872 = invoke ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEmET_S8_S8_RKT0_(ptr %869, ptr %871, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %873 unwind label %902

873:                                              ; preds = %859
  %874 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %48, i32 0, i32 0
  store ptr %872, ptr %874, align 8
  br label %875

875:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %876 = load ptr, ptr %44, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %876, i32 0, i32 1
  %878 = call ptr @_ZNKSt6vectorImSaImEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %877) #11
  %879 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %51, i32 0, i32 0
  store ptr %878, ptr %879, align 8
  %880 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKmSt6vectorImSaImEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  %881 = xor i1 %880, true
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  br i1 %881, label %882, label %919

882:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %883 = load ptr, ptr %8, align 8, !tbaa !5
  %884 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %883, i32 0, i32 1
  %885 = load ptr, ptr %884, align 8, !tbaa !99
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %885)
          to label %886 unwind label %906

886:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #11
  %887 = getelementptr inbounds %class.anon.246, ptr %54, i32 0, i32 0
  store ptr %45, ptr %887, align 8, !tbaa !5
  %888 = getelementptr inbounds %class.anon.246, ptr %54, i32 0, i32 1
  %889 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %889, ptr %888, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(16) %54) #11
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef %53)
          to label %890 unwind label %910

890:                                              ; preds = %886
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  %891 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %891, ptr noundef @.str.29)
          to label %892 unwind label %915

892:                                              ; preds = %890
  invoke void @__cxa_throw(ptr %891, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
          to label %5083 unwind label %902

893:                                              ; preds = %839, %830
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %15, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %16, align 4
  br label %901

897:                                              ; preds = %853, %844
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %15, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #11
  br label %901

901:                                              ; preds = %897, %893
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #11
  br label %930

902:                                              ; preds = %892, %859
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %15, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %16, align 4
  br label %929

906:                                              ; preds = %882
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %15, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %16, align 4
  br label %914

910:                                              ; preds = %886
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %15, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br label %914

914:                                              ; preds = %910, %906
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  br label %929

915:                                              ; preds = %890
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %15, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %16, align 4
  call void @__cxa_free_exception(ptr %891) #11
  br label %929

919:                                              ; preds = %875
  br label %920

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %922 = load ptr, ptr %44, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_Values", ptr %922, i32 0, i32 1
  %924 = call ptr @_ZNKSt6vectorImSaImEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %923) #11
  %925 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.245", ptr %55, i32 0, i32 0
  store ptr %924, ptr %925, align 8
  %926 = call noundef i64 @_ZN9__gnu_cxxmiIPKmSt6vectorImSaImEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  %927 = trunc i64 %926 to i32
  store i32 %927, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  br label %928

928:                                              ; preds = %921
  store i8 0, ptr %43, align 1, !tbaa !79
  br label %821, !llvm.loop !116

929:                                              ; preds = %915, %914, %902
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %930

930:                                              ; preds = %929, %901
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  br label %931

931:                                              ; preds = %930, %826
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  br label %1027

932:                                              ; preds = %825
  br label %933

933:                                              ; preds = %932
  store i8 0, ptr %43, align 1, !tbaa !79
  br label %813, !llvm.loop !117

934:                                              ; preds = %816
  br label %1025

935:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #11
  store i8 1, ptr %56, align 1, !tbaa !79
  br label %936

936:                                              ; preds = %1023, %935
  %937 = load i8, ptr %56, align 1, !tbaa !79, !range !81, !noundef !82
  %938 = trunc i8 %937 to i1
  br i1 %938, label %940, label %939

939:                                              ; preds = %936
  store i32 70, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #11
  br label %1024

940:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %941 = load ptr, ptr %35, align 8, !tbaa !5
  %942 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72) %941)
          to label %943 unwind label %949

943:                                              ; preds = %940
  store ptr %942, ptr %57, align 8, !tbaa !5
  br label %944

944:                                              ; preds = %1019, %943
  %945 = load ptr, ptr %57, align 8, !tbaa !5
  %946 = load i8, ptr %56, align 1, !tbaa !79, !range !81, !noundef !82
  %947 = trunc i8 %946 to i1
  br i1 %947, label %953, label %948

948:                                              ; preds = %944
  store i32 73, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  br label %1022

949:                                              ; preds = %940
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %15, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %16, align 4
  br label %1021

953:                                              ; preds = %944
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %954 = load ptr, ptr %31, align 8, !tbaa !5
  %955 = load ptr, ptr %8, align 8, !tbaa !5
  %956 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %955, i32 0, i32 1
  %957 = load ptr, ptr %956, align 8, !tbaa !99
  %958 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %959 = load ptr, ptr %57, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %959, i32 0, i32 0
  %961 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %954, ptr noundef nonnull align 8 dereferenceable(8) %957, ptr noundef nonnull align 8 dereferenceable(424) %958, ptr noundef nonnull align 8 dereferenceable(40) %960)
          to label %962 unwind label %971

962:                                              ; preds = %953
  store i64 %961, ptr %58, align 8, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #11
  store i8 0, ptr %59, align 1, !tbaa !79
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  store i64 0, ptr %60, align 8, !tbaa !109
  br label %963

963:                                              ; preds = %1001, %962
  %964 = load i64, ptr %60, align 8, !tbaa !109
  %965 = load ptr, ptr %57, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %965, i32 0, i32 0
  %967 = getelementptr inbounds %"struct.TypeRepr::FieldPath", ptr %966, i32 0, i32 1
  %968 = load i64, ptr %967, align 8, !tbaa !118
  %969 = icmp ult i64 %964, %968
  br i1 %969, label %975, label %970

970:                                              ; preds = %963
  store i32 76, ptr %10, align 4
  br label %1004

971:                                              ; preds = %953
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %15, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %16, align 4
  br label %1020

975:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #11
  %976 = load i64, ptr %58, align 8, !tbaa !109
  %977 = load i64, ptr %60, align 8, !tbaa !109
  %978 = add i64 %976, %977
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %978, i64 noundef 1)
          to label %979 unwind label %991

979:                                              ; preds = %975
  %980 = load ptr, ptr %8, align 8, !tbaa !5
  %981 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 8 dereferenceable(120) %980, i32 noundef 8)
          to label %982 unwind label %995

982:                                              ; preds = %979
  %983 = getelementptr inbounds { i64, i64 }, ptr %61, i32 0, i32 0
  %984 = extractvalue { i64, i64 } %981, 0
  store i64 %984, ptr %983, align 8
  %985 = getelementptr inbounds { i64, i64 }, ptr %61, i32 0, i32 1
  %986 = extractvalue { i64, i64 } %981, 1
  store i64 %986, ptr %985, align 8
  %987 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %988 unwind label %995

988:                                              ; preds = %982
  %989 = icmp ne i64 %987, 0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #11
  br i1 %989, label %990, label %1000

990:                                              ; preds = %988
  store i8 1, ptr %59, align 1, !tbaa !79
  store i32 76, ptr %10, align 4
  br label %1004

991:                                              ; preds = %975
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %15, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %16, align 4
  br label %999

995:                                              ; preds = %982, %979
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %15, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #11
  br label %999

999:                                              ; preds = %995, %991
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #11
  br label %1020

1000:                                             ; preds = %988
  br label %1001

1001:                                             ; preds = %1000
  %1002 = load i64, ptr %60, align 8, !tbaa !109
  %1003 = add i64 %1002, 1
  store i64 %1003, ptr %60, align 8, !tbaa !109
  br label %963, !llvm.loop !120

1004:                                             ; preds = %990, %970
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  br label %1005

1005:                                             ; preds = %1004
  %1006 = load i8, ptr %59, align 1, !tbaa !79, !range !81, !noundef !82
  %1007 = trunc i8 %1006 to i1
  br i1 %1007, label %1008, label %1013

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %57, align 8, !tbaa !5
  %1010 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %1009, i32 0, i32 1
  %1011 = load i32, ptr %1010, align 8, !tbaa !121
  %1012 = sub i32 1, %1011
  br label %1017

1013:                                             ; preds = %1005
  %1014 = load ptr, ptr %57, align 8, !tbaa !5
  %1015 = getelementptr inbounds %"struct.TypeRepr::VariantMode::Data_NonZero", ptr %1014, i32 0, i32 1
  %1016 = load i32, ptr %1015, align 8, !tbaa !121
  br label %1017

1017:                                             ; preds = %1013, %1008
  %1018 = phi i32 [ %1012, %1008 ], [ %1016, %1013 ]
  store i32 %1018, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  br label %1019

1019:                                             ; preds = %1017
  store i8 0, ptr %56, align 1, !tbaa !79
  br label %944, !llvm.loop !122

1020:                                             ; preds = %999, %971
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  br label %1021

1021:                                             ; preds = %1020, %949
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #11
  br label %1027

1022:                                             ; preds = %948
  br label %1023

1023:                                             ; preds = %1022
  store i8 0, ptr %56, align 1, !tbaa !79
  br label %936, !llvm.loop !123

1024:                                             ; preds = %939
  br label %1025

1025:                                             ; preds = %1024, %934, %811, %687, %659
  br label %1026

1026:                                             ; preds = %1025
  store i8 0, ptr %34, align 1, !tbaa !79
  br label %652, !llvm.loop !124

1027:                                             ; preds = %1021, %931, %808, %679, %660
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #11
  br label %1083

1028:                                             ; preds = %655
  br label %1029

1029:                                             ; preds = %1028
  store i8 0, ptr %34, align 1, !tbaa !79
  br label %633, !llvm.loop !125

1030:                                             ; preds = %636
  br label %1031

1031:                                             ; preds = %1030
  %1032 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1033 unwind label %1050

1033:                                             ; preds = %1031
  br i1 %1032, label %1034, label %1054

1034:                                             ; preds = %1033
  %1035 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1036 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1035, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %1037 unwind label %1050

1037:                                             ; preds = %1034
  %1038 = load ptr, ptr %8, align 8, !tbaa !5
  %1039 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1036, ptr noundef nonnull align 8 dereferenceable(120) %1038)
          to label %1040 unwind label %1050

1040:                                             ; preds = %1037
  %1041 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1039, ptr noundef @.str.22)
          to label %1042 unwind label %1050

1042:                                             ; preds = %1040
  %1043 = load i32, ptr %33, align 4, !tbaa !9
  %1044 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1041, i32 noundef %1043)
          to label %1045 unwind label %1050

1045:                                             ; preds = %1042
  %1046 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1044, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1047 unwind label %1050

1047:                                             ; preds = %1045
  %1048 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1046, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1049 unwind label %1050

1049:                                             ; preds = %1047
  br label %1054

1050:                                             ; preds = %1047, %1045, %1042, %1040, %1037, %1034, %1031
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %15, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %16, align 4
  br label %1083

1054:                                             ; preds = %1049, %1033
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1056
  %1058 = load i32, ptr %33, align 4, !tbaa !9
  %1059 = zext i32 %1058 to i64
  %1060 = load ptr, ptr %28, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1060, i32 0, i32 1
  %1062 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1061) #11
  %1063 = icmp ult i64 %1059, %1062
  br i1 %1063, label %1074, label %1064

1064:                                             ; preds = %1057
  %1065 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #11
  %1066 = getelementptr inbounds %class.anon.247, ptr %64, i32 0, i32 0
  store ptr %33, ptr %1066, align 8, !tbaa !5
  %1067 = getelementptr inbounds %class.anon.247, ptr %64, i32 0, i32 1
  %1068 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %1068, ptr %1067, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(16) %64) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1065, ptr noundef %63)
          to label %1069 unwind label %1070

1069:                                             ; preds = %1064
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  br label %1074

1070:                                             ; preds = %1064
  %1071 = landingpad { ptr, i32 }
          cleanup
  %1072 = extractvalue { ptr, i32 } %1071, 0
  store ptr %1072, ptr %15, align 8
  %1073 = extractvalue { ptr, i32 } %1071, 1
  store i32 %1073, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  br label %1083

1074:                                             ; preds = %1069, %1057
  br label %1075

1075:                                             ; preds = %1074
  br label %1076

1076:                                             ; preds = %1075
  %1077 = load ptr, ptr %28, align 8, !tbaa !5
  %1078 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1077, i32 0, i32 1
  %1079 = load i32, ptr %33, align 4, !tbaa !9
  %1080 = zext i32 %1079 to i64
  %1081 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1078, i64 noundef %1080) #11
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  store i32 %1082, ptr %4, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %1088

1083:                                             ; preds = %1070, %1050, %1027
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #11
  br label %1084

1084:                                             ; preds = %1083, %645
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  br label %1085

1085:                                             ; preds = %1084, %641
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %1086

1086:                                             ; preds = %1085, %637
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #11
  br label %5063

1087:                                             ; No predecessors!
  store i8 0, ptr %27, align 1, !tbaa !79
  br label %611, !llvm.loop !126

1088:                                             ; preds = %1076, %615
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  %1089 = load i32, ptr %10, align 4
  switch i32 %1089, label %1092 [
    i32 36, label %1090
  ]

1090:                                             ; preds = %1088
  br label %1091

1091:                                             ; preds = %1090
  store i8 0, ptr %27, align 1, !tbaa !79
  br label %604, !llvm.loop !127

1092:                                             ; preds = %1088, %607
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #11
  %1093 = load i32, ptr %10, align 4
  switch i32 %1093, label %5061 [
    i32 33, label %1094
  ]

1094:                                             ; preds = %1092
  br label %5059

1095:                                             ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #11
  store i8 1, ptr %65, align 1, !tbaa !79
  br label %1096

1096:                                             ; preds = %1259, %1095
  %1097 = load i8, ptr %65, align 1, !tbaa !79, !range !81, !noundef !82
  %1098 = trunc i8 %1097 to i1
  br i1 %1098, label %1100, label %1099

1099:                                             ; preds = %1096
  store i32 83, ptr %10, align 4
  br label %1260

1100:                                             ; preds = %1096
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %1101 = load ptr, ptr %11, align 8, !tbaa !5
  %1102 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1101)
  store ptr %1102, ptr %66, align 8, !tbaa !5
  br label %1103

1103:                                             ; preds = %1255, %1100
  %1104 = load ptr, ptr %66, align 8, !tbaa !5
  %1105 = load i8, ptr %65, align 1, !tbaa !79, !range !81, !noundef !82
  %1106 = trunc i8 %1105 to i1
  br i1 %1106, label %1108, label %1107

1107:                                             ; preds = %1103
  store i32 86, ptr %10, align 4
  br label %1256

1108:                                             ; preds = %1103
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #11
  %1109 = load ptr, ptr %8, align 8, !tbaa !5
  %1110 = load ptr, ptr %66, align 8, !tbaa !5
  %1111 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1110, i32 0, i32 0
  %1112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %1109, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(32) %1111, i32 noundef 0)
          to label %1113 unwind label %1125

1113:                                             ; preds = %1108
  store ptr %1112, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %1114 = load ptr, ptr %68, align 8, !tbaa !5
  %1115 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1114)
          to label %1116 unwind label %1129

1116:                                             ; preds = %1113
  store i64 %1115, ptr %69, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #11
  %1117 = load ptr, ptr %6, align 8, !tbaa !5
  %1118 = load ptr, ptr %66, align 8, !tbaa !5
  %1119 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1118, i32 0, i32 0
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %70, ptr noundef nonnull align 8 dereferenceable(816) %1117, ptr noundef nonnull align 8 dereferenceable(32) %1119, ptr noundef null)
          to label %1120 unwind label %1133

1120:                                             ; preds = %1116
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  store i32 -1, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #11
  store i8 1, ptr %72, align 1, !tbaa !79
  br label %1121

1121:                                             ; preds = %1236, %1120
  %1122 = load i8, ptr %72, align 1, !tbaa !79, !range !81, !noundef !82
  %1123 = trunc i8 %1122 to i1
  br i1 %1123, label %1137, label %1124

1124:                                             ; preds = %1121
  store i32 89, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #11
  br label %1237

1125:                                             ; preds = %1108
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %15, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %16, align 4
  br label %1254

1129:                                             ; preds = %1113
  %1130 = landingpad { ptr, i32 }
          cleanup
  %1131 = extractvalue { ptr, i32 } %1130, 0
  store ptr %1131, ptr %15, align 8
  %1132 = extractvalue { ptr, i32 } %1130, 1
  store i32 %1132, ptr %16, align 4
  br label %1253

1133:                                             ; preds = %1116
  %1134 = landingpad { ptr, i32 }
          cleanup
  %1135 = extractvalue { ptr, i32 } %1134, 0
  store ptr %1135, ptr %15, align 8
  %1136 = extractvalue { ptr, i32 } %1134, 1
  store i32 %1136, ptr %16, align 4
  br label %1252

1137:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #11
  %1138 = load ptr, ptr %66, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1138, i32 0, i32 3
  store ptr %1139, ptr %73, align 8, !tbaa !5
  br label %1140

1140:                                             ; preds = %1233, %1137
  %1141 = load i8, ptr %72, align 1, !tbaa !79, !range !81, !noundef !82
  %1142 = trunc i8 %1141 to i1
  br i1 %1142, label %1144, label %1143

1143:                                             ; preds = %1140
  store i32 92, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  br label %1235

1144:                                             ; preds = %1140
  %1145 = load ptr, ptr %73, align 8, !tbaa !5
  %1146 = invoke noundef i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %1145)
          to label %1147 unwind label %1148

1147:                                             ; preds = %1144
  switch i32 %1146, label %1153 [
    i32 0, label %1152
    i32 1, label %1166
  ]

1148:                                             ; preds = %1158, %1144
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %15, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %16, align 4
  br label %1234

1152:                                             ; preds = %1147
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2490, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #12
  unreachable

1153:                                             ; preds = %1147
  br label %1154

1154:                                             ; preds = %1153
  %1155 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #11
  %1156 = getelementptr inbounds %class.anon.248, ptr %75, i32 0, i32 0
  %1157 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %1157, ptr %1156, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(8) %75) #11
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1155, ptr noundef %74)
          to label %1158 unwind label %1160

1158:                                             ; preds = %1154
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #11
  %1159 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %1159, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1159, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %1148

1160:                                             ; preds = %1154
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %15, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #11
  br label %1234

1164:                                             ; No predecessors!
  br label %1165

1165:                                             ; preds = %1164
  br label %1232

1166:                                             ; preds = %1147
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #11
  store i8 1, ptr %76, align 1, !tbaa !79
  br label %1167

1167:                                             ; preds = %1230, %1166
  %1168 = load i8, ptr %76, align 1, !tbaa !79, !range !81, !noundef !82
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1171, label %1170

1170:                                             ; preds = %1167
  store i32 98, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #11
  br label %1231

1171:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  %1172 = load ptr, ptr %73, align 8, !tbaa !5
  %1173 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues11as_UnsignedEv(ptr noundef nonnull align 8 dereferenceable(32) %1172)
          to label %1174 unwind label %1180

1174:                                             ; preds = %1171
  store ptr %1173, ptr %77, align 8, !tbaa !5
  br label %1175

1175:                                             ; preds = %1226, %1174
  %1176 = load ptr, ptr %77, align 8, !tbaa !5
  %1177 = load i8, ptr %76, align 1, !tbaa !79, !range !81, !noundef !82
  %1178 = trunc i8 %1177 to i1
  br i1 %1178, label %1184, label %1179

1179:                                             ; preds = %1175
  store i32 101, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %1229

1180:                                             ; preds = %1171
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %15, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %16, align 4
  br label %1228

1184:                                             ; preds = %1175
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #11
  %1185 = load ptr, ptr %8, align 8, !tbaa !5
  %1186 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %69, i32 0, i32 1
  %1187 = load i32, ptr %1186, align 4, !tbaa !128
  %1188 = udiv i32 %1187, 8
  %1189 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(120) %1185, i32 noundef %1188)
          to label %1190 unwind label %1201

1190:                                             ; preds = %1184
  %1191 = getelementptr inbounds { i64, i64 }, ptr %78, i32 0, i32 0
  %1192 = extractvalue { i64, i64 } %1189, 0
  store i64 %1192, ptr %1191, align 8
  %1193 = getelementptr inbounds { i64, i64 }, ptr %78, i32 0, i32 1
  %1194 = extractvalue { i64, i64 } %1189, 1
  store i64 %1194, ptr %1193, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #11
  store i64 0, ptr %79, align 8, !tbaa !109
  br label %1195

1195:                                             ; preds = %1221, %1190
  %1196 = load i64, ptr %79, align 8, !tbaa !109
  %1197 = load ptr, ptr %77, align 8, !tbaa !5
  %1198 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1197) #11
  %1199 = icmp ult i64 %1196, %1198
  br i1 %1199, label %1205, label %1200

1200:                                             ; preds = %1195
  store i32 104, ptr %10, align 4
  br label %1224

1201:                                             ; preds = %1184
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %15, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %16, align 4
  br label %1227

1205:                                             ; preds = %1195
  %1206 = load ptr, ptr %77, align 8, !tbaa !5
  %1207 = load i64, ptr %79, align 8, !tbaa !109
  %1208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1206, i64 noundef %1207) #11
  %1209 = load i64, ptr %1208, align 8, !tbaa !109
  %1210 = trunc i64 %1209 to i32
  %1211 = invoke noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16) %78, i32 noundef %1210)
          to label %1212 unwind label %1216

1212:                                             ; preds = %1205
  br i1 %1211, label %1213, label %1220

1213:                                             ; preds = %1212
  %1214 = load i64, ptr %79, align 8, !tbaa !109
  %1215 = trunc i64 %1214 to i32
  store i32 %1215, ptr %71, align 4, !tbaa !9
  store i32 104, ptr %10, align 4
  br label %1224

1216:                                             ; preds = %1205
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %15, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  br label %1227

1220:                                             ; preds = %1212
  br label %1221

1221:                                             ; preds = %1220
  %1222 = load i64, ptr %79, align 8, !tbaa !109
  %1223 = add i64 %1222, 1
  store i64 %1223, ptr %79, align 8, !tbaa !109
  br label %1195, !llvm.loop !130

1224:                                             ; preds = %1213, %1200
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  br label %1225

1225:                                             ; preds = %1224
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #11
  br label %1226

1226:                                             ; preds = %1225
  store i8 0, ptr %76, align 1, !tbaa !79
  br label %1175, !llvm.loop !131

1227:                                             ; preds = %1216, %1201
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #11
  br label %1228

1228:                                             ; preds = %1227, %1180
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #11
  br label %1234

1229:                                             ; preds = %1179
  br label %1230

1230:                                             ; preds = %1229
  store i8 0, ptr %76, align 1, !tbaa !79
  br label %1167, !llvm.loop !132

1231:                                             ; preds = %1170
  br label %1232

1232:                                             ; preds = %1231, %1165
  br label %1233

1233:                                             ; preds = %1232
  store i8 0, ptr %72, align 1, !tbaa !79
  br label %1140, !llvm.loop !133

1234:                                             ; preds = %1228, %1160, %1148
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #11
  br label %1252

1235:                                             ; preds = %1143
  br label %1236

1236:                                             ; preds = %1235
  store i8 0, ptr %72, align 1, !tbaa !79
  br label %1121, !llvm.loop !134

1237:                                             ; preds = %1124
  %1238 = load i32, ptr %71, align 4, !tbaa !9
  %1239 = icmp eq i32 %1238, -1
  br i1 %1239, label %1240, label %1244

1240:                                             ; preds = %1237
  %1241 = load ptr, ptr %66, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1241, i32 0, i32 1
  %1243 = load i32, ptr %1242, align 8, !tbaa !135
  store i32 %1243, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %1251

1244:                                             ; preds = %1237
  %1245 = load ptr, ptr %66, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1245, i32 0, i32 2
  %1247 = load i32, ptr %71, align 4, !tbaa !9
  %1248 = zext i32 %1247 to i64
  %1249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1246, i64 noundef %1248) #11
  %1250 = load i32, ptr %1249, align 4, !tbaa !9
  store i32 %1250, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %1251

1251:                                             ; preds = %1244, %1240
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  br label %1256

1252:                                             ; preds = %1234, %1133
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #11
  br label %1253

1253:                                             ; preds = %1252, %1129
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %1254

1254:                                             ; preds = %1253, %1125
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #11
  br label %5063

1255:                                             ; No predecessors!
  store i8 0, ptr %65, align 1, !tbaa !79
  br label %1103, !llvm.loop !143

1256:                                             ; preds = %1251, %1107
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  %1257 = load i32, ptr %10, align 4
  switch i32 %1257, label %1260 [
    i32 86, label %1258
  ]

1258:                                             ; preds = %1256
  br label %1259

1259:                                             ; preds = %1258
  store i8 0, ptr %65, align 1, !tbaa !79
  br label %1096, !llvm.loop !144

1260:                                             ; preds = %1256, %1099
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #11
  %1261 = load i32, ptr %10, align 4
  switch i32 %1261, label %5061 [
    i32 83, label %1262
  ]

1262:                                             ; preds = %1260
  br label %5059

1263:                                             ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #11
  store i8 1, ptr %80, align 1, !tbaa !79
  br label %1264

1264:                                             ; preds = %5055, %1263
  %1265 = load i8, ptr %80, align 1, !tbaa !79, !range !81, !noundef !82
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1268, label %1267

1267:                                             ; preds = %1264
  store i32 107, ptr %10, align 4
  br label %5056

1268:                                             ; preds = %1264
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #11
  %1269 = load ptr, ptr %11, align 8, !tbaa !5
  %1270 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1269)
  store ptr %1270, ptr %81, align 8, !tbaa !5
  br label %1271

1271:                                             ; preds = %5050, %1268
  %1272 = load ptr, ptr %81, align 8, !tbaa !5
  %1273 = load i8, ptr %80, align 1, !tbaa !79, !range !81, !noundef !82
  %1274 = trunc i8 %1273 to i1
  br i1 %1274, label %1276, label %1275

1275:                                             ; preds = %1271
  store i32 110, ptr %10, align 4
  br label %5052

1276:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #11
  %1277 = load ptr, ptr %6, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %1277, i32 0, i32 6
  store ptr %1278, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #11
  %1279 = load ptr, ptr %81, align 8, !tbaa !5
  %1280 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1279, i32 0, i32 3
  %1281 = call noundef ptr @_ZNK3MIR10CallTarget13opt_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %1280)
  store ptr %1281, ptr %83, align 8, !tbaa !5
  %1282 = load ptr, ptr %83, align 8, !tbaa !5
  %1283 = icmp ne ptr %1282, null
  br i1 %1283, label %1284, label %4733

1284:                                             ; preds = %1276
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #11
  %1285 = load ptr, ptr %6, align 8, !tbaa !5
  %1286 = load ptr, ptr %81, align 8, !tbaa !5
  %1287 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1286, i32 0, i32 2
  call void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %84, ptr noundef nonnull align 8 dereferenceable(816) %1285, ptr noundef nonnull align 8 dereferenceable(32) %1287, ptr noundef null)
  %1288 = load ptr, ptr %83, align 8, !tbaa !5
  %1289 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1288, i32 0, i32 0
  %1290 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1289, ptr noundef @.str.30)
          to label %1291 unwind label %1317

1291:                                             ; preds = %1284
  br i1 %1290, label %1292, label %1333

1292:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #11
  %1293 = load ptr, ptr %6, align 8, !tbaa !5
  %1294 = load ptr, ptr %83, align 8, !tbaa !5
  %1295 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1294, i32 0, i32 1
  %1296 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1295, i32 0, i32 1
  %1297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1296, i64 noundef 0)
          to label %1298 unwind label %1321

1298:                                             ; preds = %1292
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %85, ptr noundef nonnull align 8 dereferenceable(816) %1293, ptr noundef nonnull align 8 dereferenceable(8) %1297)
          to label %1299 unwind label %1321

1299:                                             ; preds = %1298
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #11
  %1300 = load ptr, ptr %8, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1300, i32 0, i32 1
  %1302 = load ptr, ptr %1301, align 8, !tbaa !99
  %1303 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1304 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %1302, ptr noundef nonnull align 8 dereferenceable(424) %1303, ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %1305 unwind label %1325

1305:                                             ; preds = %1299
  br i1 %1304, label %1306, label %1329

1306:                                             ; preds = %1305
  %1307 = load ptr, ptr %8, align 8, !tbaa !5
  %1308 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1309 unwind label %1325

1309:                                             ; preds = %1306
  %1310 = load i64, ptr %86, align 8, !tbaa !109
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %87, i64 noundef %1310, i64 noundef 0)
          to label %1311 unwind label %1325

1311:                                             ; preds = %1309
  %1312 = getelementptr inbounds { i64, i64 }, ptr %87, i32 0, i32 0
  %1313 = load i64, ptr %1312, align 8
  %1314 = getelementptr inbounds { i64, i64 }, ptr %87, i32 0, i32 1
  %1315 = load i64, ptr %1314, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1307, i32 noundef %1308, i64 %1313, i64 %1315)
          to label %1316 unwind label %1325

1316:                                             ; preds = %1311
  br label %1331

1317:                                             ; preds = %4722, %4720, %4718, %4716, %4712, %4710, %4705, %4703, %4699, %4697, %4694, %4691, %4649, %4566, %4374, %4293, %4067, %3510, %3466, %3431, %3419, %3414, %3402, %3397, %3346, %3295, %3224, %3153, %3082, %3031, %2980, %2929, %2924, %2873, %2868, %2817, %2812, %2735, %2658, %2581, %2363, %2358, %2243, %2097, %1985, %1853, %1765, %1539, %1506, %1446, %1375, %1333, %1284
  %1318 = landingpad { ptr, i32 }
          cleanup
  %1319 = extractvalue { ptr, i32 } %1318, 0
  store ptr %1319, ptr %15, align 8
  %1320 = extractvalue { ptr, i32 } %1318, 1
  store i32 %1320, ptr %16, align 4
  br label %4732

1321:                                             ; preds = %1298, %1292
  %1322 = landingpad { ptr, i32 }
          cleanup
  %1323 = extractvalue { ptr, i32 } %1322, 0
  store ptr %1323, ptr %15, align 8
  %1324 = extractvalue { ptr, i32 } %1322, 1
  store i32 %1324, ptr %16, align 4
  br label %1332

1325:                                             ; preds = %1329, %1311, %1309, %1306, %1299
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %15, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #11
  br label %1332

1329:                                             ; preds = %1305
  %1330 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %1330, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %1325

1331:                                             ; preds = %1316
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  br label %4690

1332:                                             ; preds = %1325, %1321
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  br label %4732

1333:                                             ; preds = %1291
  %1334 = load ptr, ptr %83, align 8, !tbaa !5
  %1335 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1334, i32 0, i32 0
  %1336 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1335, ptr noundef @.str.31)
          to label %1337 unwind label %1317

1337:                                             ; preds = %1333
  br i1 %1336, label %1338, label %1375

1338:                                             ; preds = %1337
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #11
  %1339 = load ptr, ptr %6, align 8, !tbaa !5
  %1340 = load ptr, ptr %83, align 8, !tbaa !5
  %1341 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1340, i32 0, i32 1
  %1342 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1341, i32 0, i32 1
  %1343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1342, i64 noundef 0)
          to label %1344 unwind label %1363

1344:                                             ; preds = %1338
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %88, ptr noundef nonnull align 8 dereferenceable(816) %1339, ptr noundef nonnull align 8 dereferenceable(8) %1343)
          to label %1345 unwind label %1363

1345:                                             ; preds = %1344
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #11
  %1346 = load ptr, ptr %8, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1346, i32 0, i32 1
  %1348 = load ptr, ptr %1347, align 8, !tbaa !99
  %1349 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1350 = invoke noundef zeroext i1 @_Z17Target_GetAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %1348, ptr noundef nonnull align 8 dereferenceable(424) %1349, ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %1351 unwind label %1367

1351:                                             ; preds = %1345
  br i1 %1350, label %1352, label %1371

1352:                                             ; preds = %1351
  %1353 = load ptr, ptr %8, align 8, !tbaa !5
  %1354 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1355 unwind label %1367

1355:                                             ; preds = %1352
  %1356 = load i64, ptr %89, align 8, !tbaa !109
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %90, i64 noundef %1356, i64 noundef 0)
          to label %1357 unwind label %1367

1357:                                             ; preds = %1355
  %1358 = getelementptr inbounds { i64, i64 }, ptr %90, i32 0, i32 0
  %1359 = load i64, ptr %1358, align 8
  %1360 = getelementptr inbounds { i64, i64 }, ptr %90, i32 0, i32 1
  %1361 = load i64, ptr %1360, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1353, i32 noundef %1354, i64 %1359, i64 %1361)
          to label %1362 unwind label %1367

1362:                                             ; preds = %1357
  br label %1373

1363:                                             ; preds = %1344, %1338
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %15, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %16, align 4
  br label %1374

1367:                                             ; preds = %1371, %1357, %1355, %1352, %1345
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %15, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #11
  br label %1374

1371:                                             ; preds = %1351
  %1372 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %1372, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %1367

1373:                                             ; preds = %1362
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %4689

1374:                                             ; preds = %1367, %1363
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %4732

1375:                                             ; preds = %1337
  %1376 = load ptr, ptr %83, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1376, i32 0, i32 0
  %1378 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1377, ptr noundef @.str.32)
          to label %1379 unwind label %1317

1379:                                             ; preds = %1375
  br i1 %1378, label %1380, label %1446

1380:                                             ; preds = %1379
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #11
  %1381 = load ptr, ptr %6, align 8, !tbaa !5
  %1382 = load ptr, ptr %83, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1382, i32 0, i32 1
  %1384 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1383, i32 0, i32 1
  %1385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1384, i64 noundef 0)
          to label %1386 unwind label %1408

1386:                                             ; preds = %1380
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %91, ptr noundef nonnull align 8 dereferenceable(816) %1381, ptr noundef nonnull align 8 dereferenceable(8) %1385)
          to label %1387 unwind label %1408

1387:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #11
  call void @llvm.lifetime.start.p0(i64 376, ptr %93) #11
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %93)
          to label %1388 unwind label %1412

1388:                                             ; preds = %1387
  %1389 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %93, ptr noundef nonnull align 8 dereferenceable(8) %91)
          to label %1390 unwind label %1416

1390:                                             ; preds = %1388
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %92, ptr noundef nonnull align 8 dereferenceable(112) %1389)
          to label %1391 unwind label %1416

1391:                                             ; preds = %1390
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %93) #11
  call void @llvm.lifetime.end.p0(i64 376, ptr %93) #11
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  %1394 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  invoke void @_ZN3MIR4eval13AllocationPtr11allocate_roEPKvm(ptr dead_on_unwind writable sret(%"class.MIR::eval::AllocationPtr") align 8 %95, ptr noundef %1393, i64 noundef %1394)
          to label %1395 unwind label %1421

1395:                                             ; preds = %1391
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef %95)
          to label %1396 unwind label %1425

1396:                                             ; preds = %1395
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1392, i64 noundef 4096, ptr noundef %94)
          to label %1397 unwind label %1429

1397:                                             ; preds = %1396
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #11
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #11
  %1398 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1399 unwind label %1434

1399:                                             ; preds = %1397
  %1400 = udiv i32 %1398, 8
  %1401 = zext i32 %1400 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %96, ptr noundef nonnull align 8 dereferenceable(16) %84, i64 noundef %1401)
          to label %1402 unwind label %1434

1402:                                             ; preds = %1399
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1405 unwind label %1438

1405:                                             ; preds = %1402
  %1406 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(120) %1403, i32 noundef %1404, i64 noundef %1406)
          to label %1407 unwind label %1438

1407:                                             ; preds = %1405
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #11
  br label %4688

1408:                                             ; preds = %1386, %1380
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %15, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %16, align 4
  br label %1445

1412:                                             ; preds = %1387
  %1413 = landingpad { ptr, i32 }
          cleanup
  %1414 = extractvalue { ptr, i32 } %1413, 0
  store ptr %1414, ptr %15, align 8
  %1415 = extractvalue { ptr, i32 } %1413, 1
  store i32 %1415, ptr %16, align 4
  br label %1420

1416:                                             ; preds = %1390, %1388
  %1417 = landingpad { ptr, i32 }
          cleanup
  %1418 = extractvalue { ptr, i32 } %1417, 0
  store ptr %1418, ptr %15, align 8
  %1419 = extractvalue { ptr, i32 } %1417, 1
  store i32 %1419, ptr %16, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %93) #11
  br label %1420

1420:                                             ; preds = %1416, %1412
  call void @llvm.lifetime.end.p0(i64 376, ptr %93) #11
  br label %1444

1421:                                             ; preds = %1391
  %1422 = landingpad { ptr, i32 }
          cleanup
  %1423 = extractvalue { ptr, i32 } %1422, 0
  store ptr %1423, ptr %15, align 8
  %1424 = extractvalue { ptr, i32 } %1422, 1
  store i32 %1424, ptr %16, align 4
  br label %1443

1425:                                             ; preds = %1395
  %1426 = landingpad { ptr, i32 }
          cleanup
  %1427 = extractvalue { ptr, i32 } %1426, 0
  store ptr %1427, ptr %15, align 8
  %1428 = extractvalue { ptr, i32 } %1426, 1
  store i32 %1428, ptr %16, align 4
  br label %1433

1429:                                             ; preds = %1396
  %1430 = landingpad { ptr, i32 }
          cleanup
  %1431 = extractvalue { ptr, i32 } %1430, 0
  store ptr %1431, ptr %15, align 8
  %1432 = extractvalue { ptr, i32 } %1430, 1
  store i32 %1432, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #11
  br label %1433

1433:                                             ; preds = %1429, %1425
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #11
  br label %1443

1434:                                             ; preds = %1399, %1397
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %15, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %16, align 4
  br label %1442

1438:                                             ; preds = %1405, %1402
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %15, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #11
  br label %1442

1442:                                             ; preds = %1438, %1434
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #11
  br label %1443

1443:                                             ; preds = %1442, %1433, %1421
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  br label %1444

1444:                                             ; preds = %1443, %1420
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #11
  br label %1445

1445:                                             ; preds = %1444, %1408
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #11
  br label %4732

1446:                                             ; preds = %1379
  %1447 = load ptr, ptr %83, align 8, !tbaa !5
  %1448 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1447, i32 0, i32 0
  %1449 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1448, ptr noundef @.str.33)
          to label %1450 unwind label %1317

1450:                                             ; preds = %1446
  br i1 %1449, label %1451, label %1506

1451:                                             ; preds = %1450
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #11
  %1452 = load ptr, ptr %6, align 8, !tbaa !5
  %1453 = load ptr, ptr %83, align 8, !tbaa !5
  %1454 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1453, i32 0, i32 1
  %1455 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1454, i32 0, i32 1
  %1456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1455, i64 noundef 0)
          to label %1457 unwind label %1467

1457:                                             ; preds = %1451
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %97, ptr noundef nonnull align 8 dereferenceable(816) %1452, ptr noundef nonnull align 8 dereferenceable(8) %1456)
          to label %1458 unwind label %1467

1458:                                             ; preds = %1457
  %1459 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %1460 unwind label %1471

1460:                                             ; preds = %1458
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef @.str.34)
          to label %1461 unwind label %1475

1461:                                             ; preds = %1460
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %103)
          to label %1462 unwind label %1479

1462:                                             ; preds = %1461
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %100, ptr noundef %101, ptr noundef %102, ptr noundef %103)
          to label %1463 unwind label %1483

1463:                                             ; preds = %1462
  invoke void @_ZN3MIR4eval12StaticRefPtr8allocateEN3HIR4PathEPK14EncodedLiteral(ptr dead_on_unwind writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %99, ptr noundef %100, ptr noundef null)
          to label %1464 unwind label %1487

1464:                                             ; preds = %1463
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef %99)
          to label %1465 unwind label %1491

1465:                                             ; preds = %1464
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1459, i64 noundef 4096, ptr noundef %98)
          to label %1466 unwind label %1495

1466:                                             ; preds = %1465
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #11
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #11
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #11
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #11
  br label %4687

1467:                                             ; preds = %1457, %1451
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %15, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %16, align 4
  br label %1505

1471:                                             ; preds = %1458
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %15, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %16, align 4
  br label %1504

1475:                                             ; preds = %1460
  %1476 = landingpad { ptr, i32 }
          cleanup
  %1477 = extractvalue { ptr, i32 } %1476, 0
  store ptr %1477, ptr %15, align 8
  %1478 = extractvalue { ptr, i32 } %1476, 1
  store i32 %1478, ptr %16, align 4
  br label %1503

1479:                                             ; preds = %1461
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %15, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %16, align 4
  br label %1502

1483:                                             ; preds = %1462
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %15, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %16, align 4
  br label %1501

1487:                                             ; preds = %1463
  %1488 = landingpad { ptr, i32 }
          cleanup
  %1489 = extractvalue { ptr, i32 } %1488, 0
  store ptr %1489, ptr %15, align 8
  %1490 = extractvalue { ptr, i32 } %1488, 1
  store i32 %1490, ptr %16, align 4
  br label %1500

1491:                                             ; preds = %1464
  %1492 = landingpad { ptr, i32 }
          cleanup
  %1493 = extractvalue { ptr, i32 } %1492, 0
  store ptr %1493, ptr %15, align 8
  %1494 = extractvalue { ptr, i32 } %1492, 1
  store i32 %1494, ptr %16, align 4
  br label %1499

1495:                                             ; preds = %1465
  %1496 = landingpad { ptr, i32 }
          cleanup
  %1497 = extractvalue { ptr, i32 } %1496, 0
  store ptr %1497, ptr %15, align 8
  %1498 = extractvalue { ptr, i32 } %1496, 1
  store i32 %1498, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #11
  br label %1499

1499:                                             ; preds = %1495, %1491
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #11
  br label %1500

1500:                                             ; preds = %1499, %1487
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #11
  br label %1501

1501:                                             ; preds = %1500, %1483
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #11
  br label %1502

1502:                                             ; preds = %1501, %1479
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #11
  br label %1503

1503:                                             ; preds = %1502, %1475
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #11
  br label %1504

1504:                                             ; preds = %1503, %1471
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #11
  br label %1505

1505:                                             ; preds = %1504, %1467
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #11
  br label %4732

1506:                                             ; preds = %1450
  %1507 = load ptr, ptr %83, align 8, !tbaa !5
  %1508 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1507, i32 0, i32 0
  %1509 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1508, ptr noundef @.str.35)
          to label %1510 unwind label %1317

1510:                                             ; preds = %1506
  br i1 %1509, label %1511, label %1539

1511:                                             ; preds = %1510
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #11
  %1512 = load ptr, ptr %6, align 8, !tbaa !5
  %1513 = load ptr, ptr %83, align 8, !tbaa !5
  %1514 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1513, i32 0, i32 1
  %1515 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1514, i32 0, i32 1
  %1516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1515, i64 noundef 0)
          to label %1517 unwind label %1530

1517:                                             ; preds = %1511
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %104, ptr noundef nonnull align 8 dereferenceable(816) %1512, ptr noundef nonnull align 8 dereferenceable(8) %1516)
          to label %1518 unwind label %1530

1518:                                             ; preds = %1517
  %1519 = load ptr, ptr %8, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1521 = load ptr, ptr %8, align 8, !tbaa !5
  %1522 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1521, i32 0, i32 1
  %1523 = load ptr, ptr %1522, align 8, !tbaa !99
  %1524 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1520, ptr noundef nonnull align 8 dereferenceable(8) %1523, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1525 unwind label %1534

1525:                                             ; preds = %1518
  %1526 = zext i1 %1524 to i64
  %1527 = select i1 %1524, i32 1, i32 0
  %1528 = sext i32 %1527 to i64
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1519, i32 noundef 8, i64 noundef %1528)
          to label %1529 unwind label %1534

1529:                                             ; preds = %1525
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #11
  br label %4686

1530:                                             ; preds = %1517, %1511
  %1531 = landingpad { ptr, i32 }
          cleanup
  %1532 = extractvalue { ptr, i32 } %1531, 0
  store ptr %1532, ptr %15, align 8
  %1533 = extractvalue { ptr, i32 } %1531, 1
  store i32 %1533, ptr %16, align 4
  br label %1538

1534:                                             ; preds = %1525, %1518
  %1535 = landingpad { ptr, i32 }
          cleanup
  %1536 = extractvalue { ptr, i32 } %1535, 0
  store ptr %1536, ptr %15, align 8
  %1537 = extractvalue { ptr, i32 } %1535, 1
  store i32 %1537, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #11
  br label %1538

1538:                                             ; preds = %1534, %1530
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #11
  br label %4732

1539:                                             ; preds = %1510
  %1540 = load ptr, ptr %83, align 8, !tbaa !5
  %1541 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1540, i32 0, i32 0
  %1542 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1541, ptr noundef @.str.36)
          to label %1543 unwind label %1317

1543:                                             ; preds = %1539
  br i1 %1542, label %1544, label %1765

1544:                                             ; preds = %1543
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #11
  %1545 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1546 = getelementptr inbounds i8, ptr %1545, i64 8
  %1547 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1546, i32 0, i32 0
  %1548 = load ptr, ptr %1547, align 8, !tbaa !145
  %1549 = load ptr, ptr %8, align 8, !tbaa !5
  %1550 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1549, i32 0, i32 1
  %1551 = load ptr, ptr %1550, align 8, !tbaa !99
  %1552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %1548, ptr noundef nonnull align 8 dereferenceable(8) %1551, ptr noundef @.str.37)
          to label %1553 unwind label %1580

1553:                                             ; preds = %1544
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %1552)
          to label %1554 unwind label %1580

1554:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #11
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1555 unwind label %1584

1555:                                             ; preds = %1554
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %107, ptr noundef %108)
          to label %1556 unwind label %1588

1556:                                             ; preds = %1555
  %1557 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1558 = getelementptr inbounds i8, ptr %1557, i64 8
  %1559 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1558, i32 0, i32 0
  %1560 = load ptr, ptr %1559, align 8, !tbaa !145
  %1561 = load ptr, ptr %8, align 8, !tbaa !5
  %1562 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1561, i32 0, i32 1
  %1563 = load ptr, ptr %1562, align 8, !tbaa !99
  %1564 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1560, ptr noundef nonnull align 8 dereferenceable(8) %1563, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1565 unwind label %1592

1565:                                             ; preds = %1556
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef %1564)
          to label %1566 unwind label %1592

1566:                                             ; preds = %1565
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %106, ptr noundef %107, ptr noundef %109)
          to label %1567 unwind label %1596

1567:                                             ; preds = %1566
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #11
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %107) #11
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #11
  %1568 = load ptr, ptr %8, align 8, !tbaa !5
  %1569 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1568, i32 0, i32 1
  %1570 = load ptr, ptr %1569, align 8, !tbaa !99
  %1571 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1572 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1570, ptr noundef nonnull align 8 dereferenceable(424) %1571, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %1573 unwind label %1602

1573:                                             ; preds = %1567
  store ptr %1572, ptr %110, align 8, !tbaa !5
  br label %1574

1574:                                             ; preds = %1573
  %1575 = load ptr, ptr %110, align 8, !tbaa !5
  %1576 = icmp ne ptr %1575, null
  br i1 %1576, label %1610, label %1577

1577:                                             ; preds = %1574
  %1578 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 1 dereferenceable(1) %112) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1578, ptr noundef %111)
          to label %1579 unwind label %1606

1579:                                             ; preds = %1577
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #11
  br label %1610

1580:                                             ; preds = %1553, %1544
  %1581 = landingpad { ptr, i32 }
          cleanup
  %1582 = extractvalue { ptr, i32 } %1581, 0
  store ptr %1582, ptr %15, align 8
  %1583 = extractvalue { ptr, i32 } %1581, 1
  store i32 %1583, ptr %16, align 4
  br label %1764

1584:                                             ; preds = %1554
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %15, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %16, align 4
  br label %1763

1588:                                             ; preds = %1555
  %1589 = landingpad { ptr, i32 }
          cleanup
  %1590 = extractvalue { ptr, i32 } %1589, 0
  store ptr %1590, ptr %15, align 8
  %1591 = extractvalue { ptr, i32 } %1589, 1
  store i32 %1591, ptr %16, align 4
  br label %1601

1592:                                             ; preds = %1565, %1556
  %1593 = landingpad { ptr, i32 }
          cleanup
  %1594 = extractvalue { ptr, i32 } %1593, 0
  store ptr %1594, ptr %15, align 8
  %1595 = extractvalue { ptr, i32 } %1593, 1
  store i32 %1595, ptr %16, align 4
  br label %1600

1596:                                             ; preds = %1566
  %1597 = landingpad { ptr, i32 }
          cleanup
  %1598 = extractvalue { ptr, i32 } %1597, 0
  store ptr %1598, ptr %15, align 8
  %1599 = extractvalue { ptr, i32 } %1597, 1
  store i32 %1599, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #11
  br label %1600

1600:                                             ; preds = %1596, %1592
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %107) #11
  br label %1601

1601:                                             ; preds = %1600, %1588
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #11
  br label %1763

1602:                                             ; preds = %1567
  %1603 = landingpad { ptr, i32 }
          cleanup
  %1604 = extractvalue { ptr, i32 } %1603, 0
  store ptr %1604, ptr %15, align 8
  %1605 = extractvalue { ptr, i32 } %1603, 1
  store i32 %1605, ptr %16, align 4
  br label %1762

1606:                                             ; preds = %1577
  %1607 = landingpad { ptr, i32 }
          cleanup
  %1608 = extractvalue { ptr, i32 } %1607, 0
  store ptr %1608, ptr %15, align 8
  %1609 = extractvalue { ptr, i32 } %1607, 1
  store i32 %1609, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #11
  br label %1762

1610:                                             ; preds = %1579, %1574
  br label %1611

1611:                                             ; preds = %1610
  br label %1612

1612:                                             ; preds = %1611
  br label %1613

1613:                                             ; preds = %1612
  %1614 = load ptr, ptr %110, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.TypeRepr, ptr %1614, i32 0, i32 3
  %1616 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1615) #11
  %1617 = icmp eq i64 %1616, 3
  br i1 %1617, label %1625, label %1618

1618:                                             ; preds = %1613
  %1619 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 1 dereferenceable(1) %114) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1619, ptr noundef %113)
          to label %1620 unwind label %1621

1620:                                             ; preds = %1618
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #11
  br label %1625

1621:                                             ; preds = %1618
  %1622 = landingpad { ptr, i32 }
          cleanup
  %1623 = extractvalue { ptr, i32 } %1622, 0
  store ptr %1623, ptr %15, align 8
  %1624 = extractvalue { ptr, i32 } %1622, 1
  store i32 %1624, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #11
  br label %1762

1625:                                             ; preds = %1620, %1613
  br label %1626

1626:                                             ; preds = %1625
  br label %1627

1627:                                             ; preds = %1626
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #11
  %1628 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %1629 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::AllocationPtr") align 8 %116, ptr noundef nonnull align 8 dereferenceable(424) %1628, ptr noundef nonnull align 8 dereferenceable(120) %1629, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %1630 unwind label %1684

1630:                                             ; preds = %1627
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %116)
          to label %1631 unwind label %1688

1631:                                             ; preds = %1630
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #11
  %1632 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %1633 unwind label %1692

1633:                                             ; preds = %1631
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1632, i64 noundef 4096, ptr noundef %117)
          to label %1634 unwind label %1696

1634:                                             ; preds = %1633
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #11
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %1635 unwind label %1700

1635:                                             ; preds = %1634
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef %119, i64 noundef 0)
          to label %1636 unwind label %1704

1636:                                             ; preds = %1635
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #11
  %1637 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1638 unwind label %1708

1638:                                             ; preds = %1636
  %1639 = udiv i32 %1637, 8
  store i32 %1639, ptr %120, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #11
  %1640 = load ptr, ptr %110, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.TypeRepr, ptr %1640, i32 0, i32 3
  %1642 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1641, i64 noundef 0) #11
  %1643 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1642, i32 0, i32 0
  %1644 = load i64, ptr %1643, align 8, !tbaa !146
  %1645 = add i64 %1644, 0
  %1646 = load i32, ptr %120, align 4, !tbaa !9
  %1647 = zext i32 %1646 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %121, ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %1645, i64 noundef %1647)
          to label %1648 unwind label %1712

1648:                                             ; preds = %1638
  %1649 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval11ConstantPtr8allocateEPKvm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ConstantPtr") align 8 %123, ptr noundef @.str.19, i64 noundef 0)
          to label %1650 unwind label %1716

1650:                                             ; preds = %1648
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_11ConstantPtrE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef %123)
          to label %1651 unwind label %1720

1651:                                             ; preds = %1650
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(120) %1649, i64 noundef 4096, ptr noundef %122)
          to label %1652 unwind label %1724

1652:                                             ; preds = %1651
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #11
  call void @_ZN3MIR4eval11RefCountPtrINS0_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %124) #11
  %1653 = load ptr, ptr %110, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.TypeRepr, ptr %1653, i32 0, i32 3
  %1655 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1654, i64 noundef 0) #11
  %1656 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1655, i32 0, i32 0
  %1657 = load i64, ptr %1656, align 8, !tbaa !146
  %1658 = load i32, ptr %120, align 4, !tbaa !9
  %1659 = zext i32 %1658 to i64
  %1660 = add i64 %1657, %1659
  %1661 = load i32, ptr %120, align 4, !tbaa !9
  %1662 = zext i32 %1661 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %124, ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %1660, i64 noundef %1662)
          to label %1663 unwind label %1731

1663:                                             ; preds = %1652
  %1664 = load ptr, ptr %8, align 8, !tbaa !5
  %1665 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1666 unwind label %1735

1666:                                             ; preds = %1663
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %124, ptr noundef nonnull align 8 dereferenceable(120) %1664, i32 noundef %1665, i64 noundef 0)
          to label %1667 unwind label %1735

1667:                                             ; preds = %1666
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #11
  %1668 = load ptr, ptr %110, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.TypeRepr, ptr %1668, i32 0, i32 3
  %1670 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1669, i64 noundef 1) #11
  %1671 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1670, i32 0, i32 0
  %1672 = load i64, ptr %1671, align 8, !tbaa !146
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %125, ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %1672, i64 noundef 4)
          to label %1673 unwind label %1740

1673:                                             ; preds = %1667
  %1674 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %125, ptr noundef nonnull align 8 dereferenceable(120) %1674, i32 noundef 32, i64 noundef 0)
          to label %1675 unwind label %1744

1675:                                             ; preds = %1673
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #11
  %1676 = load ptr, ptr %110, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.TypeRepr, ptr %1676, i32 0, i32 3
  %1678 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1677, i64 noundef 2) #11
  %1679 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1678, i32 0, i32 0
  %1680 = load i64, ptr %1679, align 8, !tbaa !146
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %126, ptr noundef nonnull align 8 dereferenceable(16) %118, i64 noundef %1680, i64 noundef 4)
          to label %1681 unwind label %1749

1681:                                             ; preds = %1675
  %1682 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %126, ptr noundef nonnull align 8 dereferenceable(120) %1682, i32 noundef 32, i64 noundef 0)
          to label %1683 unwind label %1753

1683:                                             ; preds = %1681
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #11
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #11
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  br label %4685

1684:                                             ; preds = %1627
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %15, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %16, align 4
  br label %1761

1688:                                             ; preds = %1630
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %15, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %16, align 4
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #11
  br label %1761

1692:                                             ; preds = %1631
  %1693 = landingpad { ptr, i32 }
          cleanup
  %1694 = extractvalue { ptr, i32 } %1693, 0
  store ptr %1694, ptr %15, align 8
  %1695 = extractvalue { ptr, i32 } %1693, 1
  store i32 %1695, ptr %16, align 4
  br label %1760

1696:                                             ; preds = %1633
  %1697 = landingpad { ptr, i32 }
          cleanup
  %1698 = extractvalue { ptr, i32 } %1697, 0
  store ptr %1698, ptr %15, align 8
  %1699 = extractvalue { ptr, i32 } %1697, 1
  store i32 %1699, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #11
  br label %1760

1700:                                             ; preds = %1634
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %15, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %16, align 4
  br label %1759

1704:                                             ; preds = %1635
  %1705 = landingpad { ptr, i32 }
          cleanup
  %1706 = extractvalue { ptr, i32 } %1705, 0
  store ptr %1706, ptr %15, align 8
  %1707 = extractvalue { ptr, i32 } %1705, 1
  store i32 %1707, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #11
  br label %1759

1708:                                             ; preds = %1636
  %1709 = landingpad { ptr, i32 }
          cleanup
  %1710 = extractvalue { ptr, i32 } %1709, 0
  store ptr %1710, ptr %15, align 8
  %1711 = extractvalue { ptr, i32 } %1709, 1
  store i32 %1711, ptr %16, align 4
  br label %1758

1712:                                             ; preds = %1638
  %1713 = landingpad { ptr, i32 }
          cleanup
  %1714 = extractvalue { ptr, i32 } %1713, 0
  store ptr %1714, ptr %15, align 8
  %1715 = extractvalue { ptr, i32 } %1713, 1
  store i32 %1715, ptr %16, align 4
  br label %1730

1716:                                             ; preds = %1648
  %1717 = landingpad { ptr, i32 }
          cleanup
  %1718 = extractvalue { ptr, i32 } %1717, 0
  store ptr %1718, ptr %15, align 8
  %1719 = extractvalue { ptr, i32 } %1717, 1
  store i32 %1719, ptr %16, align 4
  br label %1729

1720:                                             ; preds = %1650
  %1721 = landingpad { ptr, i32 }
          cleanup
  %1722 = extractvalue { ptr, i32 } %1721, 0
  store ptr %1722, ptr %15, align 8
  %1723 = extractvalue { ptr, i32 } %1721, 1
  store i32 %1723, ptr %16, align 4
  br label %1728

1724:                                             ; preds = %1651
  %1725 = landingpad { ptr, i32 }
          cleanup
  %1726 = extractvalue { ptr, i32 } %1725, 0
  store ptr %1726, ptr %15, align 8
  %1727 = extractvalue { ptr, i32 } %1725, 1
  store i32 %1727, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #11
  br label %1728

1728:                                             ; preds = %1724, %1720
  call void @_ZN3MIR4eval11RefCountPtrINS0_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #11
  br label %1729

1729:                                             ; preds = %1728, %1716
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #11
  br label %1730

1730:                                             ; preds = %1729, %1712
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #11
  br label %1758

1731:                                             ; preds = %1652
  %1732 = landingpad { ptr, i32 }
          cleanup
  %1733 = extractvalue { ptr, i32 } %1732, 0
  store ptr %1733, ptr %15, align 8
  %1734 = extractvalue { ptr, i32 } %1732, 1
  store i32 %1734, ptr %16, align 4
  br label %1739

1735:                                             ; preds = %1666, %1663
  %1736 = landingpad { ptr, i32 }
          cleanup
  %1737 = extractvalue { ptr, i32 } %1736, 0
  store ptr %1737, ptr %15, align 8
  %1738 = extractvalue { ptr, i32 } %1736, 1
  store i32 %1738, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #11
  br label %1739

1739:                                             ; preds = %1735, %1731
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #11
  br label %1758

1740:                                             ; preds = %1667
  %1741 = landingpad { ptr, i32 }
          cleanup
  %1742 = extractvalue { ptr, i32 } %1741, 0
  store ptr %1742, ptr %15, align 8
  %1743 = extractvalue { ptr, i32 } %1741, 1
  store i32 %1743, ptr %16, align 4
  br label %1748

1744:                                             ; preds = %1673
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %15, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #11
  br label %1748

1748:                                             ; preds = %1744, %1740
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #11
  br label %1758

1749:                                             ; preds = %1675
  %1750 = landingpad { ptr, i32 }
          cleanup
  %1751 = extractvalue { ptr, i32 } %1750, 0
  store ptr %1751, ptr %15, align 8
  %1752 = extractvalue { ptr, i32 } %1750, 1
  store i32 %1752, ptr %16, align 4
  br label %1757

1753:                                             ; preds = %1681
  %1754 = landingpad { ptr, i32 }
          cleanup
  %1755 = extractvalue { ptr, i32 } %1754, 0
  store ptr %1755, ptr %15, align 8
  %1756 = extractvalue { ptr, i32 } %1754, 1
  store i32 %1756, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #11
  br label %1757

1757:                                             ; preds = %1753, %1749
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #11
  br label %1758

1758:                                             ; preds = %1757, %1748, %1739, %1730, %1708
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #11
  br label %1759

1759:                                             ; preds = %1758, %1704, %1700
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #11
  br label %1760

1760:                                             ; preds = %1759, %1696, %1692
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #11
  br label %1761

1761:                                             ; preds = %1760, %1688, %1684
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #11
  br label %1762

1762:                                             ; preds = %1761, %1621, %1606, %1602
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #11
  br label %1763

1763:                                             ; preds = %1762, %1601, %1584
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #11
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #11
  br label %1764

1764:                                             ; preds = %1763, %1580
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  br label %4732

1765:                                             ; preds = %1543
  %1766 = load ptr, ptr %83, align 8, !tbaa !5
  %1767 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1766, i32 0, i32 0
  %1768 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1767, ptr noundef @.str.38)
          to label %1769 unwind label %1317

1769:                                             ; preds = %1765
  br i1 %1768, label %1770, label %1853

1770:                                             ; preds = %1769
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #11
  %1771 = load ptr, ptr %6, align 8, !tbaa !5
  %1772 = load ptr, ptr %83, align 8, !tbaa !5
  %1773 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1772, i32 0, i32 1
  %1774 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1773, i32 0, i32 1
  %1775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1774, i64 noundef 0)
          to label %1776 unwind label %1787

1776:                                             ; preds = %1770
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %127, ptr noundef nonnull align 8 dereferenceable(816) %1771, ptr noundef nonnull align 8 dereferenceable(8) %1775)
          to label %1777 unwind label %1787

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777
  %1779 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %1780 unwind label %1791

1780:                                             ; preds = %1778
  %1781 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1779)
          to label %1782 unwind label %1791

1782:                                             ; preds = %1780
  br i1 %1781, label %1799, label %1783

1783:                                             ; preds = %1782
  %1784 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #11
  %1785 = getelementptr inbounds %class.anon.400, ptr %129, i32 0, i32 0
  store ptr %127, ptr %1785, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull align 8 dereferenceable(8) %129) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1784, ptr noundef %128)
          to label %1786 unwind label %1795

1786:                                             ; preds = %1783
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #11
  br label %1799

1787:                                             ; preds = %1776, %1770
  %1788 = landingpad { ptr, i32 }
          cleanup
  %1789 = extractvalue { ptr, i32 } %1788, 0
  store ptr %1789, ptr %15, align 8
  %1790 = extractvalue { ptr, i32 } %1788, 1
  store i32 %1790, ptr %16, align 4
  br label %1852

1791:                                             ; preds = %1780, %1778
  %1792 = landingpad { ptr, i32 }
          cleanup
  %1793 = extractvalue { ptr, i32 } %1792, 0
  store ptr %1793, ptr %15, align 8
  %1794 = extractvalue { ptr, i32 } %1792, 1
  store i32 %1794, ptr %16, align 4
  br label %1851

1795:                                             ; preds = %1783
  %1796 = landingpad { ptr, i32 }
          cleanup
  %1797 = extractvalue { ptr, i32 } %1796, 0
  store ptr %1797, ptr %15, align 8
  %1798 = extractvalue { ptr, i32 } %1796, 1
  store i32 %1798, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #11
  br label %1851

1799:                                             ; preds = %1786, %1782
  br label %1800

1800:                                             ; preds = %1799
  br label %1801

1801:                                             ; preds = %1800
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #11
  %1802 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %1803 unwind label %1837

1803:                                             ; preds = %1801
  store i64 %1802, ptr %130, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #11
  %1804 = load ptr, ptr %6, align 8, !tbaa !5
  %1805 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %130, i32 0, i32 1
  %1806 = load i32, ptr %1805, align 4, !tbaa !128
  %1807 = load ptr, ptr %81, align 8, !tbaa !5
  %1808 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1807, i32 0, i32 4
  %1809 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1808, i64 noundef 0)
          to label %1810 unwind label %1841

1810:                                             ; preds = %1803
  %1811 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1804, i32 noundef %1806, ptr noundef nonnull align 8 dereferenceable(48) %1809)
          to label %1812 unwind label %1841

1812:                                             ; preds = %1810
  %1813 = getelementptr inbounds { i64, i64 }, ptr %131, i32 0, i32 0
  %1814 = extractvalue { i64, i64 } %1811, 0
  store i64 %1814, ptr %1813, align 8
  %1815 = getelementptr inbounds { i64, i64 }, ptr %131, i32 0, i32 1
  %1816 = extractvalue { i64, i64 } %1811, 1
  store i64 %1816, ptr %1815, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #11
  %1817 = invoke noundef i64 @_ZNK4U1286get_loEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1818 unwind label %1845

1818:                                             ; preds = %1812
  %1819 = call i64 @llvm.ctpop.i64(i64 %1817)
  %1820 = trunc i64 %1819 to i32
  %1821 = invoke noundef i64 @_ZNK4U1286get_hiEv(ptr noundef nonnull align 8 dereferenceable(16) %131)
          to label %1822 unwind label %1845

1822:                                             ; preds = %1818
  %1823 = call i64 @llvm.ctpop.i64(i64 %1821)
  %1824 = trunc i64 %1823 to i32
  %1825 = add nsw i32 %1820, %1824
  store i32 %1825, ptr %132, align 4, !tbaa !9
  %1826 = load ptr, ptr %8, align 8, !tbaa !5
  %1827 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %130, i32 0, i32 1
  %1828 = load i32, ptr %1827, align 4, !tbaa !128
  %1829 = load i32, ptr %132, align 4, !tbaa !9
  %1830 = zext i32 %1829 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %133, i64 noundef %1830, i64 noundef 0)
          to label %1831 unwind label %1845

1831:                                             ; preds = %1822
  %1832 = getelementptr inbounds { i64, i64 }, ptr %133, i32 0, i32 0
  %1833 = load i64, ptr %1832, align 8
  %1834 = getelementptr inbounds { i64, i64 }, ptr %133, i32 0, i32 1
  %1835 = load i64, ptr %1834, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1826, i32 noundef %1828, i64 %1833, i64 %1835)
          to label %1836 unwind label %1845

1836:                                             ; preds = %1831
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #11
  br label %4684

1837:                                             ; preds = %1801
  %1838 = landingpad { ptr, i32 }
          cleanup
  %1839 = extractvalue { ptr, i32 } %1838, 0
  store ptr %1839, ptr %15, align 8
  %1840 = extractvalue { ptr, i32 } %1838, 1
  store i32 %1840, ptr %16, align 4
  br label %1850

1841:                                             ; preds = %1810, %1803
  %1842 = landingpad { ptr, i32 }
          cleanup
  %1843 = extractvalue { ptr, i32 } %1842, 0
  store ptr %1843, ptr %15, align 8
  %1844 = extractvalue { ptr, i32 } %1842, 1
  store i32 %1844, ptr %16, align 4
  br label %1849

1845:                                             ; preds = %1831, %1822, %1818, %1812
  %1846 = landingpad { ptr, i32 }
          cleanup
  %1847 = extractvalue { ptr, i32 } %1846, 0
  store ptr %1847, ptr %15, align 8
  %1848 = extractvalue { ptr, i32 } %1846, 1
  store i32 %1848, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  br label %1849

1849:                                             ; preds = %1845, %1841
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #11
  br label %1850

1850:                                             ; preds = %1849, %1837
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #11
  br label %1851

1851:                                             ; preds = %1850, %1795, %1791
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #11
  br label %1852

1852:                                             ; preds = %1851, %1787
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #11
  br label %4732

1853:                                             ; preds = %1769
  %1854 = load ptr, ptr %83, align 8, !tbaa !5
  %1855 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1854, i32 0, i32 0
  %1856 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1855, ptr noundef @.str.39)
          to label %1857 unwind label %1317

1857:                                             ; preds = %1853
  br i1 %1856, label %1858, label %1985

1858:                                             ; preds = %1857
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #11
  %1859 = load ptr, ptr %6, align 8, !tbaa !5
  %1860 = load ptr, ptr %83, align 8, !tbaa !5
  %1861 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1860, i32 0, i32 1
  %1862 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1861, i32 0, i32 1
  %1863 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1862, i64 noundef 0)
          to label %1864 unwind label %1875

1864:                                             ; preds = %1858
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %134, ptr noundef nonnull align 8 dereferenceable(816) %1859, ptr noundef nonnull align 8 dereferenceable(8) %1863)
          to label %1865 unwind label %1875

1865:                                             ; preds = %1864
  br label %1866

1866:                                             ; preds = %1865
  %1867 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1868 unwind label %1879

1868:                                             ; preds = %1866
  %1869 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1867)
          to label %1870 unwind label %1879

1870:                                             ; preds = %1868
  br i1 %1869, label %1887, label %1871

1871:                                             ; preds = %1870
  %1872 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #11
  %1873 = getelementptr inbounds %class.anon.401, ptr %136, i32 0, i32 0
  store ptr %134, ptr %1873, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(8) %136) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1872, ptr noundef %135)
          to label %1874 unwind label %1883

1874:                                             ; preds = %1871
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #11
  br label %1887

1875:                                             ; preds = %1864, %1858
  %1876 = landingpad { ptr, i32 }
          cleanup
  %1877 = extractvalue { ptr, i32 } %1876, 0
  store ptr %1877, ptr %15, align 8
  %1878 = extractvalue { ptr, i32 } %1876, 1
  store i32 %1878, ptr %16, align 4
  br label %1984

1879:                                             ; preds = %1868, %1866
  %1880 = landingpad { ptr, i32 }
          cleanup
  %1881 = extractvalue { ptr, i32 } %1880, 0
  store ptr %1881, ptr %15, align 8
  %1882 = extractvalue { ptr, i32 } %1880, 1
  store i32 %1882, ptr %16, align 4
  br label %1983

1883:                                             ; preds = %1871
  %1884 = landingpad { ptr, i32 }
          cleanup
  %1885 = extractvalue { ptr, i32 } %1884, 0
  store ptr %1885, ptr %15, align 8
  %1886 = extractvalue { ptr, i32 } %1884, 1
  store i32 %1886, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #11
  br label %1983

1887:                                             ; preds = %1874, %1870
  br label %1888

1888:                                             ; preds = %1887
  br label %1889

1889:                                             ; preds = %1888
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #11
  %1890 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1891 unwind label %1900

1891:                                             ; preds = %1889
  store i64 %1890, ptr %137, align 4
  br label %1892

1892:                                             ; preds = %1891
  %1893 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %137, i32 0, i32 0
  %1894 = load i32, ptr %1893, align 4, !tbaa !148
  %1895 = icmp eq i32 %1894, 3
  br i1 %1895, label %1908, label %1896

1896:                                             ; preds = %1892
  %1897 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #11
  %1898 = getelementptr inbounds %class.anon.402, ptr %139, i32 0, i32 0
  store ptr %134, ptr %1898, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(8) %139) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1897, ptr noundef %138)
          to label %1899 unwind label %1904

1899:                                             ; preds = %1896
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #11
  br label %1908

1900:                                             ; preds = %1889
  %1901 = landingpad { ptr, i32 }
          cleanup
  %1902 = extractvalue { ptr, i32 } %1901, 0
  store ptr %1902, ptr %15, align 8
  %1903 = extractvalue { ptr, i32 } %1901, 1
  store i32 %1903, ptr %16, align 4
  br label %1982

1904:                                             ; preds = %1896
  %1905 = landingpad { ptr, i32 }
          cleanup
  %1906 = extractvalue { ptr, i32 } %1905, 0
  store ptr %1906, ptr %15, align 8
  %1907 = extractvalue { ptr, i32 } %1905, 1
  store i32 %1907, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #11
  br label %1982

1908:                                             ; preds = %1899, %1892
  br label %1909

1909:                                             ; preds = %1908
  br label %1910

1910:                                             ; preds = %1909
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #11
  %1911 = load ptr, ptr %6, align 8, !tbaa !5
  %1912 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %137, i32 0, i32 1
  %1913 = load i32, ptr %1912, align 4, !tbaa !128
  %1914 = load ptr, ptr %81, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1914, i32 0, i32 4
  %1916 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1915, i64 noundef 0)
          to label %1917 unwind label %1930

1917:                                             ; preds = %1910
  %1918 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1911, i32 noundef %1913, ptr noundef nonnull align 8 dereferenceable(48) %1916)
          to label %1919 unwind label %1930

1919:                                             ; preds = %1917
  %1920 = getelementptr inbounds { i64, i64 }, ptr %140, i32 0, i32 0
  %1921 = extractvalue { i64, i64 } %1918, 0
  store i64 %1921, ptr %1920, align 8
  %1922 = getelementptr inbounds { i64, i64 }, ptr %140, i32 0, i32 1
  %1923 = extractvalue { i64, i64 } %1918, 1
  store i64 %1923, ptr %1922, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #11
  store i32 0, ptr %141, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #11
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %142, i64 noundef 0, i64 noundef 0)
          to label %1924 unwind label %1934

1924:                                             ; preds = %1919
  %1925 = invoke noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull align 8 dereferenceable(16) %142)
          to label %1926 unwind label %1934

1926:                                             ; preds = %1924
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #11
  br i1 %1925, label %1927, label %1938

1927:                                             ; preds = %1926
  %1928 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %137, i32 0, i32 1
  %1929 = load i32, ptr %1928, align 4, !tbaa !128
  store i32 %1929, ptr %141, align 4, !tbaa !9
  br label %1968

1930:                                             ; preds = %1917, %1910
  %1931 = landingpad { ptr, i32 }
          cleanup
  %1932 = extractvalue { ptr, i32 } %1931, 0
  store ptr %1932, ptr %15, align 8
  %1933 = extractvalue { ptr, i32 } %1931, 1
  store i32 %1933, ptr %16, align 4
  br label %1981

1934:                                             ; preds = %1924, %1919
  %1935 = landingpad { ptr, i32 }
          cleanup
  %1936 = extractvalue { ptr, i32 } %1935, 0
  store ptr %1936, ptr %15, align 8
  %1937 = extractvalue { ptr, i32 } %1935, 1
  store i32 %1937, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #11
  br label %1980

1938:                                             ; preds = %1926
  br label %1939

1939:                                             ; preds = %1951, %1938
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #11
  %1940 = invoke { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16) %140, i32 noundef 1)
          to label %1941 unwind label %1954

1941:                                             ; preds = %1939
  %1942 = getelementptr inbounds { i64, i64 }, ptr %143, i32 0, i32 0
  %1943 = extractvalue { i64, i64 } %1940, 0
  store i64 %1943, ptr %1942, align 8
  %1944 = getelementptr inbounds { i64, i64 }, ptr %143, i32 0, i32 1
  %1945 = extractvalue { i64, i64 } %1940, 1
  store i64 %1945, ptr %1944, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %144) #11
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %144, i64 noundef 0, i64 noundef 0)
          to label %1946 unwind label %1958

1946:                                             ; preds = %1941
  %1947 = invoke noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %143, ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %1948 unwind label %1958

1948:                                             ; preds = %1946
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #11
  br i1 %1947, label %1949, label %1967

1949:                                             ; preds = %1948
  %1950 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %140, i32 noundef 1)
          to label %1951 unwind label %1963

1951:                                             ; preds = %1949
  %1952 = load i32, ptr %141, align 4, !tbaa !9
  %1953 = add i32 %1952, 1
  store i32 %1953, ptr %141, align 4, !tbaa !9
  br label %1939, !llvm.loop !149

1954:                                             ; preds = %1939
  %1955 = landingpad { ptr, i32 }
          cleanup
  %1956 = extractvalue { ptr, i32 } %1955, 0
  store ptr %1956, ptr %15, align 8
  %1957 = extractvalue { ptr, i32 } %1955, 1
  store i32 %1957, ptr %16, align 4
  br label %1962

1958:                                             ; preds = %1946, %1941
  %1959 = landingpad { ptr, i32 }
          cleanup
  %1960 = extractvalue { ptr, i32 } %1959, 0
  store ptr %1960, ptr %15, align 8
  %1961 = extractvalue { ptr, i32 } %1959, 1
  store i32 %1961, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #11
  br label %1962

1962:                                             ; preds = %1958, %1954
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #11
  br label %1980

1963:                                             ; preds = %1974, %1968, %1949
  %1964 = landingpad { ptr, i32 }
          cleanup
  %1965 = extractvalue { ptr, i32 } %1964, 0
  store ptr %1965, ptr %15, align 8
  %1966 = extractvalue { ptr, i32 } %1964, 1
  store i32 %1966, ptr %16, align 4
  br label %1980

1967:                                             ; preds = %1948
  br label %1968

1968:                                             ; preds = %1967, %1927
  %1969 = load ptr, ptr %8, align 8, !tbaa !5
  %1970 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %137, i32 0, i32 1
  %1971 = load i32, ptr %1970, align 4, !tbaa !128
  %1972 = load i32, ptr %141, align 4, !tbaa !9
  %1973 = zext i32 %1972 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %145, i64 noundef %1973, i64 noundef 0)
          to label %1974 unwind label %1963

1974:                                             ; preds = %1968
  %1975 = getelementptr inbounds { i64, i64 }, ptr %145, i32 0, i32 0
  %1976 = load i64, ptr %1975, align 8
  %1977 = getelementptr inbounds { i64, i64 }, ptr %145, i32 0, i32 1
  %1978 = load i64, ptr %1977, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %1969, i32 noundef %1971, i64 %1976, i64 %1978)
          to label %1979 unwind label %1963

1979:                                             ; preds = %1974
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #11
  br label %4683

1980:                                             ; preds = %1963, %1962, %1934
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #11
  br label %1981

1981:                                             ; preds = %1980, %1930
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #11
  br label %1982

1982:                                             ; preds = %1981, %1904, %1900
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #11
  br label %1983

1983:                                             ; preds = %1982, %1883, %1879
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #11
  br label %1984

1984:                                             ; preds = %1983, %1875
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #11
  br label %4732

1985:                                             ; preds = %1857
  %1986 = load ptr, ptr %83, align 8, !tbaa !5
  %1987 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1986, i32 0, i32 0
  %1988 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1987, ptr noundef @.str.40)
          to label %1989 unwind label %1317

1989:                                             ; preds = %1985
  br i1 %1988, label %1990, label %2097

1990:                                             ; preds = %1989
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #11
  %1991 = load ptr, ptr %6, align 8, !tbaa !5
  %1992 = load ptr, ptr %83, align 8, !tbaa !5
  %1993 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1992, i32 0, i32 1
  %1994 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1993, i32 0, i32 1
  %1995 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1994, i64 noundef 0)
          to label %1996 unwind label %2007

1996:                                             ; preds = %1990
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %146, ptr noundef nonnull align 8 dereferenceable(816) %1991, ptr noundef nonnull align 8 dereferenceable(8) %1995)
          to label %1997 unwind label %2007

1997:                                             ; preds = %1996
  br label %1998

1998:                                             ; preds = %1997
  %1999 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %146)
          to label %2000 unwind label %2011

2000:                                             ; preds = %1998
  %2001 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1999)
          to label %2002 unwind label %2011

2002:                                             ; preds = %2000
  br i1 %2001, label %2019, label %2003

2003:                                             ; preds = %2002
  %2004 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #11
  %2005 = getelementptr inbounds %class.anon.403, ptr %148, i32 0, i32 0
  store ptr %146, ptr %2005, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef nonnull align 8 dereferenceable(8) %148) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2004, ptr noundef %147)
          to label %2006 unwind label %2015

2006:                                             ; preds = %2003
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #11
  br label %2019

2007:                                             ; preds = %1996, %1990
  %2008 = landingpad { ptr, i32 }
          cleanup
  %2009 = extractvalue { ptr, i32 } %2008, 0
  store ptr %2009, ptr %15, align 8
  %2010 = extractvalue { ptr, i32 } %2008, 1
  store i32 %2010, ptr %16, align 4
  br label %2096

2011:                                             ; preds = %2000, %1998
  %2012 = landingpad { ptr, i32 }
          cleanup
  %2013 = extractvalue { ptr, i32 } %2012, 0
  store ptr %2013, ptr %15, align 8
  %2014 = extractvalue { ptr, i32 } %2012, 1
  store i32 %2014, ptr %16, align 4
  br label %2095

2015:                                             ; preds = %2003
  %2016 = landingpad { ptr, i32 }
          cleanup
  %2017 = extractvalue { ptr, i32 } %2016, 0
  store ptr %2017, ptr %15, align 8
  %2018 = extractvalue { ptr, i32 } %2016, 1
  store i32 %2018, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #11
  br label %2095

2019:                                             ; preds = %2006, %2002
  br label %2020

2020:                                             ; preds = %2019
  br label %2021

2021:                                             ; preds = %2020
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #11
  %2022 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %146)
          to label %2023 unwind label %2032

2023:                                             ; preds = %2021
  store i64 %2022, ptr %149, align 4
  br label %2024

2024:                                             ; preds = %2023
  %2025 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %149, i32 0, i32 0
  %2026 = load i32, ptr %2025, align 4, !tbaa !148
  %2027 = icmp eq i32 %2026, 3
  br i1 %2027, label %2040, label %2028

2028:                                             ; preds = %2024
  %2029 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #11
  %2030 = getelementptr inbounds %class.anon.404, ptr %151, i32 0, i32 0
  store ptr %146, ptr %2030, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef nonnull align 8 dereferenceable(8) %151) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2029, ptr noundef %150)
          to label %2031 unwind label %2036

2031:                                             ; preds = %2028
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #11
  br label %2040

2032:                                             ; preds = %2021
  %2033 = landingpad { ptr, i32 }
          cleanup
  %2034 = extractvalue { ptr, i32 } %2033, 0
  store ptr %2034, ptr %15, align 8
  %2035 = extractvalue { ptr, i32 } %2033, 1
  store i32 %2035, ptr %16, align 4
  br label %2094

2036:                                             ; preds = %2028
  %2037 = landingpad { ptr, i32 }
          cleanup
  %2038 = extractvalue { ptr, i32 } %2037, 0
  store ptr %2038, ptr %15, align 8
  %2039 = extractvalue { ptr, i32 } %2037, 1
  store i32 %2039, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #11
  br label %2094

2040:                                             ; preds = %2031, %2024
  br label %2041

2041:                                             ; preds = %2040
  br label %2042

2042:                                             ; preds = %2041
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #11
  %2043 = load ptr, ptr %6, align 8, !tbaa !5
  %2044 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %149, i32 0, i32 1
  %2045 = load i32, ptr %2044, align 4, !tbaa !128
  %2046 = load ptr, ptr %81, align 8, !tbaa !5
  %2047 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2046, i32 0, i32 4
  %2048 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2047, i64 noundef 0)
          to label %2049 unwind label %2065

2049:                                             ; preds = %2042
  %2050 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2043, i32 noundef %2045, ptr noundef nonnull align 8 dereferenceable(48) %2048)
          to label %2051 unwind label %2065

2051:                                             ; preds = %2049
  %2052 = getelementptr inbounds { i64, i64 }, ptr %152, i32 0, i32 0
  %2053 = extractvalue { i64, i64 } %2050, 0
  store i64 %2053, ptr %2052, align 8
  %2054 = getelementptr inbounds { i64, i64 }, ptr %152, i32 0, i32 1
  %2055 = extractvalue { i64, i64 } %2050, 1
  store i64 %2055, ptr %2054, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #11
  store i32 0, ptr %153, align 4, !tbaa !9
  br label %2056

2056:                                             ; preds = %2062, %2051
  call void @llvm.lifetime.start.p0(i64 16, ptr %154) #11
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %154, i64 noundef 0, i64 noundef 0)
          to label %2057 unwind label %2069

2057:                                             ; preds = %2056
  %2058 = invoke noundef zeroext i1 @_ZNK4U128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %152, ptr noundef nonnull align 8 dereferenceable(16) %154)
          to label %2059 unwind label %2069

2059:                                             ; preds = %2057
  call void @llvm.lifetime.end.p0(i64 16, ptr %154) #11
  br i1 %2058, label %2060, label %2077

2060:                                             ; preds = %2059
  %2061 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %152, i32 noundef 1)
          to label %2062 unwind label %2073

2062:                                             ; preds = %2060
  %2063 = load i32, ptr %153, align 4, !tbaa !9
  %2064 = add i32 %2063, 1
  store i32 %2064, ptr %153, align 4, !tbaa !9
  br label %2056, !llvm.loop !150

2065:                                             ; preds = %2049, %2042
  %2066 = landingpad { ptr, i32 }
          cleanup
  %2067 = extractvalue { ptr, i32 } %2066, 0
  store ptr %2067, ptr %15, align 8
  %2068 = extractvalue { ptr, i32 } %2066, 1
  store i32 %2068, ptr %16, align 4
  br label %2093

2069:                                             ; preds = %2057, %2056
  %2070 = landingpad { ptr, i32 }
          cleanup
  %2071 = extractvalue { ptr, i32 } %2070, 0
  store ptr %2071, ptr %15, align 8
  %2072 = extractvalue { ptr, i32 } %2070, 1
  store i32 %2072, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %154) #11
  br label %2092

2073:                                             ; preds = %2086, %2077, %2060
  %2074 = landingpad { ptr, i32 }
          cleanup
  %2075 = extractvalue { ptr, i32 } %2074, 0
  store ptr %2075, ptr %15, align 8
  %2076 = extractvalue { ptr, i32 } %2074, 1
  store i32 %2076, ptr %16, align 4
  br label %2092

2077:                                             ; preds = %2059
  %2078 = load ptr, ptr %8, align 8, !tbaa !5
  %2079 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %149, i32 0, i32 1
  %2080 = load i32, ptr %2079, align 4, !tbaa !128
  %2081 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %149, i32 0, i32 1
  %2082 = load i32, ptr %2081, align 4, !tbaa !128
  %2083 = load i32, ptr %153, align 4, !tbaa !9
  %2084 = sub i32 %2082, %2083
  %2085 = zext i32 %2084 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %155, i64 noundef %2085, i64 noundef 0)
          to label %2086 unwind label %2073

2086:                                             ; preds = %2077
  %2087 = getelementptr inbounds { i64, i64 }, ptr %155, i32 0, i32 0
  %2088 = load i64, ptr %2087, align 8
  %2089 = getelementptr inbounds { i64, i64 }, ptr %155, i32 0, i32 1
  %2090 = load i64, ptr %2089, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %2078, i32 noundef %2080, i64 %2088, i64 %2090)
          to label %2091 unwind label %2073

2091:                                             ; preds = %2086
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #11
  br label %4682

2092:                                             ; preds = %2073, %2069
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #11
  br label %2093

2093:                                             ; preds = %2092, %2065
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #11
  br label %2094

2094:                                             ; preds = %2093, %2036, %2032
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #11
  br label %2095

2095:                                             ; preds = %2094, %2015, %2011
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #11
  br label %2096

2096:                                             ; preds = %2095, %2007
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #11
  br label %4732

2097:                                             ; preds = %1989
  %2098 = load ptr, ptr %83, align 8, !tbaa !5
  %2099 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2098, i32 0, i32 0
  %2100 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2099, ptr noundef @.str.41)
          to label %2101 unwind label %1317

2101:                                             ; preds = %2097
  br i1 %2100, label %2102, label %2243

2102:                                             ; preds = %2101
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #11
  %2103 = load ptr, ptr %6, align 8, !tbaa !5
  %2104 = load ptr, ptr %83, align 8, !tbaa !5
  %2105 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2104, i32 0, i32 1
  %2106 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2105, i32 0, i32 1
  %2107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2106, i64 noundef 0)
          to label %2108 unwind label %2119

2108:                                             ; preds = %2102
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %156, ptr noundef nonnull align 8 dereferenceable(816) %2103, ptr noundef nonnull align 8 dereferenceable(8) %2107)
          to label %2109 unwind label %2119

2109:                                             ; preds = %2108
  br label %2110

2110:                                             ; preds = %2109
  %2111 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %2112 unwind label %2123

2112:                                             ; preds = %2110
  %2113 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2111)
          to label %2114 unwind label %2123

2114:                                             ; preds = %2112
  br i1 %2113, label %2131, label %2115

2115:                                             ; preds = %2114
  %2116 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #11
  %2117 = getelementptr inbounds %class.anon.405, ptr %158, i32 0, i32 0
  store ptr %156, ptr %2117, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2116, ptr noundef %157)
          to label %2118 unwind label %2127

2118:                                             ; preds = %2115
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #11
  br label %2131

2119:                                             ; preds = %2108, %2102
  %2120 = landingpad { ptr, i32 }
          cleanup
  %2121 = extractvalue { ptr, i32 } %2120, 0
  store ptr %2121, ptr %15, align 8
  %2122 = extractvalue { ptr, i32 } %2120, 1
  store i32 %2122, ptr %16, align 4
  br label %2242

2123:                                             ; preds = %2112, %2110
  %2124 = landingpad { ptr, i32 }
          cleanup
  %2125 = extractvalue { ptr, i32 } %2124, 0
  store ptr %2125, ptr %15, align 8
  %2126 = extractvalue { ptr, i32 } %2124, 1
  store i32 %2126, ptr %16, align 4
  br label %2241

2127:                                             ; preds = %2115
  %2128 = landingpad { ptr, i32 }
          cleanup
  %2129 = extractvalue { ptr, i32 } %2128, 0
  store ptr %2129, ptr %15, align 8
  %2130 = extractvalue { ptr, i32 } %2128, 1
  store i32 %2130, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #11
  br label %2241

2131:                                             ; preds = %2118, %2114
  br label %2132

2132:                                             ; preds = %2131
  br label %2133

2133:                                             ; preds = %2132
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #11
  %2134 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %2135 unwind label %2155

2135:                                             ; preds = %2133
  store i64 %2134, ptr %159, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #11
  %2136 = load ptr, ptr %6, align 8, !tbaa !5
  %2137 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %159, i32 0, i32 1
  %2138 = load i32, ptr %2137, align 4, !tbaa !128
  %2139 = load ptr, ptr %81, align 8, !tbaa !5
  %2140 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2139, i32 0, i32 4
  %2141 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2140, i64 noundef 0)
          to label %2142 unwind label %2159

2142:                                             ; preds = %2135
  %2143 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2136, i32 noundef %2138, ptr noundef nonnull align 8 dereferenceable(48) %2141)
          to label %2144 unwind label %2159

2144:                                             ; preds = %2142
  %2145 = getelementptr inbounds { i64, i64 }, ptr %160, i32 0, i32 0
  %2146 = extractvalue { i64, i64 } %2143, 0
  store i64 %2146, ptr %2145, align 8
  %2147 = getelementptr inbounds { i64, i64 }, ptr %160, i32 0, i32 1
  %2148 = extractvalue { i64, i64 } %2143, 1
  store i64 %2148, ptr %2147, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #11
  invoke void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %161)
          to label %2149 unwind label %2163

2149:                                             ; preds = %2144
  %2150 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %2151 unwind label %2163

2151:                                             ; preds = %2149
  %2152 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2150)
          to label %2153 unwind label %2163

2153:                                             ; preds = %2151
  %2154 = load i32, ptr %2152, align 4, !tbaa !151
  switch i32 %2154, label %2217 [
    i32 3, label %2167
    i32 2, label %2167
    i32 5, label %2168
    i32 4, label %2168
    i32 7, label %2180
    i32 6, label %2180
    i32 9, label %2192
    i32 8, label %2192
    i32 11, label %2202
    i32 10, label %2202
  ]

2155:                                             ; preds = %2133
  %2156 = landingpad { ptr, i32 }
          cleanup
  %2157 = extractvalue { ptr, i32 } %2156, 0
  store ptr %2157, ptr %15, align 8
  %2158 = extractvalue { ptr, i32 } %2156, 1
  store i32 %2158, ptr %16, align 4
  br label %2240

2159:                                             ; preds = %2142, %2135
  %2160 = landingpad { ptr, i32 }
          cleanup
  %2161 = extractvalue { ptr, i32 } %2160, 0
  store ptr %2161, ptr %15, align 8
  %2162 = extractvalue { ptr, i32 } %2160, 1
  store i32 %2162, ptr %16, align 4
  br label %2239

2163:                                             ; preds = %2229, %2221, %2151, %2149, %2144
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %15, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %16, align 4
  br label %2238

2167:                                             ; preds = %2153, %2153
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %161, ptr align 8 %160, i64 16, i1 false), !tbaa.struct !153
  br label %2229

2168:                                             ; preds = %2153, %2153
  call void @llvm.lifetime.start.p0(i64 16, ptr %162) #11
  %2169 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2170 unwind label %2176

2170:                                             ; preds = %2168
  %2171 = trunc i64 %2169 to i16
  %2172 = invoke noundef zeroext i16 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap16Et(i16 noundef zeroext %2171)
          to label %2173 unwind label %2176

2173:                                             ; preds = %2170
  %2174 = zext i16 %2172 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %162, i64 noundef %2174, i64 noundef 0)
          to label %2175 unwind label %2176

2175:                                             ; preds = %2173
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %161, ptr align 8 %162, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %162) #11
  br label %2229

2176:                                             ; preds = %2173, %2170, %2168
  %2177 = landingpad { ptr, i32 }
          cleanup
  %2178 = extractvalue { ptr, i32 } %2177, 0
  store ptr %2178, ptr %15, align 8
  %2179 = extractvalue { ptr, i32 } %2177, 1
  store i32 %2179, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %162) #11
  br label %2238

2180:                                             ; preds = %2153, %2153
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #11
  %2181 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2182 unwind label %2188

2182:                                             ; preds = %2180
  %2183 = trunc i64 %2181 to i32
  %2184 = invoke noundef i32 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap32Ej(i32 noundef %2183)
          to label %2185 unwind label %2188

2185:                                             ; preds = %2182
  %2186 = zext i32 %2184 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %163, i64 noundef %2186, i64 noundef 0)
          to label %2187 unwind label %2188

2187:                                             ; preds = %2185
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %161, ptr align 8 %163, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #11
  br label %2229

2188:                                             ; preds = %2185, %2182, %2180
  %2189 = landingpad { ptr, i32 }
          cleanup
  %2190 = extractvalue { ptr, i32 } %2189, 0
  store ptr %2190, ptr %15, align 8
  %2191 = extractvalue { ptr, i32 } %2189, 1
  store i32 %2191, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #11
  br label %2238

2192:                                             ; preds = %2153, %2153
  call void @llvm.lifetime.start.p0(i64 16, ptr %164) #11
  %2193 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2194 unwind label %2198

2194:                                             ; preds = %2192
  %2195 = invoke noundef i64 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap64Em(i64 noundef %2193)
          to label %2196 unwind label %2198

2196:                                             ; preds = %2194
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %164, i64 noundef %2195, i64 noundef 0)
          to label %2197 unwind label %2198

2197:                                             ; preds = %2196
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %161, ptr align 8 %164, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #11
  br label %2229

2198:                                             ; preds = %2196, %2194, %2192
  %2199 = landingpad { ptr, i32 }
          cleanup
  %2200 = extractvalue { ptr, i32 } %2199, 0
  store ptr %2200, ptr %15, align 8
  %2201 = extractvalue { ptr, i32 } %2199, 1
  store i32 %2201, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #11
  br label %2238

2202:                                             ; preds = %2153, %2153
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %166, ptr align 8 %160, i64 16, i1 false), !tbaa.struct !153
  %2203 = getelementptr inbounds { i64, i64 }, ptr %166, i32 0, i32 0
  %2204 = load i64, ptr %2203, align 8
  %2205 = getelementptr inbounds { i64, i64 }, ptr %166, i32 0, i32 1
  %2206 = load i64, ptr %2205, align 8
  %2207 = invoke { i64, i64 } @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H8bswap128E4U128(i64 %2204, i64 %2206)
          to label %2208 unwind label %2213

2208:                                             ; preds = %2202
  %2209 = getelementptr inbounds { i64, i64 }, ptr %165, i32 0, i32 0
  %2210 = extractvalue { i64, i64 } %2207, 0
  store i64 %2210, ptr %2209, align 8
  %2211 = getelementptr inbounds { i64, i64 }, ptr %165, i32 0, i32 1
  %2212 = extractvalue { i64, i64 } %2207, 1
  store i64 %2212, ptr %2211, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %161, ptr align 8 %165, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #11
  br label %2229

2213:                                             ; preds = %2202
  %2214 = landingpad { ptr, i32 }
          cleanup
  %2215 = extractvalue { ptr, i32 } %2214, 0
  store ptr %2215, ptr %15, align 8
  %2216 = extractvalue { ptr, i32 } %2214, 1
  store i32 %2216, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #11
  br label %2238

2217:                                             ; preds = %2153
  br label %2218

2218:                                             ; preds = %2217
  %2219 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #11
  %2220 = getelementptr inbounds %class.anon.406, ptr %168, i32 0, i32 0
  store ptr %156, ptr %2220, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull align 8 dereferenceable(8) %168) #11
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2219, ptr noundef %167)
          to label %2221 unwind label %2223

2221:                                             ; preds = %2218
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #11
  %2222 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %2222, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2222, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %2163

2223:                                             ; preds = %2218
  %2224 = landingpad { ptr, i32 }
          cleanup
  %2225 = extractvalue { ptr, i32 } %2224, 0
  store ptr %2225, ptr %15, align 8
  %2226 = extractvalue { ptr, i32 } %2224, 1
  store i32 %2226, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #11
  br label %2238

2227:                                             ; No predecessors!
  br label %2228

2228:                                             ; preds = %2227
  br label %2229

2229:                                             ; preds = %2228, %2208, %2197, %2187, %2175, %2167
  %2230 = load ptr, ptr %8, align 8, !tbaa !5
  %2231 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %159, i32 0, i32 1
  %2232 = load i32, ptr %2231, align 4, !tbaa !128
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %169, ptr align 8 %161, i64 16, i1 false), !tbaa.struct !153
  %2233 = getelementptr inbounds { i64, i64 }, ptr %169, i32 0, i32 0
  %2234 = load i64, ptr %2233, align 8
  %2235 = getelementptr inbounds { i64, i64 }, ptr %169, i32 0, i32 1
  %2236 = load i64, ptr %2235, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %2230, i32 noundef %2232, i64 %2234, i64 %2236)
          to label %2237 unwind label %2163

2237:                                             ; preds = %2229
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #11
  br label %4681

2238:                                             ; preds = %2223, %2213, %2198, %2188, %2176, %2163
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #11
  br label %2239

2239:                                             ; preds = %2238, %2159
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #11
  br label %2240

2240:                                             ; preds = %2239, %2155
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #11
  br label %2241

2241:                                             ; preds = %2240, %2127, %2123
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #11
  br label %2242

2242:                                             ; preds = %2241, %2119
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #11
  br label %4732

2243:                                             ; preds = %2101
  %2244 = load ptr, ptr %83, align 8, !tbaa !5
  %2245 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2244, i32 0, i32 0
  %2246 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2245, ptr noundef @.str.42)
          to label %2247 unwind label %1317

2247:                                             ; preds = %2243
  br i1 %2246, label %2248, label %2358

2248:                                             ; preds = %2247
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #11
  %2249 = load ptr, ptr %6, align 8, !tbaa !5
  %2250 = load ptr, ptr %83, align 8, !tbaa !5
  %2251 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2250, i32 0, i32 1
  %2252 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2251, i32 0, i32 1
  %2253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2252, i64 noundef 0)
          to label %2254 unwind label %2265

2254:                                             ; preds = %2248
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %170, ptr noundef nonnull align 8 dereferenceable(816) %2249, ptr noundef nonnull align 8 dereferenceable(8) %2253)
          to label %2255 unwind label %2265

2255:                                             ; preds = %2254
  br label %2256

2256:                                             ; preds = %2255
  %2257 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %2258 unwind label %2269

2258:                                             ; preds = %2256
  %2259 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2257)
          to label %2260 unwind label %2269

2260:                                             ; preds = %2258
  br i1 %2259, label %2277, label %2261

2261:                                             ; preds = %2260
  %2262 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #11
  %2263 = getelementptr inbounds %class.anon.407, ptr %172, i32 0, i32 0
  store ptr %170, ptr %2263, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef nonnull align 8 dereferenceable(8) %172) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2262, ptr noundef %171)
          to label %2264 unwind label %2273

2264:                                             ; preds = %2261
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #11
  br label %2277

2265:                                             ; preds = %2254, %2248
  %2266 = landingpad { ptr, i32 }
          cleanup
  %2267 = extractvalue { ptr, i32 } %2266, 0
  store ptr %2267, ptr %15, align 8
  %2268 = extractvalue { ptr, i32 } %2266, 1
  store i32 %2268, ptr %16, align 4
  br label %2357

2269:                                             ; preds = %2258, %2256
  %2270 = landingpad { ptr, i32 }
          cleanup
  %2271 = extractvalue { ptr, i32 } %2270, 0
  store ptr %2271, ptr %15, align 8
  %2272 = extractvalue { ptr, i32 } %2270, 1
  store i32 %2272, ptr %16, align 4
  br label %2356

2273:                                             ; preds = %2261
  %2274 = landingpad { ptr, i32 }
          cleanup
  %2275 = extractvalue { ptr, i32 } %2274, 0
  store ptr %2275, ptr %15, align 8
  %2276 = extractvalue { ptr, i32 } %2274, 1
  store i32 %2276, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #11
  br label %2356

2277:                                             ; preds = %2264, %2260
  br label %2278

2278:                                             ; preds = %2277
  br label %2279

2279:                                             ; preds = %2278
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #11
  %2280 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %2281 unwind label %2303

2281:                                             ; preds = %2279
  store i64 %2280, ptr %173, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #11
  %2282 = load ptr, ptr %6, align 8, !tbaa !5
  %2283 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %173, i32 0, i32 1
  %2284 = load i32, ptr %2283, align 4, !tbaa !128
  %2285 = load ptr, ptr %81, align 8, !tbaa !5
  %2286 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2285, i32 0, i32 4
  %2287 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2286, i64 noundef 0)
          to label %2288 unwind label %2307

2288:                                             ; preds = %2281
  %2289 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2282, i32 noundef %2284, ptr noundef nonnull align 8 dereferenceable(48) %2287)
          to label %2290 unwind label %2307

2290:                                             ; preds = %2288
  %2291 = getelementptr inbounds { i64, i64 }, ptr %174, i32 0, i32 0
  %2292 = extractvalue { i64, i64 } %2289, 0
  store i64 %2292, ptr %2291, align 8
  %2293 = getelementptr inbounds { i64, i64 }, ptr %174, i32 0, i32 1
  %2294 = extractvalue { i64, i64 } %2289, 1
  store i64 %2294, ptr %2293, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #11
  invoke void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175)
          to label %2295 unwind label %2311

2295:                                             ; preds = %2290
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #11
  store i64 0, ptr %176, align 8, !tbaa !109
  br label %2296

2296:                                             ; preds = %2340, %2295
  %2297 = load i64, ptr %176, align 8, !tbaa !109
  %2298 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %173, i32 0, i32 1
  %2299 = load i32, ptr %2298, align 4, !tbaa !128
  %2300 = zext i32 %2299 to i64
  %2301 = icmp ult i64 %2297, %2300
  br i1 %2301, label %2315, label %2302

2302:                                             ; preds = %2296
  store i32 138, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #11
  br label %2344

2303:                                             ; preds = %2279
  %2304 = landingpad { ptr, i32 }
          cleanup
  %2305 = extractvalue { ptr, i32 } %2304, 0
  store ptr %2305, ptr %15, align 8
  %2306 = extractvalue { ptr, i32 } %2304, 1
  store i32 %2306, ptr %16, align 4
  br label %2355

2307:                                             ; preds = %2288, %2281
  %2308 = landingpad { ptr, i32 }
          cleanup
  %2309 = extractvalue { ptr, i32 } %2308, 0
  store ptr %2309, ptr %15, align 8
  %2310 = extractvalue { ptr, i32 } %2308, 1
  store i32 %2310, ptr %16, align 4
  br label %2354

2311:                                             ; preds = %2344, %2290
  %2312 = landingpad { ptr, i32 }
          cleanup
  %2313 = extractvalue { ptr, i32 } %2312, 0
  store ptr %2313, ptr %15, align 8
  %2314 = extractvalue { ptr, i32 } %2312, 1
  store i32 %2314, ptr %16, align 4
  br label %2353

2315:                                             ; preds = %2296
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #11
  %2316 = invoke { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16) %174, i32 noundef 1)
          to label %2317 unwind label %2327

2317:                                             ; preds = %2315
  %2318 = getelementptr inbounds { i64, i64 }, ptr %177, i32 0, i32 0
  %2319 = extractvalue { i64, i64 } %2316, 0
  store i64 %2319, ptr %2318, align 8
  %2320 = getelementptr inbounds { i64, i64 }, ptr %177, i32 0, i32 1
  %2321 = extractvalue { i64, i64 } %2316, 1
  store i64 %2321, ptr %2320, align 8
  %2322 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %177, i32 noundef 0)
          to label %2323 unwind label %2327

2323:                                             ; preds = %2317
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #11
  br i1 %2322, label %2324, label %2335

2324:                                             ; preds = %2323
  %2325 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128oREj(ptr noundef nonnull align 8 dereferenceable(16) %175, i32 noundef 1)
          to label %2326 unwind label %2331

2326:                                             ; preds = %2324
  br label %2335

2327:                                             ; preds = %2317, %2315
  %2328 = landingpad { ptr, i32 }
          cleanup
  %2329 = extractvalue { ptr, i32 } %2328, 0
  store ptr %2329, ptr %15, align 8
  %2330 = extractvalue { ptr, i32 } %2328, 1
  store i32 %2330, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #11
  br label %2343

2331:                                             ; preds = %2337, %2335, %2324
  %2332 = landingpad { ptr, i32 }
          cleanup
  %2333 = extractvalue { ptr, i32 } %2332, 0
  store ptr %2333, ptr %15, align 8
  %2334 = extractvalue { ptr, i32 } %2332, 1
  store i32 %2334, ptr %16, align 4
  br label %2343

2335:                                             ; preds = %2326, %2323
  %2336 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128lSEj(ptr noundef nonnull align 8 dereferenceable(16) %175, i32 noundef 1)
          to label %2337 unwind label %2331

2337:                                             ; preds = %2335
  %2338 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %174, i32 noundef 1)
          to label %2339 unwind label %2331

2339:                                             ; preds = %2337
  br label %2340

2340:                                             ; preds = %2339
  %2341 = load i64, ptr %176, align 8, !tbaa !109
  %2342 = add i64 %2341, 1
  store i64 %2342, ptr %176, align 8, !tbaa !109
  br label %2296, !llvm.loop !154

2343:                                             ; preds = %2331, %2327
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #11
  br label %2353

2344:                                             ; preds = %2302
  %2345 = load ptr, ptr %8, align 8, !tbaa !5
  %2346 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %173, i32 0, i32 1
  %2347 = load i32, ptr %2346, align 4, !tbaa !128
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %178, ptr align 8 %175, i64 16, i1 false), !tbaa.struct !153
  %2348 = getelementptr inbounds { i64, i64 }, ptr %178, i32 0, i32 0
  %2349 = load i64, ptr %2348, align 8
  %2350 = getelementptr inbounds { i64, i64 }, ptr %178, i32 0, i32 1
  %2351 = load i64, ptr %2350, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %2345, i32 noundef %2347, i64 %2349, i64 %2351)
          to label %2352 unwind label %2311

2352:                                             ; preds = %2344
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #11
  br label %4680

2353:                                             ; preds = %2343, %2311
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #11
  br label %2354

2354:                                             ; preds = %2353, %2307
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #11
  br label %2355

2355:                                             ; preds = %2354, %2303
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #11
  br label %2356

2356:                                             ; preds = %2355, %2273, %2269
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #11
  br label %2357

2357:                                             ; preds = %2356, %2265
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #11
  br label %4732

2358:                                             ; preds = %2247
  %2359 = load ptr, ptr %83, align 8, !tbaa !5
  %2360 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2359, i32 0, i32 0
  %2361 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2360, ptr noundef @.str.43)
          to label %2362 unwind label %1317

2362:                                             ; preds = %2358
  br i1 %2361, label %2368, label %2363

2363:                                             ; preds = %2362
  %2364 = load ptr, ptr %83, align 8, !tbaa !5
  %2365 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2364, i32 0, i32 0
  %2366 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2365, ptr noundef @.str.44)
          to label %2367 unwind label %1317

2367:                                             ; preds = %2363
  br i1 %2366, label %2368, label %2581

2368:                                             ; preds = %2367, %2362
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #11
  %2369 = load ptr, ptr %6, align 8, !tbaa !5
  %2370 = load ptr, ptr %83, align 8, !tbaa !5
  %2371 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2370, i32 0, i32 1
  %2372 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2371, i32 0, i32 1
  %2373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2372, i64 noundef 0)
          to label %2374 unwind label %2386

2374:                                             ; preds = %2368
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %179, ptr noundef nonnull align 8 dereferenceable(816) %2369, ptr noundef nonnull align 8 dereferenceable(8) %2373)
          to label %2375 unwind label %2386

2375:                                             ; preds = %2374
  br label %2376

2376:                                             ; preds = %2375
  %2377 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %2378 unwind label %2390

2378:                                             ; preds = %2376
  %2379 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2377)
          to label %2380 unwind label %2390

2380:                                             ; preds = %2378
  br i1 %2379, label %2398, label %2381

2381:                                             ; preds = %2380
  %2382 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %181) #11
  %2383 = getelementptr inbounds %class.anon.408, ptr %181, i32 0, i32 0
  store ptr %83, ptr %2383, align 8, !tbaa !5
  %2384 = getelementptr inbounds %class.anon.408, ptr %181, i32 0, i32 1
  store ptr %179, ptr %2384, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %180, ptr noundef nonnull align 8 dereferenceable(16) %181) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2382, ptr noundef %180)
          to label %2385 unwind label %2394

2385:                                             ; preds = %2381
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %181) #11
  br label %2398

2386:                                             ; preds = %2374, %2368
  %2387 = landingpad { ptr, i32 }
          cleanup
  %2388 = extractvalue { ptr, i32 } %2387, 0
  store ptr %2388, ptr %15, align 8
  %2389 = extractvalue { ptr, i32 } %2387, 1
  store i32 %2389, ptr %16, align 4
  br label %2580

2390:                                             ; preds = %2378, %2376
  %2391 = landingpad { ptr, i32 }
          cleanup
  %2392 = extractvalue { ptr, i32 } %2391, 0
  store ptr %2392, ptr %15, align 8
  %2393 = extractvalue { ptr, i32 } %2391, 1
  store i32 %2393, ptr %16, align 4
  br label %2579

2394:                                             ; preds = %2381
  %2395 = landingpad { ptr, i32 }
          cleanup
  %2396 = extractvalue { ptr, i32 } %2395, 0
  store ptr %2396, ptr %15, align 8
  %2397 = extractvalue { ptr, i32 } %2395, 1
  store i32 %2397, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %181) #11
  br label %2579

2398:                                             ; preds = %2385, %2380
  br label %2399

2399:                                             ; preds = %2398
  br label %2400

2400:                                             ; preds = %2399
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #11
  %2401 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %2402 unwind label %2437

2402:                                             ; preds = %2400
  store i64 %2401, ptr %182, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %183) #11
  %2403 = load ptr, ptr %6, align 8, !tbaa !5
  %2404 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2405 = load i32, ptr %2404, align 4, !tbaa !128
  %2406 = load ptr, ptr %81, align 8, !tbaa !5
  %2407 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2406, i32 0, i32 4
  %2408 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2407, i64 noundef 0)
          to label %2409 unwind label %2441

2409:                                             ; preds = %2402
  %2410 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2403, i32 noundef %2405, ptr noundef nonnull align 8 dereferenceable(48) %2408)
          to label %2411 unwind label %2441

2411:                                             ; preds = %2409
  %2412 = getelementptr inbounds { i64, i64 }, ptr %183, i32 0, i32 0
  %2413 = extractvalue { i64, i64 } %2410, 0
  store i64 %2413, ptr %2412, align 8
  %2414 = getelementptr inbounds { i64, i64 }, ptr %183, i32 0, i32 1
  %2415 = extractvalue { i64, i64 } %2410, 1
  store i64 %2415, ptr %2414, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %184) #11
  %2416 = load ptr, ptr %6, align 8, !tbaa !5
  %2417 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2418 = load i32, ptr %2417, align 4, !tbaa !128
  %2419 = load ptr, ptr %81, align 8, !tbaa !5
  %2420 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2419, i32 0, i32 4
  %2421 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2420, i64 noundef 1)
          to label %2422 unwind label %2445

2422:                                             ; preds = %2411
  %2423 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %2416, i32 noundef %2418, ptr noundef nonnull align 8 dereferenceable(48) %2421)
          to label %2424 unwind label %2445

2424:                                             ; preds = %2422
  %2425 = getelementptr inbounds { i64, i64 }, ptr %184, i32 0, i32 0
  %2426 = extractvalue { i64, i64 } %2423, 0
  store i64 %2426, ptr %2425, align 8
  %2427 = getelementptr inbounds { i64, i64 }, ptr %184, i32 0, i32 1
  %2428 = extractvalue { i64, i64 } %2423, 1
  store i64 %2428, ptr %2427, align 8
  br label %2429

2429:                                             ; preds = %2424
  %2430 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2431 = load i32, ptr %2430, align 4, !tbaa !128
  %2432 = invoke noundef zeroext i1 @_ZNK4U128leEj(ptr noundef nonnull align 8 dereferenceable(16) %184, i32 noundef %2431)
          to label %2433 unwind label %2445

2433:                                             ; preds = %2429
  br i1 %2432, label %2453, label %2434

2434:                                             ; preds = %2433
  %2435 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %186) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull align 1 dereferenceable(1) %186) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2435, ptr noundef %185)
          to label %2436 unwind label %2449

2436:                                             ; preds = %2434
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #11
  br label %2453

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

2441:                                             ; preds = %2409, %2402
  %2442 = landingpad { ptr, i32 }
          cleanup
  %2443 = extractvalue { ptr, i32 } %2442, 0
  store ptr %2443, ptr %15, align 8
  %2444 = extractvalue { ptr, i32 } %2442, 1
  store i32 %2444, ptr %16, align 4
  br label %2577

2445:                                             ; preds = %2429, %2422, %2411
  %2446 = landingpad { ptr, i32 }
          cleanup
  %2447 = extractvalue { ptr, i32 } %2446, 0
  store ptr %2447, ptr %15, align 8
  %2448 = extractvalue { ptr, i32 } %2446, 1
  store i32 %2448, ptr %16, align 4
  br label %2576

2449:                                             ; preds = %2434
  %2450 = landingpad { ptr, i32 }
          cleanup
  %2451 = extractvalue { ptr, i32 } %2450, 0
  store ptr %2451, ptr %15, align 8
  %2452 = extractvalue { ptr, i32 } %2450, 1
  store i32 %2452, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #11
  br label %2576

2453:                                             ; preds = %2436, %2433
  br label %2454

2454:                                             ; preds = %2453
  br label %2455

2455:                                             ; preds = %2454
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #11
  %2456 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %184)
          to label %2457 unwind label %2467

2457:                                             ; preds = %2455
  %2458 = trunc i64 %2456 to i32
  store i32 %2458, ptr %187, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %188) #11
  invoke void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188)
          to label %2459 unwind label %2471

2459:                                             ; preds = %2457
  %2460 = load i32, ptr %187, align 4, !tbaa !9
  %2461 = icmp eq i32 %2460, 0
  br i1 %2461, label %2466, label %2462

2462:                                             ; preds = %2459
  %2463 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2464 = load i32, ptr %2463, align 4, !tbaa !128
  %2465 = icmp eq i32 %2464, 64
  br i1 %2465, label %2466, label %2475

2466:                                             ; preds = %2462, %2459
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %188, ptr align 8 %183, i64 16, i1 false), !tbaa.struct !153
  br label %2565

2467:                                             ; preds = %2455
  %2468 = landingpad { ptr, i32 }
          cleanup
  %2469 = extractvalue { ptr, i32 } %2468, 0
  store ptr %2469, ptr %15, align 8
  %2470 = extractvalue { ptr, i32 } %2468, 1
  store i32 %2470, ptr %16, align 4
  br label %2575

2471:                                             ; preds = %2565, %2475, %2457
  %2472 = landingpad { ptr, i32 }
          cleanup
  %2473 = extractvalue { ptr, i32 } %2472, 0
  store ptr %2473, ptr %15, align 8
  %2474 = extractvalue { ptr, i32 } %2472, 1
  store i32 %2474, ptr %16, align 4
  br label %2574

2475:                                             ; preds = %2462
  %2476 = load ptr, ptr %83, align 8, !tbaa !5
  %2477 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2476, i32 0, i32 0
  %2478 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2477, ptr noundef @.str.43)
          to label %2479 unwind label %2471

2479:                                             ; preds = %2475
  br i1 %2478, label %2480, label %2522

2480:                                             ; preds = %2479
  call void @llvm.lifetime.start.p0(i64 16, ptr %189) #11
  %2481 = load i32, ptr %187, align 4, !tbaa !9
  %2482 = invoke { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16) %183, i32 noundef %2481)
          to label %2483 unwind label %2508

2483:                                             ; preds = %2480
  %2484 = getelementptr inbounds { i64, i64 }, ptr %189, i32 0, i32 0
  %2485 = extractvalue { i64, i64 } %2482, 0
  store i64 %2485, ptr %2484, align 8
  %2486 = getelementptr inbounds { i64, i64 }, ptr %189, i32 0, i32 1
  %2487 = extractvalue { i64, i64 } %2482, 1
  store i64 %2487, ptr %2486, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %190) #11
  %2488 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2489 = load i32, ptr %2488, align 4, !tbaa !128
  %2490 = load i32, ptr %187, align 4, !tbaa !9
  %2491 = sub i32 %2489, %2490
  %2492 = invoke { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16) %183, i32 noundef %2491)
          to label %2493 unwind label %2512

2493:                                             ; preds = %2483
  %2494 = getelementptr inbounds { i64, i64 }, ptr %190, i32 0, i32 0
  %2495 = extractvalue { i64, i64 } %2492, 0
  store i64 %2495, ptr %2494, align 8
  %2496 = getelementptr inbounds { i64, i64 }, ptr %190, i32 0, i32 1
  %2497 = extractvalue { i64, i64 } %2492, 1
  store i64 %2497, ptr %2496, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %191) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %192, ptr align 8 %190, i64 16, i1 false), !tbaa.struct !153
  %2498 = getelementptr inbounds { i64, i64 }, ptr %192, i32 0, i32 0
  %2499 = load i64, ptr %2498, align 8
  %2500 = getelementptr inbounds { i64, i64 }, ptr %192, i32 0, i32 1
  %2501 = load i64, ptr %2500, align 8
  %2502 = invoke { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16) %189, i64 %2499, i64 %2501)
          to label %2503 unwind label %2516

2503:                                             ; preds = %2493
  %2504 = getelementptr inbounds { i64, i64 }, ptr %191, i32 0, i32 0
  %2505 = extractvalue { i64, i64 } %2502, 0
  store i64 %2505, ptr %2504, align 8
  %2506 = getelementptr inbounds { i64, i64 }, ptr %191, i32 0, i32 1
  %2507 = extractvalue { i64, i64 } %2502, 1
  store i64 %2507, ptr %2506, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %188, ptr align 8 %191, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %191) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %189) #11
  br label %2564

2508:                                             ; preds = %2480
  %2509 = landingpad { ptr, i32 }
          cleanup
  %2510 = extractvalue { ptr, i32 } %2509, 0
  store ptr %2510, ptr %15, align 8
  %2511 = extractvalue { ptr, i32 } %2509, 1
  store i32 %2511, ptr %16, align 4
  br label %2521

2512:                                             ; preds = %2483
  %2513 = landingpad { ptr, i32 }
          cleanup
  %2514 = extractvalue { ptr, i32 } %2513, 0
  store ptr %2514, ptr %15, align 8
  %2515 = extractvalue { ptr, i32 } %2513, 1
  store i32 %2515, ptr %16, align 4
  br label %2520

2516:                                             ; preds = %2493
  %2517 = landingpad { ptr, i32 }
          cleanup
  %2518 = extractvalue { ptr, i32 } %2517, 0
  store ptr %2518, ptr %15, align 8
  %2519 = extractvalue { ptr, i32 } %2517, 1
  store i32 %2519, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %191) #11
  br label %2520

2520:                                             ; preds = %2516, %2512
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #11
  br label %2521

2521:                                             ; preds = %2520, %2508
  call void @llvm.lifetime.end.p0(i64 16, ptr %189) #11
  br label %2574

2522:                                             ; preds = %2479
  call void @llvm.lifetime.start.p0(i64 16, ptr %193) #11
  %2523 = load i32, ptr %187, align 4, !tbaa !9
  %2524 = invoke { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16) %183, i32 noundef %2523)
          to label %2525 unwind label %2550

2525:                                             ; preds = %2522
  %2526 = getelementptr inbounds { i64, i64 }, ptr %193, i32 0, i32 0
  %2527 = extractvalue { i64, i64 } %2524, 0
  store i64 %2527, ptr %2526, align 8
  %2528 = getelementptr inbounds { i64, i64 }, ptr %193, i32 0, i32 1
  %2529 = extractvalue { i64, i64 } %2524, 1
  store i64 %2529, ptr %2528, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %194) #11
  %2530 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2531 = load i32, ptr %2530, align 4, !tbaa !128
  %2532 = load i32, ptr %187, align 4, !tbaa !9
  %2533 = sub i32 %2531, %2532
  %2534 = invoke { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16) %183, i32 noundef %2533)
          to label %2535 unwind label %2554

2535:                                             ; preds = %2525
  %2536 = getelementptr inbounds { i64, i64 }, ptr %194, i32 0, i32 0
  %2537 = extractvalue { i64, i64 } %2534, 0
  store i64 %2537, ptr %2536, align 8
  %2538 = getelementptr inbounds { i64, i64 }, ptr %194, i32 0, i32 1
  %2539 = extractvalue { i64, i64 } %2534, 1
  store i64 %2539, ptr %2538, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %195) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %196, ptr align 8 %194, i64 16, i1 false), !tbaa.struct !153
  %2540 = getelementptr inbounds { i64, i64 }, ptr %196, i32 0, i32 0
  %2541 = load i64, ptr %2540, align 8
  %2542 = getelementptr inbounds { i64, i64 }, ptr %196, i32 0, i32 1
  %2543 = load i64, ptr %2542, align 8
  %2544 = invoke { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16) %193, i64 %2541, i64 %2543)
          to label %2545 unwind label %2558

2545:                                             ; preds = %2535
  %2546 = getelementptr inbounds { i64, i64 }, ptr %195, i32 0, i32 0
  %2547 = extractvalue { i64, i64 } %2544, 0
  store i64 %2547, ptr %2546, align 8
  %2548 = getelementptr inbounds { i64, i64 }, ptr %195, i32 0, i32 1
  %2549 = extractvalue { i64, i64 } %2544, 1
  store i64 %2549, ptr %2548, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %188, ptr align 8 %195, i64 16, i1 false), !tbaa.struct !153
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %194) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #11
  br label %2564

2550:                                             ; preds = %2522
  %2551 = landingpad { ptr, i32 }
          cleanup
  %2552 = extractvalue { ptr, i32 } %2551, 0
  store ptr %2552, ptr %15, align 8
  %2553 = extractvalue { ptr, i32 } %2551, 1
  store i32 %2553, ptr %16, align 4
  br label %2563

2554:                                             ; preds = %2525
  %2555 = landingpad { ptr, i32 }
          cleanup
  %2556 = extractvalue { ptr, i32 } %2555, 0
  store ptr %2556, ptr %15, align 8
  %2557 = extractvalue { ptr, i32 } %2555, 1
  store i32 %2557, ptr %16, align 4
  br label %2562

2558:                                             ; preds = %2535
  %2559 = landingpad { ptr, i32 }
          cleanup
  %2560 = extractvalue { ptr, i32 } %2559, 0
  store ptr %2560, ptr %15, align 8
  %2561 = extractvalue { ptr, i32 } %2559, 1
  store i32 %2561, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #11
  br label %2562

2562:                                             ; preds = %2558, %2554
  call void @llvm.lifetime.end.p0(i64 16, ptr %194) #11
  br label %2563

2563:                                             ; preds = %2562, %2550
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #11
  br label %2574

2564:                                             ; preds = %2545, %2503
  br label %2565

2565:                                             ; preds = %2564, %2466
  %2566 = load ptr, ptr %8, align 8, !tbaa !5
  %2567 = getelementptr inbounds %"struct.(anonymous namespace)::TypeInfo", ptr %182, i32 0, i32 1
  %2568 = load i32, ptr %2567, align 4, !tbaa !128
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %197, ptr align 8 %188, i64 16, i1 false), !tbaa.struct !153
  %2569 = getelementptr inbounds { i64, i64 }, ptr %197, i32 0, i32 0
  %2570 = load i64, ptr %2569, align 8
  %2571 = getelementptr inbounds { i64, i64 }, ptr %197, i32 0, i32 1
  %2572 = load i64, ptr %2571, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %2566, i32 noundef %2568, i64 %2570, i64 %2572)
          to label %2573 unwind label %2471

2573:                                             ; preds = %2565
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %183) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #11
  br label %4679

2574:                                             ; preds = %2563, %2521, %2471
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #11
  br label %2575

2575:                                             ; preds = %2574, %2467
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #11
  br label %2576

2576:                                             ; preds = %2575, %2449, %2445
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #11
  br label %2577

2577:                                             ; preds = %2576, %2441
  call void @llvm.lifetime.end.p0(i64 16, ptr %183) #11
  br label %2578

2578:                                             ; preds = %2577, %2437
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #11
  br label %2579

2579:                                             ; preds = %2578, %2394, %2390
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #11
  br label %2580

2580:                                             ; preds = %2579, %2386
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #11
  br label %4732

2581:                                             ; preds = %2367
  %2582 = load ptr, ptr %83, align 8, !tbaa !5
  %2583 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2582, i32 0, i32 0
  %2584 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2583, ptr noundef @.str.45)
          to label %2585 unwind label %1317

2585:                                             ; preds = %2581
  br i1 %2584, label %2586, label %2658

2586:                                             ; preds = %2585
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #11
  %2587 = load ptr, ptr %6, align 8, !tbaa !5
  %2588 = load ptr, ptr %83, align 8, !tbaa !5
  %2589 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2588, i32 0, i32 1
  %2590 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2589, i32 0, i32 1
  %2591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2590, i64 noundef 0)
          to label %2592 unwind label %2604

2592:                                             ; preds = %2586
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %198, ptr noundef nonnull align 8 dereferenceable(816) %2587, ptr noundef nonnull align 8 dereferenceable(8) %2591)
          to label %2593 unwind label %2604

2593:                                             ; preds = %2592
  br label %2594

2594:                                             ; preds = %2593
  %2595 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %2596 unwind label %2608

2596:                                             ; preds = %2594
  %2597 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2595)
          to label %2598 unwind label %2608

2598:                                             ; preds = %2596
  br i1 %2597, label %2616, label %2599

2599:                                             ; preds = %2598
  %2600 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %200) #11
  %2601 = getelementptr inbounds %class.anon.411, ptr %200, i32 0, i32 0
  store ptr %83, ptr %2601, align 8, !tbaa !5
  %2602 = getelementptr inbounds %class.anon.411, ptr %200, i32 0, i32 1
  store ptr %198, ptr %2602, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 8 dereferenceable(16) %200) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2600, ptr noundef %199)
          to label %2603 unwind label %2612

2603:                                             ; preds = %2599
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #11
  br label %2616

2604:                                             ; preds = %2592, %2586
  %2605 = landingpad { ptr, i32 }
          cleanup
  %2606 = extractvalue { ptr, i32 } %2605, 0
  store ptr %2606, ptr %15, align 8
  %2607 = extractvalue { ptr, i32 } %2605, 1
  store i32 %2607, ptr %16, align 4
  br label %2657

2608:                                             ; preds = %2596, %2594
  %2609 = landingpad { ptr, i32 }
          cleanup
  %2610 = extractvalue { ptr, i32 } %2609, 0
  store ptr %2610, ptr %15, align 8
  %2611 = extractvalue { ptr, i32 } %2609, 1
  store i32 %2611, ptr %16, align 4
  br label %2656

2612:                                             ; preds = %2599
  %2613 = landingpad { ptr, i32 }
          cleanup
  %2614 = extractvalue { ptr, i32 } %2613, 0
  store ptr %2614, ptr %15, align 8
  %2615 = extractvalue { ptr, i32 } %2613, 1
  store i32 %2615, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #11
  br label %2656

2616:                                             ; preds = %2603, %2598
  br label %2617

2617:                                             ; preds = %2616
  br label %2618

2618:                                             ; preds = %2617
  call void @llvm.lifetime.start.p0(i64 32, ptr %201) #11
  %2619 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %201, ptr noundef nonnull align 8 dereferenceable(816) %2619, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %2620 unwind label %2647

2620:                                             ; preds = %2618
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #11
  %2621 = load ptr, ptr %6, align 8, !tbaa !5
  %2622 = getelementptr inbounds %"struct.std::pair", ptr %201, i32 0, i32 0
  %2623 = load ptr, ptr %81, align 8, !tbaa !5
  %2624 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2623, i32 0, i32 4
  %2625 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2624, i64 noundef 0)
          to label %2626 unwind label %2651

2626:                                             ; preds = %2620
  %2627 = load ptr, ptr %81, align 8, !tbaa !5
  %2628 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2627, i32 0, i32 4
  %2629 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2628, i64 noundef 1)
          to label %2630 unwind label %2651

2630:                                             ; preds = %2626
  %2631 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2621, ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(16) %2622, ptr noundef nonnull align 8 dereferenceable(48) %2625, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %2629, i1 noundef zeroext false)
          to label %2632 unwind label %2651

2632:                                             ; preds = %2630
  %2633 = zext i1 %2631 to i8
  store i8 %2633, ptr %202, align 1, !tbaa !79
  %2634 = getelementptr inbounds %"struct.std::pair", ptr %201, i32 0, i32 1
  %2635 = load ptr, ptr %8, align 8, !tbaa !5
  %2636 = load i8, ptr %202, align 1, !tbaa !79, !range !81, !noundef !82
  %2637 = trunc i8 %2636 to i1
  %2638 = zext i1 %2637 to i64
  %2639 = select i1 %2637, i32 1, i32 0
  %2640 = sext i32 %2639 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %203, i64 noundef %2640, i64 noundef 0)
          to label %2641 unwind label %2651

2641:                                             ; preds = %2632
  %2642 = getelementptr inbounds { i64, i64 }, ptr %203, i32 0, i32 0
  %2643 = load i64, ptr %2642, align 8
  %2644 = getelementptr inbounds { i64, i64 }, ptr %203, i32 0, i32 1
  %2645 = load i64, ptr %2644, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %2634, ptr noundef nonnull align 8 dereferenceable(120) %2635, i32 noundef 8, i64 %2643, i64 %2645)
          to label %2646 unwind label %2651

2646:                                             ; preds = %2641
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %201) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #11
  br label %4678

2647:                                             ; preds = %2618
  %2648 = landingpad { ptr, i32 }
          cleanup
  %2649 = extractvalue { ptr, i32 } %2648, 0
  store ptr %2649, ptr %15, align 8
  %2650 = extractvalue { ptr, i32 } %2648, 1
  store i32 %2650, ptr %16, align 4
  br label %2655

2651:                                             ; preds = %2641, %2632, %2630, %2626, %2620
  %2652 = landingpad { ptr, i32 }
          cleanup
  %2653 = extractvalue { ptr, i32 } %2652, 0
  store ptr %2653, ptr %15, align 8
  %2654 = extractvalue { ptr, i32 } %2652, 1
  store i32 %2654, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #11
  br label %2655

2655:                                             ; preds = %2651, %2647
  call void @llvm.lifetime.end.p0(i64 32, ptr %201) #11
  br label %2656

2656:                                             ; preds = %2655, %2612, %2608
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #11
  br label %2657

2657:                                             ; preds = %2656, %2604
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #11
  br label %4732

2658:                                             ; preds = %2585
  %2659 = load ptr, ptr %83, align 8, !tbaa !5
  %2660 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2659, i32 0, i32 0
  %2661 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2660, ptr noundef @.str.46)
          to label %2662 unwind label %1317

2662:                                             ; preds = %2658
  br i1 %2661, label %2663, label %2735

2663:                                             ; preds = %2662
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #11
  %2664 = load ptr, ptr %6, align 8, !tbaa !5
  %2665 = load ptr, ptr %83, align 8, !tbaa !5
  %2666 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2665, i32 0, i32 1
  %2667 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2666, i32 0, i32 1
  %2668 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2667, i64 noundef 0)
          to label %2669 unwind label %2681

2669:                                             ; preds = %2663
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %204, ptr noundef nonnull align 8 dereferenceable(816) %2664, ptr noundef nonnull align 8 dereferenceable(8) %2668)
          to label %2670 unwind label %2681

2670:                                             ; preds = %2669
  br label %2671

2671:                                             ; preds = %2670
  %2672 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %2673 unwind label %2685

2673:                                             ; preds = %2671
  %2674 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2672)
          to label %2675 unwind label %2685

2675:                                             ; preds = %2673
  br i1 %2674, label %2693, label %2676

2676:                                             ; preds = %2675
  %2677 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %206) #11
  %2678 = getelementptr inbounds %class.anon.412, ptr %206, i32 0, i32 0
  store ptr %83, ptr %2678, align 8, !tbaa !5
  %2679 = getelementptr inbounds %class.anon.412, ptr %206, i32 0, i32 1
  store ptr %204, ptr %2679, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 8 dereferenceable(16) %206) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2677, ptr noundef %205)
          to label %2680 unwind label %2689

2680:                                             ; preds = %2676
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #11
  br label %2693

2681:                                             ; preds = %2669, %2663
  %2682 = landingpad { ptr, i32 }
          cleanup
  %2683 = extractvalue { ptr, i32 } %2682, 0
  store ptr %2683, ptr %15, align 8
  %2684 = extractvalue { ptr, i32 } %2682, 1
  store i32 %2684, ptr %16, align 4
  br label %2734

2685:                                             ; preds = %2673, %2671
  %2686 = landingpad { ptr, i32 }
          cleanup
  %2687 = extractvalue { ptr, i32 } %2686, 0
  store ptr %2687, ptr %15, align 8
  %2688 = extractvalue { ptr, i32 } %2686, 1
  store i32 %2688, ptr %16, align 4
  br label %2733

2689:                                             ; preds = %2676
  %2690 = landingpad { ptr, i32 }
          cleanup
  %2691 = extractvalue { ptr, i32 } %2690, 0
  store ptr %2691, ptr %15, align 8
  %2692 = extractvalue { ptr, i32 } %2690, 1
  store i32 %2692, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #11
  br label %2733

2693:                                             ; preds = %2680, %2675
  br label %2694

2694:                                             ; preds = %2693
  br label %2695

2695:                                             ; preds = %2694
  call void @llvm.lifetime.start.p0(i64 32, ptr %207) #11
  %2696 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %207, ptr noundef nonnull align 8 dereferenceable(816) %2696, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %2697 unwind label %2724

2697:                                             ; preds = %2695
  call void @llvm.lifetime.start.p0(i64 1, ptr %208) #11
  %2698 = load ptr, ptr %6, align 8, !tbaa !5
  %2699 = getelementptr inbounds %"struct.std::pair", ptr %207, i32 0, i32 0
  %2700 = load ptr, ptr %81, align 8, !tbaa !5
  %2701 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2700, i32 0, i32 4
  %2702 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2701, i64 noundef 0)
          to label %2703 unwind label %2728

2703:                                             ; preds = %2697
  %2704 = load ptr, ptr %81, align 8, !tbaa !5
  %2705 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2704, i32 0, i32 4
  %2706 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2705, i64 noundef 1)
          to label %2707 unwind label %2728

2707:                                             ; preds = %2703
  %2708 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2698, ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(16) %2699, ptr noundef nonnull align 8 dereferenceable(48) %2702, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %2706, i1 noundef zeroext false)
          to label %2709 unwind label %2728

2709:                                             ; preds = %2707
  %2710 = zext i1 %2708 to i8
  store i8 %2710, ptr %208, align 1, !tbaa !79
  %2711 = getelementptr inbounds %"struct.std::pair", ptr %207, i32 0, i32 1
  %2712 = load ptr, ptr %8, align 8, !tbaa !5
  %2713 = load i8, ptr %208, align 1, !tbaa !79, !range !81, !noundef !82
  %2714 = trunc i8 %2713 to i1
  %2715 = zext i1 %2714 to i64
  %2716 = select i1 %2714, i32 1, i32 0
  %2717 = sext i32 %2716 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %209, i64 noundef %2717, i64 noundef 0)
          to label %2718 unwind label %2728

2718:                                             ; preds = %2709
  %2719 = getelementptr inbounds { i64, i64 }, ptr %209, i32 0, i32 0
  %2720 = load i64, ptr %2719, align 8
  %2721 = getelementptr inbounds { i64, i64 }, ptr %209, i32 0, i32 1
  %2722 = load i64, ptr %2721, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %2711, ptr noundef nonnull align 8 dereferenceable(120) %2712, i32 noundef 8, i64 %2720, i64 %2722)
          to label %2723 unwind label %2728

2723:                                             ; preds = %2718
  call void @llvm.lifetime.end.p0(i64 1, ptr %208) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #11
  br label %4677

2724:                                             ; preds = %2695
  %2725 = landingpad { ptr, i32 }
          cleanup
  %2726 = extractvalue { ptr, i32 } %2725, 0
  store ptr %2726, ptr %15, align 8
  %2727 = extractvalue { ptr, i32 } %2725, 1
  store i32 %2727, ptr %16, align 4
  br label %2732

2728:                                             ; preds = %2718, %2709, %2707, %2703, %2697
  %2729 = landingpad { ptr, i32 }
          cleanup
  %2730 = extractvalue { ptr, i32 } %2729, 0
  store ptr %2730, ptr %15, align 8
  %2731 = extractvalue { ptr, i32 } %2729, 1
  store i32 %2731, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %208) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %207) #11
  br label %2732

2732:                                             ; preds = %2728, %2724
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #11
  br label %2733

2733:                                             ; preds = %2732, %2689, %2685
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #11
  br label %2734

2734:                                             ; preds = %2733, %2681
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #11
  br label %4732

2735:                                             ; preds = %2662
  %2736 = load ptr, ptr %83, align 8, !tbaa !5
  %2737 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2736, i32 0, i32 0
  %2738 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2737, ptr noundef @.str.47)
          to label %2739 unwind label %1317

2739:                                             ; preds = %2735
  br i1 %2738, label %2740, label %2812

2740:                                             ; preds = %2739
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #11
  %2741 = load ptr, ptr %6, align 8, !tbaa !5
  %2742 = load ptr, ptr %83, align 8, !tbaa !5
  %2743 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2742, i32 0, i32 1
  %2744 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2743, i32 0, i32 1
  %2745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2744, i64 noundef 0)
          to label %2746 unwind label %2758

2746:                                             ; preds = %2740
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %210, ptr noundef nonnull align 8 dereferenceable(816) %2741, ptr noundef nonnull align 8 dereferenceable(8) %2745)
          to label %2747 unwind label %2758

2747:                                             ; preds = %2746
  br label %2748

2748:                                             ; preds = %2747
  %2749 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %2750 unwind label %2762

2750:                                             ; preds = %2748
  %2751 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2749)
          to label %2752 unwind label %2762

2752:                                             ; preds = %2750
  br i1 %2751, label %2770, label %2753

2753:                                             ; preds = %2752
  %2754 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %212) #11
  %2755 = getelementptr inbounds %class.anon.413, ptr %212, i32 0, i32 0
  store ptr %83, ptr %2755, align 8, !tbaa !5
  %2756 = getelementptr inbounds %class.anon.413, ptr %212, i32 0, i32 1
  store ptr %210, ptr %2756, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 8 dereferenceable(16) %212) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2754, ptr noundef %211)
          to label %2757 unwind label %2766

2757:                                             ; preds = %2753
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #11
  br label %2770

2758:                                             ; preds = %2746, %2740
  %2759 = landingpad { ptr, i32 }
          cleanup
  %2760 = extractvalue { ptr, i32 } %2759, 0
  store ptr %2760, ptr %15, align 8
  %2761 = extractvalue { ptr, i32 } %2759, 1
  store i32 %2761, ptr %16, align 4
  br label %2811

2762:                                             ; preds = %2750, %2748
  %2763 = landingpad { ptr, i32 }
          cleanup
  %2764 = extractvalue { ptr, i32 } %2763, 0
  store ptr %2764, ptr %15, align 8
  %2765 = extractvalue { ptr, i32 } %2763, 1
  store i32 %2765, ptr %16, align 4
  br label %2810

2766:                                             ; preds = %2753
  %2767 = landingpad { ptr, i32 }
          cleanup
  %2768 = extractvalue { ptr, i32 } %2767, 0
  store ptr %2768, ptr %15, align 8
  %2769 = extractvalue { ptr, i32 } %2767, 1
  store i32 %2769, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #11
  br label %2810

2770:                                             ; preds = %2757, %2752
  br label %2771

2771:                                             ; preds = %2770
  br label %2772

2772:                                             ; preds = %2771
  call void @llvm.lifetime.start.p0(i64 32, ptr %213) #11
  %2773 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %213, ptr noundef nonnull align 8 dereferenceable(816) %2773, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %2774 unwind label %2801

2774:                                             ; preds = %2772
  call void @llvm.lifetime.start.p0(i64 1, ptr %214) #11
  %2775 = load ptr, ptr %6, align 8, !tbaa !5
  %2776 = getelementptr inbounds %"struct.std::pair", ptr %213, i32 0, i32 0
  %2777 = load ptr, ptr %81, align 8, !tbaa !5
  %2778 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2777, i32 0, i32 4
  %2779 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2778, i64 noundef 0)
          to label %2780 unwind label %2805

2780:                                             ; preds = %2774
  %2781 = load ptr, ptr %81, align 8, !tbaa !5
  %2782 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2781, i32 0, i32 4
  %2783 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2782, i64 noundef 1)
          to label %2784 unwind label %2805

2784:                                             ; preds = %2780
  %2785 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2775, ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(16) %2776, ptr noundef nonnull align 8 dereferenceable(48) %2779, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(48) %2783, i1 noundef zeroext false)
          to label %2786 unwind label %2805

2786:                                             ; preds = %2784
  %2787 = zext i1 %2785 to i8
  store i8 %2787, ptr %214, align 1, !tbaa !79
  %2788 = getelementptr inbounds %"struct.std::pair", ptr %213, i32 0, i32 1
  %2789 = load ptr, ptr %8, align 8, !tbaa !5
  %2790 = load i8, ptr %214, align 1, !tbaa !79, !range !81, !noundef !82
  %2791 = trunc i8 %2790 to i1
  %2792 = zext i1 %2791 to i64
  %2793 = select i1 %2791, i32 1, i32 0
  %2794 = sext i32 %2793 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %215, i64 noundef %2794, i64 noundef 0)
          to label %2795 unwind label %2805

2795:                                             ; preds = %2786
  %2796 = getelementptr inbounds { i64, i64 }, ptr %215, i32 0, i32 0
  %2797 = load i64, ptr %2796, align 8
  %2798 = getelementptr inbounds { i64, i64 }, ptr %215, i32 0, i32 1
  %2799 = load i64, ptr %2798, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %2788, ptr noundef nonnull align 8 dereferenceable(120) %2789, i32 noundef 8, i64 %2797, i64 %2799)
          to label %2800 unwind label %2805

2800:                                             ; preds = %2795
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #11
  br label %4676

2801:                                             ; preds = %2772
  %2802 = landingpad { ptr, i32 }
          cleanup
  %2803 = extractvalue { ptr, i32 } %2802, 0
  store ptr %2803, ptr %15, align 8
  %2804 = extractvalue { ptr, i32 } %2802, 1
  store i32 %2804, ptr %16, align 4
  br label %2809

2805:                                             ; preds = %2795, %2786, %2784, %2780, %2774
  %2806 = landingpad { ptr, i32 }
          cleanup
  %2807 = extractvalue { ptr, i32 } %2806, 0
  store ptr %2807, ptr %15, align 8
  %2808 = extractvalue { ptr, i32 } %2806, 1
  store i32 %2808, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #11
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #11
  br label %2809

2809:                                             ; preds = %2805, %2801
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #11
  br label %2810

2810:                                             ; preds = %2809, %2766, %2762
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #11
  br label %2811

2811:                                             ; preds = %2810, %2758
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #11
  br label %4732

2812:                                             ; preds = %2739
  %2813 = load ptr, ptr %83, align 8, !tbaa !5
  %2814 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2813, i32 0, i32 0
  %2815 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2814, ptr noundef @.str.48)
          to label %2816 unwind label %1317

2816:                                             ; preds = %2812
  br i1 %2815, label %2822, label %2817

2817:                                             ; preds = %2816
  %2818 = load ptr, ptr %83, align 8, !tbaa !5
  %2819 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2818, i32 0, i32 0
  %2820 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2819, ptr noundef @.str.49)
          to label %2821 unwind label %1317

2821:                                             ; preds = %2817
  br i1 %2820, label %2822, label %2868

2822:                                             ; preds = %2821, %2816
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #11
  %2823 = load ptr, ptr %6, align 8, !tbaa !5
  %2824 = load ptr, ptr %83, align 8, !tbaa !5
  %2825 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2824, i32 0, i32 1
  %2826 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2825, i32 0, i32 1
  %2827 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2826, i64 noundef 0)
          to label %2828 unwind label %2840

2828:                                             ; preds = %2822
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %216, ptr noundef nonnull align 8 dereferenceable(816) %2823, ptr noundef nonnull align 8 dereferenceable(8) %2827)
          to label %2829 unwind label %2840

2829:                                             ; preds = %2828
  br label %2830

2830:                                             ; preds = %2829
  %2831 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %2832 unwind label %2844

2832:                                             ; preds = %2830
  %2833 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2831)
          to label %2834 unwind label %2844

2834:                                             ; preds = %2832
  br i1 %2833, label %2852, label %2835

2835:                                             ; preds = %2834
  %2836 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %218) #11
  %2837 = getelementptr inbounds %class.anon.414, ptr %218, i32 0, i32 0
  store ptr %83, ptr %2837, align 8, !tbaa !5
  %2838 = getelementptr inbounds %class.anon.414, ptr %218, i32 0, i32 1
  store ptr %216, ptr %2838, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef nonnull align 8 dereferenceable(16) %218) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2836, ptr noundef %217)
          to label %2839 unwind label %2848

2839:                                             ; preds = %2835
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %218) #11
  br label %2852

2840:                                             ; preds = %2828, %2822
  %2841 = landingpad { ptr, i32 }
          cleanup
  %2842 = extractvalue { ptr, i32 } %2841, 0
  store ptr %2842, ptr %15, align 8
  %2843 = extractvalue { ptr, i32 } %2841, 1
  store i32 %2843, ptr %16, align 4
  br label %2867

2844:                                             ; preds = %2863, %2859, %2854, %2832, %2830
  %2845 = landingpad { ptr, i32 }
          cleanup
  %2846 = extractvalue { ptr, i32 } %2845, 0
  store ptr %2846, ptr %15, align 8
  %2847 = extractvalue { ptr, i32 } %2845, 1
  store i32 %2847, ptr %16, align 4
  br label %2866

2848:                                             ; preds = %2835
  %2849 = landingpad { ptr, i32 }
          cleanup
  %2850 = extractvalue { ptr, i32 } %2849, 0
  store ptr %2850, ptr %15, align 8
  %2851 = extractvalue { ptr, i32 } %2849, 1
  store i32 %2851, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %218) #11
  br label %2866

2852:                                             ; preds = %2839, %2834
  br label %2853

2853:                                             ; preds = %2852
  br label %2854

2854:                                             ; preds = %2853
  %2855 = load ptr, ptr %6, align 8, !tbaa !5
  %2856 = load ptr, ptr %81, align 8, !tbaa !5
  %2857 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2856, i32 0, i32 4
  %2858 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2857, i64 noundef 0)
          to label %2859 unwind label %2844

2859:                                             ; preds = %2854
  %2860 = load ptr, ptr %81, align 8, !tbaa !5
  %2861 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2860, i32 0, i32 4
  %2862 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2861, i64 noundef 1)
          to label %2863 unwind label %2844

2863:                                             ; preds = %2859
  %2864 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2855, ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %2858, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %2862, i1 noundef zeroext false)
          to label %2865 unwind label %2844

2865:                                             ; preds = %2863
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #11
  br label %4675

2866:                                             ; preds = %2848, %2844
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #11
  br label %2867

2867:                                             ; preds = %2866, %2840
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #11
  br label %4732

2868:                                             ; preds = %2821
  %2869 = load ptr, ptr %83, align 8, !tbaa !5
  %2870 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2869, i32 0, i32 0
  %2871 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2870, ptr noundef @.str.50)
          to label %2872 unwind label %1317

2872:                                             ; preds = %2868
  br i1 %2871, label %2878, label %2873

2873:                                             ; preds = %2872
  %2874 = load ptr, ptr %83, align 8, !tbaa !5
  %2875 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2874, i32 0, i32 0
  %2876 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2875, ptr noundef @.str.51)
          to label %2877 unwind label %1317

2877:                                             ; preds = %2873
  br i1 %2876, label %2878, label %2924

2878:                                             ; preds = %2877, %2872
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #11
  %2879 = load ptr, ptr %6, align 8, !tbaa !5
  %2880 = load ptr, ptr %83, align 8, !tbaa !5
  %2881 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2880, i32 0, i32 1
  %2882 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2881, i32 0, i32 1
  %2883 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2882, i64 noundef 0)
          to label %2884 unwind label %2896

2884:                                             ; preds = %2878
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %219, ptr noundef nonnull align 8 dereferenceable(816) %2879, ptr noundef nonnull align 8 dereferenceable(8) %2883)
          to label %2885 unwind label %2896

2885:                                             ; preds = %2884
  br label %2886

2886:                                             ; preds = %2885
  %2887 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %2888 unwind label %2900

2888:                                             ; preds = %2886
  %2889 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2887)
          to label %2890 unwind label %2900

2890:                                             ; preds = %2888
  br i1 %2889, label %2908, label %2891

2891:                                             ; preds = %2890
  %2892 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %221) #11
  %2893 = getelementptr inbounds %class.anon.415, ptr %221, i32 0, i32 0
  store ptr %83, ptr %2893, align 8, !tbaa !5
  %2894 = getelementptr inbounds %class.anon.415, ptr %221, i32 0, i32 1
  store ptr %219, ptr %2894, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef nonnull align 8 dereferenceable(16) %221) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2892, ptr noundef %220)
          to label %2895 unwind label %2904

2895:                                             ; preds = %2891
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #11
  br label %2908

2896:                                             ; preds = %2884, %2878
  %2897 = landingpad { ptr, i32 }
          cleanup
  %2898 = extractvalue { ptr, i32 } %2897, 0
  store ptr %2898, ptr %15, align 8
  %2899 = extractvalue { ptr, i32 } %2897, 1
  store i32 %2899, ptr %16, align 4
  br label %2923

2900:                                             ; preds = %2919, %2915, %2910, %2888, %2886
  %2901 = landingpad { ptr, i32 }
          cleanup
  %2902 = extractvalue { ptr, i32 } %2901, 0
  store ptr %2902, ptr %15, align 8
  %2903 = extractvalue { ptr, i32 } %2901, 1
  store i32 %2903, ptr %16, align 4
  br label %2922

2904:                                             ; preds = %2891
  %2905 = landingpad { ptr, i32 }
          cleanup
  %2906 = extractvalue { ptr, i32 } %2905, 0
  store ptr %2906, ptr %15, align 8
  %2907 = extractvalue { ptr, i32 } %2905, 1
  store i32 %2907, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %221) #11
  br label %2922

2908:                                             ; preds = %2895, %2890
  br label %2909

2909:                                             ; preds = %2908
  br label %2910

2910:                                             ; preds = %2909
  %2911 = load ptr, ptr %6, align 8, !tbaa !5
  %2912 = load ptr, ptr %81, align 8, !tbaa !5
  %2913 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2912, i32 0, i32 4
  %2914 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2913, i64 noundef 0)
          to label %2915 unwind label %2900

2915:                                             ; preds = %2910
  %2916 = load ptr, ptr %81, align 8, !tbaa !5
  %2917 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2916, i32 0, i32 4
  %2918 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2917, i64 noundef 1)
          to label %2919 unwind label %2900

2919:                                             ; preds = %2915
  %2920 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2911, ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %2914, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %2918, i1 noundef zeroext false)
          to label %2921 unwind label %2900

2921:                                             ; preds = %2919
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #11
  br label %4674

2922:                                             ; preds = %2904, %2900
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #11
  br label %2923

2923:                                             ; preds = %2922, %2896
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #11
  br label %4732

2924:                                             ; preds = %2877
  %2925 = load ptr, ptr %83, align 8, !tbaa !5
  %2926 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2925, i32 0, i32 0
  %2927 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2926, ptr noundef @.str.52)
          to label %2928 unwind label %1317

2928:                                             ; preds = %2924
  br i1 %2927, label %2934, label %2929

2929:                                             ; preds = %2928
  %2930 = load ptr, ptr %83, align 8, !tbaa !5
  %2931 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2930, i32 0, i32 0
  %2932 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2931, ptr noundef @.str.53)
          to label %2933 unwind label %1317

2933:                                             ; preds = %2929
  br i1 %2932, label %2934, label %2980

2934:                                             ; preds = %2933, %2928
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #11
  %2935 = load ptr, ptr %6, align 8, !tbaa !5
  %2936 = load ptr, ptr %83, align 8, !tbaa !5
  %2937 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2936, i32 0, i32 1
  %2938 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2937, i32 0, i32 1
  %2939 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2938, i64 noundef 0)
          to label %2940 unwind label %2952

2940:                                             ; preds = %2934
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %222, ptr noundef nonnull align 8 dereferenceable(816) %2935, ptr noundef nonnull align 8 dereferenceable(8) %2939)
          to label %2941 unwind label %2952

2941:                                             ; preds = %2940
  br label %2942

2942:                                             ; preds = %2941
  %2943 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %2944 unwind label %2956

2944:                                             ; preds = %2942
  %2945 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2943)
          to label %2946 unwind label %2956

2946:                                             ; preds = %2944
  br i1 %2945, label %2964, label %2947

2947:                                             ; preds = %2946
  %2948 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %224) #11
  %2949 = getelementptr inbounds %class.anon.416, ptr %224, i32 0, i32 0
  store ptr %83, ptr %2949, align 8, !tbaa !5
  %2950 = getelementptr inbounds %class.anon.416, ptr %224, i32 0, i32 1
  store ptr %222, ptr %2950, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull align 8 dereferenceable(16) %224) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2948, ptr noundef %223)
          to label %2951 unwind label %2960

2951:                                             ; preds = %2947
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #11
  br label %2964

2952:                                             ; preds = %2940, %2934
  %2953 = landingpad { ptr, i32 }
          cleanup
  %2954 = extractvalue { ptr, i32 } %2953, 0
  store ptr %2954, ptr %15, align 8
  %2955 = extractvalue { ptr, i32 } %2953, 1
  store i32 %2955, ptr %16, align 4
  br label %2979

2956:                                             ; preds = %2975, %2971, %2966, %2944, %2942
  %2957 = landingpad { ptr, i32 }
          cleanup
  %2958 = extractvalue { ptr, i32 } %2957, 0
  store ptr %2958, ptr %15, align 8
  %2959 = extractvalue { ptr, i32 } %2957, 1
  store i32 %2959, ptr %16, align 4
  br label %2978

2960:                                             ; preds = %2947
  %2961 = landingpad { ptr, i32 }
          cleanup
  %2962 = extractvalue { ptr, i32 } %2961, 0
  store ptr %2962, ptr %15, align 8
  %2963 = extractvalue { ptr, i32 } %2961, 1
  store i32 %2963, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #11
  br label %2978

2964:                                             ; preds = %2951, %2946
  br label %2965

2965:                                             ; preds = %2964
  br label %2966

2966:                                             ; preds = %2965
  %2967 = load ptr, ptr %6, align 8, !tbaa !5
  %2968 = load ptr, ptr %81, align 8, !tbaa !5
  %2969 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2968, i32 0, i32 4
  %2970 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2969, i64 noundef 0)
          to label %2971 unwind label %2956

2971:                                             ; preds = %2966
  %2972 = load ptr, ptr %81, align 8, !tbaa !5
  %2973 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2972, i32 0, i32 4
  %2974 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2973, i64 noundef 1)
          to label %2975 unwind label %2956

2975:                                             ; preds = %2971
  %2976 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %2967, ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %2970, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(48) %2974, i1 noundef zeroext false)
          to label %2977 unwind label %2956

2977:                                             ; preds = %2975
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #11
  br label %4673

2978:                                             ; preds = %2960, %2956
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #11
  br label %2979

2979:                                             ; preds = %2978, %2952
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #11
  br label %4732

2980:                                             ; preds = %2933
  %2981 = load ptr, ptr %83, align 8, !tbaa !5
  %2982 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2981, i32 0, i32 0
  %2983 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2982, ptr noundef @.str.54)
          to label %2984 unwind label %1317

2984:                                             ; preds = %2980
  br i1 %2983, label %2985, label %3031

2985:                                             ; preds = %2984
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #11
  %2986 = load ptr, ptr %6, align 8, !tbaa !5
  %2987 = load ptr, ptr %83, align 8, !tbaa !5
  %2988 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %2987, i32 0, i32 1
  %2989 = getelementptr inbounds %"struct.HIR::PathParams", ptr %2988, i32 0, i32 1
  %2990 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2989, i64 noundef 0)
          to label %2991 unwind label %3003

2991:                                             ; preds = %2985
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %225, ptr noundef nonnull align 8 dereferenceable(816) %2986, ptr noundef nonnull align 8 dereferenceable(8) %2990)
          to label %2992 unwind label %3003

2992:                                             ; preds = %2991
  br label %2993

2993:                                             ; preds = %2992
  %2994 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %2995 unwind label %3007

2995:                                             ; preds = %2993
  %2996 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2994)
          to label %2997 unwind label %3007

2997:                                             ; preds = %2995
  br i1 %2996, label %3015, label %2998

2998:                                             ; preds = %2997
  %2999 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %227) #11
  %3000 = getelementptr inbounds %class.anon.417, ptr %227, i32 0, i32 0
  store ptr %83, ptr %3000, align 8, !tbaa !5
  %3001 = getelementptr inbounds %class.anon.417, ptr %227, i32 0, i32 1
  store ptr %225, ptr %3001, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull align 8 dereferenceable(16) %227) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2999, ptr noundef %226)
          to label %3002 unwind label %3011

3002:                                             ; preds = %2998
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %227) #11
  br label %3015

3003:                                             ; preds = %2991, %2985
  %3004 = landingpad { ptr, i32 }
          cleanup
  %3005 = extractvalue { ptr, i32 } %3004, 0
  store ptr %3005, ptr %15, align 8
  %3006 = extractvalue { ptr, i32 } %3004, 1
  store i32 %3006, ptr %16, align 4
  br label %3030

3007:                                             ; preds = %3026, %3022, %3017, %2995, %2993
  %3008 = landingpad { ptr, i32 }
          cleanup
  %3009 = extractvalue { ptr, i32 } %3008, 0
  store ptr %3009, ptr %15, align 8
  %3010 = extractvalue { ptr, i32 } %3008, 1
  store i32 %3010, ptr %16, align 4
  br label %3029

3011:                                             ; preds = %2998
  %3012 = landingpad { ptr, i32 }
          cleanup
  %3013 = extractvalue { ptr, i32 } %3012, 0
  store ptr %3013, ptr %15, align 8
  %3014 = extractvalue { ptr, i32 } %3012, 1
  store i32 %3014, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %227) #11
  br label %3029

3015:                                             ; preds = %3002, %2997
  br label %3016

3016:                                             ; preds = %3015
  br label %3017

3017:                                             ; preds = %3016
  %3018 = load ptr, ptr %6, align 8, !tbaa !5
  %3019 = load ptr, ptr %81, align 8, !tbaa !5
  %3020 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3019, i32 0, i32 4
  %3021 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3020, i64 noundef 0)
          to label %3022 unwind label %3007

3022:                                             ; preds = %3017
  %3023 = load ptr, ptr %81, align 8, !tbaa !5
  %3024 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3023, i32 0, i32 4
  %3025 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3024, i64 noundef 1)
          to label %3026 unwind label %3007

3026:                                             ; preds = %3022
  %3027 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3018, ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3021, i32 noundef 13, ptr noundef nonnull align 8 dereferenceable(48) %3025, i1 noundef zeroext false)
          to label %3028 unwind label %3007

3028:                                             ; preds = %3026
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #11
  br label %4672

3029:                                             ; preds = %3011, %3007
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #11
  br label %3030

3030:                                             ; preds = %3029, %3003
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #11
  br label %4732

3031:                                             ; preds = %2984
  %3032 = load ptr, ptr %83, align 8, !tbaa !5
  %3033 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3032, i32 0, i32 0
  %3034 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3033, ptr noundef @.str.55)
          to label %3035 unwind label %1317

3035:                                             ; preds = %3031
  br i1 %3034, label %3036, label %3082

3036:                                             ; preds = %3035
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #11
  %3037 = load ptr, ptr %6, align 8, !tbaa !5
  %3038 = load ptr, ptr %83, align 8, !tbaa !5
  %3039 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3038, i32 0, i32 1
  %3040 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3039, i32 0, i32 1
  %3041 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3040, i64 noundef 0)
          to label %3042 unwind label %3054

3042:                                             ; preds = %3036
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %228, ptr noundef nonnull align 8 dereferenceable(816) %3037, ptr noundef nonnull align 8 dereferenceable(8) %3041)
          to label %3043 unwind label %3054

3043:                                             ; preds = %3042
  br label %3044

3044:                                             ; preds = %3043
  %3045 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %228)
          to label %3046 unwind label %3058

3046:                                             ; preds = %3044
  %3047 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3045)
          to label %3048 unwind label %3058

3048:                                             ; preds = %3046
  br i1 %3047, label %3066, label %3049

3049:                                             ; preds = %3048
  %3050 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %230) #11
  %3051 = getelementptr inbounds %class.anon.418, ptr %230, i32 0, i32 0
  store ptr %83, ptr %3051, align 8, !tbaa !5
  %3052 = getelementptr inbounds %class.anon.418, ptr %230, i32 0, i32 1
  store ptr %228, ptr %3052, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef nonnull align 8 dereferenceable(16) %230) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3050, ptr noundef %229)
          to label %3053 unwind label %3062

3053:                                             ; preds = %3049
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #11
  br label %3066

3054:                                             ; preds = %3042, %3036
  %3055 = landingpad { ptr, i32 }
          cleanup
  %3056 = extractvalue { ptr, i32 } %3055, 0
  store ptr %3056, ptr %15, align 8
  %3057 = extractvalue { ptr, i32 } %3055, 1
  store i32 %3057, ptr %16, align 4
  br label %3081

3058:                                             ; preds = %3077, %3073, %3068, %3046, %3044
  %3059 = landingpad { ptr, i32 }
          cleanup
  %3060 = extractvalue { ptr, i32 } %3059, 0
  store ptr %3060, ptr %15, align 8
  %3061 = extractvalue { ptr, i32 } %3059, 1
  store i32 %3061, ptr %16, align 4
  br label %3080

3062:                                             ; preds = %3049
  %3063 = landingpad { ptr, i32 }
          cleanup
  %3064 = extractvalue { ptr, i32 } %3063, 0
  store ptr %3064, ptr %15, align 8
  %3065 = extractvalue { ptr, i32 } %3063, 1
  store i32 %3065, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %230) #11
  br label %3080

3066:                                             ; preds = %3053, %3048
  br label %3067

3067:                                             ; preds = %3066
  br label %3068

3068:                                             ; preds = %3067
  %3069 = load ptr, ptr %6, align 8, !tbaa !5
  %3070 = load ptr, ptr %81, align 8, !tbaa !5
  %3071 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3070, i32 0, i32 4
  %3072 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3071, i64 noundef 0)
          to label %3073 unwind label %3058

3073:                                             ; preds = %3068
  %3074 = load ptr, ptr %81, align 8, !tbaa !5
  %3075 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3074, i32 0, i32 4
  %3076 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3075, i64 noundef 1)
          to label %3077 unwind label %3058

3077:                                             ; preds = %3073
  %3078 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3069, ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3072, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(48) %3076, i1 noundef zeroext false)
          to label %3079 unwind label %3058

3079:                                             ; preds = %3077
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #11
  br label %4671

3080:                                             ; preds = %3062, %3058
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #11
  br label %3081

3081:                                             ; preds = %3080, %3054
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #11
  br label %4732

3082:                                             ; preds = %3035
  %3083 = load ptr, ptr %83, align 8, !tbaa !5
  %3084 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3083, i32 0, i32 0
  %3085 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3084, ptr noundef @.str.56)
          to label %3086 unwind label %1317

3086:                                             ; preds = %3082
  br i1 %3085, label %3087, label %3153

3087:                                             ; preds = %3086
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #11
  %3088 = load ptr, ptr %6, align 8, !tbaa !5
  %3089 = load ptr, ptr %83, align 8, !tbaa !5
  %3090 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3089, i32 0, i32 1
  %3091 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3090, i32 0, i32 1
  %3092 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3091, i64 noundef 0)
          to label %3093 unwind label %3105

3093:                                             ; preds = %3087
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %231, ptr noundef nonnull align 8 dereferenceable(816) %3088, ptr noundef nonnull align 8 dereferenceable(8) %3092)
          to label %3094 unwind label %3105

3094:                                             ; preds = %3093
  br label %3095

3095:                                             ; preds = %3094
  %3096 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %3097 unwind label %3109

3097:                                             ; preds = %3095
  %3098 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3096)
          to label %3099 unwind label %3109

3099:                                             ; preds = %3097
  br i1 %3098, label %3117, label %3100

3100:                                             ; preds = %3099
  %3101 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %233) #11
  %3102 = getelementptr inbounds %class.anon.419, ptr %233, i32 0, i32 0
  store ptr %83, ptr %3102, align 8, !tbaa !5
  %3103 = getelementptr inbounds %class.anon.419, ptr %233, i32 0, i32 1
  store ptr %231, ptr %3103, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef nonnull align 8 dereferenceable(16) %233) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3101, ptr noundef %232)
          to label %3104 unwind label %3113

3104:                                             ; preds = %3100
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #11
  br label %3117

3105:                                             ; preds = %3093, %3087
  %3106 = landingpad { ptr, i32 }
          cleanup
  %3107 = extractvalue { ptr, i32 } %3106, 0
  store ptr %3107, ptr %15, align 8
  %3108 = extractvalue { ptr, i32 } %3106, 1
  store i32 %3108, ptr %16, align 4
  br label %3152

3109:                                             ; preds = %3097, %3095
  %3110 = landingpad { ptr, i32 }
          cleanup
  %3111 = extractvalue { ptr, i32 } %3110, 0
  store ptr %3111, ptr %15, align 8
  %3112 = extractvalue { ptr, i32 } %3110, 1
  store i32 %3112, ptr %16, align 4
  br label %3151

3113:                                             ; preds = %3100
  %3114 = landingpad { ptr, i32 }
          cleanup
  %3115 = extractvalue { ptr, i32 } %3114, 0
  store ptr %3115, ptr %15, align 8
  %3116 = extractvalue { ptr, i32 } %3114, 1
  store i32 %3116, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #11
  br label %3151

3117:                                             ; preds = %3104, %3099
  br label %3118

3118:                                             ; preds = %3117
  br label %3119

3119:                                             ; preds = %3118
  call void @llvm.lifetime.start.p0(i64 1, ptr %234) #11
  %3120 = load ptr, ptr %6, align 8, !tbaa !5
  %3121 = load ptr, ptr %81, align 8, !tbaa !5
  %3122 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3121, i32 0, i32 4
  %3123 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3122, i64 noundef 0)
          to label %3124 unwind label %3139

3124:                                             ; preds = %3119
  %3125 = load ptr, ptr %81, align 8, !tbaa !5
  %3126 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3125, i32 0, i32 4
  %3127 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3126, i64 noundef 1)
          to label %3128 unwind label %3139

3128:                                             ; preds = %3124
  %3129 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3120, ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3123, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %3127, i1 noundef zeroext false)
          to label %3130 unwind label %3139

3130:                                             ; preds = %3128
  %3131 = zext i1 %3129 to i8
  store i8 %3131, ptr %234, align 1, !tbaa !79
  br label %3132

3132:                                             ; preds = %3130
  %3133 = load i8, ptr %234, align 1, !tbaa !79, !range !81, !noundef !82
  %3134 = trunc i8 %3133 to i1
  br i1 %3134, label %3135, label %3147

3135:                                             ; preds = %3132
  %3136 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #11
  %3137 = getelementptr inbounds %class.anon.420, ptr %236, i32 0, i32 0
  store ptr %83, ptr %3137, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %235, ptr noundef nonnull align 8 dereferenceable(8) %236) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3136, ptr noundef %235)
          to label %3138 unwind label %3143

3138:                                             ; preds = %3135
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #11
  br label %3147

3139:                                             ; preds = %3128, %3124, %3119
  %3140 = landingpad { ptr, i32 }
          cleanup
  %3141 = extractvalue { ptr, i32 } %3140, 0
  store ptr %3141, ptr %15, align 8
  %3142 = extractvalue { ptr, i32 } %3140, 1
  store i32 %3142, ptr %16, align 4
  br label %3150

3143:                                             ; preds = %3135
  %3144 = landingpad { ptr, i32 }
          cleanup
  %3145 = extractvalue { ptr, i32 } %3144, 0
  store ptr %3145, ptr %15, align 8
  %3146 = extractvalue { ptr, i32 } %3144, 1
  store i32 %3146, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #11
  br label %3150

3147:                                             ; preds = %3138, %3132
  br label %3148

3148:                                             ; preds = %3147
  br label %3149

3149:                                             ; preds = %3148
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #11
  br label %4670

3150:                                             ; preds = %3143, %3139
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #11
  br label %3151

3151:                                             ; preds = %3150, %3113, %3109
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #11
  br label %3152

3152:                                             ; preds = %3151, %3105
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #11
  br label %4732

3153:                                             ; preds = %3086
  %3154 = load ptr, ptr %83, align 8, !tbaa !5
  %3155 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3154, i32 0, i32 0
  %3156 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3155, ptr noundef @.str.57)
          to label %3157 unwind label %1317

3157:                                             ; preds = %3153
  br i1 %3156, label %3158, label %3224

3158:                                             ; preds = %3157
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #11
  %3159 = load ptr, ptr %6, align 8, !tbaa !5
  %3160 = load ptr, ptr %83, align 8, !tbaa !5
  %3161 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3160, i32 0, i32 1
  %3162 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3161, i32 0, i32 1
  %3163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3162, i64 noundef 0)
          to label %3164 unwind label %3176

3164:                                             ; preds = %3158
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %237, ptr noundef nonnull align 8 dereferenceable(816) %3159, ptr noundef nonnull align 8 dereferenceable(8) %3163)
          to label %3165 unwind label %3176

3165:                                             ; preds = %3164
  br label %3166

3166:                                             ; preds = %3165
  %3167 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %3168 unwind label %3180

3168:                                             ; preds = %3166
  %3169 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3167)
          to label %3170 unwind label %3180

3170:                                             ; preds = %3168
  br i1 %3169, label %3188, label %3171

3171:                                             ; preds = %3170
  %3172 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %239) #11
  %3173 = getelementptr inbounds %class.anon.421, ptr %239, i32 0, i32 0
  store ptr %83, ptr %3173, align 8, !tbaa !5
  %3174 = getelementptr inbounds %class.anon.421, ptr %239, i32 0, i32 1
  store ptr %237, ptr %3174, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef nonnull align 8 dereferenceable(16) %239) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3172, ptr noundef %238)
          to label %3175 unwind label %3184

3175:                                             ; preds = %3171
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #11
  br label %3188

3176:                                             ; preds = %3164, %3158
  %3177 = landingpad { ptr, i32 }
          cleanup
  %3178 = extractvalue { ptr, i32 } %3177, 0
  store ptr %3178, ptr %15, align 8
  %3179 = extractvalue { ptr, i32 } %3177, 1
  store i32 %3179, ptr %16, align 4
  br label %3223

3180:                                             ; preds = %3168, %3166
  %3181 = landingpad { ptr, i32 }
          cleanup
  %3182 = extractvalue { ptr, i32 } %3181, 0
  store ptr %3182, ptr %15, align 8
  %3183 = extractvalue { ptr, i32 } %3181, 1
  store i32 %3183, ptr %16, align 4
  br label %3222

3184:                                             ; preds = %3171
  %3185 = landingpad { ptr, i32 }
          cleanup
  %3186 = extractvalue { ptr, i32 } %3185, 0
  store ptr %3186, ptr %15, align 8
  %3187 = extractvalue { ptr, i32 } %3185, 1
  store i32 %3187, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %239) #11
  br label %3222

3188:                                             ; preds = %3175, %3170
  br label %3189

3189:                                             ; preds = %3188
  br label %3190

3190:                                             ; preds = %3189
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #11
  %3191 = load ptr, ptr %6, align 8, !tbaa !5
  %3192 = load ptr, ptr %81, align 8, !tbaa !5
  %3193 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3192, i32 0, i32 4
  %3194 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3193, i64 noundef 0)
          to label %3195 unwind label %3210

3195:                                             ; preds = %3190
  %3196 = load ptr, ptr %81, align 8, !tbaa !5
  %3197 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3196, i32 0, i32 4
  %3198 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3197, i64 noundef 1)
          to label %3199 unwind label %3210

3199:                                             ; preds = %3195
  %3200 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3191, ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3194, i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(48) %3198, i1 noundef zeroext false)
          to label %3201 unwind label %3210

3201:                                             ; preds = %3199
  %3202 = zext i1 %3200 to i8
  store i8 %3202, ptr %240, align 1, !tbaa !79
  br label %3203

3203:                                             ; preds = %3201
  %3204 = load i8, ptr %240, align 1, !tbaa !79, !range !81, !noundef !82
  %3205 = trunc i8 %3204 to i1
  br i1 %3205, label %3206, label %3218

3206:                                             ; preds = %3203
  %3207 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #11
  %3208 = getelementptr inbounds %class.anon.422, ptr %242, i32 0, i32 0
  store ptr %83, ptr %3208, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull align 8 dereferenceable(8) %242) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3207, ptr noundef %241)
          to label %3209 unwind label %3214

3209:                                             ; preds = %3206
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #11
  br label %3218

3210:                                             ; preds = %3199, %3195, %3190
  %3211 = landingpad { ptr, i32 }
          cleanup
  %3212 = extractvalue { ptr, i32 } %3211, 0
  store ptr %3212, ptr %15, align 8
  %3213 = extractvalue { ptr, i32 } %3211, 1
  store i32 %3213, ptr %16, align 4
  br label %3221

3214:                                             ; preds = %3206
  %3215 = landingpad { ptr, i32 }
          cleanup
  %3216 = extractvalue { ptr, i32 } %3215, 0
  store ptr %3216, ptr %15, align 8
  %3217 = extractvalue { ptr, i32 } %3215, 1
  store i32 %3217, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #11
  br label %3221

3218:                                             ; preds = %3209, %3203
  br label %3219

3219:                                             ; preds = %3218
  br label %3220

3220:                                             ; preds = %3219
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #11
  br label %4669

3221:                                             ; preds = %3214, %3210
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #11
  br label %3222

3222:                                             ; preds = %3221, %3184, %3180
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %237) #11
  br label %3223

3223:                                             ; preds = %3222, %3176
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #11
  br label %4732

3224:                                             ; preds = %3157
  %3225 = load ptr, ptr %83, align 8, !tbaa !5
  %3226 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3225, i32 0, i32 0
  %3227 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3226, ptr noundef @.str.58)
          to label %3228 unwind label %1317

3228:                                             ; preds = %3224
  br i1 %3227, label %3229, label %3295

3229:                                             ; preds = %3228
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #11
  %3230 = load ptr, ptr %6, align 8, !tbaa !5
  %3231 = load ptr, ptr %83, align 8, !tbaa !5
  %3232 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3231, i32 0, i32 1
  %3233 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3232, i32 0, i32 1
  %3234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3233, i64 noundef 0)
          to label %3235 unwind label %3247

3235:                                             ; preds = %3229
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %243, ptr noundef nonnull align 8 dereferenceable(816) %3230, ptr noundef nonnull align 8 dereferenceable(8) %3234)
          to label %3236 unwind label %3247

3236:                                             ; preds = %3235
  br label %3237

3237:                                             ; preds = %3236
  %3238 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %243)
          to label %3239 unwind label %3251

3239:                                             ; preds = %3237
  %3240 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3238)
          to label %3241 unwind label %3251

3241:                                             ; preds = %3239
  br i1 %3240, label %3259, label %3242

3242:                                             ; preds = %3241
  %3243 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %245) #11
  %3244 = getelementptr inbounds %class.anon.423, ptr %245, i32 0, i32 0
  store ptr %83, ptr %3244, align 8, !tbaa !5
  %3245 = getelementptr inbounds %class.anon.423, ptr %245, i32 0, i32 1
  store ptr %243, ptr %3245, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull align 8 dereferenceable(16) %245) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3243, ptr noundef %244)
          to label %3246 unwind label %3255

3246:                                             ; preds = %3242
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %245) #11
  br label %3259

3247:                                             ; preds = %3235, %3229
  %3248 = landingpad { ptr, i32 }
          cleanup
  %3249 = extractvalue { ptr, i32 } %3248, 0
  store ptr %3249, ptr %15, align 8
  %3250 = extractvalue { ptr, i32 } %3248, 1
  store i32 %3250, ptr %16, align 4
  br label %3294

3251:                                             ; preds = %3239, %3237
  %3252 = landingpad { ptr, i32 }
          cleanup
  %3253 = extractvalue { ptr, i32 } %3252, 0
  store ptr %3253, ptr %15, align 8
  %3254 = extractvalue { ptr, i32 } %3252, 1
  store i32 %3254, ptr %16, align 4
  br label %3293

3255:                                             ; preds = %3242
  %3256 = landingpad { ptr, i32 }
          cleanup
  %3257 = extractvalue { ptr, i32 } %3256, 0
  store ptr %3257, ptr %15, align 8
  %3258 = extractvalue { ptr, i32 } %3256, 1
  store i32 %3258, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %245) #11
  br label %3293

3259:                                             ; preds = %3246, %3241
  br label %3260

3260:                                             ; preds = %3259
  br label %3261

3261:                                             ; preds = %3260
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #11
  %3262 = load ptr, ptr %6, align 8, !tbaa !5
  %3263 = load ptr, ptr %81, align 8, !tbaa !5
  %3264 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3263, i32 0, i32 4
  %3265 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3264, i64 noundef 0)
          to label %3266 unwind label %3281

3266:                                             ; preds = %3261
  %3267 = load ptr, ptr %81, align 8, !tbaa !5
  %3268 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3267, i32 0, i32 4
  %3269 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3268, i64 noundef 1)
          to label %3270 unwind label %3281

3270:                                             ; preds = %3266
  %3271 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3262, ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3265, i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(48) %3269, i1 noundef zeroext false)
          to label %3272 unwind label %3281

3272:                                             ; preds = %3270
  %3273 = zext i1 %3271 to i8
  store i8 %3273, ptr %246, align 1, !tbaa !79
  br label %3274

3274:                                             ; preds = %3272
  %3275 = load i8, ptr %246, align 1, !tbaa !79, !range !81, !noundef !82
  %3276 = trunc i8 %3275 to i1
  br i1 %3276, label %3277, label %3289

3277:                                             ; preds = %3274
  %3278 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %248) #11
  %3279 = getelementptr inbounds %class.anon.424, ptr %248, i32 0, i32 0
  store ptr %83, ptr %3279, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(8) %248) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3278, ptr noundef %247)
          to label %3280 unwind label %3285

3280:                                             ; preds = %3277
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #11
  br label %3289

3281:                                             ; preds = %3270, %3266, %3261
  %3282 = landingpad { ptr, i32 }
          cleanup
  %3283 = extractvalue { ptr, i32 } %3282, 0
  store ptr %3283, ptr %15, align 8
  %3284 = extractvalue { ptr, i32 } %3282, 1
  store i32 %3284, ptr %16, align 4
  br label %3292

3285:                                             ; preds = %3277
  %3286 = landingpad { ptr, i32 }
          cleanup
  %3287 = extractvalue { ptr, i32 } %3286, 0
  store ptr %3287, ptr %15, align 8
  %3288 = extractvalue { ptr, i32 } %3286, 1
  store i32 %3288, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #11
  br label %3292

3289:                                             ; preds = %3280, %3274
  br label %3290

3290:                                             ; preds = %3289
  br label %3291

3291:                                             ; preds = %3290
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #11
  br label %4668

3292:                                             ; preds = %3285, %3281
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #11
  br label %3293

3293:                                             ; preds = %3292, %3255, %3251
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %243) #11
  br label %3294

3294:                                             ; preds = %3293, %3247
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #11
  br label %4732

3295:                                             ; preds = %3228
  %3296 = load ptr, ptr %83, align 8, !tbaa !5
  %3297 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3296, i32 0, i32 0
  %3298 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3297, ptr noundef @.str.59)
          to label %3299 unwind label %1317

3299:                                             ; preds = %3295
  br i1 %3298, label %3300, label %3346

3300:                                             ; preds = %3299
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #11
  %3301 = load ptr, ptr %6, align 8, !tbaa !5
  %3302 = load ptr, ptr %83, align 8, !tbaa !5
  %3303 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3302, i32 0, i32 1
  %3304 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3303, i32 0, i32 1
  %3305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3304, i64 noundef 0)
          to label %3306 unwind label %3318

3306:                                             ; preds = %3300
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %249, ptr noundef nonnull align 8 dereferenceable(816) %3301, ptr noundef nonnull align 8 dereferenceable(8) %3305)
          to label %3307 unwind label %3318

3307:                                             ; preds = %3306
  br label %3308

3308:                                             ; preds = %3307
  %3309 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %3310 unwind label %3322

3310:                                             ; preds = %3308
  %3311 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3309)
          to label %3312 unwind label %3322

3312:                                             ; preds = %3310
  br i1 %3311, label %3330, label %3313

3313:                                             ; preds = %3312
  %3314 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %251) #11
  %3315 = getelementptr inbounds %class.anon.425, ptr %251, i32 0, i32 0
  store ptr %83, ptr %3315, align 8, !tbaa !5
  %3316 = getelementptr inbounds %class.anon.425, ptr %251, i32 0, i32 1
  store ptr %249, ptr %3316, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef nonnull align 8 dereferenceable(16) %251) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3314, ptr noundef %250)
          to label %3317 unwind label %3326

3317:                                             ; preds = %3313
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %251) #11
  br label %3330

3318:                                             ; preds = %3306, %3300
  %3319 = landingpad { ptr, i32 }
          cleanup
  %3320 = extractvalue { ptr, i32 } %3319, 0
  store ptr %3320, ptr %15, align 8
  %3321 = extractvalue { ptr, i32 } %3319, 1
  store i32 %3321, ptr %16, align 4
  br label %3345

3322:                                             ; preds = %3341, %3337, %3332, %3310, %3308
  %3323 = landingpad { ptr, i32 }
          cleanup
  %3324 = extractvalue { ptr, i32 } %3323, 0
  store ptr %3324, ptr %15, align 8
  %3325 = extractvalue { ptr, i32 } %3323, 1
  store i32 %3325, ptr %16, align 4
  br label %3344

3326:                                             ; preds = %3313
  %3327 = landingpad { ptr, i32 }
          cleanup
  %3328 = extractvalue { ptr, i32 } %3327, 0
  store ptr %3328, ptr %15, align 8
  %3329 = extractvalue { ptr, i32 } %3327, 1
  store i32 %3329, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %251) #11
  br label %3344

3330:                                             ; preds = %3317, %3312
  br label %3331

3331:                                             ; preds = %3330
  br label %3332

3332:                                             ; preds = %3331
  %3333 = load ptr, ptr %6, align 8, !tbaa !5
  %3334 = load ptr, ptr %81, align 8, !tbaa !5
  %3335 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3334, i32 0, i32 4
  %3336 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3335, i64 noundef 0)
          to label %3337 unwind label %3322

3337:                                             ; preds = %3332
  %3338 = load ptr, ptr %81, align 8, !tbaa !5
  %3339 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3338, i32 0, i32 4
  %3340 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3339, i64 noundef 1)
          to label %3341 unwind label %3322

3341:                                             ; preds = %3337
  %3342 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3333, ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3336, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %3340, i1 noundef zeroext true)
          to label %3343 unwind label %3322

3343:                                             ; preds = %3341
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #11
  br label %4667

3344:                                             ; preds = %3326, %3322
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %249) #11
  br label %3345

3345:                                             ; preds = %3344, %3318
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #11
  br label %4732

3346:                                             ; preds = %3299
  %3347 = load ptr, ptr %83, align 8, !tbaa !5
  %3348 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3347, i32 0, i32 0
  %3349 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3348, ptr noundef @.str.60)
          to label %3350 unwind label %1317

3350:                                             ; preds = %3346
  br i1 %3349, label %3351, label %3397

3351:                                             ; preds = %3350
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #11
  %3352 = load ptr, ptr %6, align 8, !tbaa !5
  %3353 = load ptr, ptr %83, align 8, !tbaa !5
  %3354 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3353, i32 0, i32 1
  %3355 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3354, i32 0, i32 1
  %3356 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3355, i64 noundef 0)
          to label %3357 unwind label %3369

3357:                                             ; preds = %3351
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %252, ptr noundef nonnull align 8 dereferenceable(816) %3352, ptr noundef nonnull align 8 dereferenceable(8) %3356)
          to label %3358 unwind label %3369

3358:                                             ; preds = %3357
  br label %3359

3359:                                             ; preds = %3358
  %3360 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %252)
          to label %3361 unwind label %3373

3361:                                             ; preds = %3359
  %3362 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3360)
          to label %3363 unwind label %3373

3363:                                             ; preds = %3361
  br i1 %3362, label %3381, label %3364

3364:                                             ; preds = %3363
  %3365 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %254) #11
  %3366 = getelementptr inbounds %class.anon.426, ptr %254, i32 0, i32 0
  store ptr %83, ptr %3366, align 8, !tbaa !5
  %3367 = getelementptr inbounds %class.anon.426, ptr %254, i32 0, i32 1
  store ptr %252, ptr %3367, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %253, ptr noundef nonnull align 8 dereferenceable(16) %254) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3365, ptr noundef %253)
          to label %3368 unwind label %3377

3368:                                             ; preds = %3364
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #11
  br label %3381

3369:                                             ; preds = %3357, %3351
  %3370 = landingpad { ptr, i32 }
          cleanup
  %3371 = extractvalue { ptr, i32 } %3370, 0
  store ptr %3371, ptr %15, align 8
  %3372 = extractvalue { ptr, i32 } %3370, 1
  store i32 %3372, ptr %16, align 4
  br label %3396

3373:                                             ; preds = %3392, %3388, %3383, %3361, %3359
  %3374 = landingpad { ptr, i32 }
          cleanup
  %3375 = extractvalue { ptr, i32 } %3374, 0
  store ptr %3375, ptr %15, align 8
  %3376 = extractvalue { ptr, i32 } %3374, 1
  store i32 %3376, ptr %16, align 4
  br label %3395

3377:                                             ; preds = %3364
  %3378 = landingpad { ptr, i32 }
          cleanup
  %3379 = extractvalue { ptr, i32 } %3378, 0
  store ptr %3379, ptr %15, align 8
  %3380 = extractvalue { ptr, i32 } %3378, 1
  store i32 %3380, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #11
  br label %3395

3381:                                             ; preds = %3368, %3363
  br label %3382

3382:                                             ; preds = %3381
  br label %3383

3383:                                             ; preds = %3382
  %3384 = load ptr, ptr %6, align 8, !tbaa !5
  %3385 = load ptr, ptr %81, align 8, !tbaa !5
  %3386 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3385, i32 0, i32 4
  %3387 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3386, i64 noundef 0)
          to label %3388 unwind label %3373

3388:                                             ; preds = %3383
  %3389 = load ptr, ptr %81, align 8, !tbaa !5
  %3390 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3389, i32 0, i32 4
  %3391 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3390, i64 noundef 1)
          to label %3392 unwind label %3373

3392:                                             ; preds = %3388
  %3393 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116do_arith_checkedERN3MIR4eval14CallStackEntryERKN3HIR7TypeRefERNS1_8ValueRefERKNS0_5ParamENS0_6eBinOpESC_b(ptr noundef nonnull align 8 dereferenceable(816) %3384, ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(48) %3387, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %3391, i1 noundef zeroext true)
          to label %3394 unwind label %3373

3394:                                             ; preds = %3392
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #11
  br label %4666

3395:                                             ; preds = %3377, %3373
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #11
  br label %3396

3396:                                             ; preds = %3395, %3369
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #11
  br label %4732

3397:                                             ; preds = %3350
  %3398 = load ptr, ptr %83, align 8, !tbaa !5
  %3399 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3398, i32 0, i32 0
  %3400 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3399, ptr noundef @.str.61)
          to label %3401 unwind label %1317

3401:                                             ; preds = %3397
  br i1 %3400, label %3402, label %3414

3402:                                             ; preds = %3401
  %3403 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %255, ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %3404 unwind label %1317

3404:                                             ; preds = %3402
  %3405 = load ptr, ptr %81, align 8, !tbaa !5
  %3406 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3405, i32 0, i32 4
  %3407 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3406, i64 noundef 0)
          to label %3408 unwind label %3410

3408:                                             ; preds = %3404
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %3403, ptr noundef %255, ptr noundef nonnull align 8 dereferenceable(48) %3407)
          to label %3409 unwind label %3410

3409:                                             ; preds = %3408
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #11
  br label %4665

3410:                                             ; preds = %3408, %3404
  %3411 = landingpad { ptr, i32 }
          cleanup
  %3412 = extractvalue { ptr, i32 } %3411, 0
  store ptr %3412, ptr %15, align 8
  %3413 = extractvalue { ptr, i32 } %3411, 1
  store i32 %3413, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %255) #11
  br label %4732

3414:                                             ; preds = %3401
  %3415 = load ptr, ptr %83, align 8, !tbaa !5
  %3416 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3415, i32 0, i32 0
  %3417 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3416, ptr noundef @.str.62)
          to label %3418 unwind label %1317

3418:                                             ; preds = %3414
  br i1 %3417, label %3419, label %3431

3419:                                             ; preds = %3418
  %3420 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %3421 unwind label %1317

3421:                                             ; preds = %3419
  %3422 = load ptr, ptr %81, align 8, !tbaa !5
  %3423 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3422, i32 0, i32 4
  %3424 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3423, i64 noundef 0)
          to label %3425 unwind label %3427

3425:                                             ; preds = %3421
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %3420, ptr noundef %256, ptr noundef nonnull align 8 dereferenceable(48) %3424)
          to label %3426 unwind label %3427

3426:                                             ; preds = %3425
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #11
  br label %4664

3427:                                             ; preds = %3425, %3421
  %3428 = landingpad { ptr, i32 }
          cleanup
  %3429 = extractvalue { ptr, i32 } %3428, 0
  store ptr %3429, ptr %15, align 8
  %3430 = extractvalue { ptr, i32 } %3428, 1
  store i32 %3430, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %256) #11
  br label %4732

3431:                                             ; preds = %3418
  %3432 = load ptr, ptr %83, align 8, !tbaa !5
  %3433 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3432, i32 0, i32 0
  %3434 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3433, ptr noundef @.str.63)
          to label %3435 unwind label %1317

3435:                                             ; preds = %3431
  br i1 %3434, label %3436, label %3466

3436:                                             ; preds = %3435
  call void @llvm.lifetime.start.p0(i64 16, ptr %257) #11
  %3437 = load ptr, ptr %6, align 8, !tbaa !5
  %3438 = load ptr, ptr %81, align 8, !tbaa !5
  %3439 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3438, i32 0, i32 4
  %3440 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3439, i64 noundef 0)
          to label %3441 unwind label %3454

3441:                                             ; preds = %3436
  %3442 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %3437, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %3440)
          to label %3443 unwind label %3454

3443:                                             ; preds = %3441
  %3444 = getelementptr inbounds { i64, i64 }, ptr %257, i32 0, i32 0
  %3445 = extractvalue { i64, i64 } %3442, 0
  store i64 %3445, ptr %3444, align 8
  %3446 = getelementptr inbounds { i64, i64 }, ptr %257, i32 0, i32 1
  %3447 = extractvalue { i64, i64 } %3442, 1
  store i64 %3447, ptr %3446, align 8
  br label %3448

3448:                                             ; preds = %3443
  %3449 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %257, i32 noundef 0)
          to label %3450 unwind label %3454

3450:                                             ; preds = %3448
  br i1 %3449, label %3462, label %3451

3451:                                             ; preds = %3450
  %3452 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %259) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 1 dereferenceable(1) %259) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3452, ptr noundef %258)
          to label %3453 unwind label %3458

3453:                                             ; preds = %3451
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #11
  br label %3462

3454:                                             ; preds = %3448, %3441, %3436
  %3455 = landingpad { ptr, i32 }
          cleanup
  %3456 = extractvalue { ptr, i32 } %3455, 0
  store ptr %3456, ptr %15, align 8
  %3457 = extractvalue { ptr, i32 } %3455, 1
  store i32 %3457, ptr %16, align 4
  br label %3465

3458:                                             ; preds = %3451
  %3459 = landingpad { ptr, i32 }
          cleanup
  %3460 = extractvalue { ptr, i32 } %3459, 0
  store ptr %3460, ptr %15, align 8
  %3461 = extractvalue { ptr, i32 } %3459, 1
  store i32 %3461, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #11
  br label %3465

3462:                                             ; preds = %3453, %3450
  br label %3463

3463:                                             ; preds = %3462
  br label %3464

3464:                                             ; preds = %3463
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #11
  br label %4663

3465:                                             ; preds = %3458, %3454
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #11
  br label %4732

3466:                                             ; preds = %3435
  %3467 = load ptr, ptr %83, align 8, !tbaa !5
  %3468 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3467, i32 0, i32 0
  %3469 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3468, ptr noundef @.str.64)
          to label %3470 unwind label %1317

3470:                                             ; preds = %3466
  br i1 %3469, label %3471, label %3510

3471:                                             ; preds = %3470
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #11
  %3472 = load ptr, ptr %6, align 8, !tbaa !5
  %3473 = load ptr, ptr %83, align 8, !tbaa !5
  %3474 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3473, i32 0, i32 1
  %3475 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3474, i32 0, i32 1
  %3476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3475, i64 noundef 0)
          to label %3477 unwind label %3493

3477:                                             ; preds = %3471
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %260, ptr noundef nonnull align 8 dereferenceable(816) %3472, ptr noundef nonnull align 8 dereferenceable(8) %3476)
          to label %3478 unwind label %3493

3478:                                             ; preds = %3477
  call void @llvm.lifetime.start.p0(i64 1, ptr %261) #11
  %3479 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3480 = load ptr, ptr %8, align 8, !tbaa !5
  %3481 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3480, i32 0, i32 1
  %3482 = load ptr, ptr %3481, align 8, !tbaa !99
  %3483 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve18type_is_impossibleERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %3479, ptr noundef nonnull align 8 dereferenceable(8) %3482, ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %3484 unwind label %3497

3484:                                             ; preds = %3478
  %3485 = zext i1 %3483 to i8
  store i8 %3485, ptr %261, align 1, !tbaa !79
  br label %3486

3486:                                             ; preds = %3484
  %3487 = load i8, ptr %261, align 1, !tbaa !79, !range !81, !noundef !82
  %3488 = trunc i8 %3487 to i1
  br i1 %3488, label %3489, label %3505

3489:                                             ; preds = %3486
  %3490 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #11
  %3491 = getelementptr inbounds %class.anon.429, ptr %263, i32 0, i32 0
  store ptr %260, ptr %3491, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull align 8 dereferenceable(8) %263) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3490, ptr noundef %262)
          to label %3492 unwind label %3501

3492:                                             ; preds = %3489
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #11
  br label %3505

3493:                                             ; preds = %3477, %3471
  %3494 = landingpad { ptr, i32 }
          cleanup
  %3495 = extractvalue { ptr, i32 } %3494, 0
  store ptr %3495, ptr %15, align 8
  %3496 = extractvalue { ptr, i32 } %3494, 1
  store i32 %3496, ptr %16, align 4
  br label %3509

3497:                                             ; preds = %3478
  %3498 = landingpad { ptr, i32 }
          cleanup
  %3499 = extractvalue { ptr, i32 } %3498, 0
  store ptr %3499, ptr %15, align 8
  %3500 = extractvalue { ptr, i32 } %3498, 1
  store i32 %3500, ptr %16, align 4
  br label %3508

3501:                                             ; preds = %3489
  %3502 = landingpad { ptr, i32 }
          cleanup
  %3503 = extractvalue { ptr, i32 } %3502, 0
  store ptr %3503, ptr %15, align 8
  %3504 = extractvalue { ptr, i32 } %3502, 1
  store i32 %3504, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #11
  br label %3508

3505:                                             ; preds = %3492, %3486
  br label %3506

3506:                                             ; preds = %3505
  br label %3507

3507:                                             ; preds = %3506
  call void @llvm.lifetime.end.p0(i64 1, ptr %261) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #11
  br label %4662

3508:                                             ; preds = %3501, %3497
  call void @llvm.lifetime.end.p0(i64 1, ptr %261) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #11
  br label %3509

3509:                                             ; preds = %3508, %3493
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #11
  br label %4732

3510:                                             ; preds = %3470
  %3511 = load ptr, ptr %83, align 8, !tbaa !5
  %3512 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3511, i32 0, i32 0
  %3513 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3512, ptr noundef @.str.65)
          to label %3514 unwind label %1317

3514:                                             ; preds = %3510
  br i1 %3513, label %3515, label %4067

3515:                                             ; preds = %3514
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #11
  %3516 = load ptr, ptr %6, align 8, !tbaa !5
  %3517 = load ptr, ptr %83, align 8, !tbaa !5
  %3518 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3517, i32 0, i32 1
  %3519 = getelementptr inbounds %"struct.HIR::PathParams", ptr %3518, i32 0, i32 1
  %3520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %3519, i64 noundef 0)
          to label %3521 unwind label %3533

3521:                                             ; preds = %3515
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %264, ptr noundef nonnull align 8 dereferenceable(816) %3516, ptr noundef nonnull align 8 dereferenceable(8) %3520)
          to label %3522 unwind label %3533

3522:                                             ; preds = %3521
  br label %3523

3523:                                             ; preds = %3522
  %3524 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %3525 unwind label %3537

3525:                                             ; preds = %3523
  %3526 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %3524)
          to label %3527 unwind label %3537

3527:                                             ; preds = %3525
  br i1 %3526, label %3545, label %3528

3528:                                             ; preds = %3527
  %3529 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %266) #11
  %3530 = getelementptr inbounds %class.anon.430, ptr %266, i32 0, i32 0
  store ptr %83, ptr %3530, align 8, !tbaa !5
  %3531 = getelementptr inbounds %class.anon.430, ptr %266, i32 0, i32 1
  store ptr %264, ptr %3531, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull align 8 dereferenceable(16) %266) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3529, ptr noundef %265)
          to label %3532 unwind label %3541

3532:                                             ; preds = %3528
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %265) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %266) #11
  br label %3545

3533:                                             ; preds = %3521, %3515
  %3534 = landingpad { ptr, i32 }
          cleanup
  %3535 = extractvalue { ptr, i32 } %3534, 0
  store ptr %3535, ptr %15, align 8
  %3536 = extractvalue { ptr, i32 } %3534, 1
  store i32 %3536, ptr %16, align 4
  br label %4066

3537:                                             ; preds = %3525, %3523
  %3538 = landingpad { ptr, i32 }
          cleanup
  %3539 = extractvalue { ptr, i32 } %3538, 0
  store ptr %3539, ptr %15, align 8
  %3540 = extractvalue { ptr, i32 } %3538, 1
  store i32 %3540, ptr %16, align 4
  br label %4065

3541:                                             ; preds = %3528
  %3542 = landingpad { ptr, i32 }
          cleanup
  %3543 = extractvalue { ptr, i32 } %3542, 0
  store ptr %3543, ptr %15, align 8
  %3544 = extractvalue { ptr, i32 } %3542, 1
  store i32 %3544, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %265) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %266) #11
  br label %4065

3545:                                             ; preds = %3532, %3527
  br label %3546

3546:                                             ; preds = %3545
  br label %3547

3547:                                             ; preds = %3546
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #11
  %3548 = load ptr, ptr %8, align 8, !tbaa !5
  %3549 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3548, i32 0, i32 1
  %3550 = load ptr, ptr %3549, align 8, !tbaa !99
  %3551 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3552 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %3550, ptr noundef nonnull align 8 dereferenceable(424) %3551, ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %3553 unwind label %3558

3553:                                             ; preds = %3547
  store ptr %3552, ptr %267, align 8, !tbaa !5
  %3554 = load ptr, ptr %267, align 8, !tbaa !5
  %3555 = icmp ne ptr %3554, null
  br i1 %3555, label %3562, label %3556

3556:                                             ; preds = %3553
  %3557 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %3557, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %3558

3558:                                             ; preds = %3556, %3547
  %3559 = landingpad { ptr, i32 }
          cleanup
  %3560 = extractvalue { ptr, i32 } %3559, 0
  store ptr %3560, ptr %15, align 8
  %3561 = extractvalue { ptr, i32 } %3559, 1
  store i32 %3561, ptr %16, align 4
  br label %4064

3562:                                             ; preds = %3553
  call void @llvm.lifetime.start.p0(i64 16, ptr %268) #11
  %3563 = load ptr, ptr %6, align 8, !tbaa !5
  %3564 = load ptr, ptr %81, align 8, !tbaa !5
  %3565 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3564, i32 0, i32 4
  %3566 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3565, i64 noundef 0)
          to label %3567 unwind label %3579

3567:                                             ; preds = %3562
  %3568 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %3566)
          to label %3569 unwind label %3579

3569:                                             ; preds = %3567
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %268, ptr noundef nonnull align 8 dereferenceable(816) %3563, ptr noundef nonnull align 8 dereferenceable(32) %3568, ptr noundef null)
          to label %3570 unwind label %3579

3570:                                             ; preds = %3569
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #11
  %3571 = load ptr, ptr %81, align 8, !tbaa !5
  %3572 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3571, i32 0, i32 4
  %3573 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3572, i64 noundef 1)
          to label %3574 unwind label %3583

3574:                                             ; preds = %3570
  store ptr %3573, ptr %269, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %270) #11
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %271) #11
  store i8 1, ptr %271, align 1, !tbaa !79
  br label %3575

3575:                                             ; preds = %3843, %3574
  %3576 = load i8, ptr %271, align 1, !tbaa !79, !range !81, !noundef !82
  %3577 = trunc i8 %3576 to i1
  br i1 %3577, label %3587, label %3578

3578:                                             ; preds = %3575
  store i32 183, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %271) #11
  br label %3844

3579:                                             ; preds = %3569, %3567, %3562
  %3580 = landingpad { ptr, i32 }
          cleanup
  %3581 = extractvalue { ptr, i32 } %3580, 0
  store ptr %3581, ptr %15, align 8
  %3582 = extractvalue { ptr, i32 } %3580, 1
  store i32 %3582, ptr %16, align 4
  br label %4063

3583:                                             ; preds = %3570
  %3584 = landingpad { ptr, i32 }
          cleanup
  %3585 = extractvalue { ptr, i32 } %3584, 0
  store ptr %3585, ptr %15, align 8
  %3586 = extractvalue { ptr, i32 } %3584, 1
  store i32 %3586, ptr %16, align 4
  br label %4062

3587:                                             ; preds = %3575
  call void @llvm.lifetime.start.p0(i64 8, ptr %272) #11
  %3588 = load ptr, ptr %269, align 8, !tbaa !5
  store ptr %3588, ptr %272, align 8, !tbaa !5
  br label %3589

3589:                                             ; preds = %3840, %3587
  %3590 = load i8, ptr %271, align 1, !tbaa !79, !range !81, !noundef !82
  %3591 = trunc i8 %3590 to i1
  br i1 %3591, label %3593, label %3592

3592:                                             ; preds = %3589
  store i32 186, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %272) #11
  br label %3842

3593:                                             ; preds = %3589
  %3594 = load ptr, ptr %272, align 8, !tbaa !5
  %3595 = invoke noundef i32 @_ZNK3MIR5Param3tagEv(ptr noundef nonnull align 8 dereferenceable(48) %3594)
          to label %3596 unwind label %3597

3596:                                             ; preds = %3593
  switch i32 %3595, label %3839 [
    i32 0, label %3601
    i32 1, label %3602
    i32 2, label %3692
    i32 3, label %3734
  ]

3597:                                             ; preds = %3593
  %3598 = landingpad { ptr, i32 }
          cleanup
  %3599 = extractvalue { ptr, i32 } %3598, 0
  store ptr %3599, ptr %15, align 8
  %3600 = extractvalue { ptr, i32 } %3598, 1
  store i32 %3600, ptr %16, align 4
  br label %3841

3601:                                             ; preds = %3596
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.8, i32 noundef 2811, ptr noundef @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #12
  unreachable

3602:                                             ; preds = %3596
  call void @llvm.lifetime.start.p0(i64 1, ptr %273) #11
  store i8 1, ptr %273, align 1, !tbaa !79
  br label %3603

3603:                                             ; preds = %3690, %3602
  %3604 = load i8, ptr %273, align 1, !tbaa !79, !range !81, !noundef !82
  %3605 = trunc i8 %3604 to i1
  br i1 %3605, label %3607, label %3606

3606:                                             ; preds = %3603
  store i32 190, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #11
  br label %3691

3607:                                             ; preds = %3603
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #11
  %3608 = load ptr, ptr %272, align 8, !tbaa !5
  %3609 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %3608)
          to label %3610 unwind label %3616

3610:                                             ; preds = %3607
  store ptr %3609, ptr %274, align 8, !tbaa !5
  br label %3611

3611:                                             ; preds = %3675, %3610
  %3612 = load ptr, ptr %274, align 8, !tbaa !5
  %3613 = load i8, ptr %273, align 1, !tbaa !79, !range !81, !noundef !82
  %3614 = trunc i8 %3613 to i1
  br i1 %3614, label %3620, label %3615

3615:                                             ; preds = %3611
  store i32 193, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #11
  br label %3689

3616:                                             ; preds = %3607
  %3617 = landingpad { ptr, i32 }
          cleanup
  %3618 = extractvalue { ptr, i32 } %3617, 0
  store ptr %3618, ptr %15, align 8
  %3619 = extractvalue { ptr, i32 } %3617, 1
  store i32 %3619, ptr %16, align 4
  br label %3688

3620:                                             ; preds = %3611
  call void @llvm.lifetime.start.p0(i64 16, ptr %275) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %276) #11
  %3621 = load ptr, ptr %6, align 8, !tbaa !5
  %3622 = load ptr, ptr %274, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %276, ptr noundef nonnull align 8 dereferenceable(816) %3621, ptr noundef nonnull align 8 dereferenceable(32) %3622, ptr noundef null)
          to label %3623 unwind label %3633

3623:                                             ; preds = %3620
  %3624 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind writable sret(%"struct.std::pair.434") align 8 %275, ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull align 8 dereferenceable(120) %3624)
          to label %3625 unwind label %3637

3625:                                             ; preds = %3623
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %276) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %276) #11
  br label %3626

3626:                                             ; preds = %3625
  %3627 = getelementptr inbounds %"struct.std::pair.434", ptr %275, i32 0, i32 0
  %3628 = load i64, ptr %3627, align 8, !tbaa !155
  %3629 = icmp eq i64 %3628, 4096
  br i1 %3629, label %3646, label %3630

3630:                                             ; preds = %3626
  %3631 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %278) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef nonnull align 1 dereferenceable(1) %278) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3631, ptr noundef %277)
          to label %3632 unwind label %3642

3632:                                             ; preds = %3630
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #11
  br label %3646

3633:                                             ; preds = %3620
  %3634 = landingpad { ptr, i32 }
          cleanup
  %3635 = extractvalue { ptr, i32 } %3634, 0
  store ptr %3635, ptr %15, align 8
  %3636 = extractvalue { ptr, i32 } %3634, 1
  store i32 %3636, ptr %16, align 4
  br label %3641

3637:                                             ; preds = %3623
  %3638 = landingpad { ptr, i32 }
          cleanup
  %3639 = extractvalue { ptr, i32 } %3638, 0
  store ptr %3639, ptr %15, align 8
  %3640 = extractvalue { ptr, i32 } %3638, 1
  store i32 %3640, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %276) #11
  br label %3641

3641:                                             ; preds = %3637, %3633
  call void @llvm.lifetime.end.p0(i64 16, ptr %276) #11
  br label %3687

3642:                                             ; preds = %3630
  %3643 = landingpad { ptr, i32 }
          cleanup
  %3644 = extractvalue { ptr, i32 } %3643, 0
  store ptr %3644, ptr %15, align 8
  %3645 = extractvalue { ptr, i32 } %3643, 1
  store i32 %3645, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %278) #11
  br label %3686

3646:                                             ; preds = %3632, %3626
  br label %3647

3647:                                             ; preds = %3646
  br label %3648

3648:                                             ; preds = %3647
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #11
  %3649 = getelementptr inbounds %"struct.std::pair.434", ptr %275, i32 0, i32 1
  %3650 = invoke noundef ptr @_ZNK3MIR4eval8RelocPtr12as_staticrefEv(ptr noundef nonnull align 8 dereferenceable(8) %3649)
          to label %3651 unwind label %3658

3651:                                             ; preds = %3648
  store ptr %3650, ptr %279, align 8, !tbaa !5
  br label %3652

3652:                                             ; preds = %3651
  %3653 = load ptr, ptr %279, align 8, !tbaa !5
  %3654 = icmp ne ptr %3653, null
  br i1 %3654, label %3666, label %3655

3655:                                             ; preds = %3652
  %3656 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %281) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull align 1 dereferenceable(1) %281) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3656, ptr noundef %280)
          to label %3657 unwind label %3662

3657:                                             ; preds = %3655
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #11
  br label %3666

3658:                                             ; preds = %3648
  %3659 = landingpad { ptr, i32 }
          cleanup
  %3660 = extractvalue { ptr, i32 } %3659, 0
  store ptr %3660, ptr %15, align 8
  %3661 = extractvalue { ptr, i32 } %3659, 1
  store i32 %3661, ptr %16, align 4
  br label %3685

3662:                                             ; preds = %3655
  %3663 = landingpad { ptr, i32 }
          cleanup
  %3664 = extractvalue { ptr, i32 } %3663, 0
  store ptr %3664, ptr %15, align 8
  %3665 = extractvalue { ptr, i32 } %3663, 1
  store i32 %3665, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #11
  br label %3685

3666:                                             ; preds = %3657, %3652
  br label %3667

3667:                                             ; preds = %3666
  br label %3668

3668:                                             ; preds = %3667
  call void @llvm.lifetime.start.p0(i64 16, ptr %282) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %283) #11
  %3669 = load ptr, ptr %279, align 8, !tbaa !5
  %3670 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR4eval9StaticRef4pathEv(ptr noundef nonnull align 8 dereferenceable(112) %3669)
          to label %3671 unwind label %3676

3671:                                             ; preds = %3668
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %283, ptr noundef nonnull align 8 dereferenceable(88) %3670)
          to label %3672 unwind label %3676

3672:                                             ; preds = %3671
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.431") align 8 %282, ptr noundef nonnull align 8 dereferenceable(88) %283)
          to label %3673 unwind label %3680

3673:                                             ; preds = %3672
  %3674 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %270, ptr noundef nonnull align 8 dereferenceable(16) %282) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %282) #11
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %283) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %283) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %282) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #11
  br label %3675

3675:                                             ; preds = %3673
  store i8 0, ptr %273, align 1, !tbaa !79
  br label %3611, !llvm.loop !158

3676:                                             ; preds = %3671, %3668
  %3677 = landingpad { ptr, i32 }
          cleanup
  %3678 = extractvalue { ptr, i32 } %3677, 0
  store ptr %3678, ptr %15, align 8
  %3679 = extractvalue { ptr, i32 } %3677, 1
  store i32 %3679, ptr %16, align 4
  br label %3684

3680:                                             ; preds = %3672
  %3681 = landingpad { ptr, i32 }
          cleanup
  %3682 = extractvalue { ptr, i32 } %3681, 0
  store ptr %3682, ptr %15, align 8
  %3683 = extractvalue { ptr, i32 } %3681, 1
  store i32 %3683, ptr %16, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %283) #11
  br label %3684

3684:                                             ; preds = %3680, %3676
  call void @llvm.lifetime.end.p0(i64 88, ptr %283) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %282) #11
  br label %3685

3685:                                             ; preds = %3684, %3662, %3658
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #11
  br label %3686

3686:                                             ; preds = %3685, %3642
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #11
  br label %3687

3687:                                             ; preds = %3686, %3641
  call void @llvm.lifetime.end.p0(i64 16, ptr %275) #11
  br label %3688

3688:                                             ; preds = %3687, %3616
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #11
  br label %3841

3689:                                             ; preds = %3615
  br label %3690

3690:                                             ; preds = %3689
  store i8 0, ptr %273, align 1, !tbaa !79
  br label %3603, !llvm.loop !159

3691:                                             ; preds = %3606
  br label %3839

3692:                                             ; preds = %3596
  call void @llvm.lifetime.start.p0(i64 1, ptr %284) #11
  store i8 1, ptr %284, align 1, !tbaa !79
  br label %3693

3693:                                             ; preds = %3732, %3692
  %3694 = load i8, ptr %284, align 1, !tbaa !79, !range !81, !noundef !82
  %3695 = trunc i8 %3694 to i1
  br i1 %3695, label %3697, label %3696

3696:                                             ; preds = %3693
  store i32 200, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #11
  br label %3733

3697:                                             ; preds = %3693
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #11
  %3698 = load ptr, ptr %272, align 8, !tbaa !5
  %3699 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %3698)
          to label %3700 unwind label %3706

3700:                                             ; preds = %3697
  store ptr %3699, ptr %285, align 8, !tbaa !5
  br label %3701

3701:                                             ; preds = %3729, %3700
  %3702 = load ptr, ptr %285, align 8, !tbaa !5
  %3703 = load i8, ptr %284, align 1, !tbaa !79, !range !81, !noundef !82
  %3704 = trunc i8 %3703 to i1
  br i1 %3704, label %3710, label %3705

3705:                                             ; preds = %3701
  store i32 203, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #11
  br label %3731

3706:                                             ; preds = %3697
  %3707 = landingpad { ptr, i32 }
          cleanup
  %3708 = extractvalue { ptr, i32 } %3707, 0
  store ptr %3708, ptr %15, align 8
  %3709 = extractvalue { ptr, i32 } %3707, 1
  store i32 %3709, ptr %16, align 4
  br label %3730

3710:                                             ; preds = %3701
  br label %3711

3711:                                             ; preds = %3710
  call void @llvm.lifetime.start.p0(i64 8, ptr %286) #11
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %286, align 8, !tbaa !5
  %3712 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %288) #11
  %3713 = getelementptr inbounds %class.anon.440, ptr %288, i32 0, i32 0
  store ptr %286, ptr %3713, align 8, !tbaa !5
  %3714 = getelementptr inbounds %class.anon.440, ptr %288, i32 0, i32 1
  %3715 = load ptr, ptr %269, align 8, !tbaa !5
  store ptr %3715, ptr %3714, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef nonnull align 8 dereferenceable(16) %288) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3712, ptr noundef %287)
          to label %3716 unwind label %3718

3716:                                             ; preds = %3711
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %288) #11
  %3717 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %3717, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3717, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %3722

3718:                                             ; preds = %3711
  %3719 = landingpad { ptr, i32 }
          cleanup
  %3720 = extractvalue { ptr, i32 } %3719, 0
  store ptr %3720, ptr %15, align 8
  %3721 = extractvalue { ptr, i32 } %3719, 1
  store i32 %3721, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %288) #11
  br label %3726

3722:                                             ; preds = %3716
  %3723 = landingpad { ptr, i32 }
          cleanup
  %3724 = extractvalue { ptr, i32 } %3723, 0
  store ptr %3724, ptr %15, align 8
  %3725 = extractvalue { ptr, i32 } %3723, 1
  store i32 %3725, ptr %16, align 4
  br label %3726

3726:                                             ; preds = %3722, %3718
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #11
  br label %3730

3727:                                             ; No predecessors!
  br label %3728

3728:                                             ; preds = %3727
  br label %3729

3729:                                             ; preds = %3728
  store i8 0, ptr %284, align 1, !tbaa !79
  br label %3701, !llvm.loop !160

3730:                                             ; preds = %3726, %3706
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #11
  br label %3841

3731:                                             ; preds = %3705
  br label %3732

3732:                                             ; preds = %3731
  store i8 0, ptr %284, align 1, !tbaa !79
  br label %3693, !llvm.loop !161

3733:                                             ; preds = %3696
  br label %3839

3734:                                             ; preds = %3596
  call void @llvm.lifetime.start.p0(i64 1, ptr %289) #11
  store i8 1, ptr %289, align 1, !tbaa !79
  br label %3735

3735:                                             ; preds = %3837, %3734
  %3736 = load i8, ptr %289, align 1, !tbaa !79, !range !81, !noundef !82
  %3737 = trunc i8 %3736 to i1
  br i1 %3737, label %3739, label %3738

3738:                                             ; preds = %3735
  store i32 208, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #11
  br label %3838

3739:                                             ; preds = %3735
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #11
  %3740 = load ptr, ptr %272, align 8, !tbaa !5
  %3741 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %3740)
          to label %3742 unwind label %3748

3742:                                             ; preds = %3739
  store ptr %3741, ptr %290, align 8, !tbaa !5
  br label %3743

3743:                                             ; preds = %3833, %3742
  %3744 = load ptr, ptr %290, align 8, !tbaa !5
  %3745 = load i8, ptr %289, align 1, !tbaa !79, !range !81, !noundef !82
  %3746 = trunc i8 %3745 to i1
  br i1 %3746, label %3752, label %3747

3747:                                             ; preds = %3743
  store i32 211, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #11
  br label %3836

3748:                                             ; preds = %3739
  %3749 = landingpad { ptr, i32 }
          cleanup
  %3750 = extractvalue { ptr, i32 } %3749, 0
  store ptr %3750, ptr %15, align 8
  %3751 = extractvalue { ptr, i32 } %3749, 1
  store i32 %3751, ptr %16, align 4
  br label %3835

3752:                                             ; preds = %3743
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #11
  %3753 = load ptr, ptr %290, align 8, !tbaa !5
  %3754 = invoke noundef ptr @_ZNK3MIR8Constant12opt_FunctionEv(ptr noundef nonnull align 8 dereferenceable(40) %3753)
          to label %3755 unwind label %3769

3755:                                             ; preds = %3752
  store ptr %3754, ptr %291, align 8, !tbaa !5
  %3756 = load ptr, ptr %291, align 8, !tbaa !5
  %3757 = icmp ne ptr %3756, null
  br i1 %3757, label %3758, label %3782

3758:                                             ; preds = %3755
  call void @llvm.lifetime.start.p0(i64 16, ptr %292) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %293) #11
  %3759 = load ptr, ptr %82, align 8, !tbaa !5
  %3760 = load ptr, ptr %8, align 8, !tbaa !5
  %3761 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3760, i32 0, i32 1
  %3762 = load ptr, ptr %3761, align 8, !tbaa !99
  %3763 = load ptr, ptr %291, align 8, !tbaa !5
  %3764 = getelementptr inbounds %"struct.MIR::Constant::Data_Function", ptr %3763, i32 0, i32 0
  %3765 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3764) #11
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %293, ptr noundef nonnull align 8 dereferenceable(96) %3759, ptr noundef nonnull align 8 dereferenceable(8) %3762, ptr noundef nonnull align 8 dereferenceable(88) %3765, i1 noundef zeroext true)
          to label %3766 unwind label %3773

3766:                                             ; preds = %3758
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.431") align 8 %292, ptr noundef nonnull align 8 dereferenceable(88) %293)
          to label %3767 unwind label %3777

3767:                                             ; preds = %3766
  %3768 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %270, ptr noundef nonnull align 8 dereferenceable(16) %292) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %292) #11
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %293) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %293) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %292) #11
  br label %3832

3769:                                             ; preds = %3752
  %3770 = landingpad { ptr, i32 }
          cleanup
  %3771 = extractvalue { ptr, i32 } %3770, 0
  store ptr %3771, ptr %15, align 8
  %3772 = extractvalue { ptr, i32 } %3770, 1
  store i32 %3772, ptr %16, align 4
  br label %3834

3773:                                             ; preds = %3758
  %3774 = landingpad { ptr, i32 }
          cleanup
  %3775 = extractvalue { ptr, i32 } %3774, 0
  store ptr %3775, ptr %15, align 8
  %3776 = extractvalue { ptr, i32 } %3774, 1
  store i32 %3776, ptr %16, align 4
  br label %3781

3777:                                             ; preds = %3766
  %3778 = landingpad { ptr, i32 }
          cleanup
  %3779 = extractvalue { ptr, i32 } %3778, 0
  store ptr %3779, ptr %15, align 8
  %3780 = extractvalue { ptr, i32 } %3778, 1
  store i32 %3780, ptr %16, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %293) #11
  br label %3781

3781:                                             ; preds = %3777, %3773
  call void @llvm.lifetime.end.p0(i64 88, ptr %293) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %292) #11
  br label %3834

3782:                                             ; preds = %3755
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #11
  %3783 = load ptr, ptr %290, align 8, !tbaa !5
  %3784 = invoke noundef ptr @_ZNK3MIR8Constant12opt_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %3783)
          to label %3785 unwind label %3798

3785:                                             ; preds = %3782
  store ptr %3784, ptr %294, align 8, !tbaa !5
  %3786 = load ptr, ptr %294, align 8, !tbaa !5
  %3787 = icmp ne ptr %3786, null
  br i1 %3787, label %3788, label %3811

3788:                                             ; preds = %3785
  call void @llvm.lifetime.start.p0(i64 16, ptr %295) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %296) #11
  %3789 = load ptr, ptr %82, align 8, !tbaa !5
  %3790 = load ptr, ptr %8, align 8, !tbaa !5
  %3791 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %3790, i32 0, i32 1
  %3792 = load ptr, ptr %3791, align 8, !tbaa !99
  %3793 = load ptr, ptr %294, align 8, !tbaa !5
  %3794 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3793) #11
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %296, ptr noundef nonnull align 8 dereferenceable(96) %3789, ptr noundef nonnull align 8 dereferenceable(8) %3792, ptr noundef nonnull align 8 dereferenceable(88) %3794, i1 noundef zeroext true)
          to label %3795 unwind label %3802

3795:                                             ; preds = %3788
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.431") align 8 %295, ptr noundef nonnull align 8 dereferenceable(88) %296)
          to label %3796 unwind label %3806

3796:                                             ; preds = %3795
  %3797 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %270, ptr noundef nonnull align 8 dereferenceable(16) %295) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %295) #11
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %296) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %296) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #11
  br label %3830

3798:                                             ; preds = %3782
  %3799 = landingpad { ptr, i32 }
          cleanup
  %3800 = extractvalue { ptr, i32 } %3799, 0
  store ptr %3800, ptr %15, align 8
  %3801 = extractvalue { ptr, i32 } %3799, 1
  store i32 %3801, ptr %16, align 4
  br label %3831

3802:                                             ; preds = %3788
  %3803 = landingpad { ptr, i32 }
          cleanup
  %3804 = extractvalue { ptr, i32 } %3803, 0
  store ptr %3804, ptr %15, align 8
  %3805 = extractvalue { ptr, i32 } %3803, 1
  store i32 %3805, ptr %16, align 4
  br label %3810

3806:                                             ; preds = %3795
  %3807 = landingpad { ptr, i32 }
          cleanup
  %3808 = extractvalue { ptr, i32 } %3807, 0
  store ptr %3808, ptr %15, align 8
  %3809 = extractvalue { ptr, i32 } %3807, 1
  store i32 %3809, ptr %16, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %296) #11
  br label %3810

3810:                                             ; preds = %3806, %3802
  call void @llvm.lifetime.end.p0(i64 88, ptr %296) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %295) #11
  br label %3831

3811:                                             ; preds = %3785
  br label %3812

3812:                                             ; preds = %3811
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #11
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %297, align 8, !tbaa !5
  %3813 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %299) #11
  %3814 = getelementptr inbounds %class.anon.441, ptr %299, i32 0, i32 0
  store ptr %297, ptr %3814, align 8, !tbaa !5
  %3815 = getelementptr inbounds %class.anon.441, ptr %299, i32 0, i32 1
  %3816 = load ptr, ptr %269, align 8, !tbaa !5
  store ptr %3816, ptr %3815, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %298, ptr noundef nonnull align 8 dereferenceable(16) %299) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %3813, ptr noundef %298)
          to label %3817 unwind label %3819

3817:                                             ; preds = %3812
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %299) #11
  %3818 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %3818, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3818, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %3823

3819:                                             ; preds = %3812
  %3820 = landingpad { ptr, i32 }
          cleanup
  %3821 = extractvalue { ptr, i32 } %3820, 0
  store ptr %3821, ptr %15, align 8
  %3822 = extractvalue { ptr, i32 } %3820, 1
  store i32 %3822, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %299) #11
  br label %3827

3823:                                             ; preds = %3817
  %3824 = landingpad { ptr, i32 }
          cleanup
  %3825 = extractvalue { ptr, i32 } %3824, 0
  store ptr %3825, ptr %15, align 8
  %3826 = extractvalue { ptr, i32 } %3824, 1
  store i32 %3826, ptr %16, align 4
  br label %3827

3827:                                             ; preds = %3823, %3819
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #11
  br label %3831

3828:                                             ; No predecessors!
  br label %3829

3829:                                             ; preds = %3828
  br label %3830

3830:                                             ; preds = %3829, %3796
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #11
  br label %3832

3831:                                             ; preds = %3827, %3810, %3798
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #11
  br label %3834

3832:                                             ; preds = %3830, %3767
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #11
  br label %3833

3833:                                             ; preds = %3832
  store i8 0, ptr %289, align 1, !tbaa !79
  br label %3743, !llvm.loop !162

3834:                                             ; preds = %3831, %3781, %3769
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #11
  br label %3835

3835:                                             ; preds = %3834, %3748
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #11
  br label %3841

3836:                                             ; preds = %3747
  br label %3837

3837:                                             ; preds = %3836
  store i8 0, ptr %289, align 1, !tbaa !79
  br label %3735, !llvm.loop !163

3838:                                             ; preds = %3738
  br label %3839

3839:                                             ; preds = %3838, %3733, %3691, %3596
  br label %3840

3840:                                             ; preds = %3839
  store i8 0, ptr %271, align 1, !tbaa !79
  br label %3589, !llvm.loop !164

3841:                                             ; preds = %3835, %3730, %3688, %3597
  call void @llvm.lifetime.end.p0(i64 8, ptr %272) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %271) #11
  br label %4061

3842:                                             ; preds = %3592
  br label %3843

3843:                                             ; preds = %3842
  store i8 0, ptr %271, align 1, !tbaa !79
  br label %3575, !llvm.loop !165

3844:                                             ; preds = %3578
  call void @llvm.lifetime.start.p0(i64 24, ptr %300) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %300) #11
  %3845 = load ptr, ptr %267, align 8, !tbaa !5
  %3846 = getelementptr inbounds %struct.TypeRepr, ptr %3845, i32 0, i32 3
  %3847 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3846) #11
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %300, i64 noundef %3847)
          to label %3848 unwind label %3860

3848:                                             ; preds = %3844
  call void @llvm.lifetime.start.p0(i64 8, ptr %301) #11
  %3849 = load ptr, ptr %267, align 8, !tbaa !5
  %3850 = getelementptr inbounds %struct.TypeRepr, ptr %3849, i32 0, i32 3
  store ptr %3850, ptr %301, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #11
  %3851 = load ptr, ptr %301, align 8, !tbaa !5
  %3852 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3851) #11
  %3853 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.442", ptr %302, i32 0, i32 0
  store ptr %3852, ptr %3853, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %303) #11
  %3854 = load ptr, ptr %301, align 8, !tbaa !5
  %3855 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3854) #11
  %3856 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.442", ptr %303, i32 0, i32 0
  store ptr %3855, ptr %3856, align 8
  br label %3857

3857:                                             ; preds = %3888, %3848
  %3858 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %303) #11
  br i1 %3858, label %3864, label %3859

3859:                                             ; preds = %3857
  store i32 216, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #11
  br label %3927

3860:                                             ; preds = %3844
  %3861 = landingpad { ptr, i32 }
          cleanup
  %3862 = extractvalue { ptr, i32 } %3861, 0
  store ptr %3862, ptr %15, align 8
  %3863 = extractvalue { ptr, i32 } %3861, 1
  store i32 %3863, ptr %16, align 4
  br label %4060

3864:                                             ; preds = %3857
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #11
  %3865 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %302) #11
  store ptr %3865, ptr %304, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #11
  %3866 = load ptr, ptr %6, align 8, !tbaa !5
  %3867 = load ptr, ptr %304, align 8, !tbaa !5
  %3868 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %3867, i32 0, i32 1
  %3869 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %3866, ptr noundef nonnull align 8 dereferenceable(8) %3868)
          to label %3870 unwind label %3890

3870:                                             ; preds = %3864
  store i64 %3869, ptr %305, align 8, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #11
  %3871 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3872 = load ptr, ptr %8, align 8, !tbaa !5
  %3873 = load ptr, ptr %304, align 8, !tbaa !5
  %3874 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %3873, i32 0, i32 1
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::AllocationPtr") align 8 %306, ptr noundef nonnull align 8 dereferenceable(424) %3871, ptr noundef nonnull align 8 dereferenceable(120) %3872, ptr noundef nonnull align 8 dereferenceable(8) %3874)
          to label %3875 unwind label %3894

3875:                                             ; preds = %3870
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %300, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %3876 unwind label %3898

3876:                                             ; preds = %3875
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %307) #11
  %3877 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %300) #11
  invoke void @_ZN3MIR4eval13AllocationPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull align 8 dereferenceable(8) %3877)
          to label %3878 unwind label %3903

3878:                                             ; preds = %3876
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef %309)
          to label %3879 unwind label %3907

3879:                                             ; preds = %3878
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %307, ptr noundef %308, i64 noundef 0)
          to label %3880 unwind label %3911

3880:                                             ; preds = %3879
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #11
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #11
  %3881 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %310) #11
  %3882 = load ptr, ptr %304, align 8, !tbaa !5
  %3883 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %3882, i32 0, i32 0
  %3884 = load i64, ptr %3883, align 8, !tbaa !146
  %3885 = load i64, ptr %305, align 8, !tbaa !109
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %310, ptr noundef nonnull align 8 dereferenceable(16) %268, i64 noundef %3884, i64 noundef %3885)
          to label %3886 unwind label %3916

3886:                                             ; preds = %3880
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %307, ptr noundef nonnull align 8 dereferenceable(120) %3881, ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %3887 unwind label %3920

3887:                                             ; preds = %3886
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %307) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %307) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #11
  br label %3888

3888:                                             ; preds = %3887
  %3889 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %302) #11
  br label %3857

3890:                                             ; preds = %3864
  %3891 = landingpad { ptr, i32 }
          cleanup
  %3892 = extractvalue { ptr, i32 } %3891, 0
  store ptr %3892, ptr %15, align 8
  %3893 = extractvalue { ptr, i32 } %3891, 1
  store i32 %3893, ptr %16, align 4
  br label %3926

3894:                                             ; preds = %3870
  %3895 = landingpad { ptr, i32 }
          cleanup
  %3896 = extractvalue { ptr, i32 } %3895, 0
  store ptr %3896, ptr %15, align 8
  %3897 = extractvalue { ptr, i32 } %3895, 1
  store i32 %3897, ptr %16, align 4
  br label %3902

3898:                                             ; preds = %3875
  %3899 = landingpad { ptr, i32 }
          cleanup
  %3900 = extractvalue { ptr, i32 } %3899, 0
  store ptr %3900, ptr %15, align 8
  %3901 = extractvalue { ptr, i32 } %3899, 1
  store i32 %3901, ptr %16, align 4
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %306) #11
  br label %3902

3902:                                             ; preds = %3898, %3894
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #11
  br label %3926

3903:                                             ; preds = %3876
  %3904 = landingpad { ptr, i32 }
          cleanup
  %3905 = extractvalue { ptr, i32 } %3904, 0
  store ptr %3905, ptr %15, align 8
  %3906 = extractvalue { ptr, i32 } %3904, 1
  store i32 %3906, ptr %16, align 4
  br label %3925

3907:                                             ; preds = %3878
  %3908 = landingpad { ptr, i32 }
          cleanup
  %3909 = extractvalue { ptr, i32 } %3908, 0
  store ptr %3909, ptr %15, align 8
  %3910 = extractvalue { ptr, i32 } %3908, 1
  store i32 %3910, ptr %16, align 4
  br label %3915

3911:                                             ; preds = %3879
  %3912 = landingpad { ptr, i32 }
          cleanup
  %3913 = extractvalue { ptr, i32 } %3912, 0
  store ptr %3913, ptr %15, align 8
  %3914 = extractvalue { ptr, i32 } %3912, 1
  store i32 %3914, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #11
  br label %3915

3915:                                             ; preds = %3911, %3907
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #11
  br label %3925

3916:                                             ; preds = %3880
  %3917 = landingpad { ptr, i32 }
          cleanup
  %3918 = extractvalue { ptr, i32 } %3917, 0
  store ptr %3918, ptr %15, align 8
  %3919 = extractvalue { ptr, i32 } %3917, 1
  store i32 %3919, ptr %16, align 4
  br label %3924

3920:                                             ; preds = %3886
  %3921 = landingpad { ptr, i32 }
          cleanup
  %3922 = extractvalue { ptr, i32 } %3921, 0
  store ptr %3922, ptr %15, align 8
  %3923 = extractvalue { ptr, i32 } %3921, 1
  store i32 %3923, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %310) #11
  br label %3924

3924:                                             ; preds = %3920, %3916
  call void @llvm.lifetime.end.p0(i64 16, ptr %310) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %307) #11
  br label %3925

3925:                                             ; preds = %3924, %3915, %3903
  call void @llvm.lifetime.end.p0(i64 16, ptr %307) #11
  br label %3926

3926:                                             ; preds = %3925, %3902, %3890
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #11
  br label %4060

3927:                                             ; preds = %3859
  call void @llvm.lifetime.start.p0(i64 144, ptr %311) #11
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %311)
          to label %3928 unwind label %3945

3928:                                             ; preds = %3927
  call void @llvm.lifetime.start.p0(i64 8, ptr %312) #11
  store ptr null, ptr %312, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %313) #11
  %3929 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %3930 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3931 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %270) #11
  %3932 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8) %3929, ptr noundef nonnull align 8 dereferenceable(424) %3930, ptr noundef nonnull align 8 dereferenceable(88) %3931, ptr noundef nonnull align 8 dereferenceable(144) %311, ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %3933 unwind label %3949

3933:                                             ; preds = %3928
  store ptr %3932, ptr %313, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %314) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #11
  %3934 = load ptr, ptr %313, align 8, !tbaa !5
  %3935 = getelementptr inbounds %"class.HIR::Function", ptr %3934, i32 0, i32 8
  store ptr %3935, ptr %315, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #11
  %3936 = load ptr, ptr %315, align 8, !tbaa !5
  %3937 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3936) #11
  %3938 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %316, i32 0, i32 0
  store ptr %3937, ptr %3938, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %317) #11
  %3939 = load ptr, ptr %315, align 8, !tbaa !5
  %3940 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3939) #11
  %3941 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %317, i32 0, i32 0
  store ptr %3940, ptr %3941, align 8
  br label %3942

3942:                                             ; preds = %3963, %3933
  %3943 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %317) #11
  br i1 %3943, label %3953, label %3944

3944:                                             ; preds = %3942
  store i32 218, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #11
  br label %3984

3945:                                             ; preds = %3927
  %3946 = landingpad { ptr, i32 }
          cleanup
  %3947 = extractvalue { ptr, i32 } %3946, 0
  store ptr %3947, ptr %15, align 8
  %3948 = extractvalue { ptr, i32 } %3946, 1
  store i32 %3948, ptr %16, align 4
  br label %4059

3949:                                             ; preds = %3928
  %3950 = landingpad { ptr, i32 }
          cleanup
  %3951 = extractvalue { ptr, i32 } %3950, 0
  store ptr %3951, ptr %15, align 8
  %3952 = extractvalue { ptr, i32 } %3950, 1
  store i32 %3952, ptr %16, align 4
  br label %4058

3953:                                             ; preds = %3942
  call void @llvm.lifetime.start.p0(i64 8, ptr %318) #11
  %3954 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %316) #11
  store ptr %3954, ptr %318, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 224, ptr %319) #11
  call void @llvm.lifetime.start.p0(i64 216, ptr %320) #11
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %320)
          to label %3955 unwind label %3965

3955:                                             ; preds = %3953
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #11
  %3956 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3957 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %3958 = load ptr, ptr %318, align 8, !tbaa !5
  %3959 = getelementptr inbounds %"struct.std::pair.444", ptr %3958, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %321, ptr noundef nonnull align 8 dereferenceable(424) %3956, ptr noundef nonnull align 8 dereferenceable(8) %3957, ptr noundef nonnull align 8 dereferenceable(8) %3959, ptr noundef nonnull align 8 dereferenceable(96) %311)
          to label %3960 unwind label %3969

3960:                                             ; preds = %3955
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.444") align 8 %319, ptr noundef nonnull align 8 dereferenceable(212) %320, ptr noundef nonnull align 8 dereferenceable(8) %321)
          to label %3961 unwind label %3973

3961:                                             ; preds = %3960
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %314, ptr noundef nonnull align 8 dereferenceable(224) %319)
          to label %3962 unwind label %3977

3962:                                             ; preds = %3961
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %319) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #11
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %320) #11
  call void @llvm.lifetime.end.p0(i64 216, ptr %320) #11
  call void @llvm.lifetime.end.p0(i64 224, ptr %319) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #11
  br label %3963

3963:                                             ; preds = %3962
  %3964 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %316) #11
  br label %3942

3965:                                             ; preds = %3953
  %3966 = landingpad { ptr, i32 }
          cleanup
  %3967 = extractvalue { ptr, i32 } %3966, 0
  store ptr %3967, ptr %15, align 8
  %3968 = extractvalue { ptr, i32 } %3966, 1
  store i32 %3968, ptr %16, align 4
  br label %3983

3969:                                             ; preds = %3955
  %3970 = landingpad { ptr, i32 }
          cleanup
  %3971 = extractvalue { ptr, i32 } %3970, 0
  store ptr %3971, ptr %15, align 8
  %3972 = extractvalue { ptr, i32 } %3970, 1
  store i32 %3972, ptr %16, align 4
  br label %3982

3973:                                             ; preds = %3960
  %3974 = landingpad { ptr, i32 }
          cleanup
  %3975 = extractvalue { ptr, i32 } %3974, 0
  store ptr %3975, ptr %15, align 8
  %3976 = extractvalue { ptr, i32 } %3974, 1
  store i32 %3976, ptr %16, align 4
  br label %3981

3977:                                             ; preds = %3961
  %3978 = landingpad { ptr, i32 }
          cleanup
  %3979 = extractvalue { ptr, i32 } %3978, 0
  store ptr %3979, ptr %15, align 8
  %3980 = extractvalue { ptr, i32 } %3978, 1
  store i32 %3980, ptr %16, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %319) #11
  br label %3981

3981:                                             ; preds = %3977, %3973
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #11
  br label %3982

3982:                                             ; preds = %3981, %3969
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #11
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %320) #11
  br label %3983

3983:                                             ; preds = %3982, %3965
  call void @llvm.lifetime.end.p0(i64 216, ptr %320) #11
  call void @llvm.lifetime.end.p0(i64 224, ptr %319) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #11
  br label %4057

3984:                                             ; preds = %3944
  call void @llvm.lifetime.start.p0(i64 8, ptr %322) #11
  %3985 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3986 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %3987 = load ptr, ptr %313, align 8, !tbaa !5
  %3988 = getelementptr inbounds %"class.HIR::Function", ptr %3987, i32 0, i32 10
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %322, ptr noundef nonnull align 8 dereferenceable(424) %3985, ptr noundef nonnull align 8 dereferenceable(8) %3986, ptr noundef nonnull align 8 dereferenceable(8) %3988, ptr noundef nonnull align 8 dereferenceable(96) %311)
          to label %3989 unwind label %4006

3989:                                             ; preds = %3984
  call void @llvm.lifetime.start.p0(i64 8, ptr %323) #11
  %3990 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %3991 = getelementptr inbounds i8, ptr %3990, i64 8
  %3992 = getelementptr inbounds %struct.TraitResolveCommon, ptr %3991, i32 0, i32 0
  %3993 = load ptr, ptr %3992, align 8, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 56, ptr %324) #11
  %3994 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %270) #11
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %324, ptr noundef nonnull align 8 dereferenceable(88) %3994)
          to label %3995 unwind label %4010

3995:                                             ; preds = %3989
  %3996 = load ptr, ptr %313, align 8, !tbaa !5
  %3997 = invoke noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944) %3993, ptr noundef nonnull align 8 dereferenceable(56) %324, ptr noundef nonnull align 8 dereferenceable(352) %3996)
          to label %3998 unwind label %4010

3998:                                             ; preds = %3995
  call void @llvm.lifetime.end.p0(i64 56, ptr %324) #11
  store ptr %3997, ptr %323, align 8, !tbaa !5
  br label %3999

3999:                                             ; preds = %3998
  %4000 = load ptr, ptr %323, align 8, !tbaa !5
  %4001 = icmp ne ptr %4000, null
  br i1 %4001, label %4018, label %4002

4002:                                             ; preds = %3999
  %4003 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %326) #11
  %4004 = getelementptr inbounds %class.anon.477, ptr %326, i32 0, i32 0
  store ptr %270, ptr %4004, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %325, ptr noundef nonnull align 8 dereferenceable(8) %326) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4003, ptr noundef %325)
          to label %4005 unwind label %4014

4005:                                             ; preds = %4002
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %325) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #11
  br label %4018

4006:                                             ; preds = %3984
  %4007 = landingpad { ptr, i32 }
          cleanup
  %4008 = extractvalue { ptr, i32 } %4007, 0
  store ptr %4008, ptr %15, align 8
  %4009 = extractvalue { ptr, i32 } %4007, 1
  store i32 %4009, ptr %16, align 4
  br label %4056

4010:                                             ; preds = %3995, %3989
  %4011 = landingpad { ptr, i32 }
          cleanup
  %4012 = extractvalue { ptr, i32 } %4011, 0
  store ptr %4012, ptr %15, align 8
  %4013 = extractvalue { ptr, i32 } %4011, 1
  store i32 %4013, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %324) #11
  br label %4055

4014:                                             ; preds = %4002
  %4015 = landingpad { ptr, i32 }
          cleanup
  %4016 = extractvalue { ptr, i32 } %4015, 0
  store ptr %4016, ptr %15, align 8
  %4017 = extractvalue { ptr, i32 } %4015, 1
  store i32 %4017, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %325) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #11
  br label %4055

4018:                                             ; preds = %4005, %3999
  br label %4019

4019:                                             ; preds = %4018
  br label %4020

4020:                                             ; preds = %4019
  call void @llvm.lifetime.start.p0(i64 16, ptr %329) #11
  %4021 = getelementptr inbounds %class.anon.478, ptr %329, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4021, ptr noundef nonnull align 8 dereferenceable(16) %270) #11
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %328, ptr noundef nonnull align 8 dereferenceable(16) %329)
          to label %4022 unwind label %4031

4022:                                             ; preds = %4020
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %327, ptr noundef %328)
          to label %4023 unwind label %4035

4023:                                             ; preds = %4022
  %4024 = load ptr, ptr %323, align 8, !tbaa !5
  invoke void @_ZN14MonomorphStateC2EOS_(ptr noundef nonnull align 8 dereferenceable(144) %330, ptr noundef nonnull align 8 dereferenceable(144) %311)
          to label %4025 unwind label %4039

4025:                                             ; preds = %4023
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %4026 unwind label %4043

4026:                                             ; preds = %4025
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %332, ptr noundef nonnull align 8 dereferenceable(24) %314) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %333, ptr noundef nonnull align 8 dereferenceable(24) %300) #11
  %4027 = load ptr, ptr %313, align 8, !tbaa !5
  %4028 = getelementptr inbounds %"class.HIR::Function", ptr %4027, i32 0, i32 7
  %4029 = load ptr, ptr %312, align 8, !tbaa !5
  invoke void @_ZN3HIR9Evaluator16push_stack_entryE9FmtLambdaRKN3MIR8FunctionE14MonomorphStateNS_7TypeRefESt6vectorISt4pairINS_7PatternES7_ESaISB_EES8_INS2_4eval13AllocationPtrESaISF_EEPKNS_13GenericParamsESK_(ptr noundef nonnull align 8 dereferenceable(472) %435, ptr noundef %327, ptr noundef nonnull align 8 dereferenceable(96) %4024, ptr noundef %330, ptr noundef %331, ptr noundef %332, ptr noundef %333, ptr noundef %4028, ptr noundef %4029)
          to label %4030 unwind label %4047

4030:                                             ; preds = %4026
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %333) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %332) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %330) #11
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #11
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %329) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #11
  store i32 -2, ptr %4, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %314) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %313) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %312) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %311) #11
  call void @llvm.lifetime.end.p0(i64 144, ptr %311) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %300) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %300) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %270) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %268) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %268) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #11
  br label %4731

4031:                                             ; preds = %4020
  %4032 = landingpad { ptr, i32 }
          cleanup
  %4033 = extractvalue { ptr, i32 } %4032, 0
  store ptr %4033, ptr %15, align 8
  %4034 = extractvalue { ptr, i32 } %4032, 1
  store i32 %4034, ptr %16, align 4
  br label %4054

4035:                                             ; preds = %4022
  %4036 = landingpad { ptr, i32 }
          cleanup
  %4037 = extractvalue { ptr, i32 } %4036, 0
  store ptr %4037, ptr %15, align 8
  %4038 = extractvalue { ptr, i32 } %4036, 1
  store i32 %4038, ptr %16, align 4
  br label %4053

4039:                                             ; preds = %4023
  %4040 = landingpad { ptr, i32 }
          cleanup
  %4041 = extractvalue { ptr, i32 } %4040, 0
  store ptr %4041, ptr %15, align 8
  %4042 = extractvalue { ptr, i32 } %4040, 1
  store i32 %4042, ptr %16, align 4
  br label %4052

4043:                                             ; preds = %4025
  %4044 = landingpad { ptr, i32 }
          cleanup
  %4045 = extractvalue { ptr, i32 } %4044, 0
  store ptr %4045, ptr %15, align 8
  %4046 = extractvalue { ptr, i32 } %4044, 1
  store i32 %4046, ptr %16, align 4
  br label %4051

4047:                                             ; preds = %4026
  %4048 = landingpad { ptr, i32 }
          cleanup
  %4049 = extractvalue { ptr, i32 } %4048, 0
  store ptr %4049, ptr %15, align 8
  %4050 = extractvalue { ptr, i32 } %4048, 1
  store i32 %4050, ptr %16, align 4
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %333) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %332) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %331) #11
  br label %4051

4051:                                             ; preds = %4047, %4043
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %330) #11
  br label %4052

4052:                                             ; preds = %4051, %4039
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #11
  br label %4053

4053:                                             ; preds = %4052, %4035
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %328) #11
  br label %4054

4054:                                             ; preds = %4053, %4031
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %329) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %329) #11
  br label %4055

4055:                                             ; preds = %4054, %4014, %4010
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #11
  br label %4056

4056:                                             ; preds = %4055, %4006
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #11
  br label %4057

4057:                                             ; preds = %4056, %3983
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %314) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %314) #11
  br label %4058

4058:                                             ; preds = %4057, %3949
  call void @llvm.lifetime.end.p0(i64 8, ptr %313) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %312) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %311) #11
  br label %4059

4059:                                             ; preds = %4058, %3945
  call void @llvm.lifetime.end.p0(i64 144, ptr %311) #11
  br label %4060

4060:                                             ; preds = %4059, %3926, %3860
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %300) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %300) #11
  br label %4061

4061:                                             ; preds = %4060, %3841
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %270) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %270) #11
  br label %4062

4062:                                             ; preds = %4061, %3583
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %268) #11
  br label %4063

4063:                                             ; preds = %4062, %3579
  call void @llvm.lifetime.end.p0(i64 16, ptr %268) #11
  br label %4064

4064:                                             ; preds = %4063, %3558
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #11
  br label %4065

4065:                                             ; preds = %4064, %3541, %3537
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #11
  br label %4066

4066:                                             ; preds = %4065, %3533
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #11
  br label %4732

4067:                                             ; preds = %3514
  %4068 = load ptr, ptr %83, align 8, !tbaa !5
  %4069 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4068, i32 0, i32 0
  %4070 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %4069, ptr noundef @.str.66)
          to label %4071 unwind label %1317

4071:                                             ; preds = %4067
  br i1 %4070, label %4072, label %4293

4072:                                             ; preds = %4071
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #11
  %4073 = load ptr, ptr %6, align 8, !tbaa !5
  %4074 = load ptr, ptr %83, align 8, !tbaa !5
  %4075 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4074, i32 0, i32 1
  %4076 = getelementptr inbounds %"struct.HIR::PathParams", ptr %4075, i32 0, i32 1
  %4077 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %4076, i64 noundef 0)
          to label %4078 unwind label %4088

4078:                                             ; preds = %4072
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %334, ptr noundef nonnull align 8 dereferenceable(816) %4073, ptr noundef nonnull align 8 dereferenceable(8) %4077)
          to label %4079 unwind label %4088

4079:                                             ; preds = %4078
  call void @llvm.lifetime.start.p0(i64 8, ptr %335) #11
  %4080 = load ptr, ptr %8, align 8, !tbaa !5
  %4081 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %4080, i32 0, i32 1
  %4082 = load ptr, ptr %4081, align 8, !tbaa !99
  %4083 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4084 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %4082, ptr noundef nonnull align 8 dereferenceable(424) %4083, ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %4085 unwind label %4092

4085:                                             ; preds = %4079
  br i1 %4084, label %4096, label %4086

4086:                                             ; preds = %4085
  %4087 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %4087, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %4092

4088:                                             ; preds = %4078, %4072
  %4089 = landingpad { ptr, i32 }
          cleanup
  %4090 = extractvalue { ptr, i32 } %4089, 0
  store ptr %4090, ptr %15, align 8
  %4091 = extractvalue { ptr, i32 } %4089, 1
  store i32 %4091, ptr %16, align 4
  br label %4292

4092:                                             ; preds = %4086, %4079
  %4093 = landingpad { ptr, i32 }
          cleanup
  %4094 = extractvalue { ptr, i32 } %4093, 0
  store ptr %4094, ptr %15, align 8
  %4095 = extractvalue { ptr, i32 } %4093, 1
  store i32 %4095, ptr %16, align 4
  br label %4291

4096:                                             ; preds = %4085
  call void @llvm.lifetime.start.p0(i64 16, ptr %336) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %337) #11
  %4097 = load ptr, ptr %6, align 8, !tbaa !5
  %4098 = load ptr, ptr %81, align 8, !tbaa !5
  %4099 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4098, i32 0, i32 4
  %4100 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4099, i64 noundef 0)
          to label %4101 unwind label %4137

4101:                                             ; preds = %4096
  %4102 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %4100)
          to label %4103 unwind label %4137

4103:                                             ; preds = %4101
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %337, ptr noundef nonnull align 8 dereferenceable(816) %4097, ptr noundef nonnull align 8 dereferenceable(32) %4102, ptr noundef null)
          to label %4104 unwind label %4137

4104:                                             ; preds = %4103
  %4105 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind writable sret(%"struct.std::pair.434") align 8 %336, ptr noundef nonnull align 8 dereferenceable(16) %337, ptr noundef nonnull align 8 dereferenceable(120) %4105)
          to label %4106 unwind label %4141

4106:                                             ; preds = %4104
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %337) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %337) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %338) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %339) #11
  %4107 = load ptr, ptr %6, align 8, !tbaa !5
  %4108 = load ptr, ptr %81, align 8, !tbaa !5
  %4109 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4108, i32 0, i32 4
  %4110 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4109, i64 noundef 1)
          to label %4111 unwind label %4146

4111:                                             ; preds = %4106
  %4112 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %4110)
          to label %4113 unwind label %4146

4113:                                             ; preds = %4111
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %339, ptr noundef nonnull align 8 dereferenceable(816) %4107, ptr noundef nonnull align 8 dereferenceable(32) %4112, ptr noundef null)
          to label %4114 unwind label %4146

4114:                                             ; preds = %4113
  %4115 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind writable sret(%"struct.std::pair.434") align 8 %338, ptr noundef nonnull align 8 dereferenceable(16) %339, ptr noundef nonnull align 8 dereferenceable(120) %4115)
          to label %4116 unwind label %4150

4116:                                             ; preds = %4114
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %339) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %339) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %340) #11
  %4117 = load ptr, ptr %6, align 8, !tbaa !5
  %4118 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %4119 unwind label %4155

4119:                                             ; preds = %4116
  %4120 = load ptr, ptr %81, align 8, !tbaa !5
  %4121 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4120, i32 0, i32 4
  %4122 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4121, i64 noundef 2)
          to label %4123 unwind label %4155

4123:                                             ; preds = %4119
  %4124 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %4117, i32 noundef %4118, ptr noundef nonnull align 8 dereferenceable(48) %4122)
          to label %4125 unwind label %4155

4125:                                             ; preds = %4123
  %4126 = getelementptr inbounds { i64, i64 }, ptr %340, i32 0, i32 0
  %4127 = extractvalue { i64, i64 } %4124, 0
  store i64 %4127, ptr %4126, align 8
  %4128 = getelementptr inbounds { i64, i64 }, ptr %340, i32 0, i32 1
  %4129 = extractvalue { i64, i64 } %4124, 1
  store i64 %4129, ptr %4128, align 8
  br label %4130

4130:                                             ; preds = %4125
  %4131 = invoke noundef zeroext i1 @_ZNK4U1286is_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %340)
          to label %4132 unwind label %4155

4132:                                             ; preds = %4130
  br i1 %4131, label %4163, label %4133

4133:                                             ; preds = %4132
  %4134 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %342) #11
  %4135 = getelementptr inbounds %class.anon.479, ptr %342, i32 0, i32 0
  store ptr %83, ptr %4135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %341, ptr noundef nonnull align 8 dereferenceable(8) %342) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4134, ptr noundef %341)
          to label %4136 unwind label %4159

4136:                                             ; preds = %4133
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %341) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #11
  br label %4163

4137:                                             ; preds = %4103, %4101, %4096
  %4138 = landingpad { ptr, i32 }
          cleanup
  %4139 = extractvalue { ptr, i32 } %4138, 0
  store ptr %4139, ptr %15, align 8
  %4140 = extractvalue { ptr, i32 } %4138, 1
  store i32 %4140, ptr %16, align 4
  br label %4145

4141:                                             ; preds = %4104
  %4142 = landingpad { ptr, i32 }
          cleanup
  %4143 = extractvalue { ptr, i32 } %4142, 0
  store ptr %4143, ptr %15, align 8
  %4144 = extractvalue { ptr, i32 } %4142, 1
  store i32 %4144, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %337) #11
  br label %4145

4145:                                             ; preds = %4141, %4137
  call void @llvm.lifetime.end.p0(i64 16, ptr %337) #11
  br label %4290

4146:                                             ; preds = %4113, %4111, %4106
  %4147 = landingpad { ptr, i32 }
          cleanup
  %4148 = extractvalue { ptr, i32 } %4147, 0
  store ptr %4148, ptr %15, align 8
  %4149 = extractvalue { ptr, i32 } %4147, 1
  store i32 %4149, ptr %16, align 4
  br label %4154

4150:                                             ; preds = %4114
  %4151 = landingpad { ptr, i32 }
          cleanup
  %4152 = extractvalue { ptr, i32 } %4151, 0
  store ptr %4152, ptr %15, align 8
  %4153 = extractvalue { ptr, i32 } %4151, 1
  store i32 %4153, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %339) #11
  br label %4154

4154:                                             ; preds = %4150, %4146
  call void @llvm.lifetime.end.p0(i64 16, ptr %339) #11
  br label %4289

4155:                                             ; preds = %4130, %4123, %4119, %4116
  %4156 = landingpad { ptr, i32 }
          cleanup
  %4157 = extractvalue { ptr, i32 } %4156, 0
  store ptr %4157, ptr %15, align 8
  %4158 = extractvalue { ptr, i32 } %4156, 1
  store i32 %4158, ptr %16, align 4
  br label %4288

4159:                                             ; preds = %4133
  %4160 = landingpad { ptr, i32 }
          cleanup
  %4161 = extractvalue { ptr, i32 } %4160, 0
  store ptr %4161, ptr %15, align 8
  %4162 = extractvalue { ptr, i32 } %4160, 1
  store i32 %4162, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %341) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #11
  br label %4288

4163:                                             ; preds = %4136, %4132
  br label %4164

4164:                                             ; preds = %4163
  br label %4165

4165:                                             ; preds = %4164
  br label %4166

4166:                                             ; preds = %4165
  call void @llvm.lifetime.start.p0(i64 16, ptr %343) #11
  %4167 = load i64, ptr %335, align 8, !tbaa !109
  %4168 = trunc i64 %4167 to i32
  %4169 = invoke { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16) %340, i32 noundef %4168)
          to label %4170 unwind label %4183

4170:                                             ; preds = %4166
  %4171 = getelementptr inbounds { i64, i64 }, ptr %343, i32 0, i32 0
  %4172 = extractvalue { i64, i64 } %4169, 0
  store i64 %4172, ptr %4171, align 8
  %4173 = getelementptr inbounds { i64, i64 }, ptr %343, i32 0, i32 1
  %4174 = extractvalue { i64, i64 } %4169, 1
  store i64 %4174, ptr %4173, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %344) #11
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %344, i64 noundef -1, i64 noundef 0)
          to label %4175 unwind label %4187

4175:                                             ; preds = %4170
  %4176 = invoke noundef zeroext i1 @_ZNK4U128ltERKS_(ptr noundef nonnull align 8 dereferenceable(16) %343, ptr noundef nonnull align 8 dereferenceable(16) %344)
          to label %4177 unwind label %4187

4177:                                             ; preds = %4175
  %4178 = xor i1 %4176, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %344) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %343) #11
  br i1 %4178, label %4179, label %4196

4179:                                             ; preds = %4177
  %4180 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %346) #11
  %4181 = getelementptr inbounds %class.anon.480, ptr %346, i32 0, i32 0
  store ptr %83, ptr %4181, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %345, ptr noundef nonnull align 8 dereferenceable(8) %346) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4180, ptr noundef %345)
          to label %4182 unwind label %4192

4182:                                             ; preds = %4179
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #11
  br label %4196

4183:                                             ; preds = %4166
  %4184 = landingpad { ptr, i32 }
          cleanup
  %4185 = extractvalue { ptr, i32 } %4184, 0
  store ptr %4185, ptr %15, align 8
  %4186 = extractvalue { ptr, i32 } %4184, 1
  store i32 %4186, ptr %16, align 4
  br label %4191

4187:                                             ; preds = %4175, %4170
  %4188 = landingpad { ptr, i32 }
          cleanup
  %4189 = extractvalue { ptr, i32 } %4188, 0
  store ptr %4189, ptr %15, align 8
  %4190 = extractvalue { ptr, i32 } %4188, 1
  store i32 %4190, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %344) #11
  br label %4191

4191:                                             ; preds = %4187, %4183
  call void @llvm.lifetime.end.p0(i64 16, ptr %343) #11
  br label %4288

4192:                                             ; preds = %4179
  %4193 = landingpad { ptr, i32 }
          cleanup
  %4194 = extractvalue { ptr, i32 } %4193, 0
  store ptr %4194, ptr %15, align 8
  %4195 = extractvalue { ptr, i32 } %4193, 1
  store i32 %4195, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #11
  br label %4288

4196:                                             ; preds = %4182, %4177
  br label %4197

4197:                                             ; preds = %4196
  br label %4198

4198:                                             ; preds = %4197
  call void @llvm.lifetime.start.p0(i64 8, ptr %347) #11
  %4199 = load i64, ptr %335, align 8, !tbaa !109
  %4200 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %340)
          to label %4201 unwind label %4210

4201:                                             ; preds = %4198
  %4202 = mul i64 %4199, %4200
  store i64 %4202, ptr %347, align 8, !tbaa !109
  br label %4203

4203:                                             ; preds = %4201
  %4204 = getelementptr inbounds %"struct.std::pair.434", ptr %336, i32 0, i32 0
  %4205 = load i64, ptr %4204, align 8, !tbaa !155
  %4206 = icmp uge i64 %4205, 4096
  br i1 %4206, label %4218, label %4207

4207:                                             ; preds = %4203
  %4208 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %349) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %348, ptr noundef nonnull align 1 dereferenceable(1) %349) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4208, ptr noundef %348)
          to label %4209 unwind label %4214

4209:                                             ; preds = %4207
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %348) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %349) #11
  br label %4218

4210:                                             ; preds = %4198
  %4211 = landingpad { ptr, i32 }
          cleanup
  %4212 = extractvalue { ptr, i32 } %4211, 0
  store ptr %4212, ptr %15, align 8
  %4213 = extractvalue { ptr, i32 } %4211, 1
  store i32 %4213, ptr %16, align 4
  br label %4287

4214:                                             ; preds = %4207
  %4215 = landingpad { ptr, i32 }
          cleanup
  %4216 = extractvalue { ptr, i32 } %4215, 0
  store ptr %4216, ptr %15, align 8
  %4217 = extractvalue { ptr, i32 } %4215, 1
  store i32 %4217, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %348) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %349) #11
  br label %4287

4218:                                             ; preds = %4209, %4203
  br label %4219

4219:                                             ; preds = %4218
  br label %4220

4220:                                             ; preds = %4219
  br label %4221

4221:                                             ; preds = %4220
  %4222 = getelementptr inbounds %"struct.std::pair.434", ptr %338, i32 0, i32 0
  %4223 = load i64, ptr %4222, align 8, !tbaa !155
  %4224 = icmp uge i64 %4223, 4096
  br i1 %4224, label %4232, label %4225

4225:                                             ; preds = %4221
  %4226 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %351) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %350, ptr noundef nonnull align 1 dereferenceable(1) %351) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4226, ptr noundef %350)
          to label %4227 unwind label %4228

4227:                                             ; preds = %4225
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %351) #11
  br label %4232

4228:                                             ; preds = %4225
  %4229 = landingpad { ptr, i32 }
          cleanup
  %4230 = extractvalue { ptr, i32 } %4229, 0
  store ptr %4230, ptr %15, align 8
  %4231 = extractvalue { ptr, i32 } %4229, 1
  store i32 %4231, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %351) #11
  br label %4287

4232:                                             ; preds = %4227, %4221
  br label %4233

4233:                                             ; preds = %4232
  br label %4234

4234:                                             ; preds = %4233
  call void @llvm.lifetime.start.p0(i64 16, ptr %352) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %353) #11
  %4235 = getelementptr inbounds %"struct.std::pair.434", ptr %336, i32 0, i32 1
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull align 8 dereferenceable(8) %4235)
          to label %4236 unwind label %4253

4236:                                             ; preds = %4234
  %4237 = getelementptr inbounds %"struct.std::pair.434", ptr %336, i32 0, i32 0
  %4238 = load i64, ptr %4237, align 8, !tbaa !155
  %4239 = sub i64 %4238, 4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef %354, i64 noundef %4239)
          to label %4240 unwind label %4257

4240:                                             ; preds = %4236
  %4241 = load i64, ptr %347, align 8, !tbaa !109
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %352, ptr noundef nonnull align 8 dereferenceable(16) %353, i64 noundef 0, i64 noundef %4241)
          to label %4242 unwind label %4261

4242:                                             ; preds = %4240
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #11
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %355) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %356) #11
  %4243 = getelementptr inbounds %"struct.std::pair.434", ptr %338, i32 0, i32 1
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull align 8 dereferenceable(8) %4243)
          to label %4244 unwind label %4267

4244:                                             ; preds = %4242
  %4245 = getelementptr inbounds %"struct.std::pair.434", ptr %338, i32 0, i32 0
  %4246 = load i64, ptr %4245, align 8, !tbaa !155
  %4247 = sub i64 %4246, 4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef %357, i64 noundef %4247)
          to label %4248 unwind label %4271

4248:                                             ; preds = %4244
  %4249 = load i64, ptr %347, align 8, !tbaa !109
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %355, ptr noundef nonnull align 8 dereferenceable(16) %356, i64 noundef 0, i64 noundef %4249)
          to label %4250 unwind label %4275

4250:                                             ; preds = %4248
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #11
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %356) #11
  %4251 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %355, ptr noundef nonnull align 8 dereferenceable(120) %4251, ptr noundef nonnull align 8 dereferenceable(16) %352)
          to label %4252 unwind label %4281

4252:                                             ; preds = %4250
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %355) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %355) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %352) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %352) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %347) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %340) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %338) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %338) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %336) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %336) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #11
  br label %4660

4253:                                             ; preds = %4234
  %4254 = landingpad { ptr, i32 }
          cleanup
  %4255 = extractvalue { ptr, i32 } %4254, 0
  store ptr %4255, ptr %15, align 8
  %4256 = extractvalue { ptr, i32 } %4254, 1
  store i32 %4256, ptr %16, align 4
  br label %4266

4257:                                             ; preds = %4236
  %4258 = landingpad { ptr, i32 }
          cleanup
  %4259 = extractvalue { ptr, i32 } %4258, 0
  store ptr %4259, ptr %15, align 8
  %4260 = extractvalue { ptr, i32 } %4258, 1
  store i32 %4260, ptr %16, align 4
  br label %4265

4261:                                             ; preds = %4240
  %4262 = landingpad { ptr, i32 }
          cleanup
  %4263 = extractvalue { ptr, i32 } %4262, 0
  store ptr %4263, ptr %15, align 8
  %4264 = extractvalue { ptr, i32 } %4262, 1
  store i32 %4264, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %353) #11
  br label %4265

4265:                                             ; preds = %4261, %4257
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %354) #11
  br label %4266

4266:                                             ; preds = %4265, %4253
  call void @llvm.lifetime.end.p0(i64 16, ptr %353) #11
  br label %4286

4267:                                             ; preds = %4242
  %4268 = landingpad { ptr, i32 }
          cleanup
  %4269 = extractvalue { ptr, i32 } %4268, 0
  store ptr %4269, ptr %15, align 8
  %4270 = extractvalue { ptr, i32 } %4268, 1
  store i32 %4270, ptr %16, align 4
  br label %4280

4271:                                             ; preds = %4244
  %4272 = landingpad { ptr, i32 }
          cleanup
  %4273 = extractvalue { ptr, i32 } %4272, 0
  store ptr %4273, ptr %15, align 8
  %4274 = extractvalue { ptr, i32 } %4272, 1
  store i32 %4274, ptr %16, align 4
  br label %4279

4275:                                             ; preds = %4248
  %4276 = landingpad { ptr, i32 }
          cleanup
  %4277 = extractvalue { ptr, i32 } %4276, 0
  store ptr %4277, ptr %15, align 8
  %4278 = extractvalue { ptr, i32 } %4276, 1
  store i32 %4278, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %356) #11
  br label %4279

4279:                                             ; preds = %4275, %4271
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %357) #11
  br label %4280

4280:                                             ; preds = %4279, %4267
  call void @llvm.lifetime.end.p0(i64 16, ptr %356) #11
  br label %4285

4281:                                             ; preds = %4250
  %4282 = landingpad { ptr, i32 }
          cleanup
  %4283 = extractvalue { ptr, i32 } %4282, 0
  store ptr %4283, ptr %15, align 8
  %4284 = extractvalue { ptr, i32 } %4282, 1
  store i32 %4284, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %355) #11
  br label %4285

4285:                                             ; preds = %4281, %4280
  call void @llvm.lifetime.end.p0(i64 16, ptr %355) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %352) #11
  br label %4286

4286:                                             ; preds = %4285, %4266
  call void @llvm.lifetime.end.p0(i64 16, ptr %352) #11
  br label %4287

4287:                                             ; preds = %4286, %4228, %4214, %4210
  call void @llvm.lifetime.end.p0(i64 8, ptr %347) #11
  br label %4288

4288:                                             ; preds = %4287, %4192, %4191, %4159, %4155
  call void @llvm.lifetime.end.p0(i64 16, ptr %340) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %338) #11
  br label %4289

4289:                                             ; preds = %4288, %4154
  call void @llvm.lifetime.end.p0(i64 16, ptr %338) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %336) #11
  br label %4290

4290:                                             ; preds = %4289, %4145
  call void @llvm.lifetime.end.p0(i64 16, ptr %336) #11
  br label %4291

4291:                                             ; preds = %4290, %4092
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %334) #11
  br label %4292

4292:                                             ; preds = %4291, %4088
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #11
  br label %4732

4293:                                             ; preds = %4071
  %4294 = load ptr, ptr %83, align 8, !tbaa !5
  %4295 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4294, i32 0, i32 0
  %4296 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %4295, ptr noundef @.str.67)
          to label %4297 unwind label %1317

4297:                                             ; preds = %4293
  br i1 %4296, label %4298, label %4374

4298:                                             ; preds = %4297
  call void @llvm.lifetime.start.p0(i64 8, ptr %358) #11
  %4299 = load ptr, ptr %6, align 8, !tbaa !5
  %4300 = load ptr, ptr %83, align 8, !tbaa !5
  %4301 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4300, i32 0, i32 1
  %4302 = getelementptr inbounds %"struct.HIR::PathParams", ptr %4301, i32 0, i32 1
  %4303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %4302, i64 noundef 0)
          to label %4304 unwind label %4319

4304:                                             ; preds = %4298
  %4305 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4303)
          to label %4306 unwind label %4319

4306:                                             ; preds = %4304
  %4307 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %4305)
          to label %4308 unwind label %4319

4308:                                             ; preds = %4306
  %4309 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %4307, i32 0, i32 1
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %358, ptr noundef nonnull align 8 dereferenceable(816) %4299, ptr noundef nonnull align 8 dereferenceable(8) %4309)
          to label %4310 unwind label %4319

4310:                                             ; preds = %4308
  call void @llvm.lifetime.start.p0(i64 8, ptr %359) #11
  %4311 = load ptr, ptr %8, align 8, !tbaa !5
  %4312 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %4311, i32 0, i32 1
  %4313 = load ptr, ptr %4312, align 8, !tbaa !99
  %4314 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4315 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %4313, ptr noundef nonnull align 8 dereferenceable(424) %4314, ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef nonnull align 8 dereferenceable(8) %359)
          to label %4316 unwind label %4323

4316:                                             ; preds = %4310
  br i1 %4315, label %4327, label %4317

4317:                                             ; preds = %4316
  %4318 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %4318, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %4323

4319:                                             ; preds = %4308, %4306, %4304, %4298
  %4320 = landingpad { ptr, i32 }
          cleanup
  %4321 = extractvalue { ptr, i32 } %4320, 0
  store ptr %4321, ptr %15, align 8
  %4322 = extractvalue { ptr, i32 } %4320, 1
  store i32 %4322, ptr %16, align 4
  br label %4373

4323:                                             ; preds = %4317, %4310
  %4324 = landingpad { ptr, i32 }
          cleanup
  %4325 = extractvalue { ptr, i32 } %4324, 0
  store ptr %4325, ptr %15, align 8
  %4326 = extractvalue { ptr, i32 } %4324, 1
  store i32 %4326, ptr %16, align 4
  br label %4372

4327:                                             ; preds = %4316
  call void @llvm.lifetime.start.p0(i64 16, ptr %360) #11
  %4328 = load ptr, ptr %6, align 8, !tbaa !5
  %4329 = load ptr, ptr %81, align 8, !tbaa !5
  %4330 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4329, i32 0, i32 4
  %4331 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4330, i64 noundef 0)
          to label %4332 unwind label %4358

4332:                                             ; preds = %4327
  invoke void @_ZNK3MIR4eval14CallStackEntry14read_param_ptrERKNS_5ParamE(ptr dead_on_unwind writable sret(%"struct.std::pair.434") align 8 %360, ptr noundef nonnull align 8 dereferenceable(816) %4328, ptr noundef nonnull align 8 dereferenceable(48) %4331)
          to label %4333 unwind label %4358

4333:                                             ; preds = %4332
  call void @llvm.lifetime.start.p0(i64 16, ptr %361) #11
  %4334 = load ptr, ptr %6, align 8, !tbaa !5
  %4335 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %4336 unwind label %4362

4336:                                             ; preds = %4333
  %4337 = load ptr, ptr %81, align 8, !tbaa !5
  %4338 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4337, i32 0, i32 4
  %4339 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4338, i64 noundef 1)
          to label %4340 unwind label %4362

4340:                                             ; preds = %4336
  %4341 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %4334, i32 noundef %4335, ptr noundef nonnull align 8 dereferenceable(48) %4339)
          to label %4342 unwind label %4362

4342:                                             ; preds = %4340
  %4343 = getelementptr inbounds { i64, i64 }, ptr %361, i32 0, i32 0
  %4344 = extractvalue { i64, i64 } %4341, 0
  store i64 %4344, ptr %4343, align 8
  %4345 = getelementptr inbounds { i64, i64 }, ptr %361, i32 0, i32 1
  %4346 = extractvalue { i64, i64 } %4341, 1
  store i64 %4346, ptr %4345, align 8
  %4347 = load ptr, ptr %8, align 8, !tbaa !5
  %4348 = getelementptr inbounds %"struct.std::pair.434", ptr %360, i32 0, i32 0
  %4349 = load i64, ptr %4348, align 8, !tbaa !155
  %4350 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %361)
          to label %4351 unwind label %4362

4351:                                             ; preds = %4342
  %4352 = load i64, ptr %359, align 8, !tbaa !109
  %4353 = mul i64 %4350, %4352
  %4354 = add i64 %4349, %4353
  %4355 = getelementptr inbounds %"struct.std::pair.434", ptr %360, i32 0, i32 1
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef nonnull align 8 dereferenceable(8) %4355)
          to label %4356 unwind label %4362

4356:                                             ; preds = %4351
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %4347, i64 noundef %4354, ptr noundef %362)
          to label %4357 unwind label %4366

4357:                                             ; preds = %4356
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %361) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %358) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #11
  br label %4659

4358:                                             ; preds = %4332, %4327
  %4359 = landingpad { ptr, i32 }
          cleanup
  %4360 = extractvalue { ptr, i32 } %4359, 0
  store ptr %4360, ptr %15, align 8
  %4361 = extractvalue { ptr, i32 } %4359, 1
  store i32 %4361, ptr %16, align 4
  br label %4371

4362:                                             ; preds = %4351, %4342, %4340, %4336, %4333
  %4363 = landingpad { ptr, i32 }
          cleanup
  %4364 = extractvalue { ptr, i32 } %4363, 0
  store ptr %4364, ptr %15, align 8
  %4365 = extractvalue { ptr, i32 } %4363, 1
  store i32 %4365, ptr %16, align 4
  br label %4370

4366:                                             ; preds = %4356
  %4367 = landingpad { ptr, i32 }
          cleanup
  %4368 = extractvalue { ptr, i32 } %4367, 0
  store ptr %4368, ptr %15, align 8
  %4369 = extractvalue { ptr, i32 } %4367, 1
  store i32 %4369, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %362) #11
  br label %4370

4370:                                             ; preds = %4366, %4362
  call void @llvm.lifetime.end.p0(i64 16, ptr %361) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %360) #11
  br label %4371

4371:                                             ; preds = %4370, %4358
  call void @llvm.lifetime.end.p0(i64 16, ptr %360) #11
  br label %4372

4372:                                             ; preds = %4371, %4323
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %358) #11
  br label %4373

4373:                                             ; preds = %4372, %4319
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #11
  br label %4732

4374:                                             ; preds = %4297
  %4375 = load ptr, ptr %83, align 8, !tbaa !5
  %4376 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4375, i32 0, i32 0
  %4377 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %4376, ptr noundef @.str.68)
          to label %4378 unwind label %1317

4378:                                             ; preds = %4374
  br i1 %4377, label %4379, label %4566

4379:                                             ; preds = %4378
  call void @llvm.lifetime.start.p0(i64 8, ptr %363) #11
  %4380 = load ptr, ptr %6, align 8, !tbaa !5
  %4381 = load ptr, ptr %83, align 8, !tbaa !5
  %4382 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4381, i32 0, i32 1
  %4383 = getelementptr inbounds %"struct.HIR::PathParams", ptr %4382, i32 0, i32 1
  %4384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %4383, i64 noundef 0)
          to label %4385 unwind label %4395

4385:                                             ; preds = %4379
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %363, ptr noundef nonnull align 8 dereferenceable(816) %4380, ptr noundef nonnull align 8 dereferenceable(8) %4384)
          to label %4386 unwind label %4395

4386:                                             ; preds = %4385
  call void @llvm.lifetime.start.p0(i64 8, ptr %364) #11
  %4387 = load ptr, ptr %8, align 8, !tbaa !5
  %4388 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %4387, i32 0, i32 1
  %4389 = load ptr, ptr %4388, align 8, !tbaa !99
  %4390 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4391 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %4389, ptr noundef nonnull align 8 dereferenceable(424) %4390, ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %4392 unwind label %4399

4392:                                             ; preds = %4386
  br i1 %4391, label %4403, label %4393

4393:                                             ; preds = %4392
  %4394 = call ptr @__cxa_allocate_exception(i64 1) #11
  invoke void @__cxa_throw(ptr %4394, ptr @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %5083 unwind label %4399

4395:                                             ; preds = %4385, %4379
  %4396 = landingpad { ptr, i32 }
          cleanup
  %4397 = extractvalue { ptr, i32 } %4396, 0
  store ptr %4397, ptr %15, align 8
  %4398 = extractvalue { ptr, i32 } %4396, 1
  store i32 %4398, ptr %16, align 4
  br label %4565

4399:                                             ; preds = %4393, %4386
  %4400 = landingpad { ptr, i32 }
          cleanup
  %4401 = extractvalue { ptr, i32 } %4400, 0
  store ptr %4401, ptr %15, align 8
  %4402 = extractvalue { ptr, i32 } %4400, 1
  store i32 %4402, ptr %16, align 4
  br label %4564

4403:                                             ; preds = %4392
  call void @llvm.lifetime.start.p0(i64 16, ptr %365) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %366) #11
  %4404 = load ptr, ptr %6, align 8, !tbaa !5
  %4405 = load ptr, ptr %81, align 8, !tbaa !5
  %4406 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4405, i32 0, i32 4
  %4407 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4406, i64 noundef 0)
          to label %4408 unwind label %4445

4408:                                             ; preds = %4403
  %4409 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %4407)
          to label %4410 unwind label %4445

4410:                                             ; preds = %4408
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %366, ptr noundef nonnull align 8 dereferenceable(816) %4404, ptr noundef nonnull align 8 dereferenceable(32) %4409, ptr noundef null)
          to label %4411 unwind label %4445

4411:                                             ; preds = %4410
  %4412 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind writable sret(%"struct.std::pair.434") align 8 %365, ptr noundef nonnull align 8 dereferenceable(16) %366, ptr noundef nonnull align 8 dereferenceable(120) %4412)
          to label %4413 unwind label %4449

4413:                                             ; preds = %4411
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %366) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %366) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %367) #11
  %4414 = load ptr, ptr %6, align 8, !tbaa !5
  %4415 = load ptr, ptr %81, align 8, !tbaa !5
  %4416 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4415, i32 0, i32 4
  %4417 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4416, i64 noundef 1)
          to label %4418 unwind label %4454

4418:                                             ; preds = %4413
  %4419 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %4414, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %4417)
          to label %4420 unwind label %4454

4420:                                             ; preds = %4418
  %4421 = getelementptr inbounds { i64, i64 }, ptr %367, i32 0, i32 0
  %4422 = extractvalue { i64, i64 } %4419, 0
  store i64 %4422, ptr %4421, align 8
  %4423 = getelementptr inbounds { i64, i64 }, ptr %367, i32 0, i32 1
  %4424 = extractvalue { i64, i64 } %4419, 1
  store i64 %4424, ptr %4423, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %368) #11
  %4425 = load ptr, ptr %6, align 8, !tbaa !5
  %4426 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %4427 unwind label %4458

4427:                                             ; preds = %4420
  %4428 = load ptr, ptr %81, align 8, !tbaa !5
  %4429 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4428, i32 0, i32 4
  %4430 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4429, i64 noundef 2)
          to label %4431 unwind label %4458

4431:                                             ; preds = %4427
  %4432 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %4425, i32 noundef %4426, ptr noundef nonnull align 8 dereferenceable(48) %4430)
          to label %4433 unwind label %4458

4433:                                             ; preds = %4431
  %4434 = getelementptr inbounds { i64, i64 }, ptr %368, i32 0, i32 0
  %4435 = extractvalue { i64, i64 } %4432, 0
  store i64 %4435, ptr %4434, align 8
  %4436 = getelementptr inbounds { i64, i64 }, ptr %368, i32 0, i32 1
  %4437 = extractvalue { i64, i64 } %4432, 1
  store i64 %4437, ptr %4436, align 8
  br label %4438

4438:                                             ; preds = %4433
  %4439 = invoke noundef zeroext i1 @_ZNK4U1286is_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %368)
          to label %4440 unwind label %4458

4440:                                             ; preds = %4438
  br i1 %4439, label %4466, label %4441

4441:                                             ; preds = %4440
  %4442 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %370) #11
  %4443 = getelementptr inbounds %class.anon.485, ptr %370, i32 0, i32 0
  store ptr %83, ptr %4443, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %369, ptr noundef nonnull align 8 dereferenceable(8) %370) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4442, ptr noundef %369)
          to label %4444 unwind label %4462

4444:                                             ; preds = %4441
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %369) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #11
  br label %4466

4445:                                             ; preds = %4410, %4408, %4403
  %4446 = landingpad { ptr, i32 }
          cleanup
  %4447 = extractvalue { ptr, i32 } %4446, 0
  store ptr %4447, ptr %15, align 8
  %4448 = extractvalue { ptr, i32 } %4446, 1
  store i32 %4448, ptr %16, align 4
  br label %4453

4449:                                             ; preds = %4411
  %4450 = landingpad { ptr, i32 }
          cleanup
  %4451 = extractvalue { ptr, i32 } %4450, 0
  store ptr %4451, ptr %15, align 8
  %4452 = extractvalue { ptr, i32 } %4450, 1
  store i32 %4452, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %366) #11
  br label %4453

4453:                                             ; preds = %4449, %4445
  call void @llvm.lifetime.end.p0(i64 16, ptr %366) #11
  br label %4563

4454:                                             ; preds = %4418, %4413
  %4455 = landingpad { ptr, i32 }
          cleanup
  %4456 = extractvalue { ptr, i32 } %4455, 0
  store ptr %4456, ptr %15, align 8
  %4457 = extractvalue { ptr, i32 } %4455, 1
  store i32 %4457, ptr %16, align 4
  br label %4562

4458:                                             ; preds = %4438, %4431, %4427, %4420
  %4459 = landingpad { ptr, i32 }
          cleanup
  %4460 = extractvalue { ptr, i32 } %4459, 0
  store ptr %4460, ptr %15, align 8
  %4461 = extractvalue { ptr, i32 } %4459, 1
  store i32 %4461, ptr %16, align 4
  br label %4561

4462:                                             ; preds = %4441
  %4463 = landingpad { ptr, i32 }
          cleanup
  %4464 = extractvalue { ptr, i32 } %4463, 0
  store ptr %4464, ptr %15, align 8
  %4465 = extractvalue { ptr, i32 } %4463, 1
  store i32 %4465, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %369) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #11
  br label %4561

4466:                                             ; preds = %4444, %4440
  br label %4467

4467:                                             ; preds = %4466
  br label %4468

4468:                                             ; preds = %4467
  br label %4469

4469:                                             ; preds = %4468
  call void @llvm.lifetime.start.p0(i64 16, ptr %371) #11
  %4470 = load i64, ptr %364, align 8, !tbaa !109
  %4471 = trunc i64 %4470 to i32
  %4472 = invoke { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16) %368, i32 noundef %4471)
          to label %4473 unwind label %4486

4473:                                             ; preds = %4469
  %4474 = getelementptr inbounds { i64, i64 }, ptr %371, i32 0, i32 0
  %4475 = extractvalue { i64, i64 } %4472, 0
  store i64 %4475, ptr %4474, align 8
  %4476 = getelementptr inbounds { i64, i64 }, ptr %371, i32 0, i32 1
  %4477 = extractvalue { i64, i64 } %4472, 1
  store i64 %4477, ptr %4476, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %372) #11
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %372, i64 noundef -1, i64 noundef 0)
          to label %4478 unwind label %4490

4478:                                             ; preds = %4473
  %4479 = invoke noundef zeroext i1 @_ZNK4U128ltERKS_(ptr noundef nonnull align 8 dereferenceable(16) %371, ptr noundef nonnull align 8 dereferenceable(16) %372)
          to label %4480 unwind label %4490

4480:                                             ; preds = %4478
  %4481 = xor i1 %4479, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %372) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %371) #11
  br i1 %4481, label %4482, label %4499

4482:                                             ; preds = %4480
  %4483 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #11
  %4484 = getelementptr inbounds %class.anon.486, ptr %374, i32 0, i32 0
  store ptr %83, ptr %4484, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %373, ptr noundef nonnull align 8 dereferenceable(8) %374) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4483, ptr noundef %373)
          to label %4485 unwind label %4495

4485:                                             ; preds = %4482
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #11
  br label %4499

4486:                                             ; preds = %4469
  %4487 = landingpad { ptr, i32 }
          cleanup
  %4488 = extractvalue { ptr, i32 } %4487, 0
  store ptr %4488, ptr %15, align 8
  %4489 = extractvalue { ptr, i32 } %4487, 1
  store i32 %4489, ptr %16, align 4
  br label %4494

4490:                                             ; preds = %4478, %4473
  %4491 = landingpad { ptr, i32 }
          cleanup
  %4492 = extractvalue { ptr, i32 } %4491, 0
  store ptr %4492, ptr %15, align 8
  %4493 = extractvalue { ptr, i32 } %4491, 1
  store i32 %4493, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %372) #11
  br label %4494

4494:                                             ; preds = %4490, %4486
  call void @llvm.lifetime.end.p0(i64 16, ptr %371) #11
  br label %4561

4495:                                             ; preds = %4482
  %4496 = landingpad { ptr, i32 }
          cleanup
  %4497 = extractvalue { ptr, i32 } %4496, 0
  store ptr %4497, ptr %15, align 8
  %4498 = extractvalue { ptr, i32 } %4496, 1
  store i32 %4498, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %373) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #11
  br label %4561

4499:                                             ; preds = %4485, %4480
  br label %4500

4500:                                             ; preds = %4499
  br label %4501

4501:                                             ; preds = %4500
  call void @llvm.lifetime.start.p0(i64 8, ptr %375) #11
  %4502 = load i64, ptr %364, align 8, !tbaa !109
  %4503 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %368)
          to label %4504 unwind label %4513

4504:                                             ; preds = %4501
  %4505 = mul i64 %4502, %4503
  store i64 %4505, ptr %375, align 8, !tbaa !109
  br label %4506

4506:                                             ; preds = %4504
  %4507 = getelementptr inbounds %"struct.std::pair.434", ptr %365, i32 0, i32 0
  %4508 = load i64, ptr %4507, align 8, !tbaa !155
  %4509 = icmp uge i64 %4508, 4096
  br i1 %4509, label %4521, label %4510

4510:                                             ; preds = %4506
  %4511 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %377) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_47vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %376, ptr noundef nonnull align 1 dereferenceable(1) %377) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4511, ptr noundef %376)
          to label %4512 unwind label %4517

4512:                                             ; preds = %4510
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %377) #11
  br label %4521

4513:                                             ; preds = %4501
  %4514 = landingpad { ptr, i32 }
          cleanup
  %4515 = extractvalue { ptr, i32 } %4514, 0
  store ptr %4515, ptr %15, align 8
  %4516 = extractvalue { ptr, i32 } %4514, 1
  store i32 %4516, ptr %16, align 4
  br label %4560

4517:                                             ; preds = %4510
  %4518 = landingpad { ptr, i32 }
          cleanup
  %4519 = extractvalue { ptr, i32 } %4518, 0
  store ptr %4519, ptr %15, align 8
  %4520 = extractvalue { ptr, i32 } %4518, 1
  store i32 %4520, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %377) #11
  br label %4560

4521:                                             ; preds = %4512, %4506
  br label %4522

4522:                                             ; preds = %4521
  br label %4523

4523:                                             ; preds = %4522
  call void @llvm.lifetime.start.p0(i64 16, ptr %378) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %379) #11
  %4524 = getelementptr inbounds %"struct.std::pair.434", ptr %365, i32 0, i32 1
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull align 8 dereferenceable(8) %4524)
          to label %4525 unwind label %4541

4525:                                             ; preds = %4523
  %4526 = getelementptr inbounds %"struct.std::pair.434", ptr %365, i32 0, i32 0
  %4527 = load i64, ptr %4526, align 8, !tbaa !155
  %4528 = sub i64 %4527, 4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %379, ptr noundef %380, i64 noundef %4528)
          to label %4529 unwind label %4545

4529:                                             ; preds = %4525
  %4530 = load i64, ptr %375, align 8, !tbaa !109
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind writable sret(%"class.MIR::eval::ValueRef") align 8 %378, ptr noundef nonnull align 8 dereferenceable(16) %379, i64 noundef 0, i64 noundef %4530)
          to label %4531 unwind label %4549

4531:                                             ; preds = %4529
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %379) #11
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %379) #11
  %4532 = load ptr, ptr %8, align 8, !tbaa !5
  %4533 = load i64, ptr %375, align 8, !tbaa !109
  %4534 = invoke noundef ptr @_ZN3MIR4eval8ValueRef15ext_write_bytesERKNS_11TypeResolveEm(ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef nonnull align 8 dereferenceable(120) %4532, i64 noundef %4533)
          to label %4535 unwind label %4555

4535:                                             ; preds = %4531
  %4536 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %367)
          to label %4537 unwind label %4555

4537:                                             ; preds = %4535
  %4538 = trunc i64 %4536 to i32
  %4539 = trunc i32 %4538 to i8
  %4540 = load i64, ptr %375, align 8, !tbaa !109
  call void @llvm.memset.p0.i64(ptr align 1 %4534, i8 %4539, i64 %4540, i1 false)
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %378) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %378) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %368) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %367) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %365) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #11
  br label %4658

4541:                                             ; preds = %4523
  %4542 = landingpad { ptr, i32 }
          cleanup
  %4543 = extractvalue { ptr, i32 } %4542, 0
  store ptr %4543, ptr %15, align 8
  %4544 = extractvalue { ptr, i32 } %4542, 1
  store i32 %4544, ptr %16, align 4
  br label %4554

4545:                                             ; preds = %4525
  %4546 = landingpad { ptr, i32 }
          cleanup
  %4547 = extractvalue { ptr, i32 } %4546, 0
  store ptr %4547, ptr %15, align 8
  %4548 = extractvalue { ptr, i32 } %4546, 1
  store i32 %4548, ptr %16, align 4
  br label %4553

4549:                                             ; preds = %4529
  %4550 = landingpad { ptr, i32 }
          cleanup
  %4551 = extractvalue { ptr, i32 } %4550, 0
  store ptr %4551, ptr %15, align 8
  %4552 = extractvalue { ptr, i32 } %4550, 1
  store i32 %4552, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %379) #11
  br label %4553

4553:                                             ; preds = %4549, %4545
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #11
  br label %4554

4554:                                             ; preds = %4553, %4541
  call void @llvm.lifetime.end.p0(i64 16, ptr %379) #11
  br label %4559

4555:                                             ; preds = %4535, %4531
  %4556 = landingpad { ptr, i32 }
          cleanup
  %4557 = extractvalue { ptr, i32 } %4556, 0
  store ptr %4557, ptr %15, align 8
  %4558 = extractvalue { ptr, i32 } %4556, 1
  store i32 %4558, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %378) #11
  br label %4559

4559:                                             ; preds = %4555, %4554
  call void @llvm.lifetime.end.p0(i64 16, ptr %378) #11
  br label %4560

4560:                                             ; preds = %4559, %4517, %4513
  call void @llvm.lifetime.end.p0(i64 8, ptr %375) #11
  br label %4561

4561:                                             ; preds = %4560, %4495, %4494, %4462, %4458
  call void @llvm.lifetime.end.p0(i64 16, ptr %368) #11
  br label %4562

4562:                                             ; preds = %4561, %4454
  call void @llvm.lifetime.end.p0(i64 16, ptr %367) #11
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %365) #11
  br label %4563

4563:                                             ; preds = %4562, %4453
  call void @llvm.lifetime.end.p0(i64 16, ptr %365) #11
  br label %4564

4564:                                             ; preds = %4563, %4399
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #11
  br label %4565

4565:                                             ; preds = %4564, %4395
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #11
  br label %4732

4566:                                             ; preds = %4378
  %4567 = load ptr, ptr %83, align 8, !tbaa !5
  %4568 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4567, i32 0, i32 0
  %4569 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %4568, ptr noundef @.str.69)
          to label %4570 unwind label %1317

4570:                                             ; preds = %4566
  br i1 %4569, label %4571, label %4643

4571:                                             ; preds = %4570
  call void @llvm.lifetime.start.p0(i64 8, ptr %381) #11
  %4572 = load ptr, ptr %6, align 8, !tbaa !5
  %4573 = load ptr, ptr %83, align 8, !tbaa !5
  %4574 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %4573, i32 0, i32 1
  %4575 = getelementptr inbounds %"struct.HIR::PathParams", ptr %4574, i32 0, i32 1
  %4576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %4575, i64 noundef 0)
          to label %4577 unwind label %4588

4577:                                             ; preds = %4571
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %381, ptr noundef nonnull align 8 dereferenceable(816) %4572, ptr noundef nonnull align 8 dereferenceable(8) %4576)
          to label %4578 unwind label %4588

4578:                                             ; preds = %4577
  br label %4579

4579:                                             ; preds = %4578
  %4580 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %4581 unwind label %4592

4581:                                             ; preds = %4579
  %4582 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %4580)
          to label %4583 unwind label %4592

4583:                                             ; preds = %4581
  br i1 %4582, label %4600, label %4584

4584:                                             ; preds = %4583
  %4585 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %383) #11
  %4586 = getelementptr inbounds %class.anon.489, ptr %383, i32 0, i32 0
  store ptr %381, ptr %4586, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_48vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %382, ptr noundef nonnull align 8 dereferenceable(8) %383) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4585, ptr noundef %382)
          to label %4587 unwind label %4596

4587:                                             ; preds = %4584
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %383) #11
  br label %4600

4588:                                             ; preds = %4577, %4571
  %4589 = landingpad { ptr, i32 }
          cleanup
  %4590 = extractvalue { ptr, i32 } %4589, 0
  store ptr %4590, ptr %15, align 8
  %4591 = extractvalue { ptr, i32 } %4589, 1
  store i32 %4591, ptr %16, align 4
  br label %4642

4592:                                             ; preds = %4607, %4605, %4603, %4581, %4579
  %4593 = landingpad { ptr, i32 }
          cleanup
  %4594 = extractvalue { ptr, i32 } %4593, 0
  store ptr %4594, ptr %15, align 8
  %4595 = extractvalue { ptr, i32 } %4593, 1
  store i32 %4595, ptr %16, align 4
  br label %4641

4596:                                             ; preds = %4584
  %4597 = landingpad { ptr, i32 }
          cleanup
  %4598 = extractvalue { ptr, i32 } %4597, 0
  store ptr %4598, ptr %15, align 8
  %4599 = extractvalue { ptr, i32 } %4597, 1
  store i32 %4599, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %382) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %383) #11
  br label %4641

4600:                                             ; preds = %4587, %4583
  br label %4601

4601:                                             ; preds = %4600
  br label %4602

4602:                                             ; preds = %4601
  br label %4603

4603:                                             ; preds = %4602
  %4604 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %4605 unwind label %4592

4605:                                             ; preds = %4603
  %4606 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %4604)
          to label %4607 unwind label %4592

4607:                                             ; preds = %4605
  %4608 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %4606, i32 0, i32 1
  %4609 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %4608)
          to label %4610 unwind label %4592

4610:                                             ; preds = %4607
  br i1 %4609, label %4619, label %4611

4611:                                             ; preds = %4610
  %4612 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %385) #11
  %4613 = getelementptr inbounds %class.anon.490, ptr %385, i32 0, i32 0
  store ptr %381, ptr %4613, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_49vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %384, ptr noundef nonnull align 8 dereferenceable(8) %385) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4612, ptr noundef %384)
          to label %4614 unwind label %4615

4614:                                             ; preds = %4611
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #11
  br label %4619

4615:                                             ; preds = %4611
  %4616 = landingpad { ptr, i32 }
          cleanup
  %4617 = extractvalue { ptr, i32 } %4616, 0
  store ptr %4617, ptr %15, align 8
  %4618 = extractvalue { ptr, i32 } %4616, 1
  store i32 %4618, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %384) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #11
  br label %4641

4619:                                             ; preds = %4614, %4610
  br label %4620

4620:                                             ; preds = %4619
  br label %4621

4621:                                             ; preds = %4620
  call void @llvm.lifetime.start.p0(i64 8, ptr %386) #11
  %4622 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %4623 unwind label %4637

4623:                                             ; preds = %4621
  %4624 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %4622)
          to label %4625 unwind label %4637

4625:                                             ; preds = %4623
  %4626 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %4624, i32 0, i32 1
  %4627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %4626)
          to label %4628 unwind label %4637

4628:                                             ; preds = %4625
  %4629 = load ptr, ptr %4627, align 8, !tbaa !5
  store ptr %4629, ptr %386, align 8, !tbaa !5
  %4630 = load ptr, ptr %8, align 8, !tbaa !5
  %4631 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %4632 unwind label %4637

4632:                                             ; preds = %4628
  %4633 = load ptr, ptr %386, align 8, !tbaa !5
  %4634 = invoke noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200) %4633)
          to label %4635 unwind label %4637

4635:                                             ; preds = %4632
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(120) %4630, i32 noundef %4631, i64 noundef %4634)
          to label %4636 unwind label %4637

4636:                                             ; preds = %4635
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #11
  br label %4657

4637:                                             ; preds = %4635, %4632, %4628, %4625, %4623, %4621
  %4638 = landingpad { ptr, i32 }
          cleanup
  %4639 = extractvalue { ptr, i32 } %4638, 0
  store ptr %4639, ptr %15, align 8
  %4640 = extractvalue { ptr, i32 } %4638, 1
  store i32 %4640, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %386) #11
  br label %4641

4641:                                             ; preds = %4637, %4615, %4596, %4592
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %381) #11
  br label %4642

4642:                                             ; preds = %4641, %4588
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #11
  br label %4732

4643:                                             ; preds = %4570
  br label %4644

4644:                                             ; preds = %4643
  %4645 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %388) #11
  %4646 = getelementptr inbounds %class.anon.491, ptr %388, i32 0, i32 0
  store ptr %83, ptr %4646, align 8, !tbaa !5
  %4647 = getelementptr inbounds %class.anon.491, ptr %388, i32 0, i32 1
  %4648 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4648, ptr %4647, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_50vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %387, ptr noundef nonnull align 8 dereferenceable(16) %388) #11
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4645, ptr noundef %387)
          to label %4649 unwind label %4651

4649:                                             ; preds = %4644
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %388) #11
  %4650 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %4650, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4650, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %1317

4651:                                             ; preds = %4644
  %4652 = landingpad { ptr, i32 }
          cleanup
  %4653 = extractvalue { ptr, i32 } %4652, 0
  store ptr %4653, ptr %15, align 8
  %4654 = extractvalue { ptr, i32 } %4652, 1
  store i32 %4654, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %388) #11
  br label %4732

4655:                                             ; No predecessors!
  br label %4656

4656:                                             ; preds = %4655
  br label %4657

4657:                                             ; preds = %4656, %4636
  br label %4658

4658:                                             ; preds = %4657, %4537
  br label %4659

4659:                                             ; preds = %4658, %4357
  br label %4660

4660:                                             ; preds = %4659, %4252
  br label %4661

4661:                                             ; preds = %4660
  br label %4662

4662:                                             ; preds = %4661, %3507
  br label %4663

4663:                                             ; preds = %4662, %3464
  br label %4664

4664:                                             ; preds = %4663, %3426
  br label %4665

4665:                                             ; preds = %4664, %3409
  br label %4666

4666:                                             ; preds = %4665, %3394
  br label %4667

4667:                                             ; preds = %4666, %3343
  br label %4668

4668:                                             ; preds = %4667, %3291
  br label %4669

4669:                                             ; preds = %4668, %3220
  br label %4670

4670:                                             ; preds = %4669, %3149
  br label %4671

4671:                                             ; preds = %4670, %3079
  br label %4672

4672:                                             ; preds = %4671, %3028
  br label %4673

4673:                                             ; preds = %4672, %2977
  br label %4674

4674:                                             ; preds = %4673, %2921
  br label %4675

4675:                                             ; preds = %4674, %2865
  br label %4676

4676:                                             ; preds = %4675, %2800
  br label %4677

4677:                                             ; preds = %4676, %2723
  br label %4678

4678:                                             ; preds = %4677, %2646
  br label %4679

4679:                                             ; preds = %4678, %2573
  br label %4680

4680:                                             ; preds = %4679, %2352
  br label %4681

4681:                                             ; preds = %4680, %2237
  br label %4682

4682:                                             ; preds = %4681, %2091
  br label %4683

4683:                                             ; preds = %4682, %1979
  br label %4684

4684:                                             ; preds = %4683, %1836
  br label %4685

4685:                                             ; preds = %4684, %1683
  br label %4686

4686:                                             ; preds = %4685, %1529
  br label %4687

4687:                                             ; preds = %4686, %1466
  br label %4688

4688:                                             ; preds = %4687, %1407
  br label %4689

4689:                                             ; preds = %4688, %1373
  br label %4690

4690:                                             ; preds = %4689, %1331
  br label %4691

4691:                                             ; preds = %4690
  %4692 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4693 unwind label %1317

4693:                                             ; preds = %4691
  br i1 %4692, label %4694, label %4725

4694:                                             ; preds = %4693
  %4695 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %4696 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %4695, ptr noundef @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %4697 unwind label %1317

4697:                                             ; preds = %4694
  %4698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4696, ptr noundef @.str.24)
          to label %4699 unwind label %1317

4699:                                             ; preds = %4697
  %4700 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 3
  %4701 = load i32, ptr %4700, align 8, !tbaa !11
  %4702 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %4698, i32 noundef %4701)
          to label %4703 unwind label %1317

4703:                                             ; preds = %4699
  %4704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4702, ptr noundef @.str.16)
          to label %4705 unwind label %1317

4705:                                             ; preds = %4703
  %4706 = load ptr, ptr %6, align 8, !tbaa !5
  %4707 = getelementptr inbounds %"class.MIR::eval::CallStackEntry", ptr %4706, i32 0, i32 0
  %4708 = load i32, ptr %4707, align 8, !tbaa !46
  %4709 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %4704, i32 noundef %4708)
          to label %4710 unwind label %1317

4710:                                             ; preds = %4705
  %4711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4709, ptr noundef @.str.17)
          to label %4712 unwind label %1317

4712:                                             ; preds = %4710
  %4713 = load ptr, ptr %81, align 8, !tbaa !5
  %4714 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4713, i32 0, i32 2
  %4715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %4711, ptr noundef nonnull align 8 dereferenceable(32) %4714)
          to label %4716 unwind label %1317

4716:                                             ; preds = %4712
  %4717 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4715, ptr noundef @.str.25)
          to label %4718 unwind label %1317

4718:                                             ; preds = %4716
  %4719 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %4717, ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %4720 unwind label %1317

4720:                                             ; preds = %4718
  %4721 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %4719, ptr noundef @_ZSt3decRSt8ios_base)
          to label %4722 unwind label %1317

4722:                                             ; preds = %4720
  %4723 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %4721, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %4724 unwind label %1317

4724:                                             ; preds = %4722
  br label %4725

4725:                                             ; preds = %4724, %4693
  br label %4726

4726:                                             ; preds = %4725
  br label %4727

4727:                                             ; preds = %4726
  %4728 = load ptr, ptr %81, align 8, !tbaa !5
  %4729 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4728, i32 0, i32 0
  %4730 = load i32, ptr %4729, align 8, !tbaa !166
  store i32 %4730, ptr %4, align 4
  store i32 1, ptr %10, align 4
  br label %4731

4731:                                             ; preds = %4727, %4030
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #11
  br label %5044

4732:                                             ; preds = %4651, %4642, %4565, %4373, %4292, %4066, %3509, %3465, %3427, %3410, %3396, %3345, %3294, %3223, %3152, %3081, %3030, %2979, %2923, %2867, %2811, %2734, %2657, %2580, %2357, %2242, %2096, %1984, %1852, %1764, %1538, %1505, %1445, %1374, %1332, %1317
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #11
  br label %5051

4733:                                             ; preds = %1276
  call void @llvm.lifetime.start.p0(i64 8, ptr %389) #11
  %4734 = load ptr, ptr %81, align 8, !tbaa !5
  %4735 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4734, i32 0, i32 3
  %4736 = call noundef ptr @_ZNK3MIR10CallTarget8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %4735)
  store ptr %4736, ptr %389, align 8, !tbaa !5
  %4737 = load ptr, ptr %389, align 8, !tbaa !5
  %4738 = icmp ne ptr %4737, null
  br i1 %4738, label %4739, label %5024

4739:                                             ; preds = %4733
  call void @llvm.lifetime.start.p0(i64 8, ptr %390) #11
  %4740 = load ptr, ptr %389, align 8, !tbaa !5
  store ptr %4740, ptr %390, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %391) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %392) #11
  %4741 = load ptr, ptr %82, align 8, !tbaa !5
  %4742 = load ptr, ptr %8, align 8, !tbaa !5
  %4743 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %4742, i32 0, i32 1
  %4744 = load ptr, ptr %4743, align 8, !tbaa !99
  %4745 = load ptr, ptr %390, align 8, !tbaa !5
  call void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %392, ptr noundef nonnull align 8 dereferenceable(96) %4741, ptr noundef nonnull align 8 dereferenceable(8) %4744, ptr noundef nonnull align 8 dereferenceable(88) %4745, i1 noundef zeroext true)
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.431") align 8 %391, ptr noundef nonnull align 8 dereferenceable(88) %392)
          to label %4746 unwind label %4768

4746:                                             ; preds = %4739
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %392) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %392) #11
  call void @llvm.lifetime.start.p0(i64 144, ptr %393) #11
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %393)
          to label %4747 unwind label %4772

4747:                                             ; preds = %4746
  call void @llvm.lifetime.start.p0(i64 8, ptr %394) #11
  store ptr null, ptr %394, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %395) #11
  %4748 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %4749 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4750 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %391) #11
  %4751 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8) %4748, ptr noundef nonnull align 8 dereferenceable(424) %4749, ptr noundef nonnull align 8 dereferenceable(88) %4750, ptr noundef nonnull align 8 dereferenceable(144) %393, ptr noundef nonnull align 8 dereferenceable(8) %394)
          to label %4752 unwind label %4776

4752:                                             ; preds = %4747
  store ptr %4751, ptr %395, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %396) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %396) #11
  %4753 = load ptr, ptr %81, align 8, !tbaa !5
  %4754 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4753, i32 0, i32 4
  %4755 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4754) #11
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %396, i64 noundef %4755)
          to label %4756 unwind label %4780

4756:                                             ; preds = %4752
  call void @llvm.lifetime.start.p0(i64 8, ptr %397) #11
  %4757 = load ptr, ptr %81, align 8, !tbaa !5
  %4758 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4757, i32 0, i32 4
  store ptr %4758, ptr %397, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %398) #11
  %4759 = load ptr, ptr %397, align 8, !tbaa !5
  %4760 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4759) #11
  %4761 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.240", ptr %398, i32 0, i32 0
  store ptr %4760, ptr %4761, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #11
  %4762 = load ptr, ptr %397, align 8, !tbaa !5
  %4763 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4762) #11
  %4764 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.240", ptr %399, i32 0, i32 0
  store ptr %4763, ptr %4764, align 8
  br label %4765

4765:                                             ; preds = %4804, %4756
  %4766 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef nonnull align 8 dereferenceable(8) %399) #11
  br i1 %4766, label %4784, label %4767

4767:                                             ; preds = %4765
  store i32 244, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #11
  br label %4848

4768:                                             ; preds = %4739
  %4769 = landingpad { ptr, i32 }
          cleanup
  %4770 = extractvalue { ptr, i32 } %4769, 0
  store ptr %4770, ptr %15, align 8
  %4771 = extractvalue { ptr, i32 } %4769, 1
  store i32 %4771, ptr %16, align 4
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %392) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %392) #11
  br label %5023

4772:                                             ; preds = %4746
  %4773 = landingpad { ptr, i32 }
          cleanup
  %4774 = extractvalue { ptr, i32 } %4773, 0
  store ptr %4774, ptr %15, align 8
  %4775 = extractvalue { ptr, i32 } %4773, 1
  store i32 %4775, ptr %16, align 4
  br label %5022

4776:                                             ; preds = %4747
  %4777 = landingpad { ptr, i32 }
          cleanup
  %4778 = extractvalue { ptr, i32 } %4777, 0
  store ptr %4778, ptr %15, align 8
  %4779 = extractvalue { ptr, i32 } %4777, 1
  store i32 %4779, ptr %16, align 4
  br label %5021

4780:                                             ; preds = %4752
  %4781 = landingpad { ptr, i32 }
          cleanup
  %4782 = extractvalue { ptr, i32 } %4781, 0
  store ptr %4782, ptr %15, align 8
  %4783 = extractvalue { ptr, i32 } %4781, 1
  store i32 %4783, ptr %16, align 4
  br label %5020

4784:                                             ; preds = %4765
  call void @llvm.lifetime.start.p0(i64 8, ptr %400) #11
  %4785 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %398) #11
  store ptr %4785, ptr %400, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %401) #11
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %401)
          to label %4786 unwind label %4806

4786:                                             ; preds = %4784
  call void @llvm.lifetime.start.p0(i64 8, ptr %402) #11
  %4787 = load ptr, ptr %8, align 8, !tbaa !5
  %4788 = load ptr, ptr %400, align 8, !tbaa !5
  %4789 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %4787, ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef nonnull align 8 dereferenceable(48) %4788)
          to label %4790 unwind label %4810

4790:                                             ; preds = %4786
  store ptr %4789, ptr %402, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %403) #11
  %4791 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4792 = load ptr, ptr %8, align 8, !tbaa !5
  %4793 = load ptr, ptr %402, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.MIR::eval::AllocationPtr") align 8 %403, ptr noundef nonnull align 8 dereferenceable(424) %4791, ptr noundef nonnull align 8 dereferenceable(120) %4792, ptr noundef nonnull align 8 dereferenceable(8) %4793)
          to label %4794 unwind label %4814

4794:                                             ; preds = %4790
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %396, ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %4795 unwind label %4818

4795:                                             ; preds = %4794
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %404) #11
  %4796 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %396) #11
  invoke void @_ZN3MIR4eval13AllocationPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull align 8 dereferenceable(8) %4796)
          to label %4797 unwind label %4823

4797:                                             ; preds = %4795
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef %406)
          to label %4798 unwind label %4827

4798:                                             ; preds = %4797
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %404, ptr noundef %405, i64 noundef 0)
          to label %4799 unwind label %4831

4799:                                             ; preds = %4798
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #11
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %406) #11
  %4800 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %407, ptr noundef nonnull align 8 dereferenceable(16) %404)
          to label %4801 unwind label %4836

4801:                                             ; preds = %4799
  %4802 = load ptr, ptr %400, align 8, !tbaa !5
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %4800, ptr noundef %407, ptr noundef nonnull align 8 dereferenceable(48) %4802)
          to label %4803 unwind label %4840

4803:                                             ; preds = %4801
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %407) #11
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %404) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %404) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %402) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %401) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %400) #11
  br label %4804

4804:                                             ; preds = %4803
  %4805 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %398) #11
  br label %4765

4806:                                             ; preds = %4784
  %4807 = landingpad { ptr, i32 }
          cleanup
  %4808 = extractvalue { ptr, i32 } %4807, 0
  store ptr %4808, ptr %15, align 8
  %4809 = extractvalue { ptr, i32 } %4807, 1
  store i32 %4809, ptr %16, align 4
  br label %4847

4810:                                             ; preds = %4786
  %4811 = landingpad { ptr, i32 }
          cleanup
  %4812 = extractvalue { ptr, i32 } %4811, 0
  store ptr %4812, ptr %15, align 8
  %4813 = extractvalue { ptr, i32 } %4811, 1
  store i32 %4813, ptr %16, align 4
  br label %4846

4814:                                             ; preds = %4790
  %4815 = landingpad { ptr, i32 }
          cleanup
  %4816 = extractvalue { ptr, i32 } %4815, 0
  store ptr %4816, ptr %15, align 8
  %4817 = extractvalue { ptr, i32 } %4815, 1
  store i32 %4817, ptr %16, align 4
  br label %4822

4818:                                             ; preds = %4794
  %4819 = landingpad { ptr, i32 }
          cleanup
  %4820 = extractvalue { ptr, i32 } %4819, 0
  store ptr %4820, ptr %15, align 8
  %4821 = extractvalue { ptr, i32 } %4819, 1
  store i32 %4821, ptr %16, align 4
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #11
  br label %4822

4822:                                             ; preds = %4818, %4814
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #11
  br label %4846

4823:                                             ; preds = %4795
  %4824 = landingpad { ptr, i32 }
          cleanup
  %4825 = extractvalue { ptr, i32 } %4824, 0
  store ptr %4825, ptr %15, align 8
  %4826 = extractvalue { ptr, i32 } %4824, 1
  store i32 %4826, ptr %16, align 4
  br label %4845

4827:                                             ; preds = %4797
  %4828 = landingpad { ptr, i32 }
          cleanup
  %4829 = extractvalue { ptr, i32 } %4828, 0
  store ptr %4829, ptr %15, align 8
  %4830 = extractvalue { ptr, i32 } %4828, 1
  store i32 %4830, ptr %16, align 4
  br label %4835

4831:                                             ; preds = %4798
  %4832 = landingpad { ptr, i32 }
          cleanup
  %4833 = extractvalue { ptr, i32 } %4832, 0
  store ptr %4833, ptr %15, align 8
  %4834 = extractvalue { ptr, i32 } %4832, 1
  store i32 %4834, ptr %16, align 4
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #11
  br label %4835

4835:                                             ; preds = %4831, %4827
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %406) #11
  br label %4845

4836:                                             ; preds = %4799
  %4837 = landingpad { ptr, i32 }
          cleanup
  %4838 = extractvalue { ptr, i32 } %4837, 0
  store ptr %4838, ptr %15, align 8
  %4839 = extractvalue { ptr, i32 } %4837, 1
  store i32 %4839, ptr %16, align 4
  br label %4844

4840:                                             ; preds = %4801
  %4841 = landingpad { ptr, i32 }
          cleanup
  %4842 = extractvalue { ptr, i32 } %4841, 0
  store ptr %4842, ptr %15, align 8
  %4843 = extractvalue { ptr, i32 } %4841, 1
  store i32 %4843, ptr %16, align 4
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %407) #11
  br label %4844

4844:                                             ; preds = %4840, %4836
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %404) #11
  br label %4845

4845:                                             ; preds = %4844, %4835, %4823
  call void @llvm.lifetime.end.p0(i64 16, ptr %404) #11
  br label %4846

4846:                                             ; preds = %4845, %4822, %4810
  call void @llvm.lifetime.end.p0(i64 8, ptr %402) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %401) #11
  br label %4847

4847:                                             ; preds = %4846, %4806
  call void @llvm.lifetime.end.p0(i64 8, ptr %401) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %400) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %397) #11
  br label %5020

4848:                                             ; preds = %4767
  call void @llvm.lifetime.start.p0(i64 24, ptr %408) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %408) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %409) #11
  %4849 = load ptr, ptr %395, align 8, !tbaa !5
  %4850 = getelementptr inbounds %"class.HIR::Function", ptr %4849, i32 0, i32 8
  store ptr %4850, ptr %409, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %410) #11
  %4851 = load ptr, ptr %409, align 8, !tbaa !5
  %4852 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4851) #11
  %4853 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %410, i32 0, i32 0
  store ptr %4852, ptr %4853, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %411) #11
  %4854 = load ptr, ptr %409, align 8, !tbaa !5
  %4855 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4854) #11
  %4856 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %411, i32 0, i32 0
  store ptr %4855, ptr %4856, align 8
  br label %4857

4857:                                             ; preds = %4870, %4848
  %4858 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %411) #11
  br i1 %4858, label %4860, label %4859

4859:                                             ; preds = %4857
  store i32 246, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #11
  br label %4891

4860:                                             ; preds = %4857
  call void @llvm.lifetime.start.p0(i64 8, ptr %412) #11
  %4861 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %410) #11
  store ptr %4861, ptr %412, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 224, ptr %413) #11
  call void @llvm.lifetime.start.p0(i64 216, ptr %414) #11
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414)
          to label %4862 unwind label %4872

4862:                                             ; preds = %4860
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #11
  %4863 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4864 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %4865 = load ptr, ptr %412, align 8, !tbaa !5
  %4866 = getelementptr inbounds %"struct.std::pair.444", ptr %4865, i32 0, i32 1
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %415, ptr noundef nonnull align 8 dereferenceable(424) %4863, ptr noundef nonnull align 8 dereferenceable(8) %4864, ptr noundef nonnull align 8 dereferenceable(8) %4866, ptr noundef nonnull align 8 dereferenceable(96) %393)
          to label %4867 unwind label %4876

4867:                                             ; preds = %4862
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind writable sret(%"struct.std::pair.444") align 8 %413, ptr noundef nonnull align 8 dereferenceable(212) %414, ptr noundef nonnull align 8 dereferenceable(8) %415)
          to label %4868 unwind label %4880

4868:                                             ; preds = %4867
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %408, ptr noundef nonnull align 8 dereferenceable(224) %413)
          to label %4869 unwind label %4884

4869:                                             ; preds = %4868
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %413) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #11
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414) #11
  call void @llvm.lifetime.end.p0(i64 216, ptr %414) #11
  call void @llvm.lifetime.end.p0(i64 224, ptr %413) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %412) #11
  br label %4870

4870:                                             ; preds = %4869
  %4871 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %410) #11
  br label %4857

4872:                                             ; preds = %4860
  %4873 = landingpad { ptr, i32 }
          cleanup
  %4874 = extractvalue { ptr, i32 } %4873, 0
  store ptr %4874, ptr %15, align 8
  %4875 = extractvalue { ptr, i32 } %4873, 1
  store i32 %4875, ptr %16, align 4
  br label %4890

4876:                                             ; preds = %4862
  %4877 = landingpad { ptr, i32 }
          cleanup
  %4878 = extractvalue { ptr, i32 } %4877, 0
  store ptr %4878, ptr %15, align 8
  %4879 = extractvalue { ptr, i32 } %4877, 1
  store i32 %4879, ptr %16, align 4
  br label %4889

4880:                                             ; preds = %4867
  %4881 = landingpad { ptr, i32 }
          cleanup
  %4882 = extractvalue { ptr, i32 } %4881, 0
  store ptr %4882, ptr %15, align 8
  %4883 = extractvalue { ptr, i32 } %4881, 1
  store i32 %4883, ptr %16, align 4
  br label %4888

4884:                                             ; preds = %4868
  %4885 = landingpad { ptr, i32 }
          cleanup
  %4886 = extractvalue { ptr, i32 } %4885, 0
  store ptr %4886, ptr %15, align 8
  %4887 = extractvalue { ptr, i32 } %4885, 1
  store i32 %4887, ptr %16, align 4
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %413) #11
  br label %4888

4888:                                             ; preds = %4884, %4880
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #11
  br label %4889

4889:                                             ; preds = %4888, %4876
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #11
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %414) #11
  br label %4890

4890:                                             ; preds = %4889, %4872
  call void @llvm.lifetime.end.p0(i64 216, ptr %414) #11
  call void @llvm.lifetime.end.p0(i64 224, ptr %413) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %412) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #11
  br label %5019

4891:                                             ; preds = %4859
  call void @llvm.lifetime.start.p0(i64 8, ptr %416) #11
  %4892 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4893 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 0
  %4894 = load ptr, ptr %395, align 8, !tbaa !5
  %4895 = getelementptr inbounds %"class.HIR::Function", ptr %4894, i32 0, i32 10
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %416, ptr noundef nonnull align 8 dereferenceable(424) %4892, ptr noundef nonnull align 8 dereferenceable(8) %4893, ptr noundef nonnull align 8 dereferenceable(8) %4895, ptr noundef nonnull align 8 dereferenceable(96) %393)
          to label %4896 unwind label %4914

4896:                                             ; preds = %4891
  %4897 = load ptr, ptr %395, align 8, !tbaa !5
  %4898 = getelementptr inbounds %"class.HIR::Function", ptr %4897, i32 0, i32 11
  %4899 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %4898)
          to label %4900 unwind label %4918

4900:                                             ; preds = %4896
  br i1 %4899, label %4954, label %4901

4901:                                             ; preds = %4900
  %4902 = load ptr, ptr %395, align 8, !tbaa !5
  %4903 = getelementptr inbounds %"class.HIR::Function", ptr %4902, i32 0, i32 11
  %4904 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %4903, i32 0, i32 3
  %4905 = invoke noundef zeroext i1 @_ZNK3MIR15FunctionPointercvbEv(ptr noundef nonnull align 8 dereferenceable(8) %4904)
          to label %4906 unwind label %4918

4906:                                             ; preds = %4901
  br i1 %4905, label %4954, label %4907

4907:                                             ; preds = %4906
  %4908 = load ptr, ptr %395, align 8, !tbaa !5
  %4909 = getelementptr inbounds %"class.HIR::Function", ptr %4908, i32 0, i32 1
  %4910 = getelementptr inbounds %"struct.HIR::Linkage", ptr %4909, i32 0, i32 1
  %4911 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %4910, ptr noundef @.str.19)
          to label %4912 unwind label %4918

4912:                                             ; preds = %4907
  br i1 %4911, label %4913, label %4922

4913:                                             ; preds = %4912
  br label %4953

4914:                                             ; preds = %4891
  %4915 = landingpad { ptr, i32 }
          cleanup
  %4916 = extractvalue { ptr, i32 } %4915, 0
  store ptr %4916, ptr %15, align 8
  %4917 = extractvalue { ptr, i32 } %4915, 1
  store i32 %4917, ptr %16, align 4
  br label %5018

4918:                                             ; preds = %4944, %4931, %4922, %4907, %4901, %4896
  %4919 = landingpad { ptr, i32 }
          cleanup
  %4920 = extractvalue { ptr, i32 } %4919, 0
  store ptr %4920, ptr %15, align 8
  %4921 = extractvalue { ptr, i32 } %4919, 1
  store i32 %4921, ptr %16, align 4
  br label %5017

4922:                                             ; preds = %4912
  %4923 = load ptr, ptr %395, align 8, !tbaa !5
  %4924 = getelementptr inbounds %"class.HIR::Function", ptr %4923, i32 0, i32 1
  %4925 = getelementptr inbounds %"struct.HIR::Linkage", ptr %4924, i32 0, i32 1
  %4926 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %4925, ptr noundef @.str.70)
          to label %4927 unwind label %4918

4927:                                             ; preds = %4922
  br i1 %4926, label %4928, label %4939

4928:                                             ; preds = %4927
  br label %4929

4929:                                             ; preds = %4928
  %4930 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %418) #11
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %417, ptr noundef nonnull align 1 dereferenceable(1) %418) #11
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4930, ptr noundef %417)
          to label %4931 unwind label %4933

4931:                                             ; preds = %4929
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %418) #11
  %4932 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %4932, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4932, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %4918

4933:                                             ; preds = %4929
  %4934 = landingpad { ptr, i32 }
          cleanup
  %4935 = extractvalue { ptr, i32 } %4934, 0
  store ptr %4935, ptr %15, align 8
  %4936 = extractvalue { ptr, i32 } %4934, 1
  store i32 %4936, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %417) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %418) #11
  br label %5017

4937:                                             ; No predecessors!
  br label %4938

4938:                                             ; preds = %4937
  br label %4952

4939:                                             ; preds = %4927
  br label %4940

4940:                                             ; preds = %4939
  %4941 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %420) #11
  %4942 = getelementptr inbounds %class.anon.494, ptr %420, i32 0, i32 0
  %4943 = load ptr, ptr %395, align 8, !tbaa !5
  store ptr %4943, ptr %4942, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_52vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %419, ptr noundef nonnull align 8 dereferenceable(8) %420) #11
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4941, ptr noundef %419)
          to label %4944 unwind label %4946

4944:                                             ; preds = %4940
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %420) #11
  %4945 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %4945, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4945, ptr @_ZTIPKc, ptr null) #13
          to label %5083 unwind label %4918

4946:                                             ; preds = %4940
  %4947 = landingpad { ptr, i32 }
          cleanup
  %4948 = extractvalue { ptr, i32 } %4947, 0
  store ptr %4948, ptr %15, align 8
  %4949 = extractvalue { ptr, i32 } %4947, 1
  store i32 %4949, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %419) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %420) #11
  br label %5017

4950:                                             ; No predecessors!
  br label %4951

4951:                                             ; preds = %4950
  br label %4952

4952:                                             ; preds = %4951, %4938
  br label %4953

4953:                                             ; preds = %4952, %4913
  br label %4954

4954:                                             ; preds = %4953, %4906, %4900
  call void @llvm.lifetime.start.p0(i64 8, ptr %421) #11
  %4955 = getelementptr inbounds %"struct.HIR::Evaluator", ptr %435, i32 0, i32 1
  %4956 = getelementptr inbounds i8, ptr %4955, i64 8
  %4957 = getelementptr inbounds %struct.TraitResolveCommon, ptr %4956, i32 0, i32 0
  %4958 = load ptr, ptr %4957, align 8, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 56, ptr %422) #11
  %4959 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %391) #11
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %422, ptr noundef nonnull align 8 dereferenceable(88) %4959)
          to label %4960 unwind label %4971

4960:                                             ; preds = %4954
  %4961 = load ptr, ptr %395, align 8, !tbaa !5
  %4962 = invoke noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944) %4958, ptr noundef nonnull align 8 dereferenceable(56) %422, ptr noundef nonnull align 8 dereferenceable(352) %4961)
          to label %4963 unwind label %4971

4963:                                             ; preds = %4960
  call void @llvm.lifetime.end.p0(i64 56, ptr %422) #11
  store ptr %4962, ptr %421, align 8, !tbaa !5
  br label %4964

4964:                                             ; preds = %4963
  %4965 = load ptr, ptr %421, align 8, !tbaa !5
  %4966 = icmp ne ptr %4965, null
  br i1 %4966, label %4979, label %4967

4967:                                             ; preds = %4964
  %4968 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %424) #11
  %4969 = getelementptr inbounds %class.anon.495, ptr %424, i32 0, i32 0
  store ptr %391, ptr %4969, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_53vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %423, ptr noundef nonnull align 8 dereferenceable(8) %424) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %4968, ptr noundef %423)
          to label %4970 unwind label %4975

4970:                                             ; preds = %4967
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #11
  br label %4979

4971:                                             ; preds = %4960, %4954
  %4972 = landingpad { ptr, i32 }
          cleanup
  %4973 = extractvalue { ptr, i32 } %4972, 0
  store ptr %4973, ptr %15, align 8
  %4974 = extractvalue { ptr, i32 } %4972, 1
  store i32 %4974, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %422) #11
  br label %5016

4975:                                             ; preds = %4967
  %4976 = landingpad { ptr, i32 }
          cleanup
  %4977 = extractvalue { ptr, i32 } %4976, 0
  store ptr %4977, ptr %15, align 8
  %4978 = extractvalue { ptr, i32 } %4976, 1
  store i32 %4978, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %423) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #11
  br label %5016

4979:                                             ; preds = %4970, %4964
  br label %4980

4980:                                             ; preds = %4979
  br label %4981

4981:                                             ; preds = %4980
  call void @llvm.lifetime.start.p0(i64 16, ptr %427) #11
  %4982 = getelementptr inbounds %class.anon.496, ptr %427, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4982, ptr noundef nonnull align 8 dereferenceable(16) %391) #11
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_54vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %426, ptr noundef nonnull align 8 dereferenceable(16) %427)
          to label %4983 unwind label %4992

4983:                                             ; preds = %4981
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %425, ptr noundef %426)
          to label %4984 unwind label %4996

4984:                                             ; preds = %4983
  %4985 = load ptr, ptr %421, align 8, !tbaa !5
  invoke void @_ZN14MonomorphStateC2EOS_(ptr noundef nonnull align 8 dereferenceable(144) %428, ptr noundef nonnull align 8 dereferenceable(144) %393)
          to label %4986 unwind label %5000

4986:                                             ; preds = %4984
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull align 8 dereferenceable(8) %416)
          to label %4987 unwind label %5004

4987:                                             ; preds = %4986
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %430, ptr noundef nonnull align 8 dereferenceable(24) %408) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %431, ptr noundef nonnull align 8 dereferenceable(24) %396) #11
  %4988 = load ptr, ptr %395, align 8, !tbaa !5
  %4989 = getelementptr inbounds %"class.HIR::Function", ptr %4988, i32 0, i32 7
  %4990 = load ptr, ptr %394, align 8, !tbaa !5
  invoke void @_ZN3HIR9Evaluator16push_stack_entryE9FmtLambdaRKN3MIR8FunctionE14MonomorphStateNS_7TypeRefESt6vectorISt4pairINS_7PatternES7_ESaISB_EES8_INS2_4eval13AllocationPtrESaISF_EEPKNS_13GenericParamsESK_(ptr noundef nonnull align 8 dereferenceable(472) %435, ptr noundef %425, ptr noundef nonnull align 8 dereferenceable(96) %4985, ptr noundef %428, ptr noundef %429, ptr noundef %430, ptr noundef %431, ptr noundef %4989, ptr noundef %4990)
          to label %4991 unwind label %5008

4991:                                             ; preds = %4987
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %431) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %430) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %429) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %428) #11
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #11
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #11
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %427) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %427) #11
  store i32 -2, ptr %4, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %408) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %408) #11
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %396) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %396) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %393) #11
  call void @llvm.lifetime.end.p0(i64 144, ptr %393) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %391) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %391) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %390) #11
  br label %5039

4992:                                             ; preds = %4981
  %4993 = landingpad { ptr, i32 }
          cleanup
  %4994 = extractvalue { ptr, i32 } %4993, 0
  store ptr %4994, ptr %15, align 8
  %4995 = extractvalue { ptr, i32 } %4993, 1
  store i32 %4995, ptr %16, align 4
  br label %5015

4996:                                             ; preds = %4983
  %4997 = landingpad { ptr, i32 }
          cleanup
  %4998 = extractvalue { ptr, i32 } %4997, 0
  store ptr %4998, ptr %15, align 8
  %4999 = extractvalue { ptr, i32 } %4997, 1
  store i32 %4999, ptr %16, align 4
  br label %5014

5000:                                             ; preds = %4984
  %5001 = landingpad { ptr, i32 }
          cleanup
  %5002 = extractvalue { ptr, i32 } %5001, 0
  store ptr %5002, ptr %15, align 8
  %5003 = extractvalue { ptr, i32 } %5001, 1
  store i32 %5003, ptr %16, align 4
  br label %5013

5004:                                             ; preds = %4986
  %5005 = landingpad { ptr, i32 }
          cleanup
  %5006 = extractvalue { ptr, i32 } %5005, 0
  store ptr %5006, ptr %15, align 8
  %5007 = extractvalue { ptr, i32 } %5005, 1
  store i32 %5007, ptr %16, align 4
  br label %5012

5008:                                             ; preds = %4987
  %5009 = landingpad { ptr, i32 }
          cleanup
  %5010 = extractvalue { ptr, i32 } %5009, 0
  store ptr %5010, ptr %15, align 8
  %5011 = extractvalue { ptr, i32 } %5009, 1
  store i32 %5011, ptr %16, align 4
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %431) #11
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %430) #11
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %429) #11
  br label %5012

5012:                                             ; preds = %5008, %5004
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %428) #11
  br label %5013

5013:                                             ; preds = %5012, %5000
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %425) #11
  br label %5014

5014:                                             ; preds = %5013, %4996
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #11
  br label %5015

5015:                                             ; preds = %5014, %4992
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %427) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %427) #11
  br label %5016

5016:                                             ; preds = %5015, %4975, %4971
  call void @llvm.lifetime.end.p0(i64 8, ptr %421) #11
  br label %5017

5017:                                             ; preds = %5016, %4946, %4933, %4918
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %416) #11
  br label %5018

5018:                                             ; preds = %5017, %4914
  call void @llvm.lifetime.end.p0(i64 8, ptr %416) #11
  br label %5019

5019:                                             ; preds = %5018, %4890
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %408) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %408) #11
  br label %5020

5020:                                             ; preds = %5019, %4847, %4780
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %396) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %396) #11
  br label %5021

5021:                                             ; preds = %5020, %4776
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #11
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %393) #11
  br label %5022

5022:                                             ; preds = %5021, %4772
  call void @llvm.lifetime.end.p0(i64 144, ptr %393) #11
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %391) #11
  br label %5023

5023:                                             ; preds = %5022, %4768
  call void @llvm.lifetime.end.p0(i64 16, ptr %391) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %390) #11
  br label %5042

5024:                                             ; preds = %4733
  br label %5025

5025:                                             ; preds = %5024
  call void @llvm.lifetime.start.p0(i64 8, ptr %432) #11
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %432, align 8, !tbaa !5
  %5026 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %434) #11
  %5027 = getelementptr inbounds %class.anon.497, ptr %434, i32 0, i32 0
  store ptr %432, ptr %5027, align 8, !tbaa !5
  %5028 = getelementptr inbounds %class.anon.497, ptr %434, i32 0, i32 1
  %5029 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %5029, ptr %5028, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_55vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %433, ptr noundef nonnull align 8 dereferenceable(16) %434) #11
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %5026, ptr noundef %433)
          to label %5030 unwind label %5032

5030:                                             ; preds = %5025
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %434) #11
  %5031 = call ptr @__cxa_allocate_exception(i64 8) #11
  store ptr @.str.19, ptr %5031, align 16, !tbaa !5
  call void @__cxa_throw(ptr %5031, ptr @_ZTIPKc, ptr null) #13
  unreachable

5032:                                             ; preds = %5025
  %5033 = landingpad { ptr, i32 }
          cleanup
  %5034 = extractvalue { ptr, i32 } %5033, 0
  store ptr %5034, ptr %15, align 8
  %5035 = extractvalue { ptr, i32 } %5033, 1
  store i32 %5035, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %433) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %434) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %432) #11
  br label %5042

5036:                                             ; No predecessors!
  br label %5037

5037:                                             ; preds = %5036
  br label %5038

5038:                                             ; preds = %5037
  store i32 0, ptr %10, align 4
  br label %5039

5039:                                             ; preds = %5038, %4991
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #11
  %5040 = load i32, ptr %10, align 4
  switch i32 %5040, label %5044 [
    i32 0, label %5041
  ]

5041:                                             ; preds = %5039
  br label %5043

5042:                                             ; preds = %5032, %5023
  call void @llvm.lifetime.end.p0(i64 8, ptr %389) #11
  br label %5051

5043:                                             ; preds = %5041
  store i32 0, ptr %10, align 4
  br label %5044

5044:                                             ; preds = %5043, %5039, %4731
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #11
  %5045 = load i32, ptr %10, align 4
  switch i32 %5045, label %5047 [
    i32 0, label %5046
  ]

5046:                                             ; preds = %5044
  store i32 0, ptr %10, align 4
  br label %5047

5047:                                             ; preds = %5046, %5044
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  %5048 = load i32, ptr %10, align 4
  switch i32 %5048, label %5052 [
    i32 0, label %5049
  ]

5049:                                             ; preds = %5047
  br label %5050

5050:                                             ; preds = %5049
  store i8 0, ptr %80, align 1, !tbaa !79
  br label %1271, !llvm.loop !174

5051:                                             ; preds = %5042, %4732
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #11
  br label %5063

5052:                                             ; preds = %5047, %1275
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #11
  %5053 = load i32, ptr %10, align 4
  switch i32 %5053, label %5056 [
    i32 110, label %5054
  ]

5054:                                             ; preds = %5052
  br label %5055

5055:                                             ; preds = %5054
  store i8 0, ptr %80, align 1, !tbaa !79
  br label %1264, !llvm.loop !175

5056:                                             ; preds = %5052, %1267
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #11
  %5057 = load i32, ptr %10, align 4
  switch i32 %5057, label %5061 [
    i32 107, label %5058
  ]

5058:                                             ; preds = %5056
  br label %5059

5059:                                             ; preds = %5058, %1262, %1094, %602, %535, %513, %489
  br label %5060

5060:                                             ; preds = %5059
  store i8 0, ptr %9, align 1, !tbaa !79
  br label %468, !llvm.loop !176

5061:                                             ; preds = %5056, %1260, %1092, %600, %533, %511, %471
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  %5062 = load i32, ptr %10, align 4
  switch i32 %5062, label %5066 [
    i32 7, label %5064
  ]

5063:                                             ; preds = %5051, %1254, %1086, %576, %484
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  br label %5077

5064:                                             ; preds = %5061
  br label %5065

5065:                                             ; preds = %5064
  store i8 0, ptr %9, align 1, !tbaa !79
  br label %462, !llvm.loop !177

5066:                                             ; preds = %5061, %465
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  %5067 = load i32, ptr %10, align 4
  switch i32 %5067, label %5075 [
    i32 4, label %5068
  ]

5068:                                             ; preds = %5066
  %5069 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %5069, ptr noundef @.str.71)
          to label %5070 unwind label %5071

5070:                                             ; preds = %5068
  call void @__cxa_throw(ptr %5069, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #13
  unreachable

5071:                                             ; preds = %5068
  %5072 = landingpad { ptr, i32 }
          cleanup
  %5073 = extractvalue { ptr, i32 } %5072, 0
  store ptr %5073, ptr %15, align 8
  %5074 = extractvalue { ptr, i32 } %5072, 1
  store i32 %5074, ptr %16, align 4
  call void @__cxa_free_exception(ptr %5069) #11
  br label %5077

5075:                                             ; preds = %5066
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  %5076 = load i32, ptr %4, align 4
  ret i32 %5076

5077:                                             ; preds = %5071, %5063
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  br label %5078

5078:                                             ; preds = %5077
  %5079 = load ptr, ptr %15, align 8
  %5080 = load i32, ptr %16, align 4
  %5081 = insertvalue { ptr, i32 } poison, ptr %5079, 0
  %5082 = insertvalue { ptr, i32 } %5081, i32 %5080, 1
  resume { ptr, i32 } %5082

5083:                                             ; preds = %4944, %4931, %4649, %4393, %4317, %4086, %3817, %3716, %3556, %2221, %1371, %1329, %1158, %892
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) #4 align 2

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

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

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

declare void @__cxa_free_exception(ptr)

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

declare noundef zeroext i1 @_Z13debug_enabledv() #5

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8)) #3 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) #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72)) #4 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) #3 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)) #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() #2

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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)) #4 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)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72)) #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)) #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168)) #4 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKmSt6vectorImSaImEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN9__gnu_cxxmiIPKmSt6vectorImSaImEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

declare noundef zeroext i1 @_Z17Target_GetAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #3 align 2

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

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

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

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

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

declare void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

declare noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

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

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816), i32 noundef, ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.ctpop.i64(i64) #9

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i16 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap16Et(i16 noundef zeroext) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap32Ej(i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap64Em(i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden { i64, i64 } @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H8bswap128E4U128(i64, i64) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128leEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16), i64, i64) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK18StaticTraitResolve18type_is_impossibleERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.434") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.431") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #2

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #5

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

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

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

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

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

declare void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), i1 noundef zeroext) #5

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1)) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.444") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(352)) #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry14read_param_ptrERKNS_5ParamE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.434") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72)) #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

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

declare void @_ZN3MIR4eval8RelocPtrD1Ev(ptr)

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { "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 = { 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind }
attributes #12 = { noreturn nounwind }
attributes #13 = { 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 = !{!89, !10, i64 32}
!89 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !90, i64 0, !10, i64 32, !10, i64 36}
!90 = !{!"_ZTSN3MIR6LValueE", !91, i64 0, !92, i64 8}
!91 = !{!"_ZTSN3MIR6LValue7StorageE", !24, i64 0}
!92 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!96 = !{!89, !10, i64 36}
!97 = distinct !{!97, !84}
!98 = distinct !{!98, !84}
!99 = !{!53, !6, i64 8}
!100 = distinct !{!100, !84}
!101 = distinct !{!101, !84}
!102 = !{!103, !24, i64 8}
!103 = !{!"_ZTSN8TypeRepr11VariantMode11Data_LinearE", !104, i64 0, !24, i64 40, !24, i64 48}
!104 = !{!"_ZTSN8TypeRepr9FieldPathE", !24, i64 0, !24, i64 8, !105, i64 16}
!105 = !{!"_ZTSSt6vectorImSaImEE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseImSaImEE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!109 = !{!24, !24, i64 0}
!110 = !{!103, !24, i64 40}
!111 = !{!103, !24, i64 0}
!112 = distinct !{!112, !84}
!113 = distinct !{!113, !84}
!114 = !{!115, !24, i64 8}
!115 = !{!"_ZTSN8TypeRepr11VariantMode11Data_ValuesE", !104, i64 0, !105, i64 40}
!116 = distinct !{!116, !84}
!117 = distinct !{!117, !84}
!118 = !{!119, !24, i64 8}
!119 = !{!"_ZTSN8TypeRepr11VariantMode12Data_NonZeroE", !104, i64 0, !10, i64 40}
!120 = distinct !{!120, !84}
!121 = !{!119, !10, i64 40}
!122 = distinct !{!122, !84}
!123 = distinct !{!123, !84}
!124 = distinct !{!124, !84}
!125 = distinct !{!125, !84}
!126 = distinct !{!126, !84}
!127 = distinct !{!127, !84}
!128 = !{!129, !10, i64 4}
!129 = !{!"_ZTSN12_GLOBAL__N_18TypeInfoE", !7, i64 0, !10, i64 4}
!130 = distinct !{!130, !84}
!131 = distinct !{!131, !84}
!132 = distinct !{!132, !84}
!133 = distinct !{!133, !84}
!134 = distinct !{!134, !84}
!135 = !{!136, !10, i64 32}
!136 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !90, i64 0, !10, i64 32, !137, i64 40, !141, i64 64}
!137 = !{!"_ZTSSt6vectorIjSaIjEE", !138, i64 0}
!138 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !139, i64 0}
!139 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !140, i64 0}
!140 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!141 = !{!"_ZTSN3MIR12SwitchValuesE", !142, i64 0, !7, i64 8}
!142 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!143 = distinct !{!143, !84}
!144 = distinct !{!144, !84}
!145 = !{!15, !6, i64 0}
!146 = !{!147, !24, i64 0}
!147 = !{!"_ZTSN8TypeRepr5FieldE", !24, i64 0, !52, i64 8}
!148 = !{!129, !7, i64 0}
!149 = distinct !{!149, !84}
!150 = distinct !{!150, !84}
!151 = !{!152, !152, i64 0}
!152 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!153 = !{i64 0, i64 8, !109, i64 8, i64 8, !109}
!154 = distinct !{!154, !84}
!155 = !{!156, !24, i64 0}
!156 = !{!"_ZTSSt4pairImN3MIR4eval8RelocPtrEE", !24, i64 0, !157, i64 8}
!157 = !{!"_ZTSN3MIR4eval8RelocPtrE", !24, i64 0}
!158 = distinct !{!158, !84}
!159 = distinct !{!159, !84}
!160 = distinct !{!160, !84}
!161 = distinct !{!161, !84}
!162 = distinct !{!162, !84}
!163 = distinct !{!163, !84}
!164 = distinct !{!164, !84}
!165 = distinct !{!165, !84}
!166 = !{!167, !10, i64 0}
!167 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !10, i64 0, !10, i64 4, !90, i64 8, !168, i64 40, !170, i64 136}
!168 = !{!"_ZTSN3MIR10CallTargetE", !169, i64 0, !7, i64 8}
!169 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!170 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !171, i64 0}
!171 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !172, i64 0}
!172 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !173, i64 0}
!173 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!174 = distinct !{!174, !84}
!175 = distinct !{!175, !84}
!176 = distinct !{!176, !84}
!177 = distinct !{!177, !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.MIR::eval::ConstantPtr" = type { %"class.MIR::eval::RefCountPtr.0" }
%"class.MIR::eval::RefCountPtr.0" = type { ptr }
%"class.MIR::eval::AllocationPtr" = type { %"class.MIR::eval::RefCountPtr" }
%"class.MIR::eval::RefCountPtr" = type { ptr }
%"class.MIR::eval::StaticRefPtr" = type { %"class.MIR::eval::RefCountPtr.25" }
%"class.MIR::eval::RefCountPtr.25" = 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.244 = type { ptr, ptr }
%class.U128 = type { i64, i64 }
%"class.MIR::eval::ValueRef" = type { %"class.MIR::eval::RelocPtr", i32, i32 }
%"class.MIR::eval::RelocPtr" = type { i64 }
%"class.HIR::TypeRef" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.245" = type { ptr }
%struct.Span = type { ptr }
%class.anon.246 = type { ptr, ptr }
%class.anon.247 = type { ptr, ptr }
%class.anon.248 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"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 }
%class.RcString = 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.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%class.anon.396 = type { i8 }
%class.anon.398 = type { i8 }
%class.anon.400 = type { ptr }
%class.anon.401 = type { ptr }
%class.anon.402 = type { ptr }
%class.anon.403 = type { ptr }
%class.anon.404 = type { ptr }
%class.anon.405 = type { ptr }
%class.anon.406 = type { ptr }
%class.anon.407 = type { ptr }
%class.anon.408 = type { ptr, ptr }
%class.anon.409 = type { i8 }
%class.anon.411 = type { ptr, ptr }
%"struct.std::pair" = type { %"class.MIR::eval::ValueRef", %"class.MIR::eval::ValueRef" }
%class.anon.412 = type { ptr, ptr }
%class.anon.413 = type { ptr, ptr }
%class.anon.414 = type { ptr, ptr }
%class.anon.415 = type { ptr, ptr }
%class.anon.416 = type { ptr, ptr }
%class.anon.417 = type { ptr, ptr }
%class.anon.418 = type { ptr, ptr }
%class.anon.419 = type { ptr, ptr }
%class.anon.420 = type { ptr }
%class.anon.421 = type { ptr, ptr }
%class.anon.422 = type { ptr }
%class.anon.423 = type { ptr, ptr }
%class.anon.424 = type { ptr }
%class.anon.425 = type { ptr, ptr }
%class.anon.426 = type { ptr, ptr }
%class.anon.427 = type { i8 }
%class.anon.429 = type { ptr }
%class.anon.430 = type { ptr, ptr }
%"class.std::shared_ptr.431" = type { %"class.std::__shared_ptr.432" }
%"class.std::__shared_ptr.432" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair.434" = type { i64, %"class.MIR::eval::RelocPtr" }
%class.anon.436 = type { i8 }
%class.anon.438 = type { i8 }
%class.anon.440 = type { ptr, ptr }
%class.anon.441 = type { 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 }
%"class.__gnu_cxx::__normal_iterator.442" = type { ptr }
%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.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.__gnu_cxx::__normal_iterator.443" = type { ptr }
%"struct.std::pair.444" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.446", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.446" = type { %"struct.std::_Vector_base.447" }
%"struct.std::_Vector_base.447" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"class.HIR::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%class.anon.477 = type { ptr }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.478 = type { %"class.std::shared_ptr.431" }
%class.anon.479 = type { ptr }
%class.anon.480 = type { ptr }
%class.anon.481 = type { i8 }
%class.anon.483 = type { i8 }
%class.anon.485 = type { ptr }
%class.anon.486 = type { ptr }
%class.anon.487 = type { i8 }
%class.anon.489 = type { ptr }
%class.anon.490 = type { ptr }
%class.anon.491 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.240" = type { ptr }
%class.anon.492 = type { i8 }
%class.anon.494 = type { ptr }
%class.anon.495 = type { ptr }
%class.anon.496 = type { %"class.std::shared_ptr.431" }
%class.anon.497 = type { ptr, ptr }

@_ZTIN12_GLOBAL__N_15DeferE = external hidden constant { ptr, ptr }, align 8
@.str.8 = external hidden unnamed_addr constant [91 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.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
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.22 = external hidden unnamed_addr constant [4 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__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE = external hidden unnamed_addr constant [15 x i8], align 1
@__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(168) %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::function", align 8
  %6 = alloca %class.anon.244, align 8
  %7 = alloca %class.U128, align 8
  %8 = alloca %class.U128, align 8
  %9 = alloca %"class.MIR::eval::ValueRef", align 8
  %10 = alloca %"class.HIR::TypeRef", align 8
  %11 = alloca %"class.MIR::eval::ValueRef", align 8
  %12 = alloca i32, align 4
  %13 = alloca %class.U128, align 8
  %14 = alloca %"class.MIR::eval::ValueRef", align 8
  %15 = alloca i64, align 8
  %16 = alloca %class.U128, align 8
  %17 = alloca %"class.MIR::eval::ValueRef", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %20 = alloca %struct.Span, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.246, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.245", align 8
  %24 = alloca %class.U128, align 8
  %25 = alloca %"class.MIR::eval::ValueRef", align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.247, align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"class.MIR::eval::ValueRef", align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.248, align 8
  %32 = alloca %class.U128, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"class.MIR::eval::ValueRef", align 8
  %35 = alloca %"class.HIR::TypeRef", align 8
  %36 = alloca i64, align 8
  %37 = alloca %class.U128, align 8
  %38 = alloca %"class.HIR::TypeRef", align 8
  %39 = alloca i64, align 8
  %40 = alloca %class.U128, align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %44 = alloca %"class.MIR::eval::RelocPtr", align 8
  %45 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %46 = alloca %"class.MIR::eval::ValueRef", align 8
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"class.MIR::eval::RelocPtr", align 8
  %49 = alloca %"class.MIR::eval::StaticRefPtr", align 8
  %50 = alloca %"class.HIR::Path", align 8
  %51 = alloca %"class.HIR::TypeRef", align 8
  %52 = alloca %class.RcString, align 8
  %53 = alloca %"struct.HIR::PathParams", align 8
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca %"struct.HIR::SimplePath", align 8
  %56 = alloca %"class.HIR::TypeRef", align 8
  %57 = alloca %"class.HIR::Path", align 8
  %58 = alloca %"struct.HIR::SimplePath", align 8
  %59 = alloca %"class.HIR::TypePathBinding", align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.396, align 1
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.398, align 1
  %64 = alloca %"class.MIR::eval::RelocPtr", align 8
  %65 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %66 = alloca %"class.MIR::eval::RelocPtr", align 8
  %67 = alloca %"class.MIR::eval::ValueRef", align 8
  %68 = alloca %"class.MIR::eval::RelocPtr", align 8
  %69 = alloca %"class.MIR::eval::ValueRef", align 8
  %70 = alloca %"class.MIR::eval::RelocPtr", align 8
  %71 = alloca %"class.MIR::eval::ConstantPtr", align 8
  %72 = alloca %"class.MIR::eval::ValueRef", align 8
  %73 = alloca %"class.MIR::eval::ValueRef", align 8
  %74 = alloca %"class.MIR::eval::ValueRef", align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"class.std::function", align 8
  %77 = alloca %class.anon.400, align 8
  %78 = alloca %class.U128, align 8
  %79 = alloca %class.U128, align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.std::function", align 8
  %82 = alloca %class.anon.401, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.402, align 8
  %85 = alloca %class.U128, align 8
  %86 = alloca %class.U128, align 8
  %87 = alloca %class.U128, align 8
  %88 = alloca %class.U128, align 8
  %89 = alloca %class.U128, align 8
  %90 = alloca %"class.HIR::TypeRef", align 8
  %91 = alloca %"class.std::function", align 8
  %92 = alloca %class.anon.403, align 8
  %93 = alloca %"class.std::function", align 8
  %94 = alloca %class.anon.404, align 8
  %95 = alloca %class.U128, align 8
  %96 = alloca %class.U128, align 8
  %97 = alloca %class.U128, align 8
  %98 = alloca %"class.HIR::TypeRef", align 8
  %99 = alloca %"class.std::function", align 8
  %100 = alloca %class.anon.405, align 8
  %101 = alloca %class.U128, align 8
  %102 = alloca %class.U128, align 8
  %103 = alloca %class.U128, align 8
  %104 = alloca %class.U128, align 8
  %105 = alloca %class.U128, align 8
  %106 = alloca %"class.std::function", align 8
  %107 = alloca %class.anon.406, align 8
  %108 = alloca %"class.HIR::TypeRef", align 8
  %109 = alloca %"class.std::function", align 8
  %110 = alloca %class.anon.407, align 8
  %111 = alloca %class.U128, align 8
  %112 = alloca %class.U128, align 8
  %113 = alloca %class.U128, align 8
  %114 = alloca %"class.HIR::TypeRef", align 8
  %115 = alloca %"class.std::function", align 8
  %116 = alloca %class.anon.408, align 8
  %117 = alloca %class.U128, align 8
  %118 = alloca %class.U128, align 8
  %119 = alloca %"class.std::function", align 8
  %120 = alloca %class.anon.409, align 1
  %121 = alloca %class.U128, align 8
  %122 = alloca %class.U128, align 8
  %123 = alloca %class.U128, align 8
  %124 = alloca %"class.HIR::TypeRef", align 8
  %125 = alloca %"class.std::function", align 8
  %126 = alloca %class.anon.411, align 8
  %127 = alloca %"struct.std::pair", align 8
  %128 = alloca %class.U128, align 8
  %129 = alloca %"class.HIR::TypeRef", align 8
  %130 = alloca %"class.std::function", align 8
  %131 = alloca %class.anon.412, align 8
  %132 = alloca %"struct.std::pair", align 8
  %133 = alloca %class.U128, align 8
  %134 = alloca %"class.HIR::TypeRef", align 8
  %135 = alloca %"class.std::function", align 8
  %136 = alloca %class.anon.413, align 8
  %137 = alloca %"struct.std::pair", align 8
  %138 = alloca %class.U128, align 8
  %139 = alloca %"class.HIR::TypeRef", align 8
  %140 = alloca %"class.std::function", align 8
  %141 = alloca %class.anon.414, align 8
  %142 = alloca %"class.HIR::TypeRef", align 8
  %143 = alloca %"class.std::function", align 8
  %144 = alloca %class.anon.415, align 8
  %145 = alloca %"class.HIR::TypeRef", align 8
  %146 = alloca %"class.std::function", align 8
  %147 = alloca %class.anon.416, align 8
  %148 = alloca %"class.HIR::TypeRef", align 8
  %149 = alloca %"class.std::function", align 8
  %150 = alloca %class.anon.417, align 8
  %151 = alloca %"class.HIR::TypeRef", align 8
  %152 = alloca %"class.std::function", align 8
  %153 = alloca %class.anon.418, align 8
  %154 = alloca %"class.HIR::TypeRef", align 8
  %155 = alloca %"class.std::function", align 8
  %156 = alloca %class.anon.419, align 8
  %157 = alloca %"class.std::function", align 8
  %158 = alloca %class.anon.420, align 8
  %159 = alloca %"class.HIR::TypeRef", align 8
  %160 = alloca %"class.std::function", align 8
  %161 = alloca %class.anon.421, align 8
  %162 = alloca %"class.std::function", align 8
  %163 = alloca %class.anon.422, align 8
  %164 = alloca %"class.HIR::TypeRef", align 8
  %165 = alloca %"class.std::function", align 8
  %166 = alloca %class.anon.423, align 8
  %167 = alloca %"class.std::function", align 8
  %168 = alloca %class.anon.424, align 8
  %169 = alloca %"class.HIR::TypeRef", align 8
  %170 = alloca %"class.std::function", align 8
  %171 = alloca %class.anon.425, align 8
  %172 = alloca %"class.HIR::TypeRef", align 8
  %173 = alloca %"class.std::function", align 8
  %174 = alloca %class.anon.426, align 8
  %175 = alloca %"class.MIR::eval::ValueRef", align 8
  %176 = alloca %"class.MIR::eval::ValueRef", align 8
  %177 = alloca %class.U128, align 8
  %178 = alloca %"class.std::function", align 8
  %179 = alloca %class.anon.427, align 1
  %180 = alloca %"class.HIR::TypeRef", align 8
  %181 = alloca %"class.std::function", align 8
  %182 = alloca %class.anon.429, align 8
  %183 = alloca %"class.HIR::TypeRef", align 8
  %184 = alloca %"class.std::function", align 8
  %185 = alloca %class.anon.430, align 8
  %186 = alloca %"class.MIR::eval::ValueRef", align 8
  %187 = alloca %"class.std::shared_ptr.431", align 8
  %188 = alloca %"struct.std::pair.434", align 8
  %189 = alloca %"class.MIR::eval::ValueRef", align 8
  %190 = alloca %"class.std::function", align 8
  %191 = alloca %class.anon.436, align 1
  %192 = alloca %"class.std::function", align 8
  %193 = alloca %class.anon.438, align 1
  %194 = alloca %"class.std::shared_ptr.431", align 8
  %195 = alloca %"class.HIR::Path", align 8
  %196 = alloca ptr, align 8
  %197 = alloca %"class.std::function", align 8
  %198 = alloca %class.anon.440, align 8
  %199 = alloca %"class.std::shared_ptr.431", align 8
  %200 = alloca %"class.HIR::Path", align 8
  %201 = alloca %"class.std::shared_ptr.431", align 8
  %202 = alloca %"class.HIR::Path", align 8
  %203 = alloca ptr, align 8
  %204 = alloca %"class.std::function", align 8
  %205 = alloca %class.anon.441, align 8
  %206 = alloca %"class.std::vector.36", align 8
  %207 = alloca %"class.__gnu_cxx::__normal_iterator.442", align 8
  %208 = alloca %"class.__gnu_cxx::__normal_iterator.442", align 8
  %209 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %210 = alloca %"class.MIR::eval::ValueRef", align 8
  %211 = alloca %"class.MIR::eval::RelocPtr", align 8
  %212 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %213 = alloca %"class.MIR::eval::ValueRef", align 8
  %214 = alloca %struct.MonomorphState, align 8
  %215 = alloca ptr, align 8
  %216 = alloca %"class.std::vector.26", align 8
  %217 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %218 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %219 = alloca %"struct.std::pair.444", align 8
  %220 = alloca %"struct.HIR::Pattern", align 8
  %221 = alloca %"class.HIR::TypeRef", align 8
  %222 = alloca %"class.HIR::TypeRef", align 8
  %223 = alloca %"class.HIR::ItemPath", align 8
  %224 = alloca %"class.std::function", align 8
  %225 = alloca %class.anon.477, align 8
  %226 = alloca %struct.FmtLambda, align 8
  %227 = alloca %"class.std::function", align 8
  %228 = alloca %class.anon.478, align 8
  %229 = alloca %struct.MonomorphState, align 8
  %230 = alloca %"class.HIR::TypeRef", align 8
  %231 = alloca %"class.std::vector.26", align 8
  %232 = alloca %"class.std::vector.36", align 8
  %233 = alloca %"class.HIR::TypeRef", align 8
  %234 = alloca i64, align 8
  %235 = alloca %"struct.std::pair.434", align 8
  %236 = alloca %"class.MIR::eval::ValueRef", align 8
  %237 = alloca %"struct.std::pair.434", align 8
  %238 = alloca %"class.MIR::eval::ValueRef", align 8
  %239 = alloca %class.U128, align 8
  %240 = alloca %"class.std::function", align 8
  %241 = alloca %class.anon.479, align 8
  %242 = alloca %class.U128, align 8
  %243 = alloca %class.U128, align 8
  %244 = alloca %"class.std::function", align 8
  %245 = alloca %class.anon.480, align 8
  %246 = alloca %"class.std::function", align 8
  %247 = alloca %class.anon.481, align 1
  %248 = alloca %"class.std::function", align 8
  %249 = alloca %class.anon.483, align 1
  %250 = alloca %"class.MIR::eval::ValueRef", align 8
  %251 = alloca %"class.MIR::eval::ValueRef", align 8
  %252 = alloca %"class.MIR::eval::RelocPtr", align 8
  %253 = alloca %"class.MIR::eval::ValueRef", align 8
  %254 = alloca %"class.MIR::eval::ValueRef", align 8
  %255 = alloca %"class.MIR::eval::RelocPtr", align 8
  %256 = alloca %"class.HIR::TypeRef", align 8
  %257 = alloca i64, align 8
  %258 = alloca %"struct.std::pair.434", align 8
  %259 = alloca %class.U128, align 8
  %260 = alloca %"class.MIR::eval::RelocPtr", align 8
  %261 = alloca %"class.HIR::TypeRef", align 8
  %262 = alloca i64, align 8
  %263 = alloca %"struct.std::pair.434", align 8
  %264 = alloca %"class.MIR::eval::ValueRef", align 8
  %265 = alloca %class.U128, align 8
  %266 = alloca %class.U128, align 8
  %267 = alloca %"class.std::function", align 8
  %268 = alloca %class.anon.485, align 8
  %269 = alloca %class.U128, align 8
  %270 = alloca %class.U128, align 8
  %271 = alloca %"class.std::function", align 8
  %272 = alloca %class.anon.486, align 8
  %273 = alloca %"class.std::function", align 8
  %274 = alloca %class.anon.487, align 1
  %275 = alloca %"class.MIR::eval::ValueRef", align 8
  %276 = alloca %"class.MIR::eval::ValueRef", align 8
  %277 = alloca %"class.MIR::eval::RelocPtr", align 8
  %278 = alloca %"class.HIR::TypeRef", align 8
  %279 = alloca %"class.std::function", align 8
  %280 = alloca %class.anon.489, align 8
  %281 = alloca %"class.std::function", align 8
  %282 = alloca %class.anon.490, align 8
  %283 = alloca %"class.std::function", align 8
  %284 = alloca %class.anon.491, align 8
  %285 = alloca %"class.std::shared_ptr.431", align 8
  %286 = alloca %"class.HIR::Path", align 8
  %287 = alloca %struct.MonomorphState, align 8
  %288 = alloca ptr, align 8
  %289 = alloca %"class.std::vector.36", align 8
  %290 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %291 = alloca %"class.__gnu_cxx::__normal_iterator.240", align 8
  %292 = alloca %"class.HIR::TypeRef", align 8
  %293 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %294 = alloca %"class.MIR::eval::ValueRef", align 8
  %295 = alloca %"class.MIR::eval::RelocPtr", align 8
  %296 = alloca %"class.MIR::eval::AllocationPtr", align 8
  %297 = alloca %"class.MIR::eval::ValueRef", align 8
  %298 = alloca %"class.std::vector.26", align 8
  %299 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %300 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %301 = alloca %"struct.std::pair.444", align 8
  %302 = alloca %"struct.HIR::Pattern", align 8
  %303 = alloca %"class.HIR::TypeRef", align 8
  %304 = alloca %"class.HIR::TypeRef", align 8
  %305 = alloca %"class.std::function", align 8
  %306 = alloca %class.anon.492, align 1
  %307 = alloca %"class.std::function", align 8
  %308 = alloca %class.anon.494, align 8
  %309 = alloca %"class.HIR::ItemPath", align 8
  %310 = alloca %"class.std::function", align 8
  %311 = alloca %class.anon.495, align 8
  %312 = alloca %struct.FmtLambda, align 8
  %313 = alloca %"class.std::function", align 8
  %314 = alloca %class.anon.496, align 8
  %315 = alloca %struct.MonomorphState, align 8
  %316 = alloca %"class.HIR::TypeRef", align 8
  %317 = alloca %"class.std::vector.26", align 8
  %318 = alloca %"class.std::vector.36", align 8
  %319 = alloca ptr, align 8
  %320 = alloca %"class.std::function", align 8
  %321 = alloca %class.anon.497, align 8
  %322 = getelementptr inbounds i8, ptr %1, i64 472
  %323 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %323, label %324, label %339

324:                                              ; preds = %3
  %325 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %326 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %325, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
  %327 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef nonnull @.str.15)
  %328 = getelementptr inbounds i8, ptr %0, i64 440
  %329 = load i32, ptr %328, align 8, !tbaa !9
  %330 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %327, i32 noundef %329)
  %331 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @.str.16)
  %332 = load i32, ptr %1, align 8, !tbaa !45
  %333 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %331, i32 noundef %332)
  %334 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef nonnull @.str.17)
  %335 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(120) %322)
  %336 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef nonnull align 8 dereferenceable(168) %2)
  %337 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %338 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %339

339:                                              ; preds = %324, %3
  %340 = tail call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  switch i32 %340, label %342 [
    i32 0, label %341
    i32 4, label %348
    i32 2, label %351
    i32 6, label %353
    i32 7, label %374
    i32 8, label %554
    i32 9, label %605
  ]

341:                                              ; preds = %339
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2424, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #11
  unreachable

342:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #12
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %4, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12
  store ptr %4, ptr %6, align 8, !tbaa !78
  %343 = getelementptr inbounds i8, ptr %6, i64 8
  store ptr %2, ptr %343, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(16) %6) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %5)
          to label %344 unwind label %346

344:                                              ; preds = %342
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  %345 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %345, align 16, !tbaa !78
  call void @__cxa_throw(ptr nonnull %345, ptr nonnull @_ZTIPKc, ptr null) #13
  unreachable

346:                                              ; preds = %342
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  br label %2612

348:                                              ; preds = %339
  %349 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  %350 = load i32, ptr %349, align 4, !tbaa !5
  br label %2611

351:                                              ; preds = %339
  %352 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  br label %2611

353:                                              ; preds = %339
  %354 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0, i64 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #12
  call 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) %354, ptr noundef null)
  %355 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 1)
          to label %356 unwind label %370

356:                                              ; preds = %353
  %357 = extractvalue { i64, i64 } %355, 0
  store i64 %357, ptr %8, align 8
  %358 = getelementptr inbounds i8, ptr %8, i64 8
  %359 = extractvalue { i64, i64 } %355, 1
  store i64 %359, ptr %358, align 8
  %360 = call noundef zeroext i1 @_ZNK4U128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  %361 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %361, label %362, label %372

362:                                              ; preds = %356
  %363 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %364 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %363, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef nonnull align 8 dereferenceable(120) %322)
  %366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull @.str.26)
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %366, i1 noundef zeroext %360)
  %368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %367, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %372

370:                                              ; preds = %353
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  br label %2612

372:                                              ; preds = %362, %356
  %.in.v = select i1 %360, i64 32, i64 36
  %.in = getelementptr inbounds i8, ptr %354, i64 %.in.v
  %373 = load i32, ptr %.in, align 4, !tbaa !5
  br label %2611

374:                                              ; preds = %339
  %375 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(32) %375, i32 noundef 0)
          to label %377 unwind label %385

377:                                              ; preds = %374
  %378 = getelementptr inbounds i8, ptr %1, i64 480
  %379 = load ptr, ptr %378, align 8, !tbaa !79
  %380 = getelementptr inbounds i8, ptr %0, i64 8
  %381 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(424) %380, ptr noundef nonnull align 8 dereferenceable(8) %376)
          to label %382 unwind label %387

382:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #12
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %11, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %375, ptr noundef null)
          to label %.lr.ph1443 unwind label %389

.loopexit1143:                                    ; preds = %.preheader1135, %.lr.ph1443, %..loopexit1134_crit_edge, %434, %424, %457, %447, %..loopexit1132_crit_edge
  %383 = phi i32 [ 0, %.preheader1135 ], [ 0, %.lr.ph1443 ], [ %521, %..loopexit1134_crit_edge ], [ %422, %434 ], [ %422, %424 ], [ %445, %457 ], [ %445, %447 ], [ %498, %..loopexit1132_crit_edge ]
  %384 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %522 unwind label %536

385:                                              ; preds = %374
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %553

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

389:                                              ; preds = %382
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %552

.lr.ph1443:                                       ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #12
  store i32 0, ptr %12, align 4, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %381, i64 16
  %392 = getelementptr inbounds i8, ptr %24, i64 8
  %393 = getelementptr inbounds i8, ptr %16, i64 8
  %394 = getelementptr inbounds i8, ptr %13, i64 8
  %395 = call noundef i32 @_ZNK8TypeRepr11VariantMode3tagEv(ptr noundef nonnull align 8 dereferenceable(72) %391)
  switch i32 %395, label %.loopexit1143 [
    i32 0, label %402
    i32 1, label %.preheader1135
    i32 2, label %.lr.ph1424
    i32 3, label %.lr.ph1392
    i32 4, label %.preheader1141
  ]

.preheader1141:                                   ; preds = %.lr.ph1443
  %396 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK8TypeRepr11VariantMode10as_NonZeroEv(ptr noundef nonnull align 8 dereferenceable(72) %391)
  %397 = getelementptr inbounds i8, ptr %396, i64 8
  %398 = getelementptr inbounds i8, ptr %396, i64 40
  %399 = load ptr, ptr %378, align 8, !tbaa !79
  %400 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %381, ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef nonnull align 8 dereferenceable(424) %380, ptr noundef nonnull align 8 dereferenceable(40) %396)
          to label %.preheader unwind label %.split1337.split

.preheader1135:                                   ; preds = %.lr.ph1443
  %401 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK8TypeRepr11VariantMode7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %391)
  br label %.loopexit1143

402:                                              ; preds = %.lr.ph1443
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2446, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #11
  unreachable

.lr.ph1424:                                       ; preds = %.lr.ph1443
  %403 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK8TypeRepr11VariantMode9as_LinearEv(ptr noundef nonnull align 8 dereferenceable(72) %391)
  %404 = getelementptr inbounds i8, ptr %403, i64 8
  %405 = getelementptr inbounds i8, ptr %403, i64 40
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #12
  %406 = load ptr, ptr %378, align 8, !tbaa !79
  %407 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %381, ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull align 8 dereferenceable(424) %380, ptr noundef nonnull align 8 dereferenceable(40) %403)
          to label %408 unwind label %436

408:                                              ; preds = %.lr.ph1424
  %409 = load i64, ptr %404, align 8, !tbaa !80
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %407, i64 noundef %409)
          to label %410 unwind label %436

410:                                              ; preds = %408
  %411 = load i64, ptr %404, align 8, !tbaa !80
  %.tr1119 = trunc i64 %411 to i32
  %412 = shl i32 %.tr1119, 3
  %413 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %412)
          to label %414 unwind label %438

414:                                              ; preds = %410
  %415 = extractvalue { i64, i64 } %413, 0
  store i64 %415, ptr %13, align 8
  %416 = extractvalue { i64, i64 } %413, 1
  store i64 %416, ptr %394, align 8
  %417 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %13)
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %418 = load i64, ptr %405, align 8, !tbaa !87
  %419 = icmp ult i64 %417, %418
  br i1 %419, label %420, label %443

420:                                              ; preds = %414
  %421 = load i64, ptr %403, align 8, !tbaa !88
  %422 = trunc i64 %421 to i32
  store i32 %422, ptr %12, align 4, !tbaa !5
  %423 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %424 unwind label %441

424:                                              ; preds = %420
  br i1 %423, label %425, label %.loopexit1143

425:                                              ; preds = %424
  %426 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %426, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %428 unwind label %441

428:                                              ; preds = %425
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %427, ptr noundef nonnull @.str.27)
          to label %430 unwind label %441

430:                                              ; preds = %428
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %429, i32 noundef %422)
          to label %432 unwind label %441

432:                                              ; preds = %430
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %434 unwind label %441

434:                                              ; preds = %432
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit1143 unwind label %441

436:                                              ; preds = %408, %.lr.ph1424
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %440

438:                                              ; preds = %410
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #12
  br label %440

440:                                              ; preds = %438, %436
  %.pn1120 = phi { ptr, i32 } [ %439, %438 ], [ %437, %436 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  br label %551

441:                                              ; preds = %457, %455, %453, %451, %448, %443, %434, %432, %430, %428, %425, %420
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %551

443:                                              ; preds = %414
  %444 = sub i64 %417, %418
  %445 = trunc i64 %444 to i32
  store i32 %445, ptr %12, align 4, !tbaa !5
  %446 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %447 unwind label %441

447:                                              ; preds = %443
  br i1 %446, label %448, label %.loopexit1143

448:                                              ; preds = %447
  %449 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %449, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %451 unwind label %441

451:                                              ; preds = %448
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef nonnull @.str.28)
          to label %453 unwind label %441

453:                                              ; preds = %451
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %452, i32 noundef %445)
          to label %455 unwind label %441

455:                                              ; preds = %453
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %457 unwind label %441

457:                                              ; preds = %455
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit1143 unwind label %441

.lr.ph1392:                                       ; preds = %.lr.ph1443
  %459 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK8TypeRepr11VariantMode9as_ValuesEv(ptr noundef nonnull align 8 dereferenceable(72) %391)
  %460 = getelementptr inbounds i8, ptr %459, i64 8
  %461 = getelementptr inbounds i8, ptr %459, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #12
  %462 = load ptr, ptr %378, align 8, !tbaa !79
  %463 = invoke noundef i64 @_ZNK8TypeRepr10get_offsetERK4SpanRK18StaticTraitResolveRKNS_9FieldPathE(ptr noundef nonnull align 8 dereferenceable(112) %381, ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef nonnull align 8 dereferenceable(424) %380, ptr noundef nonnull align 8 dereferenceable(40) %459)
          to label %464 unwind label %.split1394

464:                                              ; preds = %.lr.ph1392
  %465 = load i64, ptr %460, align 8, !tbaa !89
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %463, i64 noundef %465)
          to label %466 unwind label %.split1394

466:                                              ; preds = %464
  %467 = load i64, ptr %460, align 8, !tbaa !89
  %.tr = trunc i64 %467 to i32
  %468 = shl i32 %.tr, 3
  %469 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %468)
          to label %470 unwind label %.split1397

470:                                              ; preds = %466
  %471 = extractvalue { i64, i64 } %469, 0
  store i64 %471, ptr %16, align 8
  %472 = extractvalue { i64, i64 } %469, 1
  store i64 %472, ptr %393, align 8
  %473 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %16)
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  store i64 %473, ptr %15, align 8, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %474 = call ptr @_ZNKSt6vectorImSaImEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %461) #12
  %475 = call ptr @_ZNKSt6vectorImSaImEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %461) #12
  %476 = invoke ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKmSt6vectorImSaImEEEEmET_S8_S8_RKT0_(ptr %474, ptr %475, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %477 unwind label %.loopexit1133.split

477:                                              ; preds = %470
  store ptr %476, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %478 = call ptr @_ZNKSt6vectorImSaImEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %461) #12
  store ptr %478, ptr %19, align 8
  %479 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKmSt6vectorImSaImEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  br i1 %479, label %..loopexit1132_crit_edge, label %.split1401

.split1401:                                       ; preds = %477
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %480 = load ptr, ptr %378, align 8, !tbaa !79
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %481 unwind label %489

481:                                              ; preds = %.split1401
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #12
  store ptr %15, ptr %22, align 8, !tbaa !78
  %482 = getelementptr inbounds i8, ptr %22, i64 8
  store ptr %376, ptr %482, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(16) %22) #12
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %21)
          to label %483 unwind label %491

483:                                              ; preds = %481
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  %484 = call ptr @__cxa_allocate_exception(i64 16) #12
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %484, ptr noundef nonnull @.str.29)
          to label %485 unwind label %494

485:                                              ; preds = %483
  invoke void @__cxa_throw(ptr nonnull %484, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #13
          to label %2613 unwind label %.loopexit.split-lp

.split1394:                                       ; preds = %464, %.lr.ph1392
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %488

.split1397:                                       ; preds = %466
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #12
  br label %488

488:                                              ; preds = %.split1397, %.split1394
  %.pn1112 = phi { ptr, i32 } [ %487, %.split1397 ], [ %486, %.split1394 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  br label %500

.loopexit1133.split:                              ; preds = %470
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %499

.loopexit.split-lp:                               ; preds = %485
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %499

489:                                              ; preds = %.split1401
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %493

491:                                              ; preds = %481
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  br label %493

493:                                              ; preds = %491, %489
  %.pn1114 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  br label %499

494:                                              ; preds = %483
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %484) #12
  br label %499

..loopexit1132_crit_edge:                         ; preds = %477
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %496 = call ptr @_ZNKSt6vectorImSaImEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %461) #12
  store ptr %496, ptr %23, align 8
  %497 = call noundef i64 @_ZN9__gnu_cxxmiIPKmSt6vectorImSaImEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %23) #12
  %498 = trunc i64 %497 to i32
  store i32 %498, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  br label %.loopexit1143

499:                                              ; preds = %.loopexit1133.split, %.loopexit.split-lp, %494, %493
  %.pn1116 = phi { ptr, i32 } [ %495, %494 ], [ %.pn1114, %493 ], [ %lpad.loopexit, %.loopexit1133.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  br label %500

500:                                              ; preds = %499, %488
  %.pn1116.pn = phi { ptr, i32 } [ %.pn1116, %499 ], [ %.pn1112, %488 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  br label %551

.preheader:                                       ; preds = %.preheader1141
  %501 = load i64, ptr %397, align 8, !tbaa !92
  %.not1448 = icmp eq i64 %501, 0
  br i1 %.not1448, label %.critedge, label %.lr.ph1333

502:                                              ; preds = %510
  %503 = add nuw i64 %.08151332, 1
  %504 = load i64, ptr %397, align 8, !tbaa !92
  %505 = icmp ult i64 %503, %504
  br i1 %505, label %.lr.ph1333, label %.critedge, !llvm.loop !94

.split1337.split:                                 ; preds = %.preheader1141
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %551

.lr.ph1333:                                       ; preds = %.preheader, %502
  %.08151332 = phi i64 [ %503, %502 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #12
  %507 = add i64 %.08151332, %400
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %507, i64 noundef 1)
          to label %508 unwind label %.split1340.split

508:                                              ; preds = %.lr.ph1333
  %509 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 8)
          to label %510 unwind label %.split1343.split

510:                                              ; preds = %508
  %511 = extractvalue { i64, i64 } %509, 0
  store i64 %511, ptr %24, align 8
  %512 = extractvalue { i64, i64 } %509, 1
  store i64 %512, ptr %392, align 8
  %513 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %24)
  %.not1111 = icmp eq i64 %513, 0
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #12
  br i1 %.not1111, label %502, label %517

.split1340.split:                                 ; preds = %.lr.ph1333
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %516

.split1343.split:                                 ; preds = %508
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #12
  br label %516

516:                                              ; preds = %.split1343.split, %.split1340.split
  %.pn1108 = phi { ptr, i32 } [ %515, %.split1343.split ], [ %514, %.split1340.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #12
  br label %551

517:                                              ; preds = %510
  %518 = load i32, ptr %398, align 8, !tbaa !96
  %519 = sub i32 1, %518
  br label %..loopexit1134_crit_edge

.critedge:                                        ; preds = %502, %.preheader
  %520 = load i32, ptr %398, align 8, !tbaa !96
  br label %..loopexit1134_crit_edge

..loopexit1134_crit_edge:                         ; preds = %.critedge, %517
  %521 = phi i32 [ %519, %517 ], [ %520, %.critedge ]
  store i32 %521, ptr %12, align 4, !tbaa !5
  br label %.loopexit1143

522:                                              ; preds = %.loopexit1143
  br i1 %384, label %523, label %538

523:                                              ; preds = %522
  %524 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %524, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %526 unwind label %536

526:                                              ; preds = %523
  %527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull align 8 dereferenceable(120) %322)
          to label %528 unwind label %536

528:                                              ; preds = %526
  %529 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull @.str.22)
          to label %530 unwind label %536

530:                                              ; preds = %528
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %529, i32 noundef %383)
          to label %532 unwind label %536

532:                                              ; preds = %530
  %533 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %534 unwind label %536

534:                                              ; preds = %532
  %535 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %533, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %538 unwind label %536

536:                                              ; preds = %534, %532, %530, %528, %526, %523, %.loopexit1143
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %551

538:                                              ; preds = %522, %534
  %539 = zext i32 %383 to i64
  %540 = getelementptr inbounds i8, ptr %375, i64 32
  %541 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %540) #12
  %542 = icmp ugt i64 %541, %539
  br i1 %542, label %548, label %543

543:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #12
  store ptr %12, ptr %27, align 8, !tbaa !78
  %544 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %375, ptr %544, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(16) %27) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %26)
          to label %545 unwind label %546

545:                                              ; preds = %543
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #12
  %.pre = load i32, ptr %12, align 4, !tbaa !5
  %.pre1455 = zext i32 %.pre to i64
  br label %548

546:                                              ; preds = %543
  %547 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #12
  br label %551

548:                                              ; preds = %545, %538
  %.pre-phi = phi i64 [ %.pre1455, %545 ], [ %539, %538 ]
  %549 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %540, i64 noundef %.pre-phi) #12
  %550 = load i32, ptr %549, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %2611

551:                                              ; preds = %500, %441, %440, %516, %.split1337.split, %546, %536
  %.pn1108.pn.pn.pn = phi { ptr, i32 } [ %547, %546 ], [ %537, %536 ], [ %.pn1116.pn, %500 ], [ %442, %441 ], [ %.pn1120, %440 ], [ %.pn1108, %516 ], [ %506, %.split1337.split ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #12
  br label %552

552:                                              ; preds = %551, %389
  %.pn1108.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1108.pn.pn.pn, %551 ], [ %390, %389 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  br label %553

553:                                              ; preds = %387, %552, %385
  %.pn1108.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %386, %385 ], [ %.pn1108.pn.pn.pn.pn, %552 ], [ %388, %387 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %2612

554:                                              ; preds = %339
  %555 = tail call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(32) %555, i32 noundef 0)
          to label %557 unwind label %562

557:                                              ; preds = %554
  %558 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %559 unwind label %564

559:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #12
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %29, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %555, ptr noundef null)
          to label %.lr.ph1281 unwind label %566

.loopexit1148.thread:                             ; preds = %591, %580
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #12
  br label %596

.loopexit1148:                                    ; preds = %589
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #12
  %560 = and i64 %.08261227, 4294967295
  %561 = icmp eq i64 %560, 4294967295
  br i1 %561, label %596, label %598

562:                                              ; preds = %554
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %604

564:                                              ; preds = %557
  %565 = landingpad { ptr, i32 }
          cleanup
  br label %604

566:                                              ; preds = %559
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %603

.lr.ph1281:                                       ; preds = %559
  %568 = getelementptr inbounds i8, ptr %555, i64 64
  %569 = getelementptr inbounds i8, ptr %32, i64 8
  %570 = call noundef i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %568)
  switch i32 %570, label %.split1291 [
    i32 0, label %.split1293
    i32 1, label %.preheader1146
  ]

.preheader1146:                                   ; preds = %.lr.ph1281
  %sum.shift = lshr i64 %558, 35
  %571 = trunc nuw nsw i64 %sum.shift to i32
  %572 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues11as_UnsignedEv(ptr noundef nonnull align 8 dereferenceable(32) %568)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #12
  %573 = invoke { i64, i64 } @_ZNK3MIR4eval8ValueRef9read_uintERKNS_11TypeResolveEj(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %571)
          to label %580 unwind label %.split1235.split.split.split

574:                                              ; preds = %576
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %595

.split1293:                                       ; preds = %.lr.ph1281
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2490, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #11
  unreachable

.split1291:                                       ; preds = %.lr.ph1281
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  store ptr %555, ptr %31, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #12
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %30)
          to label %576 unwind label %578

576:                                              ; preds = %.split1291
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  %577 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %577, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %577, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %2613 unwind label %574

578:                                              ; preds = %.split1291
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  br label %595

580:                                              ; preds = %.preheader1146
  %581 = extractvalue { i64, i64 } %573, 0
  store i64 %581, ptr %32, align 8
  %582 = extractvalue { i64, i64 } %573, 1
  store i64 %582, ptr %569, align 8
  %583 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %572) #12
  %.not1447 = icmp eq i64 %583, 0
  br i1 %.not1447, label %.loopexit1148.thread, label %.lr.ph1229

.split1235.split.split.split:                     ; preds = %.preheader1146
  %584 = landingpad { ptr, i32 }
          cleanup
  br label %.split1235

.lr.ph1229:                                       ; preds = %580, %591
  %.08261227 = phi i64 [ %592, %591 ], [ 0, %580 ]
  %585 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %572, i64 noundef %.08261227) #12
  %586 = load i64, ptr %585, align 8, !tbaa !91
  %587 = trunc i64 %586 to i32
  %588 = invoke noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16) %32, i32 noundef %587)
          to label %589 unwind label %.split1238.split.split.split

589:                                              ; preds = %.lr.ph1229
  br i1 %588, label %.loopexit1148, label %591

.split1238.split.split.split:                     ; preds = %.lr.ph1229
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %.split1235

591:                                              ; preds = %589
  %592 = add nuw i64 %.08261227, 1
  %593 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %572) #12
  %594 = icmp ult i64 %592, %593
  br i1 %594, label %.lr.ph1229, label %.loopexit1148.thread, !llvm.loop !97

.split1235:                                       ; preds = %.split1238.split.split.split, %.split1235.split.split.split
  %.pn1101 = phi { ptr, i32 } [ %584, %.split1235.split.split.split ], [ %590, %.split1238.split.split.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #12
  br label %595

595:                                              ; preds = %.split1235, %578, %574
  %.pn1103 = phi { ptr, i32 } [ %575, %574 ], [ %579, %578 ], [ %.pn1101, %.split1235 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #12
  br label %603

596:                                              ; preds = %.loopexit1148.thread, %.loopexit1148
  %597 = getelementptr inbounds i8, ptr %555, i64 32
  br label %602

598:                                              ; preds = %.loopexit1148
  %599 = getelementptr inbounds i8, ptr %555, i64 40
  %600 = and i64 %.08261227, 4294967295
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %600) #12
  br label %602

602:                                              ; preds = %598, %596
  %.15.in = phi ptr [ %597, %596 ], [ %601, %598 ]
  %.15 = load i32, ptr %.15.in, align 4, !tbaa !5
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  br label %2611

603:                                              ; preds = %595, %566
  %.pn1103.pn = phi { ptr, i32 } [ %.pn1103, %595 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #12
  br label %604

604:                                              ; preds = %564, %603, %562
  %.pn1103.pn.pn.pn = phi { ptr, i32 } [ %563, %562 ], [ %.pn1103.pn, %603 ], [ %565, %564 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  br label %2612

605:                                              ; preds = %339
  %606 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %2)
  %607 = getelementptr inbounds i8, ptr %1, i64 592
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #12
  %608 = getelementptr inbounds i8, ptr %606, i64 40
  %609 = tail call noundef ptr @_ZNK3MIR10CallTarget13opt_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %608)
  store ptr %609, ptr %33, align 8, !tbaa !78
  %.not = icmp eq ptr %609, null
  br i1 %.not, label %2454, label %610

610:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #12
  %611 = getelementptr inbounds i8, ptr %606, i64 8
  call void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %34, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %611, ptr noundef null)
  %612 = load ptr, ptr %33, align 8, !tbaa !78
  %613 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef nonnull @.str.30)
          to label %614 unwind label %633

614:                                              ; preds = %610
  br i1 %613, label %615, label %643

615:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  %616 = load ptr, ptr %33, align 8, !tbaa !78
  %617 = getelementptr inbounds i8, ptr %616, i64 16
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %617, i64 noundef 0)
          to label %619 unwind label %635

619:                                              ; preds = %615
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %35, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %618)
          to label %620 unwind label %635

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #12
  %621 = getelementptr inbounds i8, ptr %1, i64 480
  %622 = load ptr, ptr %621, align 8, !tbaa !79
  %623 = getelementptr inbounds i8, ptr %0, i64 8
  %624 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef nonnull align 8 dereferenceable(424) %623, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %625 unwind label %637

625:                                              ; preds = %620
  br i1 %624, label %626, label %639

626:                                              ; preds = %625
  %627 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %628 unwind label %637

628:                                              ; preds = %626
  %629 = load i64, ptr %36, align 8, !tbaa !91
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %629, i64 noundef 0)
  %630 = load i64, ptr %37, align 8
  %631 = getelementptr inbounds i8, ptr %37, i64 8
  %632 = load i64, ptr %631, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %627, i64 %630, i64 %632)
          to label %641 unwind label %637

633:                                              ; preds = %2448, %2446, %2444, %2442, %2440, %2438, %2435, %2433, %2429, %2427, %2424, %2421, %2417, %2373, %2263, %2207, %2077, %1844, %1818, %1795, %1787, %1783, %1775, %1771, %1740, %1709, %1673, %1637, %1601, %1570, %1539, %1508, %1504, %1473, %1469, %1438, %1434, %1393, %1352, %1311, %1199, %1195, %1135, %1065, %1011, %949, %902, %777, %755, %723, %673, %643, %610
  %634 = landingpad { ptr, i32 }
          cleanup
  br label %2453

635:                                              ; preds = %619, %615
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %642

637:                                              ; preds = %639, %628, %626, %620
  %638 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #12
  br label %642

639:                                              ; preds = %625
  %640 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %640, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %637

641:                                              ; preds = %628
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  br label %2421

642:                                              ; preds = %637, %635
  %.pn1096 = phi { ptr, i32 } [ %638, %637 ], [ %636, %635 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  br label %2453

643:                                              ; preds = %614
  %644 = load ptr, ptr %33, align 8, !tbaa !78
  %645 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef nonnull @.str.31)
          to label %646 unwind label %633

646:                                              ; preds = %643
  br i1 %645, label %647, label %673

647:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  %648 = load ptr, ptr %33, align 8, !tbaa !78
  %649 = getelementptr inbounds i8, ptr %648, i64 16
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %649, i64 noundef 0)
          to label %651 unwind label %665

651:                                              ; preds = %647
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %38, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %652 unwind label %665

652:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #12
  %653 = getelementptr inbounds i8, ptr %1, i64 480
  %654 = load ptr, ptr %653, align 8, !tbaa !79
  %655 = getelementptr inbounds i8, ptr %0, i64 8
  %656 = invoke noundef zeroext i1 @_Z17Target_GetAlignOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %654, ptr noundef nonnull align 8 dereferenceable(424) %655, ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %657 unwind label %667

657:                                              ; preds = %652
  br i1 %656, label %658, label %669

658:                                              ; preds = %657
  %659 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %660 unwind label %667

660:                                              ; preds = %658
  %661 = load i64, ptr %39, align 8, !tbaa !91
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef %661, i64 noundef 0)
  %662 = load i64, ptr %40, align 8
  %663 = getelementptr inbounds i8, ptr %40, i64 8
  %664 = load i64, ptr %663, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %659, i64 %662, i64 %664)
          to label %671 unwind label %667

665:                                              ; preds = %651, %647
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %672

667:                                              ; preds = %669, %660, %658, %652
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #12
  br label %672

669:                                              ; preds = %657
  %670 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %670, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %667

671:                                              ; preds = %660
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  br label %2421

672:                                              ; preds = %667, %665
  %.pn1094 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  br label %2453

673:                                              ; preds = %646
  %674 = load ptr, ptr %33, align 8, !tbaa !78
  %675 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull @.str.32)
          to label %676 unwind label %633

676:                                              ; preds = %673
  br i1 %675, label %677, label %723

677:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #12
  %678 = load ptr, ptr %33, align 8, !tbaa !78
  %679 = getelementptr inbounds i8, ptr %678, i64 16
  %680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %679, i64 noundef 0)
          to label %681 unwind label %701

681:                                              ; preds = %677
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %680)
          to label %682 unwind label %701

682:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #12
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %43) #12
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %43)
          to label %683 unwind label %703

683:                                              ; preds = %682
  %684 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %43, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %685 unwind label %705

685:                                              ; preds = %683
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(112) %684)
          to label %686 unwind label %705

686:                                              ; preds = %685
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %43) #12
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %43) #12
  %687 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  %688 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  invoke void @_ZN3MIR4eval13AllocationPtr11allocate_roEPKvm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::AllocationPtr") align 8 %45, ptr noundef %687, i64 noundef %688)
          to label %689 unwind label %708

689:                                              ; preds = %686
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull %45)
          to label %690 unwind label %710

690:                                              ; preds = %689
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef 4096, ptr noundef nonnull %44)
          to label %691 unwind label %712

691:                                              ; preds = %690
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #12
  %692 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %693 unwind label %715

693:                                              ; preds = %691
  %694 = lshr i32 %692, 3
  %695 = zext nneg i32 %694 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef %695)
          to label %696 unwind label %715

696:                                              ; preds = %693
  %697 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %698 unwind label %717

698:                                              ; preds = %696
  %699 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %697, i64 noundef %699)
          to label %700 unwind label %717

700:                                              ; preds = %698
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #12
  br label %2421

701:                                              ; preds = %681, %677
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %722

703:                                              ; preds = %682
  %704 = landingpad { ptr, i32 }
          cleanup
  br label %707

705:                                              ; preds = %685, %683
  %706 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %43) #12
  br label %707

707:                                              ; preds = %705, %703
  %.pn1085 = phi { ptr, i32 } [ %706, %705 ], [ %704, %703 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %43) #12
  br label %721

708:                                              ; preds = %686
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %720

710:                                              ; preds = %689
  %711 = landingpad { ptr, i32 }
          cleanup
  br label %714

712:                                              ; preds = %690
  %713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #12
  br label %714

714:                                              ; preds = %712, %710
  %.pn1087 = phi { ptr, i32 } [ %713, %712 ], [ %711, %710 ]
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #12
  br label %720

715:                                              ; preds = %693, %691
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %719

717:                                              ; preds = %698, %696
  %718 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #12
  br label %719

719:                                              ; preds = %717, %715
  %.pn1089 = phi { ptr, i32 } [ %718, %717 ], [ %716, %715 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #12
  br label %720

720:                                              ; preds = %719, %714, %708
  %.pn1089.pn = phi { ptr, i32 } [ %.pn1089, %719 ], [ %.pn1087, %714 ], [ %709, %708 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  br label %721

721:                                              ; preds = %720, %707
  %.pn1089.pn.pn = phi { ptr, i32 } [ %.pn1089.pn, %720 ], [ %.pn1085, %707 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #12
  br label %722

722:                                              ; preds = %721, %701
  %.pn1089.pn.pn.pn = phi { ptr, i32 } [ %.pn1089.pn.pn, %721 ], [ %702, %701 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #12
  br label %2453

723:                                              ; preds = %676
  %724 = load ptr, ptr %33, align 8, !tbaa !78
  %725 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %724, ptr noundef nonnull @.str.33)
          to label %726 unwind label %633

726:                                              ; preds = %723
  br i1 %725, label %727, label %755

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #12
  %728 = load ptr, ptr %33, align 8, !tbaa !78
  %729 = getelementptr inbounds i8, ptr %728, i64 16
  %730 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %729, i64 noundef 0)
          to label %731 unwind label %738

731:                                              ; preds = %727
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %47, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %730)
          to label %732 unwind label %738

732:                                              ; preds = %731
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %47)
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull @.str.34)
          to label %733 unwind label %740

733:                                              ; preds = %732
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %734 unwind label %742

734:                                              ; preds = %733
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %50, ptr noundef nonnull %51, ptr noundef nonnull %52, ptr noundef nonnull %53)
          to label %735 unwind label %744

735:                                              ; preds = %734
  invoke void @_ZN3MIR4eval12StaticRefPtr8allocateEN3HIR4PathEPK14EncodedLiteral(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::StaticRefPtr") align 8 %49, ptr noundef nonnull %50, ptr noundef null)
          to label %736 unwind label %746

736:                                              ; preds = %735
  call void @_ZN3MIR4eval8RelocPtrC2ENS0_12StaticRefPtrE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %49)
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef 4096, ptr noundef nonnull %48)
          to label %737 unwind label %748

737:                                              ; preds = %736
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #12
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #12
  br label %2421

738:                                              ; preds = %731, %727
  %739 = landingpad { ptr, i32 }
          cleanup
  br label %754

740:                                              ; preds = %732
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %753

742:                                              ; preds = %733
  %743 = landingpad { ptr, i32 }
          cleanup
  br label %752

744:                                              ; preds = %734
  %745 = landingpad { ptr, i32 }
          cleanup
  br label %751

746:                                              ; preds = %735
  %747 = landingpad { ptr, i32 }
          cleanup
  br label %750

748:                                              ; preds = %736
  %749 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_9StaticRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #12
  br label %750

750:                                              ; preds = %748, %746
  %.pn1079 = phi { ptr, i32 } [ %749, %748 ], [ %747, %746 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #12
  br label %751

751:                                              ; preds = %750, %744
  %.pn1079.pn = phi { ptr, i32 } [ %.pn1079, %750 ], [ %745, %744 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  br label %752

752:                                              ; preds = %751, %742
  %.pn1079.pn.pn = phi { ptr, i32 } [ %.pn1079.pn, %751 ], [ %743, %742 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #12
  br label %753

753:                                              ; preds = %752, %740
  %.pn1079.pn.pn.pn = phi { ptr, i32 } [ %.pn1079.pn.pn, %752 ], [ %741, %740 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #12
  br label %754

754:                                              ; preds = %753, %738
  %.pn1079.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1079.pn.pn.pn, %753 ], [ %739, %738 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #12
  br label %2453

755:                                              ; preds = %726
  %756 = load ptr, ptr %33, align 8, !tbaa !78
  %757 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %756, ptr noundef nonnull @.str.35)
          to label %758 unwind label %633

758:                                              ; preds = %755
  br i1 %757, label %759, label %777

759:                                              ; preds = %758
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #12
  %760 = load ptr, ptr %33, align 8, !tbaa !78
  %761 = getelementptr inbounds i8, ptr %760, i64 16
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %761, i64 noundef 0)
          to label %763 unwind label %772

763:                                              ; preds = %759
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %54, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %762)
          to label %764 unwind label %772

764:                                              ; preds = %763
  %765 = getelementptr inbounds i8, ptr %0, i64 8
  %766 = getelementptr inbounds i8, ptr %1, i64 480
  %767 = load ptr, ptr %766, align 8, !tbaa !79
  %768 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve20type_needs_drop_glueERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %765, ptr noundef nonnull align 8 dereferenceable(8) %767, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %769 unwind label %774

769:                                              ; preds = %764
  %770 = zext i1 %768 to i64
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 8, i64 noundef %770)
          to label %771 unwind label %774

771:                                              ; preds = %769
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #12
  br label %2421

772:                                              ; preds = %763, %759
  %773 = landingpad { ptr, i32 }
          cleanup
  br label %776

774:                                              ; preds = %769, %764
  %775 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #12
  br label %776

776:                                              ; preds = %774, %772
  %.pn1077 = phi { ptr, i32 } [ %775, %774 ], [ %773, %772 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #12
  br label %2453

777:                                              ; preds = %758
  %778 = load ptr, ptr %33, align 8, !tbaa !78
  %779 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %778, ptr noundef nonnull @.str.36)
          to label %780 unwind label %633

780:                                              ; preds = %777
  br i1 %779, label %781, label %902

781:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #12
  %782 = getelementptr inbounds i8, ptr %0, i64 8
  %783 = getelementptr inbounds i8, ptr %0, i64 16
  %784 = load ptr, ptr %783, align 8, !tbaa !98
  %785 = getelementptr inbounds i8, ptr %1, i64 480
  %786 = load ptr, ptr %785, align 8, !tbaa !79
  %787 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %784, ptr noundef nonnull align 8 dereferenceable(8) %786, ptr noundef nonnull @.str.37)
          to label %788 unwind label %803

788:                                              ; preds = %781
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %787)
          to label %789 unwind label %803

789:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %790 unwind label %805

790:                                              ; preds = %789
  invoke void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88) %57, ptr noundef nonnull %58)
          to label %791 unwind label %807

791:                                              ; preds = %790
  %792 = load ptr, ptr %783, align 8, !tbaa !98
  %793 = load ptr, ptr %785, align 8, !tbaa !79
  %794 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %792, ptr noundef nonnull align 8 dereferenceable(8) %793, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %795 unwind label %809

795:                                              ; preds = %791
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull %794)
          to label %796 unwind label %809

796:                                              ; preds = %795
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull %57, ptr noundef nonnull %59)
          to label %797 unwind label %811

797:                                              ; preds = %796
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #12
  %798 = load ptr, ptr %785, align 8, !tbaa !79
  %799 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %798, ptr noundef nonnull align 8 dereferenceable(424) %782, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %800 unwind label %815

800:                                              ; preds = %797
  %.not1060 = icmp eq ptr %799, null
  br i1 %.not1060, label %801, label %819

801:                                              ; preds = %800
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(1) %61) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %60)
          to label %802 unwind label %817

802:                                              ; preds = %801
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #12
  br label %819

803:                                              ; preds = %788, %781
  %804 = landingpad { ptr, i32 }
          cleanup
  br label %901

805:                                              ; preds = %789
  %806 = landingpad { ptr, i32 }
          cleanup
  br label %900

807:                                              ; preds = %790
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %814

809:                                              ; preds = %795, %791
  %810 = landingpad { ptr, i32 }
          cleanup
  br label %813

811:                                              ; preds = %796
  %812 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #12
  br label %813

813:                                              ; preds = %811, %809
  %.pn1057 = phi { ptr, i32 } [ %812, %811 ], [ %810, %809 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #12
  br label %814

814:                                              ; preds = %813, %807
  %.pn1057.pn = phi { ptr, i32 } [ %.pn1057, %813 ], [ %808, %807 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #12
  br label %900

815:                                              ; preds = %797
  %816 = landingpad { ptr, i32 }
          cleanup
  br label %899

817:                                              ; preds = %801
  %818 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #12
  br label %899

819:                                              ; preds = %800, %802
  %820 = getelementptr inbounds i8, ptr %799, i64 88
  %821 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %820) #12
  %822 = icmp eq i64 %821, 3
  br i1 %822, label %827, label %823

823:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 1 dereferenceable(1) %63) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %62)
          to label %824 unwind label %825

824:                                              ; preds = %823
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #12
  br label %827

825:                                              ; preds = %823
  %826 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #12
  br label %899

827:                                              ; preds = %824, %819
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #12
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::AllocationPtr") align 8 %65, ptr noundef nonnull align 8 dereferenceable(424) %782, ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %828 unwind label %858

828:                                              ; preds = %827
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %829 unwind label %860

829:                                              ; preds = %828
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #12
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %830 unwind label %862

830:                                              ; preds = %829
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef 4096, ptr noundef nonnull %66)
          to label %831 unwind label %864

831:                                              ; preds = %830
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #12
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %832 unwind label %866

832:                                              ; preds = %831
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull %68, i64 noundef 0)
          to label %833 unwind label %868

833:                                              ; preds = %832
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #12
  %834 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %835 unwind label %870

835:                                              ; preds = %833
  %836 = lshr i32 %834, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #12
  %837 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %820, i64 noundef 0) #12
  %838 = load i64, ptr %837, align 8, !tbaa !99
  %839 = zext nneg i32 %836 to i64
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %67, i64 noundef %838, i64 noundef %839)
          to label %840 unwind label %872

840:                                              ; preds = %835
  invoke void @_ZN3MIR4eval11ConstantPtr8allocateEPKvm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ConstantPtr") align 8 %71, ptr noundef nonnull @.str.19, i64 noundef 0)
          to label %841 unwind label %874

841:                                              ; preds = %840
  call void @_ZN3MIR4eval8RelocPtrC2ENS0_11ConstantPtrE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull %71)
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef 4096, ptr noundef nonnull %70)
          to label %842 unwind label %876

842:                                              ; preds = %841
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #12
  %843 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %820, i64 noundef 0) #12
  %844 = load i64, ptr %843, align 8, !tbaa !99
  %845 = add i64 %844, %839
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %67, i64 noundef %845, i64 noundef %839)
          to label %846 unwind label %880

846:                                              ; preds = %842
  %847 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %848 unwind label %882

848:                                              ; preds = %846
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %847, i64 noundef 0)
          to label %849 unwind label %882

849:                                              ; preds = %848
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #12
  %850 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %820, i64 noundef 1) #12
  %851 = load i64, ptr %850, align 8, !tbaa !99
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %67, i64 noundef %851, i64 noundef 4)
          to label %852 unwind label %885

852:                                              ; preds = %849
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 32, i64 noundef 0)
          to label %853 unwind label %887

853:                                              ; preds = %852
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #12
  %854 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %820, i64 noundef 2) #12
  %855 = load i64, ptr %854, align 8, !tbaa !99
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %74, ptr noundef nonnull align 8 dereferenceable(16) %67, i64 noundef %855, i64 noundef 4)
          to label %856 unwind label %890

856:                                              ; preds = %853
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 32, i64 noundef 0)
          to label %857 unwind label %892

857:                                              ; preds = %856
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #12
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #12
  br label %2421

858:                                              ; preds = %827
  %859 = landingpad { ptr, i32 }
          cleanup
  br label %898

860:                                              ; preds = %828
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #12
  br label %898

862:                                              ; preds = %829
  %863 = landingpad { ptr, i32 }
          cleanup
  br label %897

864:                                              ; preds = %830
  %865 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #12
  br label %897

866:                                              ; preds = %831
  %867 = landingpad { ptr, i32 }
          cleanup
  br label %896

868:                                              ; preds = %832
  %869 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #12
  br label %896

870:                                              ; preds = %833
  %871 = landingpad { ptr, i32 }
          cleanup
  br label %895

872:                                              ; preds = %835
  %873 = landingpad { ptr, i32 }
          cleanup
  br label %879

874:                                              ; preds = %840
  %875 = landingpad { ptr, i32 }
          cleanup
  br label %878

876:                                              ; preds = %841
  %877 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_8ConstantEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #12
  br label %878

878:                                              ; preds = %876, %874
  %.pn1061 = phi { ptr, i32 } [ %877, %876 ], [ %875, %874 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #12
  br label %879

879:                                              ; preds = %878, %872
  %.pn1061.pn = phi { ptr, i32 } [ %.pn1061, %878 ], [ %873, %872 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #12
  br label %895

880:                                              ; preds = %842
  %881 = landingpad { ptr, i32 }
          cleanup
  br label %884

882:                                              ; preds = %848, %846
  %883 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #12
  br label %884

884:                                              ; preds = %882, %880
  %.pn1064 = phi { ptr, i32 } [ %883, %882 ], [ %881, %880 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #12
  br label %895

885:                                              ; preds = %849
  %886 = landingpad { ptr, i32 }
          cleanup
  br label %889

887:                                              ; preds = %852
  %888 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #12
  br label %889

889:                                              ; preds = %887, %885
  %.pn1066 = phi { ptr, i32 } [ %888, %887 ], [ %886, %885 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #12
  br label %895

890:                                              ; preds = %853
  %891 = landingpad { ptr, i32 }
          cleanup
  br label %894

892:                                              ; preds = %856
  %893 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #12
  br label %894

894:                                              ; preds = %892, %890
  %.pn1068 = phi { ptr, i32 } [ %893, %892 ], [ %891, %890 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #12
  br label %895

895:                                              ; preds = %894, %889, %884, %879, %870
  %.pn1068.pn = phi { ptr, i32 } [ %.pn1068, %894 ], [ %.pn1066, %889 ], [ %.pn1064, %884 ], [ %.pn1061.pn, %879 ], [ %871, %870 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #12
  br label %896

896:                                              ; preds = %895, %868, %866
  %.pn1068.pn.pn = phi { ptr, i32 } [ %.pn1068.pn, %895 ], [ %869, %868 ], [ %867, %866 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #12
  br label %897

897:                                              ; preds = %896, %864, %862
  %.pn1068.pn.pn.pn = phi { ptr, i32 } [ %.pn1068.pn.pn, %896 ], [ %865, %864 ], [ %863, %862 ]
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #12
  br label %898

898:                                              ; preds = %897, %860, %858
  %.pn1068.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1068.pn.pn.pn, %897 ], [ %861, %860 ], [ %859, %858 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #12
  br label %899

899:                                              ; preds = %898, %825, %817, %815
  %.pn1068.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1068.pn.pn.pn.pn, %898 ], [ %826, %825 ], [ %818, %817 ], [ %816, %815 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #12
  br label %900

900:                                              ; preds = %899, %814, %805
  %.pn1068.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1068.pn.pn.pn.pn.pn, %899 ], [ %.pn1057.pn, %814 ], [ %806, %805 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #12
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #12
  br label %901

901:                                              ; preds = %900, %803
  %.pn1068.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1068.pn.pn.pn.pn.pn.pn, %900 ], [ %804, %803 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #12
  br label %2453

902:                                              ; preds = %780
  %903 = load ptr, ptr %33, align 8, !tbaa !78
  %904 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef nonnull @.str.38)
          to label %905 unwind label %633

905:                                              ; preds = %902
  br i1 %904, label %906, label %949

906:                                              ; preds = %905
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #12
  %907 = load ptr, ptr %33, align 8, !tbaa !78
  %908 = getelementptr inbounds i8, ptr %907, i64 16
  %909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %908, i64 noundef 0)
          to label %910 unwind label %916

910:                                              ; preds = %906
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %909)
          to label %911 unwind label %916

911:                                              ; preds = %910
  %912 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %75)
  %913 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %912)
  br i1 %913, label %920, label %914

914:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #12
  store ptr %75, ptr %77, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %76)
          to label %915 unwind label %918

915:                                              ; preds = %914
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #12
  br label %920

916:                                              ; preds = %910, %906
  %917 = landingpad { ptr, i32 }
          cleanup
  br label %948

918:                                              ; preds = %914
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #12
  br label %947

920:                                              ; preds = %915, %911
  %921 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %922 unwind label %940

922:                                              ; preds = %920
  %.sroa.4152.0.extract.shift = lshr i64 %921, 32
  %.sroa.4152.0.extract.trunc = trunc nuw i64 %.sroa.4152.0.extract.shift to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #12
  %923 = getelementptr inbounds i8, ptr %606, i64 136
  %924 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %923, i64 noundef 0)
          to label %925 unwind label %942

925:                                              ; preds = %922
  %926 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.4152.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %924)
          to label %927 unwind label %942

927:                                              ; preds = %925
  %928 = extractvalue { i64, i64 } %926, 0
  store i64 %928, ptr %78, align 8
  %929 = getelementptr inbounds i8, ptr %78, i64 8
  %930 = extractvalue { i64, i64 } %926, 1
  store i64 %930, ptr %929, align 8
  %931 = call noundef i64 @_ZNK4U1286get_loEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %932 = call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %931)
  %933 = call noundef i64 @_ZNK4U1286get_hiEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %934 = call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %933)
  %935 = add nuw nsw i64 %934, %932
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 noundef %935, i64 noundef 0)
  %936 = load i64, ptr %79, align 8
  %937 = getelementptr inbounds i8, ptr %79, i64 8
  %938 = load i64, ptr %937, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.4152.0.extract.trunc, i64 %936, i64 %938)
          to label %939 unwind label %944

939:                                              ; preds = %927
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #12
  br label %2421

940:                                              ; preds = %920
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %947

942:                                              ; preds = %925, %922
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %946

944:                                              ; preds = %927
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %946

946:                                              ; preds = %944, %942
  %.pn1052 = phi { ptr, i32 } [ %945, %944 ], [ %943, %942 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #12
  br label %947

947:                                              ; preds = %940, %946, %918
  %.pn1052.pn.pn = phi { ptr, i32 } [ %919, %918 ], [ %.pn1052, %946 ], [ %941, %940 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #12
  br label %948

948:                                              ; preds = %947, %916
  %.pn1052.pn.pn.pn = phi { ptr, i32 } [ %.pn1052.pn.pn, %947 ], [ %917, %916 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #12
  br label %2453

949:                                              ; preds = %905
  %950 = load ptr, ptr %33, align 8, !tbaa !78
  %951 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %950, ptr noundef nonnull @.str.39)
          to label %952 unwind label %633

952:                                              ; preds = %949
  br i1 %951, label %953, label %1011

953:                                              ; preds = %952
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #12
  %954 = load ptr, ptr %33, align 8, !tbaa !78
  %955 = getelementptr inbounds i8, ptr %954, i64 16
  %956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %955, i64 noundef 0)
          to label %957 unwind label %963

957:                                              ; preds = %953
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %956)
          to label %958 unwind label %963

958:                                              ; preds = %957
  %959 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %80)
  %960 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %959)
  br i1 %960, label %967, label %961

961:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #12
  store ptr %80, ptr %82, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %81)
          to label %962 unwind label %965

962:                                              ; preds = %961
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #12
  br label %967

963:                                              ; preds = %957, %953
  %964 = landingpad { ptr, i32 }
          cleanup
  br label %1010

965:                                              ; preds = %961
  %966 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #12
  br label %1009

967:                                              ; preds = %962, %958
  %968 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %969 unwind label %974

969:                                              ; preds = %967
  %.sroa.5147.0.extract.shift = lshr i64 %968, 32
  %.sroa.5147.0.extract.trunc = trunc nuw i64 %.sroa.5147.0.extract.shift to i32
  %970 = and i64 %968, 4294967295
  %971 = icmp eq i64 %970, 3
  br i1 %971, label %978, label %972

972:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #12
  store ptr %80, ptr %84, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %83)
          to label %973 unwind label %976

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

974:                                              ; preds = %967
  %975 = landingpad { ptr, i32 }
          cleanup
  br label %1009

976:                                              ; preds = %972
  %977 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #12
  br label %1009

978:                                              ; preds = %973, %969
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #12
  %979 = getelementptr inbounds i8, ptr %606, i64 136
  %980 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %979, i64 noundef 0)
          to label %981 unwind label %989

981:                                              ; preds = %978
  %982 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.5147.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %980)
          to label %983 unwind label %989

983:                                              ; preds = %981
  %984 = extractvalue { i64, i64 } %982, 0
  store i64 %984, ptr %85, align 8
  %985 = getelementptr inbounds i8, ptr %85, i64 8
  %986 = extractvalue { i64, i64 } %982, 1
  store i64 %986, ptr %985, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %86, i64 noundef 0, i64 noundef 0)
  %987 = call noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull align 8 dereferenceable(16) %86)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #12
  br i1 %987, label %.loopexit1151, label %.preheader1150

.preheader1150:                                   ; preds = %983
  %988 = getelementptr inbounds i8, ptr %87, i64 8
  br label %991

989:                                              ; preds = %981, %978
  %990 = landingpad { ptr, i32 }
          cleanup
  br label %1008

991:                                              ; preds = %.preheader1150, %999
  %.0831 = phi i32 [ %1000, %999 ], [ 0, %.preheader1150 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #12
  %992 = invoke { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16) %85, i32 noundef 1)
          to label %993 unwind label %1001

993:                                              ; preds = %991
  %994 = extractvalue { i64, i64 } %992, 0
  store i64 %994, ptr %87, align 8
  %995 = extractvalue { i64, i64 } %992, 1
  store i64 %995, ptr %988, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef 0, i64 noundef 0)
  %996 = call noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %88)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #12
  br i1 %996, label %997, label %.loopexit1151

997:                                              ; preds = %993
  %998 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %85, i32 noundef 1)
          to label %999 unwind label %.loopexit1152

999:                                              ; preds = %997
  %1000 = add i32 %.0831, 1
  br label %991, !llvm.loop !101

1001:                                             ; preds = %991
  %1002 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #12
  br label %1008

.loopexit1152:                                    ; preds = %997
  %lpad.loopexit1154 = landingpad { ptr, i32 }
          cleanup
  br label %1008

.loopexit.split-lp1153:                           ; preds = %.loopexit1151
  %lpad.loopexit.split-lp1155 = landingpad { ptr, i32 }
          cleanup
  br label %1008

.loopexit1151:                                    ; preds = %993, %983
  %.1832 = phi i32 [ %.sroa.5147.0.extract.trunc, %983 ], [ %.0831, %993 ]
  %1003 = zext i32 %.1832 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %89, i64 noundef %1003, i64 noundef 0)
  %1004 = load i64, ptr %89, align 8
  %1005 = getelementptr inbounds i8, ptr %89, i64 8
  %1006 = load i64, ptr %1005, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.5147.0.extract.trunc, i64 %1004, i64 %1006)
          to label %1007 unwind label %.loopexit.split-lp1153

1007:                                             ; preds = %.loopexit1151
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #12
  br label %2421

1008:                                             ; preds = %.loopexit1152, %.loopexit.split-lp1153, %1001, %989
  %.pn1046.pn = phi { ptr, i32 } [ %990, %989 ], [ %1002, %1001 ], [ %lpad.loopexit1154, %.loopexit1152 ], [ %lpad.loopexit.split-lp1155, %.loopexit.split-lp1153 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #12
  br label %1009

1009:                                             ; preds = %974, %976, %1008, %965
  %.pn1046.pn.pn.pn = phi { ptr, i32 } [ %966, %965 ], [ %.pn1046.pn, %1008 ], [ %977, %976 ], [ %975, %974 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #12
  br label %1010

1010:                                             ; preds = %1009, %963
  %.pn1046.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1046.pn.pn.pn, %1009 ], [ %964, %963 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #12
  br label %2453

1011:                                             ; preds = %952
  %1012 = load ptr, ptr %33, align 8, !tbaa !78
  %1013 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1012, ptr noundef nonnull @.str.40)
          to label %1014 unwind label %633

1014:                                             ; preds = %1011
  br i1 %1013, label %1015, label %1065

1015:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #12
  %1016 = load ptr, ptr %33, align 8, !tbaa !78
  %1017 = getelementptr inbounds i8, ptr %1016, i64 16
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1017, i64 noundef 0)
          to label %1019 unwind label %1025

1019:                                             ; preds = %1015
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %90, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1018)
          to label %1020 unwind label %1025

1020:                                             ; preds = %1019
  %1021 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
  %1022 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1021)
  br i1 %1022, label %1029, label %1023

1023:                                             ; preds = %1020
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #12
  store ptr %90, ptr %92, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %91)
          to label %1024 unwind label %1027

1024:                                             ; preds = %1023
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #12
  br label %1029

1025:                                             ; preds = %1019, %1015
  %1026 = landingpad { ptr, i32 }
          cleanup
  br label %1064

1027:                                             ; preds = %1023
  %1028 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #12
  br label %1063

1029:                                             ; preds = %1024, %1020
  %1030 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %1031 unwind label %1036

1031:                                             ; preds = %1029
  %.sroa.5141.0.extract.shift = lshr i64 %1030, 32
  %.sroa.5141.0.extract.trunc = trunc nuw i64 %.sroa.5141.0.extract.shift to i32
  %1032 = and i64 %1030, 4294967295
  %1033 = icmp eq i64 %1032, 3
  br i1 %1033, label %1040, label %1034

1034:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #12
  store ptr %90, ptr %94, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %93)
          to label %1035 unwind label %1038

1035:                                             ; preds = %1034
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #12
  br label %1040

1036:                                             ; preds = %1029
  %1037 = landingpad { ptr, i32 }
          cleanup
  br label %1063

1038:                                             ; preds = %1034
  %1039 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #12
  br label %1063

1040:                                             ; preds = %1035, %1031
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #12
  %1041 = getelementptr inbounds i8, ptr %606, i64 136
  %1042 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1041, i64 noundef 0)
          to label %1043 unwind label %1054

1043:                                             ; preds = %1040
  %1044 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.5141.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %1042)
          to label %1045 unwind label %1054

1045:                                             ; preds = %1043
  %1046 = extractvalue { i64, i64 } %1044, 0
  store i64 %1046, ptr %95, align 8
  %1047 = getelementptr inbounds i8, ptr %95, i64 8
  %1048 = extractvalue { i64, i64 } %1044, 1
  store i64 %1048, ptr %1047, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %96, i64 noundef 0, i64 noundef 0)
  %1049 = call noundef zeroext i1 @_ZNK4U128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %96)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #12
  br i1 %1049, label %.lr.ph1219, label %._crit_edge1220

.lr.ph1219:                                       ; preds = %1045, %1051
  %.08341217 = phi i32 [ %1052, %1051 ], [ 0, %1045 ]
  %1050 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %95, i32 noundef 1)
          to label %1051 unwind label %.loopexit1157

1051:                                             ; preds = %.lr.ph1219
  %1052 = add i32 %.08341217, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %96, i64 noundef 0, i64 noundef 0)
  %1053 = call noundef zeroext i1 @_ZNK4U128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %96)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #12
  br i1 %1053, label %.lr.ph1219, label %._crit_edge1220, !llvm.loop !102

1054:                                             ; preds = %1043, %1040
  %1055 = landingpad { ptr, i32 }
          cleanup
  br label %1062

.loopexit1157:                                    ; preds = %.lr.ph1219
  %lpad.loopexit1159 = landingpad { ptr, i32 }
          cleanup
  br label %1062

.loopexit.split-lp1158:                           ; preds = %._crit_edge1220
  %lpad.loopexit.split-lp1160 = landingpad { ptr, i32 }
          cleanup
  br label %1062

._crit_edge1220:                                  ; preds = %1051, %1045
  %.0834.lcssa = phi i32 [ 0, %1045 ], [ %1052, %1051 ]
  %1056 = sub i32 %.sroa.5141.0.extract.trunc, %.0834.lcssa
  %1057 = zext i32 %1056 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef %1057, i64 noundef 0)
  %1058 = load i64, ptr %97, align 8
  %1059 = getelementptr inbounds i8, ptr %97, i64 8
  %1060 = load i64, ptr %1059, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.5141.0.extract.trunc, i64 %1058, i64 %1060)
          to label %1061 unwind label %.loopexit.split-lp1158

1061:                                             ; preds = %._crit_edge1220
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #12
  br label %2421

1062:                                             ; preds = %.loopexit1157, %.loopexit.split-lp1158, %1054
  %.pn1041 = phi { ptr, i32 } [ %1055, %1054 ], [ %lpad.loopexit1159, %.loopexit1157 ], [ %lpad.loopexit.split-lp1160, %.loopexit.split-lp1158 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #12
  br label %1063

1063:                                             ; preds = %1036, %1038, %1062, %1027
  %.pn1041.pn.pn = phi { ptr, i32 } [ %1028, %1027 ], [ %.pn1041, %1062 ], [ %1039, %1038 ], [ %1037, %1036 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #12
  br label %1064

1064:                                             ; preds = %1063, %1025
  %.pn1041.pn.pn.pn = phi { ptr, i32 } [ %.pn1041.pn.pn, %1063 ], [ %1026, %1025 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #12
  br label %2453

1065:                                             ; preds = %1014
  %1066 = load ptr, ptr %33, align 8, !tbaa !78
  %1067 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1066, ptr noundef nonnull @.str.41)
          to label %1068 unwind label %633

1068:                                             ; preds = %1065
  br i1 %1067, label %1069, label %1135

1069:                                             ; preds = %1068
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #12
  %1070 = load ptr, ptr %33, align 8, !tbaa !78
  %1071 = getelementptr inbounds i8, ptr %1070, i64 16
  %1072 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1071, i64 noundef 0)
          to label %1073 unwind label %1079

1073:                                             ; preds = %1069
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %98, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1072)
          to label %1074 unwind label %1079

1074:                                             ; preds = %1073
  %1075 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %98)
  %1076 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1075)
  br i1 %1076, label %1083, label %1077

1077:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #12
  store ptr %98, ptr %100, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(8) %100) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %99)
          to label %1078 unwind label %1081

1078:                                             ; preds = %1077
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #12
  br label %1083

1079:                                             ; preds = %1073, %1069
  %1080 = landingpad { ptr, i32 }
          cleanup
  br label %1134

1081:                                             ; preds = %1077
  %1082 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #12
  br label %1133

1083:                                             ; preds = %1078, %1074
  %1084 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %1085 unwind label %1097

1085:                                             ; preds = %1083
  %.sroa.4136.0.extract.shift = lshr i64 %1084, 32
  %.sroa.4136.0.extract.trunc = trunc nuw i64 %.sroa.4136.0.extract.shift to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %101) #12
  %1086 = getelementptr inbounds i8, ptr %606, i64 136
  %1087 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1086, i64 noundef 0)
          to label %1088 unwind label %1099

1088:                                             ; preds = %1085
  %1089 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.4136.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %1087)
          to label %1090 unwind label %1099

1090:                                             ; preds = %1088
  %1091 = extractvalue { i64, i64 } %1089, 0
  store i64 %1091, ptr %101, align 8
  %1092 = getelementptr inbounds i8, ptr %101, i64 8
  %1093 = extractvalue { i64, i64 } %1089, 1
  store i64 %1093, ptr %1092, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #12
  call void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102)
  %1094 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %98)
  %1095 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1094)
  %1096 = load i32, ptr %1095, align 4, !tbaa !103
  switch i32 %1096, label %1124 [
    i32 3, label %1103
    i32 2, label %1103
    i32 5, label %1104
    i32 4, label %1104
    i32 7, label %1109
    i32 6, label %1109
    i32 9, label %1114
    i32 8, label %1114
    i32 11, label %1117
    i32 10, label %1117
  ]

1097:                                             ; preds = %1083
  %1098 = landingpad { ptr, i32 }
          cleanup
  br label %1133

1099:                                             ; preds = %1088, %1085
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1132

1101:                                             ; preds = %1129, %1125
  %1102 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1103:                                             ; preds = %1090, %1090
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(16) %101, i64 16, i1 false), !tbaa.struct !105
  br label %1129

1104:                                             ; preds = %1090, %1090
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %103) #12
  %1105 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %101)
  %1106 = trunc i64 %1105 to i16
  %1107 = call noundef zeroext i16 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap16Et(i16 noundef zeroext %1106)
  %1108 = zext i16 %1107 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %103, i64 noundef %1108, i64 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(16) %103, i64 16, i1 false), !tbaa.struct !105
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #12
  br label %1129

1109:                                             ; preds = %1090, %1090
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %104) #12
  %1110 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %101)
  %1111 = trunc i64 %1110 to i32
  %1112 = call noundef i32 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap32Ej(i32 noundef %1111)
  %1113 = zext i32 %1112 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %104, i64 noundef %1113, i64 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(16) %104, i64 16, i1 false), !tbaa.struct !105
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #12
  br label %1129

1114:                                             ; preds = %1090, %1090
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %105) #12
  %1115 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %101)
  %1116 = call noundef i64 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap64Em(i64 noundef %1115)
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %105, i64 noundef %1116, i64 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(16) %105, i64 16, i1 false), !tbaa.struct !105
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #12
  br label %1129

1117:                                             ; preds = %1090, %1090
  %.sroa.0131.0.copyload = load i64, ptr %101, align 8, !tbaa !91
  %.sroa.2132.0.copyload = load i64, ptr %1092, align 8, !tbaa !91
  %1118 = invoke { i64, i64 } @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H8bswap128E4U128(i64 %.sroa.0131.0.copyload, i64 %.sroa.2132.0.copyload)
          to label %1119 unwind label %1122

1119:                                             ; preds = %1117
  %1120 = extractvalue { i64, i64 } %1118, 0
  %1121 = extractvalue { i64, i64 } %1118, 1
  store i64 %1120, ptr %102, align 8, !tbaa !91
  %.sroa.5134.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 8
  store i64 %1121, ptr %.sroa.5134.0..sroa_idx, align 8, !tbaa !91
  br label %1129

1122:                                             ; preds = %1117
  %1123 = landingpad { ptr, i32 }
          cleanup
  br label %1131

1124:                                             ; preds = %1090
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #12
  store ptr %98, ptr %107, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(8) %107) #12
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %106)
          to label %1125 unwind label %1127

1125:                                             ; preds = %1124
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #12
  %1126 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %1126, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %1126, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %2613 unwind label %1101

1127:                                             ; preds = %1124
  %1128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #12
  br label %1131

1129:                                             ; preds = %1119, %1114, %1109, %1104, %1103
  %.sroa.0129.0.copyload = load i64, ptr %102, align 8, !tbaa !91
  %.sroa.2130.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 8
  %.sroa.2130.0.copyload = load i64, ptr %.sroa.2130.0..sroa_idx, align 8, !tbaa !91
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.4136.0.extract.trunc, i64 %.sroa.0129.0.copyload, i64 %.sroa.2130.0.copyload)
          to label %1130 unwind label %1101

1130:                                             ; preds = %1129
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #12
  br label %2421

1131:                                             ; preds = %1127, %1122, %1101
  %.pn1035 = phi { ptr, i32 } [ %1102, %1101 ], [ %1128, %1127 ], [ %1123, %1122 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #12
  br label %1132

1132:                                             ; preds = %1131, %1099
  %.pn1035.pn = phi { ptr, i32 } [ %.pn1035, %1131 ], [ %1100, %1099 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #12
  br label %1133

1133:                                             ; preds = %1097, %1132, %1081
  %.pn1035.pn.pn.pn = phi { ptr, i32 } [ %1082, %1081 ], [ %.pn1035.pn, %1132 ], [ %1098, %1097 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #12
  br label %1134

1134:                                             ; preds = %1133, %1079
  %.pn1035.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1035.pn.pn.pn, %1133 ], [ %1080, %1079 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #12
  br label %2453

1135:                                             ; preds = %1068
  %1136 = load ptr, ptr %33, align 8, !tbaa !78
  %1137 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1136, ptr noundef nonnull @.str.42)
          to label %1138 unwind label %633

1138:                                             ; preds = %1135
  br i1 %1137, label %1139, label %1195

1139:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #12
  %1140 = load ptr, ptr %33, align 8, !tbaa !78
  %1141 = getelementptr inbounds i8, ptr %1140, i64 16
  %1142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1141, i64 noundef 0)
          to label %1143 unwind label %1149

1143:                                             ; preds = %1139
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %108, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1142)
          to label %1144 unwind label %1149

1144:                                             ; preds = %1143
  %1145 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %108)
  %1146 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1145)
  br i1 %1146, label %1153, label %1147

1147:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #12
  store ptr %108, ptr %110, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(8) %110) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %109)
          to label %1148 unwind label %1151

1148:                                             ; preds = %1147
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #12
  br label %1153

1149:                                             ; preds = %1143, %1139
  %1150 = landingpad { ptr, i32 }
          cleanup
  br label %1194

1151:                                             ; preds = %1147
  %1152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #12
  br label %1193

1153:                                             ; preds = %1148, %1144
  %1154 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %1155 unwind label %1165

1155:                                             ; preds = %1153
  %.sroa.4126.0.extract.shift = lshr i64 %1154, 32
  %.sroa.4126.0.extract.trunc = trunc nuw i64 %.sroa.4126.0.extract.shift to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #12
  %1156 = getelementptr inbounds i8, ptr %606, i64 136
  %1157 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1156, i64 noundef 0)
          to label %1158 unwind label %1167

1158:                                             ; preds = %1155
  %1159 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.4126.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %1157)
          to label %1160 unwind label %1167

1160:                                             ; preds = %1158
  %1161 = extractvalue { i64, i64 } %1159, 0
  store i64 %1161, ptr %111, align 8
  %1162 = getelementptr inbounds i8, ptr %111, i64 8
  %1163 = extractvalue { i64, i64 } %1159, 1
  store i64 %1163, ptr %1162, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %112) #12
  call void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112)
  %.not1446 = icmp ult i64 %1154, 4294967296
  br i1 %.not1446, label %._crit_edge1216, label %.lr.ph1215

.lr.ph1215:                                       ; preds = %1160
  %1164 = getelementptr inbounds i8, ptr %113, i64 8
  br label %1171

._crit_edge1216:                                  ; preds = %1188, %1160
  %.sroa.0121.0.copyload = load i64, ptr %112, align 8, !tbaa !91
  %.sroa.2122.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 8
  %.sroa.2122.0.copyload = load i64, ptr %.sroa.2122.0..sroa_idx, align 8, !tbaa !91
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.4126.0.extract.trunc, i64 %.sroa.0121.0.copyload, i64 %.sroa.2122.0.copyload)
          to label %1190 unwind label %1169

1165:                                             ; preds = %1153
  %1166 = landingpad { ptr, i32 }
          cleanup
  br label %1193

1167:                                             ; preds = %1158, %1155
  %1168 = landingpad { ptr, i32 }
          cleanup
  br label %1192

1169:                                             ; preds = %._crit_edge1216
  %1170 = landingpad { ptr, i32 }
          cleanup
  br label %1191

1171:                                             ; preds = %.lr.ph1215, %1188
  %.08351213 = phi i64 [ 0, %.lr.ph1215 ], [ %1189, %1188 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #12
  %1172 = invoke { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16) %111, i32 noundef 1)
          to label %1173 unwind label %1180

1173:                                             ; preds = %1171
  %1174 = extractvalue { i64, i64 } %1172, 0
  store i64 %1174, ptr %113, align 8
  %1175 = extractvalue { i64, i64 } %1172, 1
  store i64 %1175, ptr %1164, align 8
  %1176 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %113, i32 noundef 0)
          to label %1177 unwind label %1180

1177:                                             ; preds = %1173
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #12
  br i1 %1176, label %1178, label %1184

1178:                                             ; preds = %1177
  %1179 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128oREj(ptr noundef nonnull align 8 dereferenceable(16) %112, i32 noundef 1)
          to label %1184 unwind label %1182

1180:                                             ; preds = %1173, %1171
  %1181 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #12
  br label %1191

1182:                                             ; preds = %1186, %1184, %1178
  %1183 = landingpad { ptr, i32 }
          cleanup
  br label %1191

1184:                                             ; preds = %1178, %1177
  %1185 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128lSEj(ptr noundef nonnull align 8 dereferenceable(16) %112, i32 noundef 1)
          to label %1186 unwind label %1182

1186:                                             ; preds = %1184
  %1187 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4U128rSEj(ptr noundef nonnull align 8 dereferenceable(16) %111, i32 noundef 1)
          to label %1188 unwind label %1182

1188:                                             ; preds = %1186
  %1189 = add nuw nsw i64 %.08351213, 1
  %exitcond.not = icmp eq i64 %1189, %.sroa.4126.0.extract.shift
  br i1 %exitcond.not, label %._crit_edge1216, label %1171, !llvm.loop !106

1190:                                             ; preds = %._crit_edge1216
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #12
  br label %2421

1191:                                             ; preds = %1180, %1182, %1169
  %.pn1028.pn = phi { ptr, i32 } [ %1170, %1169 ], [ %1183, %1182 ], [ %1181, %1180 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #12
  br label %1192

1192:                                             ; preds = %1191, %1167
  %.pn1028.pn.pn = phi { ptr, i32 } [ %.pn1028.pn, %1191 ], [ %1168, %1167 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #12
  br label %1193

1193:                                             ; preds = %1165, %1192, %1151
  %.pn1028.pn.pn.pn.pn = phi { ptr, i32 } [ %1152, %1151 ], [ %.pn1028.pn.pn, %1192 ], [ %1166, %1165 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #12
  br label %1194

1194:                                             ; preds = %1193, %1149
  %.pn1028.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1028.pn.pn.pn.pn, %1193 ], [ %1150, %1149 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #12
  br label %2453

1195:                                             ; preds = %1138
  %1196 = load ptr, ptr %33, align 8, !tbaa !78
  %1197 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1196, ptr noundef nonnull @.str.43)
          to label %1198 unwind label %633

1198:                                             ; preds = %1195
  br i1 %1197, label %1203, label %1199

1199:                                             ; preds = %1198
  %1200 = load ptr, ptr %33, align 8, !tbaa !78
  %1201 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1200, ptr noundef nonnull @.str.44)
          to label %1202 unwind label %633

1202:                                             ; preds = %1199
  br i1 %1201, label %1203, label %1311

1203:                                             ; preds = %1202, %1198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #12
  %1204 = load ptr, ptr %33, align 8, !tbaa !78
  %1205 = getelementptr inbounds i8, ptr %1204, i64 16
  %1206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1205, i64 noundef 0)
          to label %1207 unwind label %1214

1207:                                             ; preds = %1203
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %114, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1206)
          to label %1208 unwind label %1214

1208:                                             ; preds = %1207
  %1209 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %114)
  %1210 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1209)
  br i1 %1210, label %1218, label %1211

1211:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %116) #12
  store ptr %33, ptr %116, align 8, !tbaa !78
  %1212 = getelementptr inbounds i8, ptr %116, i64 8
  store ptr %114, ptr %1212, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(16) %116) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %115)
          to label %1213 unwind label %1216

1213:                                             ; preds = %1211
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #12
  br label %1218

1214:                                             ; preds = %1207, %1203
  %1215 = landingpad { ptr, i32 }
          cleanup
  br label %1310

1216:                                             ; preds = %1211
  %1217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #12
  br label %1309

1218:                                             ; preds = %1213, %1208
  %1219 = invoke i64 @_ZN12_GLOBAL__N_18TypeInfo8for_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1220 unwind label %1240

1220:                                             ; preds = %1218
  %.sroa.4.0.extract.shift = lshr i64 %1219, 32
  %.sroa.4.0.extract.trunc = trunc nuw i64 %.sroa.4.0.extract.shift to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #12
  %1221 = getelementptr inbounds i8, ptr %606, i64 136
  %1222 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1221, i64 noundef 0)
          to label %1223 unwind label %1242

1223:                                             ; preds = %1220
  %1224 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.4.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %1222)
          to label %1225 unwind label %1242

1225:                                             ; preds = %1223
  %1226 = extractvalue { i64, i64 } %1224, 0
  store i64 %1226, ptr %117, align 8
  %1227 = getelementptr inbounds i8, ptr %117, i64 8
  %1228 = extractvalue { i64, i64 } %1224, 1
  store i64 %1228, ptr %1227, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #12
  %1229 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1221, i64 noundef 1)
          to label %1230 unwind label %1244

1230:                                             ; preds = %1225
  %1231 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %.sroa.4.0.extract.trunc, ptr noundef nonnull align 8 dereferenceable(48) %1229)
          to label %1232 unwind label %1244

1232:                                             ; preds = %1230
  %1233 = extractvalue { i64, i64 } %1231, 0
  store i64 %1233, ptr %118, align 8
  %1234 = getelementptr inbounds i8, ptr %118, i64 8
  %1235 = extractvalue { i64, i64 } %1231, 1
  store i64 %1235, ptr %1234, align 8
  %1236 = invoke noundef zeroext i1 @_ZNK4U128leEj(ptr noundef nonnull align 8 dereferenceable(16) %118, i32 noundef %.sroa.4.0.extract.trunc)
          to label %1237 unwind label %1244

1237:                                             ; preds = %1232
  br i1 %1236, label %1248, label %1238

1238:                                             ; preds = %1237
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %120) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 1 dereferenceable(1) %120) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %119)
          to label %1239 unwind label %1246

1239:                                             ; preds = %1238
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #12
  br label %1248

1240:                                             ; preds = %1218
  %1241 = landingpad { ptr, i32 }
          cleanup
  br label %1309

1242:                                             ; preds = %1223, %1220
  %1243 = landingpad { ptr, i32 }
          cleanup
  br label %1308

1244:                                             ; preds = %1232, %1230, %1225
  %1245 = landingpad { ptr, i32 }
          cleanup
  br label %1307

1246:                                             ; preds = %1238
  %1247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %120) #12
  br label %1307

1248:                                             ; preds = %1239, %1237
  %1249 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %118)
  %1250 = trunc i64 %1249 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %121) #12
  call void @_ZN4U128C2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121)
  %1251 = icmp eq i32 %1250, 0
  %1252 = icmp eq i64 %.sroa.4.0.extract.shift, 64
  %or.cond = select i1 %1251, i1 true, i1 %1252
  br i1 %or.cond, label %1253, label %1256

1253:                                             ; preds = %1248
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(16) %117, i64 16, i1 false), !tbaa.struct !105
  %.sroa.0.0.copyload.pre = load i64, ptr %121, align 8, !tbaa !91
  %.sroa.2.0..sroa_idx.phi.trans.insert = getelementptr inbounds i8, ptr %121, i64 8
  %.sroa.2.0.copyload.pre = load i64, ptr %.sroa.2.0..sroa_idx.phi.trans.insert, align 8, !tbaa !91
  br label %1304

1254:                                             ; preds = %1304, %1256
  %1255 = landingpad { ptr, i32 }
          cleanup
  br label %1306

1256:                                             ; preds = %1248
  %1257 = load ptr, ptr %33, align 8, !tbaa !78
  %1258 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1257, ptr noundef nonnull @.str.43)
          to label %1259 unwind label %1254

1259:                                             ; preds = %1256
  br i1 %1258, label %1260, label %1282

1260:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %122) #12
  %1261 = invoke { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16) %117, i32 noundef %1250)
          to label %1262 unwind label %1275

1262:                                             ; preds = %1260
  %1263 = extractvalue { i64, i64 } %1261, 0
  store i64 %1263, ptr %122, align 8
  %1264 = getelementptr inbounds i8, ptr %122, i64 8
  %1265 = extractvalue { i64, i64 } %1261, 1
  store i64 %1265, ptr %1264, align 8
  %1266 = sub i32 %.sroa.4.0.extract.trunc, %1250
  %1267 = invoke { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16) %117, i32 noundef %1266)
          to label %1268 unwind label %1277

1268:                                             ; preds = %1262
  %1269 = extractvalue { i64, i64 } %1267, 0
  %1270 = extractvalue { i64, i64 } %1267, 1
  %1271 = invoke { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16) %122, i64 %1269, i64 %1270)
          to label %1272 unwind label %1279

1272:                                             ; preds = %1268
  %1273 = extractvalue { i64, i64 } %1271, 0
  %1274 = extractvalue { i64, i64 } %1271, 1
  store i64 %1273, ptr %121, align 8, !tbaa !91
  %.sroa.5106.0..sroa_idx = getelementptr inbounds i8, ptr %121, i64 8
  store i64 %1274, ptr %.sroa.5106.0..sroa_idx, align 8, !tbaa !91
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #12
  br label %1304

1275:                                             ; preds = %1260
  %1276 = landingpad { ptr, i32 }
          cleanup
  br label %1281

1277:                                             ; preds = %1262
  %1278 = landingpad { ptr, i32 }
          cleanup
  br label %1281

1279:                                             ; preds = %1268
  %1280 = landingpad { ptr, i32 }
          cleanup
  br label %1281

1281:                                             ; preds = %1277, %1279, %1275
  %.pn1018.pn = phi { ptr, i32 } [ %1276, %1275 ], [ %1280, %1279 ], [ %1278, %1277 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #12
  br label %1306

1282:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #12
  %1283 = invoke { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16) %117, i32 noundef %1250)
          to label %1284 unwind label %1297

1284:                                             ; preds = %1282
  %1285 = extractvalue { i64, i64 } %1283, 0
  store i64 %1285, ptr %123, align 8
  %1286 = getelementptr inbounds i8, ptr %123, i64 8
  %1287 = extractvalue { i64, i64 } %1283, 1
  store i64 %1287, ptr %1286, align 8
  %1288 = sub i32 %.sroa.4.0.extract.trunc, %1250
  %1289 = invoke { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16) %117, i32 noundef %1288)
          to label %1290 unwind label %1299

1290:                                             ; preds = %1284
  %1291 = extractvalue { i64, i64 } %1289, 0
  %1292 = extractvalue { i64, i64 } %1289, 1
  %1293 = invoke { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16) %123, i64 %1291, i64 %1292)
          to label %1294 unwind label %1301

1294:                                             ; preds = %1290
  %1295 = extractvalue { i64, i64 } %1293, 0
  %1296 = extractvalue { i64, i64 } %1293, 1
  store i64 %1295, ptr %121, align 8, !tbaa !91
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %121, i64 8
  store i64 %1296, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !91
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #12
  br label %1304

1297:                                             ; preds = %1282
  %1298 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1299:                                             ; preds = %1284
  %1300 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1301:                                             ; preds = %1290
  %1302 = landingpad { ptr, i32 }
          cleanup
  br label %1303

1303:                                             ; preds = %1299, %1301, %1297
  %.pn1015.pn = phi { ptr, i32 } [ %1298, %1297 ], [ %1302, %1301 ], [ %1300, %1299 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #12
  br label %1306

1304:                                             ; preds = %1272, %1294, %1253
  %.sroa.2.0.copyload = phi i64 [ %1274, %1272 ], [ %1296, %1294 ], [ %.sroa.2.0.copyload.pre, %1253 ]
  %.sroa.0.0.copyload = phi i64 [ %1273, %1272 ], [ %1295, %1294 ], [ %.sroa.0.0.copyload.pre, %1253 ]
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %.sroa.4.0.extract.trunc, i64 %.sroa.0.0.copyload, i64 %.sroa.2.0.copyload)
          to label %1305 unwind label %1254

1305:                                             ; preds = %1304
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #12
  br label %2421

1306:                                             ; preds = %1303, %1281, %1254
  %.pn1021 = phi { ptr, i32 } [ %1255, %1254 ], [ %.pn1018.pn, %1281 ], [ %.pn1015.pn, %1303 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #12
  br label %1307

1307:                                             ; preds = %1306, %1246, %1244
  %.pn1021.pn = phi { ptr, i32 } [ %.pn1021, %1306 ], [ %1247, %1246 ], [ %1245, %1244 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #12
  br label %1308

1308:                                             ; preds = %1307, %1242
  %.pn1021.pn.pn = phi { ptr, i32 } [ %.pn1021.pn, %1307 ], [ %1243, %1242 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #12
  br label %1309

1309:                                             ; preds = %1240, %1308, %1216
  %.pn1021.pn.pn.pn.pn = phi { ptr, i32 } [ %1217, %1216 ], [ %.pn1021.pn.pn, %1308 ], [ %1241, %1240 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #12
  br label %1310

1310:                                             ; preds = %1309, %1214
  %.pn1021.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1021.pn.pn.pn.pn, %1309 ], [ %1215, %1214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #12
  br label %2453

1311:                                             ; preds = %1202
  %1312 = load ptr, ptr %33, align 8, !tbaa !78
  %1313 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1312, ptr noundef nonnull @.str.45)
          to label %1314 unwind label %633

1314:                                             ; preds = %1311
  br i1 %1313, label %1315, label %1352

1315:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %124) #12
  %1316 = load ptr, ptr %33, align 8, !tbaa !78
  %1317 = getelementptr inbounds i8, ptr %1316, i64 16
  %1318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1317, i64 noundef 0)
          to label %1319 unwind label %1326

1319:                                             ; preds = %1315
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %124, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1318)
          to label %1320 unwind label %1326

1320:                                             ; preds = %1319
  %1321 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %124)
  %1322 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1321)
  br i1 %1322, label %1330, label %1323

1323:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %126) #12
  store ptr %33, ptr %126, align 8, !tbaa !78
  %1324 = getelementptr inbounds i8, ptr %126, i64 8
  store ptr %124, ptr %1324, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 8 dereferenceable(16) %126) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %125)
          to label %1325 unwind label %1328

1325:                                             ; preds = %1323
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #12
  br label %1330

1326:                                             ; preds = %1319, %1315
  %1327 = landingpad { ptr, i32 }
          cleanup
  br label %1351

1328:                                             ; preds = %1323
  %1329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #12
  br label %1350

1330:                                             ; preds = %1325, %1320
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %127) #12
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %127, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1331 unwind label %1345

1331:                                             ; preds = %1330
  %1332 = getelementptr inbounds i8, ptr %606, i64 136
  %1333 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1332, i64 noundef 0)
          to label %1334 unwind label %1347

1334:                                             ; preds = %1331
  %1335 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1332, i64 noundef 1)
          to label %1336 unwind label %1347

1336:                                             ; preds = %1334
  %1337 = 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) %124, ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(48) %1333, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %1335, i1 noundef zeroext false)
          to label %1338 unwind label %1347

1338:                                             ; preds = %1336
  %1339 = getelementptr inbounds i8, ptr %127, i64 16
  %1340 = zext i1 %1337 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %128, i64 noundef %1340, i64 noundef 0)
  %1341 = load i64, ptr %128, align 8
  %1342 = getelementptr inbounds i8, ptr %128, i64 8
  %1343 = load i64, ptr %1342, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %1339, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 8, i64 %1341, i64 %1343)
          to label %1344 unwind label %1347

1344:                                             ; preds = %1338
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #12
  br label %2421

1345:                                             ; preds = %1330
  %1346 = landingpad { ptr, i32 }
          cleanup
  br label %1349

1347:                                             ; preds = %1338, %1336, %1334, %1331
  %1348 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #12
  br label %1349

1349:                                             ; preds = %1347, %1345
  %.pn1011 = phi { ptr, i32 } [ %1348, %1347 ], [ %1346, %1345 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %127) #12
  br label %1350

1350:                                             ; preds = %1349, %1328
  %.pn1011.pn = phi { ptr, i32 } [ %.pn1011, %1349 ], [ %1329, %1328 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #12
  br label %1351

1351:                                             ; preds = %1350, %1326
  %.pn1011.pn.pn = phi { ptr, i32 } [ %.pn1011.pn, %1350 ], [ %1327, %1326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #12
  br label %2453

1352:                                             ; preds = %1314
  %1353 = load ptr, ptr %33, align 8, !tbaa !78
  %1354 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1353, ptr noundef nonnull @.str.46)
          to label %1355 unwind label %633

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

1356:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #12
  %1357 = load ptr, ptr %33, align 8, !tbaa !78
  %1358 = getelementptr inbounds i8, ptr %1357, i64 16
  %1359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1358, i64 noundef 0)
          to label %1360 unwind label %1367

1360:                                             ; preds = %1356
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %129, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1359)
          to label %1361 unwind label %1367

1361:                                             ; preds = %1360
  %1362 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %129)
  %1363 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1362)
  br i1 %1363, label %1371, label %1364

1364:                                             ; preds = %1361
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %131) #12
  store ptr %33, ptr %131, align 8, !tbaa !78
  %1365 = getelementptr inbounds i8, ptr %131, i64 8
  store ptr %129, ptr %1365, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 8 dereferenceable(16) %131) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %130)
          to label %1366 unwind label %1369

1366:                                             ; preds = %1364
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %131) #12
  br label %1371

1367:                                             ; preds = %1360, %1356
  %1368 = landingpad { ptr, i32 }
          cleanup
  br label %1392

1369:                                             ; preds = %1364
  %1370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %131) #12
  br label %1391

1371:                                             ; preds = %1366, %1361
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %132) #12
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %132, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1372 unwind label %1386

1372:                                             ; preds = %1371
  %1373 = getelementptr inbounds i8, ptr %606, i64 136
  %1374 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1373, i64 noundef 0)
          to label %1375 unwind label %1388

1375:                                             ; preds = %1372
  %1376 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1373, i64 noundef 1)
          to label %1377 unwind label %1388

1377:                                             ; preds = %1375
  %1378 = 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) %129, ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef nonnull align 8 dereferenceable(48) %1374, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %1376, i1 noundef zeroext false)
          to label %1379 unwind label %1388

1379:                                             ; preds = %1377
  %1380 = getelementptr inbounds i8, ptr %132, i64 16
  %1381 = zext i1 %1378 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %133, i64 noundef %1381, i64 noundef 0)
  %1382 = load i64, ptr %133, align 8
  %1383 = getelementptr inbounds i8, ptr %133, i64 8
  %1384 = load i64, ptr %1383, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %1380, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 8, i64 %1382, i64 %1384)
          to label %1385 unwind label %1388

1385:                                             ; preds = %1379
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #12
  br label %2421

1386:                                             ; preds = %1371
  %1387 = landingpad { ptr, i32 }
          cleanup
  br label %1390

1388:                                             ; preds = %1379, %1377, %1375, %1372
  %1389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  br label %1390

1390:                                             ; preds = %1388, %1386
  %.pn1007 = phi { ptr, i32 } [ %1389, %1388 ], [ %1387, %1386 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %132) #12
  br label %1391

1391:                                             ; preds = %1390, %1369
  %.pn1007.pn = phi { ptr, i32 } [ %.pn1007, %1390 ], [ %1370, %1369 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #12
  br label %1392

1392:                                             ; preds = %1391, %1367
  %.pn1007.pn.pn = phi { ptr, i32 } [ %.pn1007.pn, %1391 ], [ %1368, %1367 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #12
  br label %2453

1393:                                             ; preds = %1355
  %1394 = load ptr, ptr %33, align 8, !tbaa !78
  %1395 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1394, ptr noundef nonnull @.str.47)
          to label %1396 unwind label %633

1396:                                             ; preds = %1393
  br i1 %1395, label %1397, label %1434

1397:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %134) #12
  %1398 = load ptr, ptr %33, align 8, !tbaa !78
  %1399 = getelementptr inbounds i8, ptr %1398, i64 16
  %1400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1399, i64 noundef 0)
          to label %1401 unwind label %1408

1401:                                             ; preds = %1397
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %134, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1400)
          to label %1402 unwind label %1408

1402:                                             ; preds = %1401
  %1403 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %134)
  %1404 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1403)
  br i1 %1404, label %1412, label %1405

1405:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %136) #12
  store ptr %33, ptr %136, align 8, !tbaa !78
  %1406 = getelementptr inbounds i8, ptr %136, i64 8
  store ptr %134, ptr %1406, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(16) %136) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %135)
          to label %1407 unwind label %1410

1407:                                             ; preds = %1405
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #12
  br label %1412

1408:                                             ; preds = %1401, %1397
  %1409 = landingpad { ptr, i32 }
          cleanup
  br label %1433

1410:                                             ; preds = %1405
  %1411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #12
  br label %1432

1412:                                             ; preds = %1407, %1402
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %137) #12
  invoke void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %137, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %134)
          to label %1413 unwind label %1427

1413:                                             ; preds = %1412
  %1414 = getelementptr inbounds i8, ptr %606, i64 136
  %1415 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1414, i64 noundef 0)
          to label %1416 unwind label %1429

1416:                                             ; preds = %1413
  %1417 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1414, i64 noundef 1)
          to label %1418 unwind label %1429

1418:                                             ; preds = %1416
  %1419 = 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) %134, ptr noundef nonnull align 8 dereferenceable(16) %137, ptr noundef nonnull align 8 dereferenceable(48) %1415, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(48) %1417, i1 noundef zeroext false)
          to label %1420 unwind label %1429

1420:                                             ; preds = %1418
  %1421 = getelementptr inbounds i8, ptr %137, i64 16
  %1422 = zext i1 %1419 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %138, i64 noundef %1422, i64 noundef 0)
  %1423 = load i64, ptr %138, align 8
  %1424 = getelementptr inbounds i8, ptr %138, i64 8
  %1425 = load i64, ptr %1424, align 8
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEj4U128(ptr noundef nonnull align 8 dereferenceable(16) %1421, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef 8, i64 %1423, i64 %1425)
          to label %1426 unwind label %1429

1426:                                             ; preds = %1420
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %137) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #12
  br label %2421

1427:                                             ; preds = %1412
  %1428 = landingpad { ptr, i32 }
          cleanup
  br label %1431

1429:                                             ; preds = %1420, %1418, %1416, %1413
  %1430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3MIR4eval8ValueRefES2_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #12
  br label %1431

1431:                                             ; preds = %1429, %1427
  %.pn1003 = phi { ptr, i32 } [ %1430, %1429 ], [ %1428, %1427 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %137) #12
  br label %1432

1432:                                             ; preds = %1431, %1410
  %.pn1003.pn = phi { ptr, i32 } [ %.pn1003, %1431 ], [ %1411, %1410 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #12
  br label %1433

1433:                                             ; preds = %1432, %1408
  %.pn1003.pn.pn = phi { ptr, i32 } [ %.pn1003.pn, %1432 ], [ %1409, %1408 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #12
  br label %2453

1434:                                             ; preds = %1396
  %1435 = load ptr, ptr %33, align 8, !tbaa !78
  %1436 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1435, ptr noundef nonnull @.str.48)
          to label %1437 unwind label %633

1437:                                             ; preds = %1434
  br i1 %1436, label %1442, label %1438

1438:                                             ; preds = %1437
  %1439 = load ptr, ptr %33, align 8, !tbaa !78
  %1440 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1439, ptr noundef nonnull @.str.49)
          to label %1441 unwind label %633

1441:                                             ; preds = %1438
  br i1 %1440, label %1442, label %1469

1442:                                             ; preds = %1441, %1437
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %139) #12
  %1443 = load ptr, ptr %33, align 8, !tbaa !78
  %1444 = getelementptr inbounds i8, ptr %1443, i64 16
  %1445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1444, i64 noundef 0)
          to label %1446 unwind label %1453

1446:                                             ; preds = %1442
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %139, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1445)
          to label %1447 unwind label %1453

1447:                                             ; preds = %1446
  %1448 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %139)
  %1449 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1448)
  br i1 %1449, label %1459, label %1450

1450:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %141) #12
  store ptr %33, ptr %141, align 8, !tbaa !78
  %1451 = getelementptr inbounds i8, ptr %141, i64 8
  store ptr %139, ptr %1451, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(16) %141) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %140)
          to label %1452 unwind label %1457

1452:                                             ; preds = %1450
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #12
  br label %1459

1453:                                             ; preds = %1446, %1442
  %1454 = landingpad { ptr, i32 }
          cleanup
  br label %1468

1455:                                             ; preds = %1464, %1462, %1459
  %1456 = landingpad { ptr, i32 }
          cleanup
  br label %1467

1457:                                             ; preds = %1450
  %1458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141) #12
  br label %1467

1459:                                             ; preds = %1452, %1447
  %1460 = getelementptr inbounds i8, ptr %606, i64 136
  %1461 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1460, i64 noundef 0)
          to label %1462 unwind label %1455

1462:                                             ; preds = %1459
  %1463 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1460, i64 noundef 1)
          to label %1464 unwind label %1455

1464:                                             ; preds = %1462
  %1465 = 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) %139, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1461, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %1463, i1 noundef zeroext false)
          to label %1466 unwind label %1455

1466:                                             ; preds = %1464
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #12
  br label %2421

1467:                                             ; preds = %1457, %1455
  %.pn1000 = phi { ptr, i32 } [ %1456, %1455 ], [ %1458, %1457 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #12
  br label %1468

1468:                                             ; preds = %1467, %1453
  %.pn1000.pn = phi { ptr, i32 } [ %.pn1000, %1467 ], [ %1454, %1453 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #12
  br label %2453

1469:                                             ; preds = %1441
  %1470 = load ptr, ptr %33, align 8, !tbaa !78
  %1471 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1470, ptr noundef nonnull @.str.50)
          to label %1472 unwind label %633

1472:                                             ; preds = %1469
  br i1 %1471, label %1477, label %1473

1473:                                             ; preds = %1472
  %1474 = load ptr, ptr %33, align 8, !tbaa !78
  %1475 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1474, ptr noundef nonnull @.str.51)
          to label %1476 unwind label %633

1476:                                             ; preds = %1473
  br i1 %1475, label %1477, label %1504

1477:                                             ; preds = %1476, %1472
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #12
  %1478 = load ptr, ptr %33, align 8, !tbaa !78
  %1479 = getelementptr inbounds i8, ptr %1478, i64 16
  %1480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1479, i64 noundef 0)
          to label %1481 unwind label %1488

1481:                                             ; preds = %1477
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %142, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1480)
          to label %1482 unwind label %1488

1482:                                             ; preds = %1481
  %1483 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %142)
  %1484 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1483)
  br i1 %1484, label %1494, label %1485

1485:                                             ; preds = %1482
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %144) #12
  store ptr %33, ptr %144, align 8, !tbaa !78
  %1486 = getelementptr inbounds i8, ptr %144, i64 8
  store ptr %142, ptr %1486, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 8 dereferenceable(16) %144) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %143)
          to label %1487 unwind label %1492

1487:                                             ; preds = %1485
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #12
  br label %1494

1488:                                             ; preds = %1481, %1477
  %1489 = landingpad { ptr, i32 }
          cleanup
  br label %1503

1490:                                             ; preds = %1499, %1497, %1494
  %1491 = landingpad { ptr, i32 }
          cleanup
  br label %1502

1492:                                             ; preds = %1485
  %1493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #12
  br label %1502

1494:                                             ; preds = %1487, %1482
  %1495 = getelementptr inbounds i8, ptr %606, i64 136
  %1496 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1495, i64 noundef 0)
          to label %1497 unwind label %1490

1497:                                             ; preds = %1494
  %1498 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1495, i64 noundef 1)
          to label %1499 unwind label %1490

1499:                                             ; preds = %1497
  %1500 = 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) %142, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1496, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %1498, i1 noundef zeroext false)
          to label %1501 unwind label %1490

1501:                                             ; preds = %1499
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #12
  br label %2421

1502:                                             ; preds = %1492, %1490
  %.pn997 = phi { ptr, i32 } [ %1491, %1490 ], [ %1493, %1492 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #12
  br label %1503

1503:                                             ; preds = %1502, %1488
  %.pn997.pn = phi { ptr, i32 } [ %.pn997, %1502 ], [ %1489, %1488 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #12
  br label %2453

1504:                                             ; preds = %1476
  %1505 = load ptr, ptr %33, align 8, !tbaa !78
  %1506 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1505, ptr noundef nonnull @.str.52)
          to label %1507 unwind label %633

1507:                                             ; preds = %1504
  br i1 %1506, label %1512, label %1508

1508:                                             ; preds = %1507
  %1509 = load ptr, ptr %33, align 8, !tbaa !78
  %1510 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1509, ptr noundef nonnull @.str.53)
          to label %1511 unwind label %633

1511:                                             ; preds = %1508
  br i1 %1510, label %1512, label %1539

1512:                                             ; preds = %1511, %1507
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #12
  %1513 = load ptr, ptr %33, align 8, !tbaa !78
  %1514 = getelementptr inbounds i8, ptr %1513, i64 16
  %1515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1514, i64 noundef 0)
          to label %1516 unwind label %1523

1516:                                             ; preds = %1512
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %145, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1515)
          to label %1517 unwind label %1523

1517:                                             ; preds = %1516
  %1518 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %145)
  %1519 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1518)
  br i1 %1519, label %1529, label %1520

1520:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %147) #12
  store ptr %33, ptr %147, align 8, !tbaa !78
  %1521 = getelementptr inbounds i8, ptr %147, i64 8
  store ptr %145, ptr %1521, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(16) %147) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %146)
          to label %1522 unwind label %1527

1522:                                             ; preds = %1520
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %147) #12
  br label %1529

1523:                                             ; preds = %1516, %1512
  %1524 = landingpad { ptr, i32 }
          cleanup
  br label %1538

1525:                                             ; preds = %1534, %1532, %1529
  %1526 = landingpad { ptr, i32 }
          cleanup
  br label %1537

1527:                                             ; preds = %1520
  %1528 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %147) #12
  br label %1537

1529:                                             ; preds = %1522, %1517
  %1530 = getelementptr inbounds i8, ptr %606, i64 136
  %1531 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1530, i64 noundef 0)
          to label %1532 unwind label %1525

1532:                                             ; preds = %1529
  %1533 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1530, i64 noundef 1)
          to label %1534 unwind label %1525

1534:                                             ; preds = %1532
  %1535 = 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) %145, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1531, i32 noundef 4, ptr noundef nonnull align 8 dereferenceable(48) %1533, i1 noundef zeroext false)
          to label %1536 unwind label %1525

1536:                                             ; preds = %1534
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #12
  br label %2421

1537:                                             ; preds = %1527, %1525
  %.pn994 = phi { ptr, i32 } [ %1526, %1525 ], [ %1528, %1527 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #12
  br label %1538

1538:                                             ; preds = %1537, %1523
  %.pn994.pn = phi { ptr, i32 } [ %.pn994, %1537 ], [ %1524, %1523 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #12
  br label %2453

1539:                                             ; preds = %1511
  %1540 = load ptr, ptr %33, align 8, !tbaa !78
  %1541 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1540, ptr noundef nonnull @.str.54)
          to label %1542 unwind label %633

1542:                                             ; preds = %1539
  br i1 %1541, label %1543, label %1570

1543:                                             ; preds = %1542
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #12
  %1544 = load ptr, ptr %33, align 8, !tbaa !78
  %1545 = getelementptr inbounds i8, ptr %1544, i64 16
  %1546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1545, i64 noundef 0)
          to label %1547 unwind label %1554

1547:                                             ; preds = %1543
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %148, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1546)
          to label %1548 unwind label %1554

1548:                                             ; preds = %1547
  %1549 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %148)
  %1550 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1549)
  br i1 %1550, label %1560, label %1551

1551:                                             ; preds = %1548
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #12
  store ptr %33, ptr %150, align 8, !tbaa !78
  %1552 = getelementptr inbounds i8, ptr %150, i64 8
  store ptr %148, ptr %1552, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull align 8 dereferenceable(16) %150) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %149)
          to label %1553 unwind label %1558

1553:                                             ; preds = %1551
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #12
  br label %1560

1554:                                             ; preds = %1547, %1543
  %1555 = landingpad { ptr, i32 }
          cleanup
  br label %1569

1556:                                             ; preds = %1565, %1563, %1560
  %1557 = landingpad { ptr, i32 }
          cleanup
  br label %1568

1558:                                             ; preds = %1551
  %1559 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #12
  br label %1568

1560:                                             ; preds = %1553, %1548
  %1561 = getelementptr inbounds i8, ptr %606, i64 136
  %1562 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1561, i64 noundef 0)
          to label %1563 unwind label %1556

1563:                                             ; preds = %1560
  %1564 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1561, i64 noundef 1)
          to label %1565 unwind label %1556

1565:                                             ; preds = %1563
  %1566 = 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) %148, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1562, i32 noundef 13, ptr noundef nonnull align 8 dereferenceable(48) %1564, i1 noundef zeroext false)
          to label %1567 unwind label %1556

1567:                                             ; preds = %1565
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #12
  br label %2421

1568:                                             ; preds = %1558, %1556
  %.pn991 = phi { ptr, i32 } [ %1557, %1556 ], [ %1559, %1558 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #12
  br label %1569

1569:                                             ; preds = %1568, %1554
  %.pn991.pn = phi { ptr, i32 } [ %.pn991, %1568 ], [ %1555, %1554 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #12
  br label %2453

1570:                                             ; preds = %1542
  %1571 = load ptr, ptr %33, align 8, !tbaa !78
  %1572 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1571, ptr noundef nonnull @.str.55)
          to label %1573 unwind label %633

1573:                                             ; preds = %1570
  br i1 %1572, label %1574, label %1601

1574:                                             ; preds = %1573
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %151) #12
  %1575 = load ptr, ptr %33, align 8, !tbaa !78
  %1576 = getelementptr inbounds i8, ptr %1575, i64 16
  %1577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1576, i64 noundef 0)
          to label %1578 unwind label %1585

1578:                                             ; preds = %1574
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %151, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1577)
          to label %1579 unwind label %1585

1579:                                             ; preds = %1578
  %1580 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %151)
  %1581 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1580)
  br i1 %1581, label %1591, label %1582

1582:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %153) #12
  store ptr %33, ptr %153, align 8, !tbaa !78
  %1583 = getelementptr inbounds i8, ptr %153, i64 8
  store ptr %151, ptr %1583, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(16) %153) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %152)
          to label %1584 unwind label %1589

1584:                                             ; preds = %1582
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %153) #12
  br label %1591

1585:                                             ; preds = %1578, %1574
  %1586 = landingpad { ptr, i32 }
          cleanup
  br label %1600

1587:                                             ; preds = %1596, %1594, %1591
  %1588 = landingpad { ptr, i32 }
          cleanup
  br label %1599

1589:                                             ; preds = %1582
  %1590 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %153) #12
  br label %1599

1591:                                             ; preds = %1584, %1579
  %1592 = getelementptr inbounds i8, ptr %606, i64 136
  %1593 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1592, i64 noundef 0)
          to label %1594 unwind label %1587

1594:                                             ; preds = %1591
  %1595 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1592, i64 noundef 1)
          to label %1596 unwind label %1587

1596:                                             ; preds = %1594
  %1597 = 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) %151, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1593, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(48) %1595, i1 noundef zeroext false)
          to label %1598 unwind label %1587

1598:                                             ; preds = %1596
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #12
  br label %2421

1599:                                             ; preds = %1589, %1587
  %.pn988 = phi { ptr, i32 } [ %1588, %1587 ], [ %1590, %1589 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #12
  br label %1600

1600:                                             ; preds = %1599, %1585
  %.pn988.pn = phi { ptr, i32 } [ %.pn988, %1599 ], [ %1586, %1585 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #12
  br label %2453

1601:                                             ; preds = %1573
  %1602 = load ptr, ptr %33, align 8, !tbaa !78
  %1603 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1602, ptr noundef nonnull @.str.56)
          to label %1604 unwind label %633

1604:                                             ; preds = %1601
  br i1 %1603, label %1605, label %1637

1605:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #12
  %1606 = load ptr, ptr %33, align 8, !tbaa !78
  %1607 = getelementptr inbounds i8, ptr %1606, i64 16
  %1608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1607, i64 noundef 0)
          to label %1609 unwind label %1616

1609:                                             ; preds = %1605
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %154, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1608)
          to label %1610 unwind label %1616

1610:                                             ; preds = %1609
  %1611 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %154)
  %1612 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1611)
  br i1 %1612, label %1620, label %1613

1613:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %156) #12
  store ptr %33, ptr %156, align 8, !tbaa !78
  %1614 = getelementptr inbounds i8, ptr %156, i64 8
  store ptr %154, ptr %1614, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(16) %156) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %155)
          to label %1615 unwind label %1618

1615:                                             ; preds = %1613
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %156) #12
  br label %1620

1616:                                             ; preds = %1609, %1605
  %1617 = landingpad { ptr, i32 }
          cleanup
  br label %1636

1618:                                             ; preds = %1613
  %1619 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %156) #12
  br label %1635

1620:                                             ; preds = %1615, %1610
  %1621 = getelementptr inbounds i8, ptr %606, i64 136
  %1622 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1621, i64 noundef 0)
          to label %1623 unwind label %1630

1623:                                             ; preds = %1620
  %1624 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1621, i64 noundef 1)
          to label %1625 unwind label %1630

1625:                                             ; preds = %1623
  %1626 = 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) %154, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1622, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %1624, i1 noundef zeroext false)
          to label %1627 unwind label %1630

1627:                                             ; preds = %1625
  br i1 %1626, label %1628, label %1634

1628:                                             ; preds = %1627
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #12
  store ptr %33, ptr %158, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %157)
          to label %1629 unwind label %1632

1629:                                             ; preds = %1628
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #12
  br label %1634

1630:                                             ; preds = %1625, %1623, %1620
  %1631 = landingpad { ptr, i32 }
          cleanup
  br label %1635

1632:                                             ; preds = %1628
  %1633 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #12
  br label %1635

1634:                                             ; preds = %1629, %1627
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #12
  br label %2421

1635:                                             ; preds = %1630, %1632, %1618
  %.pn984.pn = phi { ptr, i32 } [ %1619, %1618 ], [ %1633, %1632 ], [ %1631, %1630 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #12
  br label %1636

1636:                                             ; preds = %1635, %1616
  %.pn984.pn.pn = phi { ptr, i32 } [ %.pn984.pn, %1635 ], [ %1617, %1616 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #12
  br label %2453

1637:                                             ; preds = %1604
  %1638 = load ptr, ptr %33, align 8, !tbaa !78
  %1639 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1638, ptr noundef nonnull @.str.57)
          to label %1640 unwind label %633

1640:                                             ; preds = %1637
  br i1 %1639, label %1641, label %1673

1641:                                             ; preds = %1640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %159) #12
  %1642 = load ptr, ptr %33, align 8, !tbaa !78
  %1643 = getelementptr inbounds i8, ptr %1642, i64 16
  %1644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1643, i64 noundef 0)
          to label %1645 unwind label %1652

1645:                                             ; preds = %1641
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %159, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1644)
          to label %1646 unwind label %1652

1646:                                             ; preds = %1645
  %1647 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %159)
  %1648 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1647)
  br i1 %1648, label %1656, label %1649

1649:                                             ; preds = %1646
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %161) #12
  store ptr %33, ptr %161, align 8, !tbaa !78
  %1650 = getelementptr inbounds i8, ptr %161, i64 8
  store ptr %159, ptr %1650, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull align 8 dereferenceable(16) %161) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %160)
          to label %1651 unwind label %1654

1651:                                             ; preds = %1649
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #12
  br label %1656

1652:                                             ; preds = %1645, %1641
  %1653 = landingpad { ptr, i32 }
          cleanup
  br label %1672

1654:                                             ; preds = %1649
  %1655 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #12
  br label %1671

1656:                                             ; preds = %1651, %1646
  %1657 = getelementptr inbounds i8, ptr %606, i64 136
  %1658 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1657, i64 noundef 0)
          to label %1659 unwind label %1666

1659:                                             ; preds = %1656
  %1660 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1657, i64 noundef 1)
          to label %1661 unwind label %1666

1661:                                             ; preds = %1659
  %1662 = 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) %159, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1658, i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(48) %1660, i1 noundef zeroext false)
          to label %1663 unwind label %1666

1663:                                             ; preds = %1661
  br i1 %1662, label %1664, label %1670

1664:                                             ; preds = %1663
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %163) #12
  store ptr %33, ptr %163, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 8 dereferenceable(8) %163) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %162)
          to label %1665 unwind label %1668

1665:                                             ; preds = %1664
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #12
  br label %1670

1666:                                             ; preds = %1661, %1659, %1656
  %1667 = landingpad { ptr, i32 }
          cleanup
  br label %1671

1668:                                             ; preds = %1664
  %1669 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #12
  br label %1671

1670:                                             ; preds = %1665, %1663
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #12
  br label %2421

1671:                                             ; preds = %1666, %1668, %1654
  %.pn980.pn = phi { ptr, i32 } [ %1655, %1654 ], [ %1669, %1668 ], [ %1667, %1666 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #12
  br label %1672

1672:                                             ; preds = %1671, %1652
  %.pn980.pn.pn = phi { ptr, i32 } [ %.pn980.pn, %1671 ], [ %1653, %1652 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #12
  br label %2453

1673:                                             ; preds = %1640
  %1674 = load ptr, ptr %33, align 8, !tbaa !78
  %1675 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1674, ptr noundef nonnull @.str.58)
          to label %1676 unwind label %633

1676:                                             ; preds = %1673
  br i1 %1675, label %1677, label %1709

1677:                                             ; preds = %1676
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %164) #12
  %1678 = load ptr, ptr %33, align 8, !tbaa !78
  %1679 = getelementptr inbounds i8, ptr %1678, i64 16
  %1680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1679, i64 noundef 0)
          to label %1681 unwind label %1688

1681:                                             ; preds = %1677
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %164, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1680)
          to label %1682 unwind label %1688

1682:                                             ; preds = %1681
  %1683 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %164)
  %1684 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1683)
  br i1 %1684, label %1692, label %1685

1685:                                             ; preds = %1682
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %166) #12
  store ptr %33, ptr %166, align 8, !tbaa !78
  %1686 = getelementptr inbounds i8, ptr %166, i64 8
  store ptr %164, ptr %1686, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 8 dereferenceable(16) %166) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %165)
          to label %1687 unwind label %1690

1687:                                             ; preds = %1685
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #12
  br label %1692

1688:                                             ; preds = %1681, %1677
  %1689 = landingpad { ptr, i32 }
          cleanup
  br label %1708

1690:                                             ; preds = %1685
  %1691 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #12
  br label %1707

1692:                                             ; preds = %1687, %1682
  %1693 = getelementptr inbounds i8, ptr %606, i64 136
  %1694 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1693, i64 noundef 0)
          to label %1695 unwind label %1702

1695:                                             ; preds = %1692
  %1696 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1693, i64 noundef 1)
          to label %1697 unwind label %1702

1697:                                             ; preds = %1695
  %1698 = 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) %164, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1694, i32 noundef 6, ptr noundef nonnull align 8 dereferenceable(48) %1696, i1 noundef zeroext false)
          to label %1699 unwind label %1702

1699:                                             ; preds = %1697
  br i1 %1698, label %1700, label %1706

1700:                                             ; preds = %1699
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #12
  store ptr %33, ptr %168, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %167, ptr noundef nonnull align 8 dereferenceable(8) %168) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %167)
          to label %1701 unwind label %1704

1701:                                             ; preds = %1700
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #12
  br label %1706

1702:                                             ; preds = %1697, %1695, %1692
  %1703 = landingpad { ptr, i32 }
          cleanup
  br label %1707

1704:                                             ; preds = %1700
  %1705 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #12
  br label %1707

1706:                                             ; preds = %1701, %1699
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #12
  br label %2421

1707:                                             ; preds = %1702, %1704, %1690
  %.pn976.pn = phi { ptr, i32 } [ %1691, %1690 ], [ %1705, %1704 ], [ %1703, %1702 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #12
  br label %1708

1708:                                             ; preds = %1707, %1688
  %.pn976.pn.pn = phi { ptr, i32 } [ %.pn976.pn, %1707 ], [ %1689, %1688 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #12
  br label %2453

1709:                                             ; preds = %1676
  %1710 = load ptr, ptr %33, align 8, !tbaa !78
  %1711 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1710, ptr noundef nonnull @.str.59)
          to label %1712 unwind label %633

1712:                                             ; preds = %1709
  br i1 %1711, label %1713, label %1740

1713:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %169) #12
  %1714 = load ptr, ptr %33, align 8, !tbaa !78
  %1715 = getelementptr inbounds i8, ptr %1714, i64 16
  %1716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1715, i64 noundef 0)
          to label %1717 unwind label %1724

1717:                                             ; preds = %1713
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %169, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1716)
          to label %1718 unwind label %1724

1718:                                             ; preds = %1717
  %1719 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %169)
  %1720 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1719)
  br i1 %1720, label %1730, label %1721

1721:                                             ; preds = %1718
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %171) #12
  store ptr %33, ptr %171, align 8, !tbaa !78
  %1722 = getelementptr inbounds i8, ptr %171, i64 8
  store ptr %169, ptr %1722, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef nonnull align 8 dereferenceable(16) %171) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %170)
          to label %1723 unwind label %1728

1723:                                             ; preds = %1721
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %171) #12
  br label %1730

1724:                                             ; preds = %1717, %1713
  %1725 = landingpad { ptr, i32 }
          cleanup
  br label %1739

1726:                                             ; preds = %1735, %1733, %1730
  %1727 = landingpad { ptr, i32 }
          cleanup
  br label %1738

1728:                                             ; preds = %1721
  %1729 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %171) #12
  br label %1738

1730:                                             ; preds = %1723, %1718
  %1731 = getelementptr inbounds i8, ptr %606, i64 136
  %1732 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1731, i64 noundef 0)
          to label %1733 unwind label %1726

1733:                                             ; preds = %1730
  %1734 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1731, i64 noundef 1)
          to label %1735 unwind label %1726

1735:                                             ; preds = %1733
  %1736 = 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) %169, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1732, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(48) %1734, i1 noundef zeroext true)
          to label %1737 unwind label %1726

1737:                                             ; preds = %1735
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #12
  br label %2421

1738:                                             ; preds = %1728, %1726
  %.pn973 = phi { ptr, i32 } [ %1727, %1726 ], [ %1729, %1728 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #12
  br label %1739

1739:                                             ; preds = %1738, %1724
  %.pn973.pn = phi { ptr, i32 } [ %.pn973, %1738 ], [ %1725, %1724 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #12
  br label %2453

1740:                                             ; preds = %1712
  %1741 = load ptr, ptr %33, align 8, !tbaa !78
  %1742 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1741, ptr noundef nonnull @.str.60)
          to label %1743 unwind label %633

1743:                                             ; preds = %1740
  br i1 %1742, label %1744, label %1771

1744:                                             ; preds = %1743
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #12
  %1745 = load ptr, ptr %33, align 8, !tbaa !78
  %1746 = getelementptr inbounds i8, ptr %1745, i64 16
  %1747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1746, i64 noundef 0)
          to label %1748 unwind label %1755

1748:                                             ; preds = %1744
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %172, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1747)
          to label %1749 unwind label %1755

1749:                                             ; preds = %1748
  %1750 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %172)
  %1751 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1750)
  br i1 %1751, label %1761, label %1752

1752:                                             ; preds = %1749
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %174) #12
  store ptr %33, ptr %174, align 8, !tbaa !78
  %1753 = getelementptr inbounds i8, ptr %174, i64 8
  store ptr %172, ptr %1753, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %173, ptr noundef nonnull align 8 dereferenceable(16) %174) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %173)
          to label %1754 unwind label %1759

1754:                                             ; preds = %1752
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %174) #12
  br label %1761

1755:                                             ; preds = %1748, %1744
  %1756 = landingpad { ptr, i32 }
          cleanup
  br label %1770

1757:                                             ; preds = %1766, %1764, %1761
  %1758 = landingpad { ptr, i32 }
          cleanup
  br label %1769

1759:                                             ; preds = %1752
  %1760 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %174) #12
  br label %1769

1761:                                             ; preds = %1754, %1749
  %1762 = getelementptr inbounds i8, ptr %606, i64 136
  %1763 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1762, i64 noundef 0)
          to label %1764 unwind label %1757

1764:                                             ; preds = %1761
  %1765 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1762, i64 noundef 1)
          to label %1766 unwind label %1757

1766:                                             ; preds = %1764
  %1767 = 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) %172, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(48) %1763, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(48) %1765, i1 noundef zeroext true)
          to label %1768 unwind label %1757

1768:                                             ; preds = %1766
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #12
  br label %2421

1769:                                             ; preds = %1759, %1757
  %.pn970 = phi { ptr, i32 } [ %1758, %1757 ], [ %1760, %1759 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #12
  br label %1770

1770:                                             ; preds = %1769, %1755
  %.pn970.pn = phi { ptr, i32 } [ %.pn970, %1769 ], [ %1756, %1755 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #12
  br label %2453

1771:                                             ; preds = %1743
  %1772 = load ptr, ptr %33, align 8, !tbaa !78
  %1773 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1772, ptr noundef nonnull @.str.61)
          to label %1774 unwind label %633

1774:                                             ; preds = %1771
  br i1 %1773, label %1775, label %1783

1775:                                             ; preds = %1774
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %1776 unwind label %633

1776:                                             ; preds = %1775
  %1777 = getelementptr inbounds i8, ptr %606, i64 136
  %1778 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1777, i64 noundef 0)
          to label %1779 unwind label %1781

1779:                                             ; preds = %1776
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %175, ptr noundef nonnull align 8 dereferenceable(48) %1778)
          to label %1780 unwind label %1781

1780:                                             ; preds = %1779
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #12
  br label %2421

1781:                                             ; preds = %1779, %1776
  %1782 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #12
  br label %2453

1783:                                             ; preds = %1774
  %1784 = load ptr, ptr %33, align 8, !tbaa !78
  %1785 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1784, ptr noundef nonnull @.str.62)
          to label %1786 unwind label %633

1786:                                             ; preds = %1783
  br i1 %1785, label %1787, label %1795

1787:                                             ; preds = %1786
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %1788 unwind label %633

1788:                                             ; preds = %1787
  %1789 = getelementptr inbounds i8, ptr %606, i64 136
  %1790 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1789, i64 noundef 0)
          to label %1791 unwind label %1793

1791:                                             ; preds = %1788
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %176, ptr noundef nonnull align 8 dereferenceable(48) %1790)
          to label %1792 unwind label %1793

1792:                                             ; preds = %1791
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #12
  br label %2421

1793:                                             ; preds = %1791, %1788
  %1794 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #12
  br label %2453

1795:                                             ; preds = %1786
  %1796 = load ptr, ptr %33, align 8, !tbaa !78
  %1797 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1796, ptr noundef nonnull @.str.63)
          to label %1798 unwind label %633

1798:                                             ; preds = %1795
  br i1 %1797, label %1799, label %1818

1799:                                             ; preds = %1798
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %177) #12
  %1800 = getelementptr inbounds i8, ptr %606, i64 136
  %1801 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1800, i64 noundef 0)
          to label %1802 unwind label %1812

1802:                                             ; preds = %1799
  %1803 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %1801)
          to label %1804 unwind label %1812

1804:                                             ; preds = %1802
  %1805 = extractvalue { i64, i64 } %1803, 0
  store i64 %1805, ptr %177, align 8
  %1806 = getelementptr inbounds i8, ptr %177, i64 8
  %1807 = extractvalue { i64, i64 } %1803, 1
  store i64 %1807, ptr %1806, align 8
  %1808 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %177, i32 noundef 0)
          to label %1809 unwind label %1812

1809:                                             ; preds = %1804
  br i1 %1808, label %1816, label %1810

1810:                                             ; preds = %1809
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %179) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef nonnull align 1 dereferenceable(1) %179) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %178)
          to label %1811 unwind label %1814

1811:                                             ; preds = %1810
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %179) #12
  br label %1816

1812:                                             ; preds = %1804, %1802, %1799
  %1813 = landingpad { ptr, i32 }
          cleanup
  br label %1817

1814:                                             ; preds = %1810
  %1815 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %178) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %179) #12
  br label %1817

1816:                                             ; preds = %1811, %1809
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #12
  br label %2421

1817:                                             ; preds = %1814, %1812
  %.pn968 = phi { ptr, i32 } [ %1815, %1814 ], [ %1813, %1812 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %177) #12
  br label %2453

1818:                                             ; preds = %1798
  %1819 = load ptr, ptr %33, align 8, !tbaa !78
  %1820 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1819, ptr noundef nonnull @.str.64)
          to label %1821 unwind label %633

1821:                                             ; preds = %1818
  br i1 %1820, label %1822, label %1844

1822:                                             ; preds = %1821
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %180) #12
  %1823 = load ptr, ptr %33, align 8, !tbaa !78
  %1824 = getelementptr inbounds i8, ptr %1823, i64 16
  %1825 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1824, i64 noundef 0)
          to label %1826 unwind label %1835

1826:                                             ; preds = %1822
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %180, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1825)
          to label %1827 unwind label %1835

1827:                                             ; preds = %1826
  %1828 = getelementptr inbounds i8, ptr %0, i64 8
  %1829 = getelementptr inbounds i8, ptr %1, i64 480
  %1830 = load ptr, ptr %1829, align 8, !tbaa !79
  %1831 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve18type_is_impossibleERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1828, ptr noundef nonnull align 8 dereferenceable(8) %1830, ptr noundef nonnull align 8 dereferenceable(8) %180)
          to label %1832 unwind label %1837

1832:                                             ; preds = %1827
  br i1 %1831, label %1833, label %1841

1833:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %182) #12
  store ptr %180, ptr %182, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(8) %182) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %181)
          to label %1834 unwind label %1839

1834:                                             ; preds = %1833
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #12
  br label %1841

1835:                                             ; preds = %1826, %1822
  %1836 = landingpad { ptr, i32 }
          cleanup
  br label %1843

1837:                                             ; preds = %1827
  %1838 = landingpad { ptr, i32 }
          cleanup
  br label %1842

1839:                                             ; preds = %1833
  %1840 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #12
  br label %1842

1841:                                             ; preds = %1834, %1832
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %180) #12
  br label %2421

1842:                                             ; preds = %1839, %1837
  %.pn965 = phi { ptr, i32 } [ %1840, %1839 ], [ %1838, %1837 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #12
  br label %1843

1843:                                             ; preds = %1842, %1835
  %.pn965.pn = phi { ptr, i32 } [ %.pn965, %1842 ], [ %1836, %1835 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %180) #12
  br label %2453

1844:                                             ; preds = %1821
  %1845 = load ptr, ptr %33, align 8, !tbaa !78
  %1846 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1845, ptr noundef nonnull @.str.65)
          to label %1847 unwind label %633

1847:                                             ; preds = %1844
  br i1 %1846, label %1848, label %2077

1848:                                             ; preds = %1847
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %183) #12
  %1849 = load ptr, ptr %33, align 8, !tbaa !78
  %1850 = getelementptr inbounds i8, ptr %1849, i64 16
  %1851 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1850, i64 noundef 0)
          to label %1852 unwind label %1859

1852:                                             ; preds = %1848
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %183, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1851)
          to label %1853 unwind label %1859

1853:                                             ; preds = %1852
  %1854 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %183)
  %1855 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1854)
  br i1 %1855, label %1863, label %1856

1856:                                             ; preds = %1853
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %185) #12
  store ptr %33, ptr %185, align 8, !tbaa !78
  %1857 = getelementptr inbounds i8, ptr %185, i64 8
  store ptr %183, ptr %1857, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %184, ptr noundef nonnull align 8 dereferenceable(16) %185) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %184)
          to label %1858 unwind label %1861

1858:                                             ; preds = %1856
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %185) #12
  br label %1863

1859:                                             ; preds = %1852, %1848
  %1860 = landingpad { ptr, i32 }
          cleanup
  br label %2076

1861:                                             ; preds = %1856
  %1862 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %185) #12
  br label %2075

1863:                                             ; preds = %1858, %1853
  %1864 = getelementptr inbounds i8, ptr %1, i64 480
  %1865 = load ptr, ptr %1864, align 8, !tbaa !79
  %1866 = getelementptr inbounds i8, ptr %0, i64 8
  %1867 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1865, ptr noundef nonnull align 8 dereferenceable(424) %1866, ptr noundef nonnull align 8 dereferenceable(8) %183)
          to label %1868 unwind label %1871

1868:                                             ; preds = %1863
  %.not914 = icmp eq ptr %1867, null
  br i1 %.not914, label %1869, label %1873

1869:                                             ; preds = %1868
  %1870 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %1870, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %1871

1871:                                             ; preds = %1869, %1863
  %1872 = landingpad { ptr, i32 }
          cleanup
  br label %2075

1873:                                             ; preds = %1868
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %186) #12
  %1874 = getelementptr inbounds i8, ptr %606, i64 136
  %1875 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1874, i64 noundef 0)
          to label %1876 unwind label %1882

1876:                                             ; preds = %1873
  %1877 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1875)
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %186, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %1877, ptr noundef null)
          to label %1878 unwind label %1882

1878:                                             ; preds = %1876
  %1879 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1874, i64 noundef 1)
          to label %.lr.ph1206 unwind label %1884

.loopexit1169:                                    ; preds = %.lr.ph1206, %..loopexit1162_crit_edge, %1936, %1947
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %206) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  %1880 = getelementptr inbounds i8, ptr %1867, i64 88
  %1881 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1880) #12
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %1881)
          to label %1960 unwind label %1964

1882:                                             ; preds = %1876, %1873
  %1883 = landingpad { ptr, i32 }
          cleanup
  br label %2074

1884:                                             ; preds = %1878
  %1885 = landingpad { ptr, i32 }
          cleanup
  br label %2073

.lr.ph1206:                                       ; preds = %1878
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %187) #12
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #12
  %1886 = getelementptr inbounds i8, ptr %188, i64 8
  %1887 = call noundef i32 @_ZNK3MIR5Param3tagEv(ptr noundef nonnull align 8 dereferenceable(48) %1879)
  switch i32 %1887, label %.loopexit1169 [
    i32 0, label %1888
    i32 1, label %.lr.ph1204
    i32 2, label %1920
    i32 3, label %.lr.ph
  ]

1888:                                             ; preds = %.lr.ph1206
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.8, i32 noundef 2811, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE) #11
  unreachable

.lr.ph1204:                                       ; preds = %.lr.ph1206
  %1889 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1879)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %188) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #12
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %189, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %1889, ptr noundef null)
          to label %1890 unwind label %1896

1890:                                             ; preds = %.lr.ph1204
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.434") align 8 %188, ptr noundef nonnull align 8 dereferenceable(16) %189, ptr noundef nonnull align 8 dereferenceable(120) %322)
          to label %1891 unwind label %1898

1891:                                             ; preds = %1890
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #12
  %1892 = load i64, ptr %188, align 8, !tbaa !107
  %1893 = icmp eq i64 %1892, 4096
  br i1 %1893, label %1903, label %1894

1894:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %191) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 1 dereferenceable(1) %191) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %190)
          to label %1895 unwind label %1901

1895:                                             ; preds = %1894
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %191) #12
  br label %1903

1896:                                             ; preds = %.lr.ph1204
  %1897 = landingpad { ptr, i32 }
          cleanup
  br label %1900

1898:                                             ; preds = %1890
  %1899 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %189) #12
  br label %1900

1900:                                             ; preds = %1898, %1896
  %.pn950 = phi { ptr, i32 } [ %1899, %1898 ], [ %1897, %1896 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #12
  br label %1919

1901:                                             ; preds = %1894
  %1902 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %191) #12
  br label %1918

1903:                                             ; preds = %1895, %1891
  %1904 = call noundef ptr @_ZNK3MIR4eval8RelocPtr12as_staticrefEv(ptr noundef nonnull align 8 dereferenceable(8) %1886)
  %.not952 = icmp eq ptr %1904, null
  br i1 %.not952, label %1905, label %1909

1905:                                             ; preds = %1903
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %193) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %192, ptr noundef nonnull align 1 dereferenceable(1) %193) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %192)
          to label %1906 unwind label %1907

1906:                                             ; preds = %1905
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %193) #12
  br label %1909

1907:                                             ; preds = %1905
  %1908 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %193) #12
  br label %1918

1909:                                             ; preds = %1906, %1903
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %194) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %195) #12
  %1910 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR4eval9StaticRef4pathEv(ptr noundef nonnull align 8 dereferenceable(112) %1904)
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %195, ptr noundef nonnull align 8 dereferenceable(88) %1910)
          to label %1911 unwind label %1913

1911:                                             ; preds = %1909
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.431") align 8 %194, ptr noundef nonnull align 8 dereferenceable(88) %195)
          to label %..loopexit1162_crit_edge unwind label %1915

..loopexit1162_crit_edge:                         ; preds = %1911
  %1912 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull align 8 dereferenceable(16) %194) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %194) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %195) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %195) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #12
  br label %.loopexit1169

1913:                                             ; preds = %1909
  %1914 = landingpad { ptr, i32 }
          cleanup
  br label %1917

1915:                                             ; preds = %1911
  %1916 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %195) #12
  br label %1917

1917:                                             ; preds = %1915, %1913
  %.pn953 = phi { ptr, i32 } [ %1916, %1915 ], [ %1914, %1913 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %195) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #12
  br label %1918

1918:                                             ; preds = %1907, %1917, %1901
  %.pn953.pn.pn = phi { ptr, i32 } [ %1902, %1901 ], [ %.pn953, %1917 ], [ %1908, %1907 ]
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %188) #12
  br label %1919

1919:                                             ; preds = %1918, %1900
  %.pn953.pn.pn.pn = phi { ptr, i32 } [ %.pn953.pn.pn, %1918 ], [ %.pn950, %1900 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %188) #12
  br label %2072

1920:                                             ; preds = %.lr.ph1206
  %1921 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %1879)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %196) #12
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %196, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %198) #12
  store ptr %196, ptr %198, align 8, !tbaa !78
  %1922 = getelementptr inbounds i8, ptr %198, i64 8
  store ptr %1879, ptr %1922, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(16) %198) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %197)
          to label %1923 unwind label %1925

1923:                                             ; preds = %1920
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %198) #12
  %1924 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %1924, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %1924, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %2613 unwind label %1927

1925:                                             ; preds = %1920
  %1926 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %198) #12
  br label %1929

1927:                                             ; preds = %1923
  %1928 = landingpad { ptr, i32 }
          cleanup
  br label %1929

1929:                                             ; preds = %1927, %1925
  %.pn948 = phi { ptr, i32 } [ %1928, %1927 ], [ %1926, %1925 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %196) #12
  br label %2072

.lr.ph:                                           ; preds = %.lr.ph1206
  %1930 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1879)
  %1931 = call noundef ptr @_ZNK3MIR8Constant12opt_FunctionEv(ptr noundef nonnull align 8 dereferenceable(40) %1930)
  %.not938 = icmp eq ptr %1931, null
  br i1 %.not938, label %1941, label %1932

1932:                                             ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %199) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %200) #12
  %1933 = load ptr, ptr %1864, align 8, !tbaa !79
  %1934 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1931) #12
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %200, ptr noundef nonnull align 8 dereferenceable(96) %607, ptr noundef nonnull align 8 dereferenceable(8) %1933, ptr noundef nonnull align 8 dereferenceable(88) %1934, i1 noundef zeroext true)
          to label %1935 unwind label %.split

1935:                                             ; preds = %1932
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.431") align 8 %199, ptr noundef nonnull align 8 dereferenceable(88) %200)
          to label %1936 unwind label %.split1188

1936:                                             ; preds = %1935
  %1937 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull align 8 dereferenceable(16) %199) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %199) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %200) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %200) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #12
  br label %.loopexit1169

.split:                                           ; preds = %1932
  %1938 = landingpad { ptr, i32 }
          cleanup
  br label %1940

.split1188:                                       ; preds = %1935
  %1939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %200) #12
  br label %1940

1940:                                             ; preds = %.split1188, %.split
  %.pn945 = phi { ptr, i32 } [ %1939, %.split1188 ], [ %1938, %.split ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %200) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %199) #12
  br label %2072

1941:                                             ; preds = %.lr.ph
  %1942 = call noundef ptr @_ZNK3MIR8Constant12opt_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1930)
  %.not939 = icmp eq ptr %1942, null
  br i1 %.not939, label %.split1191, label %1943

1943:                                             ; preds = %1941
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %201) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %202) #12
  %1944 = load ptr, ptr %1864, align 8, !tbaa !79
  %1945 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1942) #12
  invoke void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %202, ptr noundef nonnull align 8 dereferenceable(96) %607, ptr noundef nonnull align 8 dereferenceable(8) %1944, ptr noundef nonnull align 8 dereferenceable(88) %1945, i1 noundef zeroext true)
          to label %1946 unwind label %.split1193

1946:                                             ; preds = %1943
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.431") align 8 %201, ptr noundef nonnull align 8 dereferenceable(88) %202)
          to label %1947 unwind label %.split1196

1947:                                             ; preds = %1946
  %1948 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3HIR4PathEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull align 8 dereferenceable(16) %201) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %201) #12
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %202) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %202) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #12
  br label %.loopexit1169

.split1193:                                       ; preds = %1943
  %1949 = landingpad { ptr, i32 }
          cleanup
  br label %1951

.split1196:                                       ; preds = %1946
  %1950 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %202) #12
  br label %1951

1951:                                             ; preds = %.split1196, %.split1193
  %.pn942 = phi { ptr, i32 } [ %1950, %.split1196 ], [ %1949, %.split1193 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %202) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %201) #12
  br label %2072

.split1191:                                       ; preds = %1941
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %203) #12
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %203, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %205) #12
  store ptr %203, ptr %205, align 8, !tbaa !78
  %1952 = getelementptr inbounds i8, ptr %205, i64 8
  store ptr %1879, ptr %1952, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %204, ptr noundef nonnull align 8 dereferenceable(16) %205) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %204)
          to label %1953 unwind label %1955

1953:                                             ; preds = %.split1191
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %205) #12
  %1954 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %1954, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %1954, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %2613 unwind label %1957

1955:                                             ; preds = %.split1191
  %1956 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %205) #12
  br label %1959

1957:                                             ; preds = %1953
  %1958 = landingpad { ptr, i32 }
          cleanup
  br label %1959

1959:                                             ; preds = %1957, %1955
  %.pn940 = phi { ptr, i32 } [ %1958, %1957 ], [ %1956, %1955 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #12
  br label %2072

1960:                                             ; preds = %.loopexit1169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %207) #12
  %1961 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1880) #12
  store ptr %1961, ptr %207, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %208) #12
  %1962 = call ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1880) #12
  store ptr %1962, ptr %208, align 8
  %1963 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %208) #12
  br i1 %1963, label %.lr.ph1209, label %._crit_edge

._crit_edge:                                      ; preds = %1978, %1960
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #12
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %214) #12
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %214)
          to label %2002 unwind label %2011

1964:                                             ; preds = %.loopexit1169
  %1965 = landingpad { ptr, i32 }
          cleanup
  br label %2071

.lr.ph1209:                                       ; preds = %1960, %1978
  %1966 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %207) #12
  %1967 = getelementptr inbounds i8, ptr %1966, i64 8
  %1968 = invoke noundef i64 @_ZNK3MIR4eval14CallStackEntry14size_of_or_bugERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %1967)
          to label %1969 unwind label %1981

1969:                                             ; preds = %.lr.ph1209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %209) #12
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::AllocationPtr") align 8 %209, ptr noundef nonnull align 8 dereferenceable(424) %1866, ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %1967)
          to label %1970 unwind label %1983

1970:                                             ; preds = %1969
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %206, ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %1971 unwind label %1985

1971:                                             ; preds = %1970
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %210) #12
  %1972 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  invoke void @_ZN3MIR4eval13AllocationPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(8) %1972)
          to label %1973 unwind label %1988

1973:                                             ; preds = %1971
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull %212)
          to label %1974 unwind label %1990

1974:                                             ; preds = %1973
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull %211, i64 noundef 0)
          to label %1975 unwind label %1992

1975:                                             ; preds = %1974
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %213) #12
  %1976 = load i64, ptr %1966, align 8, !tbaa !99
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %213, ptr noundef nonnull align 8 dereferenceable(16) %186, i64 noundef %1976, i64 noundef %1968)
          to label %1977 unwind label %1995

1977:                                             ; preds = %1975
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(16) %213)
          to label %1978 unwind label %1997

1978:                                             ; preds = %1977
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %210) #12
  %1979 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %207) #12
  %1980 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %208) #12
  br i1 %1980, label %.lr.ph1209, label %._crit_edge

1981:                                             ; preds = %.lr.ph1209
  %1982 = landingpad { ptr, i32 }
          cleanup
  br label %2001

1983:                                             ; preds = %1969
  %1984 = landingpad { ptr, i32 }
          cleanup
  br label %1987

1985:                                             ; preds = %1970
  %1986 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #12
  br label %1987

1987:                                             ; preds = %1985, %1983
  %.pn929 = phi { ptr, i32 } [ %1986, %1985 ], [ %1984, %1983 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #12
  br label %2001

1988:                                             ; preds = %1971
  %1989 = landingpad { ptr, i32 }
          cleanup
  br label %2000

1990:                                             ; preds = %1973
  %1991 = landingpad { ptr, i32 }
          cleanup
  br label %1994

1992:                                             ; preds = %1974
  %1993 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #12
  br label %1994

1994:                                             ; preds = %1992, %1990
  %.pn931 = phi { ptr, i32 } [ %1993, %1992 ], [ %1991, %1990 ]
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #12
  br label %2000

1995:                                             ; preds = %1975
  %1996 = landingpad { ptr, i32 }
          cleanup
  br label %1999

1997:                                             ; preds = %1977
  %1998 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213) #12
  br label %1999

1999:                                             ; preds = %1997, %1995
  %.pn933 = phi { ptr, i32 } [ %1998, %1997 ], [ %1996, %1995 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %213) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %210) #12
  br label %2000

2000:                                             ; preds = %1999, %1994, %1988
  %.pn933.pn = phi { ptr, i32 } [ %.pn933, %1999 ], [ %.pn931, %1994 ], [ %1989, %1988 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %210) #12
  br label %2001

2001:                                             ; preds = %2000, %1987, %1981
  %.pn933.pn.pn = phi { ptr, i32 } [ %.pn933.pn, %2000 ], [ %.pn929, %1987 ], [ %1982, %1981 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #12
  br label %2071

2002:                                             ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %215) #12
  store ptr null, ptr %215, align 8, !tbaa !78
  %2003 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %187) #12
  %2004 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(424) %1866, ptr noundef nonnull align 8 dereferenceable(88) %2003, ptr noundef nonnull align 8 dereferenceable(144) %214, ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %2005 unwind label %2013

2005:                                             ; preds = %2002
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %216) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %216) #12
  %2006 = getelementptr inbounds i8, ptr %2004, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %217) #12
  %2007 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2006) #12
  store ptr %2007, ptr %217, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #12
  %2008 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2006) #12
  store ptr %2008, ptr %218, align 8
  %2009 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(8) %218) #12
  br i1 %2009, label %.lr.ph1211, label %._crit_edge1212

._crit_edge1212:                                  ; preds = %2020, %2005
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %222) #12
  %2010 = getelementptr inbounds i8, ptr %2004, i64 240
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %222, ptr noundef nonnull align 8 dereferenceable(424) %1866, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %2010, ptr noundef nonnull align 8 dereferenceable(96) %214)
          to label %2034 unwind label %2042

2011:                                             ; preds = %._crit_edge
  %2012 = landingpad { ptr, i32 }
          cleanup
  br label %2070

2013:                                             ; preds = %2002
  %2014 = landingpad { ptr, i32 }
          cleanup
  br label %2069

.lr.ph1211:                                       ; preds = %2005, %2020
  %2015 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %217) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %219) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %220) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %220)
          to label %2016 unwind label %2023

2016:                                             ; preds = %.lr.ph1211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #12
  %2017 = getelementptr inbounds i8, ptr %2015, i64 216
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %221, ptr noundef nonnull align 8 dereferenceable(424) %1866, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %2017, ptr noundef nonnull align 8 dereferenceable(96) %214)
          to label %2018 unwind label %2025

2018:                                             ; preds = %2016
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.444") align 8 %219, ptr noundef nonnull align 8 dereferenceable(212) %220, ptr noundef nonnull align 8 dereferenceable(8) %221)
          to label %2019 unwind label %2027

2019:                                             ; preds = %2018
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %216, ptr noundef nonnull align 8 dereferenceable(224) %219)
          to label %2020 unwind label %2029

2020:                                             ; preds = %2019
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %219) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %220) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %220) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %219) #12
  %2021 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %217) #12
  %2022 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(8) %218) #12
  br i1 %2022, label %.lr.ph1211, label %._crit_edge1212

2023:                                             ; preds = %.lr.ph1211
  %2024 = landingpad { ptr, i32 }
          cleanup
  br label %2033

2025:                                             ; preds = %2016
  %2026 = landingpad { ptr, i32 }
          cleanup
  br label %2032

2027:                                             ; preds = %2018
  %2028 = landingpad { ptr, i32 }
          cleanup
  br label %2031

2029:                                             ; preds = %2019
  %2030 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %219) #12
  br label %2031

2031:                                             ; preds = %2029, %2027
  %.pn922 = phi { ptr, i32 } [ %2030, %2029 ], [ %2028, %2027 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #12
  br label %2032

2032:                                             ; preds = %2031, %2025
  %.pn922.pn = phi { ptr, i32 } [ %.pn922, %2031 ], [ %2026, %2025 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %220) #12
  br label %2033

2033:                                             ; preds = %2032, %2023
  %.pn922.pn.pn = phi { ptr, i32 } [ %.pn922.pn, %2032 ], [ %2024, %2023 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %220) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %219) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %217) #12
  br label %2068

2034:                                             ; preds = %._crit_edge1212
  %2035 = getelementptr inbounds i8, ptr %0, i64 16
  %2036 = load ptr, ptr %2035, align 8, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %223) #12
  %2037 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %187) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %223, ptr noundef nonnull align 8 dereferenceable(88) %2037)
  %2038 = invoke noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944) %2036, ptr noundef nonnull align 8 dereferenceable(56) %223, ptr noundef nonnull align 8 dereferenceable(352) %2004)
          to label %2039 unwind label %2044

2039:                                             ; preds = %2034
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %223) #12
  %.not915 = icmp eq ptr %2038, null
  br i1 %.not915, label %2040, label %2048

2040:                                             ; preds = %2039
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %225) #12
  store ptr %187, ptr %225, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %224, ptr noundef nonnull align 8 dereferenceable(8) %225) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %224)
          to label %2041 unwind label %2046

2041:                                             ; preds = %2040
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #12
  br label %2048

2042:                                             ; preds = %._crit_edge1212
  %2043 = landingpad { ptr, i32 }
          cleanup
  br label %2067

2044:                                             ; preds = %2034
  %2045 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %223) #12
  br label %2066

2046:                                             ; preds = %2040
  %2047 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %224) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #12
  br label %2066

2048:                                             ; preds = %2041, %2039
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %228) #12
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %228, ptr noundef nonnull align 8 dereferenceable(16) %187) #12
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %227, ptr noundef nonnull align 8 dereferenceable(16) %228)
          to label %2049 unwind label %2055

2049:                                             ; preds = %2048
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull %227)
          to label %2050 unwind label %2057

2050:                                             ; preds = %2049
  invoke void @_ZN14MonomorphStateC2EOS_(ptr noundef nonnull align 8 dereferenceable(144) %229, ptr noundef nonnull align 8 dereferenceable(144) %214)
          to label %2051 unwind label %2059

2051:                                             ; preds = %2050
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef nonnull align 8 dereferenceable(8) %222)
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %231, ptr noundef nonnull align 8 dereferenceable(24) %216) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %232, ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  %2052 = getelementptr inbounds i8, ptr %2004, i64 112
  %2053 = load ptr, ptr %215, align 8, !tbaa !78
  invoke void @_ZN3HIR9Evaluator16push_stack_entryE9FmtLambdaRKN3MIR8FunctionE14MonomorphStateNS_7TypeRefESt6vectorISt4pairINS_7PatternES7_ESaISB_EES8_INS2_4eval13AllocationPtrESaISF_EEPKNS_13GenericParamsESK_(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull %226, ptr noundef nonnull align 8 dereferenceable(96) %2038, ptr noundef nonnull %229, ptr noundef nonnull %230, ptr noundef nonnull %231, ptr noundef nonnull %232, ptr noundef nonnull %2052, ptr noundef %2053)
          to label %2054 unwind label %2061

2054:                                             ; preds = %2051
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %232) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %231) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %229) #12
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #12
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %228) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %228) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %216) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %216) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %214) #12
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %214) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %206) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %186) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %183) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %183) #12
  br label %2452

2055:                                             ; preds = %2048
  %2056 = landingpad { ptr, i32 }
          cleanup
  br label %2065

2057:                                             ; preds = %2049
  %2058 = landingpad { ptr, i32 }
          cleanup
  br label %2064

2059:                                             ; preds = %2050
  %2060 = landingpad { ptr, i32 }
          cleanup
  br label %2063

2061:                                             ; preds = %2051
  %2062 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %232) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %231) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %230) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %229) #12
  br label %2063

2063:                                             ; preds = %2061, %2059
  %.pn916 = phi { ptr, i32 } [ %2062, %2061 ], [ %2060, %2059 ]
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #12
  br label %2064

2064:                                             ; preds = %2063, %2057
  %.pn916.pn = phi { ptr, i32 } [ %.pn916, %2063 ], [ %2058, %2057 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #12
  br label %2065

2065:                                             ; preds = %2064, %2055
  %.pn916.pn.pn = phi { ptr, i32 } [ %.pn916.pn, %2064 ], [ %2056, %2055 ]
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %228) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %228) #12
  br label %2066

2066:                                             ; preds = %2065, %2046, %2044
  %.pn916.pn.pn.pn = phi { ptr, i32 } [ %.pn916.pn.pn, %2065 ], [ %2047, %2046 ], [ %2045, %2044 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #12
  br label %2067

2067:                                             ; preds = %2066, %2042
  %.pn916.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn916.pn.pn.pn, %2066 ], [ %2043, %2042 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #12
  br label %2068

2068:                                             ; preds = %2067, %2033
  %.pn922.pn.pn.pn = phi { ptr, i32 } [ %.pn922.pn.pn, %2033 ], [ %.pn916.pn.pn.pn.pn, %2067 ]
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %216) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %216) #12
  br label %2069

2069:                                             ; preds = %2068, %2013
  %.pn922.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn922.pn.pn.pn, %2068 ], [ %2014, %2013 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %214) #12
  br label %2070

2070:                                             ; preds = %2069, %2011
  %.pn922.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn922.pn.pn.pn.pn, %2069 ], [ %2012, %2011 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %214) #12
  br label %2071

2071:                                             ; preds = %2070, %2001, %1964
  %.pn933.pn.pn.pn = phi { ptr, i32 } [ %.pn933.pn.pn, %2001 ], [ %.pn922.pn.pn.pn.pn.pn, %2070 ], [ %1965, %1964 ]
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %206) #12
  br label %2072

2072:                                             ; preds = %1919, %1929, %1951, %1959, %1940, %2071
  %.pn945.pn.pn.pn = phi { ptr, i32 } [ %.pn933.pn.pn.pn, %2071 ], [ %.pn948, %1929 ], [ %.pn953.pn.pn.pn, %1919 ], [ %.pn945, %1940 ], [ %.pn942, %1951 ], [ %.pn940, %1959 ]
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %187) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %187) #12
  br label %2073

2073:                                             ; preds = %2072, %1884
  %.pn945.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn945.pn.pn.pn, %2072 ], [ %1885, %1884 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %186) #12
  br label %2074

2074:                                             ; preds = %2073, %1882
  %.pn945.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn945.pn.pn.pn.pn, %2073 ], [ %1883, %1882 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #12
  br label %2075

2075:                                             ; preds = %1871, %2074, %1861
  %.pn945.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1862, %1861 ], [ %.pn945.pn.pn.pn.pn.pn, %2074 ], [ %1872, %1871 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %183) #12
  br label %2076

2076:                                             ; preds = %2075, %1859
  %.pn945.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn945.pn.pn.pn.pn.pn.pn.pn, %2075 ], [ %1860, %1859 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %183) #12
  br label %2453

2077:                                             ; preds = %1847
  %2078 = load ptr, ptr %33, align 8, !tbaa !78
  %2079 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2078, ptr noundef nonnull @.str.66)
          to label %2080 unwind label %633

2080:                                             ; preds = %2077
  br i1 %2079, label %2081, label %2207

2081:                                             ; preds = %2080
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %233) #12
  %2082 = load ptr, ptr %33, align 8, !tbaa !78
  %2083 = getelementptr inbounds i8, ptr %2082, i64 16
  %2084 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2083, i64 noundef 0)
          to label %2085 unwind label %2094

2085:                                             ; preds = %2081
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %233, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %2084)
          to label %2086 unwind label %2094

2086:                                             ; preds = %2085
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %234) #12
  %2087 = getelementptr inbounds i8, ptr %1, i64 480
  %2088 = load ptr, ptr %2087, align 8, !tbaa !79
  %2089 = getelementptr inbounds i8, ptr %0, i64 8
  %2090 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %2088, ptr noundef nonnull align 8 dereferenceable(424) %2089, ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %2091 unwind label %2096

2091:                                             ; preds = %2086
  br i1 %2090, label %2098, label %2092

2092:                                             ; preds = %2091
  %2093 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %2093, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %2096

2094:                                             ; preds = %2085, %2081
  %2095 = landingpad { ptr, i32 }
          cleanup
  br label %2206

2096:                                             ; preds = %2092, %2086
  %2097 = landingpad { ptr, i32 }
          cleanup
  br label %2205

2098:                                             ; preds = %2091
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %235) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %236) #12
  %2099 = getelementptr inbounds i8, ptr %606, i64 136
  %2100 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2099, i64 noundef 0)
          to label %2101 unwind label %2122

2101:                                             ; preds = %2098
  %2102 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2100)
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %236, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %2102, ptr noundef null)
          to label %2103 unwind label %2122

2103:                                             ; preds = %2101
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.434") align 8 %235, ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef nonnull align 8 dereferenceable(120) %322)
          to label %2104 unwind label %2124

2104:                                             ; preds = %2103
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %236) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %237) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %238) #12
  %2105 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2099, i64 noundef 1)
          to label %2106 unwind label %2127

2106:                                             ; preds = %2104
  %2107 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2105)
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %238, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %2107, ptr noundef null)
          to label %2108 unwind label %2127

2108:                                             ; preds = %2106
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.434") align 8 %237, ptr noundef nonnull align 8 dereferenceable(16) %238, ptr noundef nonnull align 8 dereferenceable(120) %322)
          to label %2109 unwind label %2129

2109:                                             ; preds = %2108
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %239) #12
  %2110 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2111 unwind label %2132

2111:                                             ; preds = %2109
  %2112 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2099, i64 noundef 2)
          to label %2113 unwind label %2132

2113:                                             ; preds = %2111
  %2114 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %2110, ptr noundef nonnull align 8 dereferenceable(48) %2112)
          to label %2115 unwind label %2132

2115:                                             ; preds = %2113
  %2116 = extractvalue { i64, i64 } %2114, 0
  store i64 %2116, ptr %239, align 8
  %2117 = getelementptr inbounds i8, ptr %239, i64 8
  %2118 = extractvalue { i64, i64 } %2114, 1
  store i64 %2118, ptr %2117, align 8
  %2119 = call noundef zeroext i1 @_ZNK4U1286is_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %239)
  br i1 %2119, label %2136, label %2120

2120:                                             ; preds = %2115
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %241) #12
  store ptr %33, ptr %241, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %240, ptr noundef nonnull align 8 dereferenceable(8) %241) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %240)
          to label %2121 unwind label %2134

2121:                                             ; preds = %2120
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #12
  br label %2136

2122:                                             ; preds = %2101, %2098
  %2123 = landingpad { ptr, i32 }
          cleanup
  br label %2126

2124:                                             ; preds = %2103
  %2125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %236) #12
  br label %2126

2126:                                             ; preds = %2124, %2122
  %.pn895 = phi { ptr, i32 } [ %2125, %2124 ], [ %2123, %2122 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %236) #12
  br label %2204

2127:                                             ; preds = %2106, %2104
  %2128 = landingpad { ptr, i32 }
          cleanup
  br label %2131

2129:                                             ; preds = %2108
  %2130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %238) #12
  br label %2131

2131:                                             ; preds = %2129, %2127
  %.pn897 = phi { ptr, i32 } [ %2130, %2129 ], [ %2128, %2127 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %238) #12
  br label %2203

2132:                                             ; preds = %2113, %2111, %2109
  %2133 = landingpad { ptr, i32 }
          cleanup
  br label %2202

2134:                                             ; preds = %2120
  %2135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %241) #12
  br label %2202

2136:                                             ; preds = %2115, %2121
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %242) #12
  %2137 = load i64, ptr %234, align 8, !tbaa !91
  %2138 = trunc i64 %2137 to i32
  %2139 = invoke { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16) %239, i32 noundef %2138)
          to label %2140 unwind label %2147

2140:                                             ; preds = %2136
  %2141 = extractvalue { i64, i64 } %2139, 0
  store i64 %2141, ptr %242, align 8
  %2142 = getelementptr inbounds i8, ptr %242, i64 8
  %2143 = extractvalue { i64, i64 } %2139, 1
  store i64 %2143, ptr %2142, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %243) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %243, i64 noundef -1, i64 noundef 0)
  %2144 = call noundef zeroext i1 @_ZNK4U128ltERKS_(ptr noundef nonnull align 8 dereferenceable(16) %242, ptr noundef nonnull align 8 dereferenceable(16) %243)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %243) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %242) #12
  br i1 %2144, label %2151, label %2145

2145:                                             ; preds = %2140
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %245) #12
  store ptr %33, ptr %245, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull align 8 dereferenceable(8) %245) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %244)
          to label %2146 unwind label %2149

2146:                                             ; preds = %2145
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %245) #12
  br label %2151

2147:                                             ; preds = %2136
  %2148 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %242) #12
  br label %2202

2149:                                             ; preds = %2145
  %2150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %244) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %245) #12
  br label %2202

2151:                                             ; preds = %2146, %2140
  %2152 = load i64, ptr %234, align 8, !tbaa !91
  %2153 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %239)
  %2154 = mul i64 %2153, %2152
  %2155 = load i64, ptr %235, align 8, !tbaa !107
  %2156 = icmp ugt i64 %2155, 4095
  br i1 %2156, label %2161, label %2157

2157:                                             ; preds = %2151
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %247) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %246, ptr noundef nonnull align 1 dereferenceable(1) %247) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %246)
          to label %2158 unwind label %2159

2158:                                             ; preds = %2157
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %247) #12
  br label %2161

2159:                                             ; preds = %2157
  %2160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %247) #12
  br label %2202

2161:                                             ; preds = %2151, %2158
  %2162 = load i64, ptr %237, align 8, !tbaa !107
  %2163 = icmp ugt i64 %2162, 4095
  br i1 %2163, label %2168, label %2164

2164:                                             ; preds = %2161
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %249) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %248, ptr noundef nonnull align 1 dereferenceable(1) %249) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %248)
          to label %2165 unwind label %2166

2165:                                             ; preds = %2164
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %249) #12
  br label %2168

2166:                                             ; preds = %2164
  %2167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %249) #12
  br label %2202

2168:                                             ; preds = %2165, %2161
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %250) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %251) #12
  %2169 = getelementptr inbounds i8, ptr %235, i64 8
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(8) %2169)
          to label %2170 unwind label %2182

2170:                                             ; preds = %2168
  %2171 = load i64, ptr %235, align 8, !tbaa !107
  %2172 = add i64 %2171, -4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %251, ptr noundef nonnull %252, i64 noundef %2172)
          to label %2173 unwind label %2184

2173:                                             ; preds = %2170
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %250, ptr noundef nonnull align 8 dereferenceable(16) %251, i64 noundef 0, i64 noundef %2154)
          to label %2174 unwind label %2186

2174:                                             ; preds = %2173
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #12
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %253) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %254) #12
  %2175 = getelementptr inbounds i8, ptr %237, i64 8
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(8) %2175)
          to label %2176 unwind label %2190

2176:                                             ; preds = %2174
  %2177 = load i64, ptr %237, align 8, !tbaa !107
  %2178 = add i64 %2177, -4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %254, ptr noundef nonnull %255, i64 noundef %2178)
          to label %2179 unwind label %2192

2179:                                             ; preds = %2176
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %253, ptr noundef nonnull align 8 dereferenceable(16) %254, i64 noundef 0, i64 noundef %2154)
          to label %2180 unwind label %2194

2180:                                             ; preds = %2179
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #12
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %254) #12
  invoke void @_ZN3MIR4eval8ValueRef9copy_fromERKNS_11TypeResolveERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %253, ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(16) %250)
          to label %2181 unwind label %2198

2181:                                             ; preds = %2180
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %250) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %235) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %235) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %233) #12
  br label %2421

2182:                                             ; preds = %2168
  %2183 = landingpad { ptr, i32 }
          cleanup
  br label %2189

2184:                                             ; preds = %2170
  %2185 = landingpad { ptr, i32 }
          cleanup
  br label %2188

2186:                                             ; preds = %2173
  %2187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %251) #12
  br label %2188

2188:                                             ; preds = %2186, %2184
  %.pn899 = phi { ptr, i32 } [ %2187, %2186 ], [ %2185, %2184 ]
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #12
  br label %2189

2189:                                             ; preds = %2188, %2182
  %.pn899.pn = phi { ptr, i32 } [ %.pn899, %2188 ], [ %2183, %2182 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %251) #12
  br label %2201

2190:                                             ; preds = %2174
  %2191 = landingpad { ptr, i32 }
          cleanup
  br label %2197

2192:                                             ; preds = %2176
  %2193 = landingpad { ptr, i32 }
          cleanup
  br label %2196

2194:                                             ; preds = %2179
  %2195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %254) #12
  br label %2196

2196:                                             ; preds = %2194, %2192
  %.pn902 = phi { ptr, i32 } [ %2195, %2194 ], [ %2193, %2192 ]
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #12
  br label %2197

2197:                                             ; preds = %2196, %2190
  %.pn902.pn = phi { ptr, i32 } [ %.pn902, %2196 ], [ %2191, %2190 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %254) #12
  br label %2200

2198:                                             ; preds = %2180
  %2199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %253) #12
  br label %2200

2200:                                             ; preds = %2198, %2197
  %.pn905 = phi { ptr, i32 } [ %2199, %2198 ], [ %.pn902.pn, %2197 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %253) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %250) #12
  br label %2201

2201:                                             ; preds = %2200, %2189
  %.pn905.pn = phi { ptr, i32 } [ %.pn905, %2200 ], [ %.pn899.pn, %2189 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %250) #12
  br label %2202

2202:                                             ; preds = %2159, %2166, %2201, %2149, %2147, %2134, %2132
  %.pn905.pn.pn.pn = phi { ptr, i32 } [ %2150, %2149 ], [ %2148, %2147 ], [ %2135, %2134 ], [ %2133, %2132 ], [ %.pn905.pn, %2201 ], [ %2167, %2166 ], [ %2160, %2159 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %239) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %237) #12
  br label %2203

2203:                                             ; preds = %2202, %2131
  %.pn905.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn, %2202 ], [ %.pn897, %2131 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %237) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %235) #12
  br label %2204

2204:                                             ; preds = %2203, %2126
  %.pn905.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn.pn, %2203 ], [ %.pn895, %2126 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %235) #12
  br label %2205

2205:                                             ; preds = %2204, %2096
  %.pn905.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn.pn.pn, %2204 ], [ %2097, %2096 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #12
  br label %2206

2206:                                             ; preds = %2205, %2094
  %.pn905.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn905.pn.pn.pn.pn.pn.pn, %2205 ], [ %2095, %2094 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %233) #12
  br label %2453

2207:                                             ; preds = %2080
  %2208 = load ptr, ptr %33, align 8, !tbaa !78
  %2209 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2208, ptr noundef nonnull @.str.67)
          to label %2210 unwind label %633

2210:                                             ; preds = %2207
  br i1 %2209, label %2211, label %2263

2211:                                             ; preds = %2210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %256) #12
  %2212 = load ptr, ptr %33, align 8, !tbaa !78
  %2213 = getelementptr inbounds i8, ptr %2212, i64 16
  %2214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2213, i64 noundef 0)
          to label %2215 unwind label %2227

2215:                                             ; preds = %2211
  %2216 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2214)
  %2217 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2216)
  %2218 = getelementptr inbounds i8, ptr %2217, i64 8
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %256, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %2218)
          to label %2219 unwind label %2227

2219:                                             ; preds = %2215
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %257) #12
  %2220 = getelementptr inbounds i8, ptr %1, i64 480
  %2221 = load ptr, ptr %2220, align 8, !tbaa !79
  %2222 = getelementptr inbounds i8, ptr %0, i64 8
  %2223 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %2221, ptr noundef nonnull align 8 dereferenceable(424) %2222, ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull align 8 dereferenceable(8) %257)
          to label %2224 unwind label %2229

2224:                                             ; preds = %2219
  br i1 %2223, label %2231, label %2225

2225:                                             ; preds = %2224
  %2226 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %2226, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %2229

2227:                                             ; preds = %2215, %2211
  %2228 = landingpad { ptr, i32 }
          cleanup
  br label %2262

2229:                                             ; preds = %2225, %2219
  %2230 = landingpad { ptr, i32 }
          cleanup
  br label %2261

2231:                                             ; preds = %2224
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %258) #12
  %2232 = getelementptr inbounds i8, ptr %606, i64 136
  %2233 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2232, i64 noundef 0)
          to label %2234 unwind label %2253

2234:                                             ; preds = %2231
  invoke void @_ZNK3MIR4eval14CallStackEntry14read_param_ptrERKNS_5ParamE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.434") align 8 %258, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(48) %2233)
          to label %2235 unwind label %2253

2235:                                             ; preds = %2234
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %259) #12
  %2236 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2237 unwind label %2255

2237:                                             ; preds = %2235
  %2238 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2232, i64 noundef 1)
          to label %2239 unwind label %2255

2239:                                             ; preds = %2237
  %2240 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %2236, ptr noundef nonnull align 8 dereferenceable(48) %2238)
          to label %2241 unwind label %2255

2241:                                             ; preds = %2239
  %2242 = extractvalue { i64, i64 } %2240, 0
  store i64 %2242, ptr %259, align 8
  %2243 = getelementptr inbounds i8, ptr %259, i64 8
  %2244 = extractvalue { i64, i64 } %2240, 1
  store i64 %2244, ptr %2243, align 8
  %2245 = load i64, ptr %258, align 8, !tbaa !107
  %2246 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %259)
  %2247 = load i64, ptr %257, align 8, !tbaa !91
  %2248 = getelementptr inbounds i8, ptr %258, i64 8
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %2248)
          to label %2249 unwind label %2255

2249:                                             ; preds = %2241
  %2250 = mul i64 %2247, %2246
  %2251 = add i64 %2250, %2245
  invoke void @_ZN3MIR4eval8ValueRef9write_ptrERKNS_11TypeResolveEmNS0_8RelocPtrE(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef %2251, ptr noundef nonnull %260)
          to label %2252 unwind label %2257

2252:                                             ; preds = %2249
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %259) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %258) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %258) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %257) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %256) #12
  br label %2421

2253:                                             ; preds = %2234, %2231
  %2254 = landingpad { ptr, i32 }
          cleanup
  br label %2260

2255:                                             ; preds = %2241, %2239, %2237, %2235
  %2256 = landingpad { ptr, i32 }
          cleanup
  br label %2259

2257:                                             ; preds = %2249
  %2258 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #12
  br label %2259

2259:                                             ; preds = %2257, %2255
  %.pn890 = phi { ptr, i32 } [ %2258, %2257 ], [ %2256, %2255 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %259) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %258) #12
  br label %2260

2260:                                             ; preds = %2259, %2253
  %.pn890.pn = phi { ptr, i32 } [ %.pn890, %2259 ], [ %2254, %2253 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %258) #12
  br label %2261

2261:                                             ; preds = %2260, %2229
  %.pn890.pn.pn = phi { ptr, i32 } [ %.pn890.pn, %2260 ], [ %2230, %2229 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %257) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #12
  br label %2262

2262:                                             ; preds = %2261, %2227
  %.pn890.pn.pn.pn = phi { ptr, i32 } [ %.pn890.pn.pn, %2261 ], [ %2228, %2227 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %256) #12
  br label %2453

2263:                                             ; preds = %2210
  %2264 = load ptr, ptr %33, align 8, !tbaa !78
  %2265 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2264, ptr noundef nonnull @.str.68)
          to label %2266 unwind label %633

2266:                                             ; preds = %2263
  br i1 %2265, label %2267, label %2373

2267:                                             ; preds = %2266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %261) #12
  %2268 = load ptr, ptr %33, align 8, !tbaa !78
  %2269 = getelementptr inbounds i8, ptr %2268, i64 16
  %2270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2269, i64 noundef 0)
          to label %2271 unwind label %2280

2271:                                             ; preds = %2267
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %261, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %2270)
          to label %2272 unwind label %2280

2272:                                             ; preds = %2271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %262) #12
  %2273 = getelementptr inbounds i8, ptr %1, i64 480
  %2274 = load ptr, ptr %2273, align 8, !tbaa !79
  %2275 = getelementptr inbounds i8, ptr %0, i64 8
  %2276 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %2274, ptr noundef nonnull align 8 dereferenceable(424) %2275, ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %262)
          to label %2277 unwind label %2282

2277:                                             ; preds = %2272
  br i1 %2276, label %2284, label %2278

2278:                                             ; preds = %2277
  %2279 = call ptr @__cxa_allocate_exception(i64 1) #12
  invoke void @__cxa_throw(ptr %2279, ptr nonnull @_ZTIN12_GLOBAL__N_15DeferE, ptr null) #13
          to label %2613 unwind label %2282

2280:                                             ; preds = %2271, %2267
  %2281 = landingpad { ptr, i32 }
          cleanup
  br label %2372

2282:                                             ; preds = %2278, %2272
  %2283 = landingpad { ptr, i32 }
          cleanup
  br label %2371

2284:                                             ; preds = %2277
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %263) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %264) #12
  %2285 = getelementptr inbounds i8, ptr %606, i64 136
  %2286 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2285, i64 noundef 0)
          to label %2287 unwind label %2310

2287:                                             ; preds = %2284
  %2288 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2286)
  invoke void @_ZN3MIR4eval14CallStackEntry8get_lvalERKNS_6LValueEPNS0_8ValueRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %264, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(32) %2288, ptr noundef null)
          to label %2289 unwind label %2310

2289:                                             ; preds = %2287
  invoke void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.434") align 8 %263, ptr noundef nonnull align 8 dereferenceable(16) %264, ptr noundef nonnull align 8 dereferenceable(120) %322)
          to label %2290 unwind label %2312

2290:                                             ; preds = %2289
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %264) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %264) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %265) #12
  %2291 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2285, i64 noundef 1)
          to label %2292 unwind label %2315

2292:                                             ; preds = %2290
  %2293 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef 8, ptr noundef nonnull align 8 dereferenceable(48) %2291)
          to label %2294 unwind label %2315

2294:                                             ; preds = %2292
  %2295 = extractvalue { i64, i64 } %2293, 0
  store i64 %2295, ptr %265, align 8
  %2296 = getelementptr inbounds i8, ptr %265, i64 8
  %2297 = extractvalue { i64, i64 } %2293, 1
  store i64 %2297, ptr %2296, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %266) #12
  %2298 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2299 unwind label %2317

2299:                                             ; preds = %2294
  %2300 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2285, i64 noundef 2)
          to label %2301 unwind label %2317

2301:                                             ; preds = %2299
  %2302 = invoke { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, i32 noundef %2298, ptr noundef nonnull align 8 dereferenceable(48) %2300)
          to label %2303 unwind label %2317

2303:                                             ; preds = %2301
  %2304 = extractvalue { i64, i64 } %2302, 0
  store i64 %2304, ptr %266, align 8
  %2305 = getelementptr inbounds i8, ptr %266, i64 8
  %2306 = extractvalue { i64, i64 } %2302, 1
  store i64 %2306, ptr %2305, align 8
  %2307 = call noundef zeroext i1 @_ZNK4U1286is_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %266)
  br i1 %2307, label %2321, label %2308

2308:                                             ; preds = %2303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %268) #12
  store ptr %33, ptr %268, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull align 8 dereferenceable(8) %268) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %267)
          to label %2309 unwind label %2319

2309:                                             ; preds = %2308
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #12
  br label %2321

2310:                                             ; preds = %2287, %2284
  %2311 = landingpad { ptr, i32 }
          cleanup
  br label %2314

2312:                                             ; preds = %2289
  %2313 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %264) #12
  br label %2314

2314:                                             ; preds = %2312, %2310
  %.pn877 = phi { ptr, i32 } [ %2313, %2312 ], [ %2311, %2310 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %264) #12
  br label %2370

2315:                                             ; preds = %2292, %2290
  %2316 = landingpad { ptr, i32 }
          cleanup
  br label %2369

2317:                                             ; preds = %2301, %2299, %2294
  %2318 = landingpad { ptr, i32 }
          cleanup
  br label %2368

2319:                                             ; preds = %2308
  %2320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %268) #12
  br label %2368

2321:                                             ; preds = %2303, %2309
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %269) #12
  %2322 = load i64, ptr %262, align 8, !tbaa !91
  %2323 = trunc i64 %2322 to i32
  %2324 = invoke { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16) %266, i32 noundef %2323)
          to label %2325 unwind label %2332

2325:                                             ; preds = %2321
  %2326 = extractvalue { i64, i64 } %2324, 0
  store i64 %2326, ptr %269, align 8
  %2327 = getelementptr inbounds i8, ptr %269, i64 8
  %2328 = extractvalue { i64, i64 } %2324, 1
  store i64 %2328, ptr %2327, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %270) #12
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %270, i64 noundef -1, i64 noundef 0)
  %2329 = call noundef zeroext i1 @_ZNK4U128ltERKS_(ptr noundef nonnull align 8 dereferenceable(16) %269, ptr noundef nonnull align 8 dereferenceable(16) %270)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %270) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #12
  br i1 %2329, label %2336, label %2330

2330:                                             ; preds = %2325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %272) #12
  store ptr %33, ptr %272, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull align 8 dereferenceable(8) %272) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %271)
          to label %2331 unwind label %2334

2331:                                             ; preds = %2330
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %272) #12
  br label %2336

2332:                                             ; preds = %2321
  %2333 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %269) #12
  br label %2368

2334:                                             ; preds = %2330
  %2335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %272) #12
  br label %2368

2336:                                             ; preds = %2331, %2325
  %2337 = load i64, ptr %262, align 8, !tbaa !91
  %2338 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %266)
  %2339 = mul i64 %2338, %2337
  %2340 = load i64, ptr %263, align 8, !tbaa !107
  %2341 = icmp ugt i64 %2340, 4095
  br i1 %2341, label %2346, label %2342

2342:                                             ; preds = %2336
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %274) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_47vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %273, ptr noundef nonnull align 1 dereferenceable(1) %274) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %273)
          to label %2343 unwind label %2344

2343:                                             ; preds = %2342
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #12
  br label %2346

2344:                                             ; preds = %2342
  %2345 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %274) #12
  br label %2368

2346:                                             ; preds = %2343, %2336
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %275) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %276) #12
  %2347 = getelementptr inbounds i8, ptr %263, i64 8
  invoke void @_ZN3MIR4eval8RelocPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(8) %2347)
          to label %2348 unwind label %2357

2348:                                             ; preds = %2346
  %2349 = load i64, ptr %263, align 8, !tbaa !107
  %2350 = add i64 %2349, -4096
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull %277, i64 noundef %2350)
          to label %2351 unwind label %2359

2351:                                             ; preds = %2348
  invoke void @_ZN3MIR4eval8ValueRef5sliceEmm(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::ValueRef") align 8 %275, ptr noundef nonnull align 8 dereferenceable(16) %276, i64 noundef 0, i64 noundef %2339)
          to label %2352 unwind label %2361

2352:                                             ; preds = %2351
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %276) #12
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %277) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %276) #12
  %2353 = invoke noundef ptr @_ZN3MIR4eval8ValueRef15ext_write_bytesERKNS_11TypeResolveEm(ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef nonnull align 8 dereferenceable(120) %322, i64 noundef %2339)
          to label %2354 unwind label %2365

2354:                                             ; preds = %2352
  %2355 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %265)
  %2356 = trunc i64 %2355 to i8
  call void @llvm.memset.p0.i64(ptr align 1 %2353, i8 %2356, i64 %2339, i1 false)
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %275) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %266) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %265) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %263) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #12
  br label %2421

2357:                                             ; preds = %2346
  %2358 = landingpad { ptr, i32 }
          cleanup
  br label %2364

2359:                                             ; preds = %2348
  %2360 = landingpad { ptr, i32 }
          cleanup
  br label %2363

2361:                                             ; preds = %2351
  %2362 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %276) #12
  br label %2363

2363:                                             ; preds = %2361, %2359
  %.pn879 = phi { ptr, i32 } [ %2362, %2361 ], [ %2360, %2359 ]
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %277) #12
  br label %2364

2364:                                             ; preds = %2363, %2357
  %.pn879.pn = phi { ptr, i32 } [ %.pn879, %2363 ], [ %2358, %2357 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %276) #12
  br label %2367

2365:                                             ; preds = %2352
  %2366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %275) #12
  br label %2367

2367:                                             ; preds = %2365, %2364
  %.pn882 = phi { ptr, i32 } [ %2366, %2365 ], [ %.pn879.pn, %2364 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %275) #12
  br label %2368

2368:                                             ; preds = %2344, %2367, %2334, %2332, %2319, %2317
  %.pn882.pn.pn = phi { ptr, i32 } [ %2335, %2334 ], [ %2333, %2332 ], [ %2320, %2319 ], [ %2318, %2317 ], [ %.pn882, %2367 ], [ %2345, %2344 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %266) #12
  br label %2369

2369:                                             ; preds = %2368, %2315
  %.pn882.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn, %2368 ], [ %2316, %2315 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %265) #12
  call void @_ZNSt4pairImN3MIR4eval8RelocPtrEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %263) #12
  br label %2370

2370:                                             ; preds = %2369, %2314
  %.pn882.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn.pn, %2369 ], [ %.pn877, %2314 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %263) #12
  br label %2371

2371:                                             ; preds = %2370, %2282
  %.pn882.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn.pn.pn, %2370 ], [ %2283, %2282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %262) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #12
  br label %2372

2372:                                             ; preds = %2371, %2280
  %.pn882.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn.pn.pn.pn, %2371 ], [ %2281, %2280 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %261) #12
  br label %2453

2373:                                             ; preds = %2266
  %2374 = load ptr, ptr %33, align 8, !tbaa !78
  %2375 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2374, ptr noundef nonnull @.str.69)
          to label %2376 unwind label %633

2376:                                             ; preds = %2373
  br i1 %2375, label %2377, label %2415

2377:                                             ; preds = %2376
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %278) #12
  %2378 = load ptr, ptr %33, align 8, !tbaa !78
  %2379 = getelementptr inbounds i8, ptr %2378, i64 16
  %2380 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %2379, i64 noundef 0)
          to label %2381 unwind label %2387

2381:                                             ; preds = %2377
  invoke void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %278, ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull align 8 dereferenceable(8) %2380)
          to label %2382 unwind label %2387

2382:                                             ; preds = %2381
  %2383 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
  %2384 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2383)
  br i1 %2384, label %2391, label %2385

2385:                                             ; preds = %2382
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %280) #12
  store ptr %278, ptr %280, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_48vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef nonnull align 8 dereferenceable(8) %280) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %279)
          to label %2386 unwind label %2389

2386:                                             ; preds = %2385
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %280) #12
  br label %2391

2387:                                             ; preds = %2381, %2377
  %2388 = landingpad { ptr, i32 }
          cleanup
  br label %2414

2389:                                             ; preds = %2385
  %2390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %279) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %280) #12
  br label %2413

2391:                                             ; preds = %2382, %2386
  %2392 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
  %2393 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2392)
  %2394 = getelementptr inbounds i8, ptr %2393, i64 88
  %2395 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2394)
  br i1 %2395, label %2400, label %2396

2396:                                             ; preds = %2391
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %282) #12
  store ptr %278, ptr %282, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_49vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %281, ptr noundef nonnull align 8 dereferenceable(8) %282) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %281)
          to label %2397 unwind label %2398

2397:                                             ; preds = %2396
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %281) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #12
  br label %2400

2398:                                             ; preds = %2396
  %2399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %281) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %282) #12
  br label %2413

2400:                                             ; preds = %2397, %2391
  %2401 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
  %2402 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2401)
  %2403 = getelementptr inbounds i8, ptr %2402, i64 88
  %2404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2403)
  %2405 = load ptr, ptr %2404, align 8, !tbaa !78
  %2406 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2407 unwind label %2411

2407:                                             ; preds = %2400
  %2408 = invoke noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200) %2405)
          to label %2409 unwind label %2411

2409:                                             ; preds = %2407
  invoke void @_ZN3MIR4eval8ValueRef10write_uintERKNS_11TypeResolveEjm(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(120) %322, i32 noundef %2406, i64 noundef %2408)
          to label %2410 unwind label %2411

2410:                                             ; preds = %2409
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %278) #12
  br label %2421

2411:                                             ; preds = %2409, %2407, %2400
  %2412 = landingpad { ptr, i32 }
          cleanup
  br label %2413

2413:                                             ; preds = %2411, %2398, %2389
  %.pn874 = phi { ptr, i32 } [ %2412, %2411 ], [ %2399, %2398 ], [ %2390, %2389 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #12
  br label %2414

2414:                                             ; preds = %2413, %2387
  %.pn874.pn = phi { ptr, i32 } [ %.pn874, %2413 ], [ %2388, %2387 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %278) #12
  br label %2453

2415:                                             ; preds = %2376
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %284) #12
  store ptr %33, ptr %284, align 8, !tbaa !78
  %2416 = getelementptr inbounds i8, ptr %284, i64 8
  store ptr %2, ptr %2416, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_50vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %283, ptr noundef nonnull align 8 dereferenceable(16) %284) #12
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %283)
          to label %2417 unwind label %2419

2417:                                             ; preds = %2415
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %284) #12
  %2418 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %2418, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %2418, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %2613 unwind label %633

2419:                                             ; preds = %2415
  %2420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %284) #12
  br label %2453

2421:                                             ; preds = %641, %700, %771, %939, %1061, %1190, %1344, %1426, %1501, %1567, %1634, %1706, %1768, %1792, %1841, %2181, %2354, %2410, %2252, %1816, %1780, %1737, %1670, %1598, %1536, %1466, %1385, %1305, %1130, %1007, %857, %737, %671
  %2422 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2423 unwind label %633

2423:                                             ; preds = %2421
  br i1 %2422, label %2424, label %2450

2424:                                             ; preds = %2423
  %2425 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %2426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2425, ptr noundef nonnull @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE)
          to label %2427 unwind label %633

2427:                                             ; preds = %2424
  %2428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2426, ptr noundef nonnull @.str.24)
          to label %2429 unwind label %633

2429:                                             ; preds = %2427
  %2430 = getelementptr inbounds i8, ptr %0, i64 440
  %2431 = load i32, ptr %2430, align 8, !tbaa !9
  %2432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %2428, i32 noundef %2431)
          to label %2433 unwind label %633

2433:                                             ; preds = %2429
  %2434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2432, ptr noundef nonnull @.str.16)
          to label %2435 unwind label %633

2435:                                             ; preds = %2433
  %2436 = load i32, ptr %1, align 8, !tbaa !45
  %2437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %2434, i32 noundef %2436)
          to label %2438 unwind label %633

2438:                                             ; preds = %2435
  %2439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2437, ptr noundef nonnull @.str.17)
          to label %2440 unwind label %633

2440:                                             ; preds = %2438
  %2441 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %2439, ptr noundef nonnull align 8 dereferenceable(32) %611)
          to label %2442 unwind label %633

2442:                                             ; preds = %2440
  %2443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2441, ptr noundef nonnull @.str.25)
          to label %2444 unwind label %633

2444:                                             ; preds = %2442
  %2445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR4evallsERSoRKNS0_8ValueRefE(ptr noundef nonnull align 8 dereferenceable(8) %2443, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %2446 unwind label %633

2446:                                             ; preds = %2444
  %2447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2445, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %2448 unwind label %633

2448:                                             ; preds = %2446
  %2449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2447, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2450 unwind label %633

2450:                                             ; preds = %2448, %2423
  %2451 = load i32, ptr %606, align 8, !tbaa !110
  br label %2452

2452:                                             ; preds = %2450, %2054
  %.20 = phi i32 [ %2451, %2450 ], [ -2, %2054 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #12
  br label %2609

2453:                                             ; preds = %2419, %2414, %2372, %2262, %2206, %2076, %1843, %1817, %1793, %1781, %1770, %1739, %1708, %1672, %1636, %1600, %1569, %1538, %1503, %1468, %1433, %1392, %1351, %1310, %1194, %1134, %1064, %1010, %948, %901, %776, %754, %722, %672, %642, %633
  %.pn1098 = phi { ptr, i32 } [ %634, %633 ], [ %.pn1096, %642 ], [ %.pn1094, %672 ], [ %.pn1089.pn.pn.pn, %722 ], [ %.pn1079.pn.pn.pn.pn, %754 ], [ %.pn1077, %776 ], [ %.pn1068.pn.pn.pn.pn.pn.pn.pn, %901 ], [ %.pn1052.pn.pn.pn, %948 ], [ %.pn1046.pn.pn.pn.pn, %1010 ], [ %.pn1041.pn.pn.pn, %1064 ], [ %.pn1035.pn.pn.pn.pn, %1134 ], [ %.pn1028.pn.pn.pn.pn.pn, %1194 ], [ %.pn1021.pn.pn.pn.pn.pn, %1310 ], [ %.pn1011.pn.pn, %1351 ], [ %.pn1007.pn.pn, %1392 ], [ %.pn1003.pn.pn, %1433 ], [ %.pn1000.pn, %1468 ], [ %.pn997.pn, %1503 ], [ %.pn994.pn, %1538 ], [ %.pn991.pn, %1569 ], [ %.pn988.pn, %1600 ], [ %.pn984.pn.pn, %1636 ], [ %.pn980.pn.pn, %1672 ], [ %.pn976.pn.pn, %1708 ], [ %.pn973.pn, %1739 ], [ %.pn970.pn, %1770 ], [ %1782, %1781 ], [ %1794, %1793 ], [ %.pn968, %1817 ], [ %.pn965.pn, %1843 ], [ %.pn945.pn.pn.pn.pn.pn.pn.pn.pn, %2076 ], [ %.pn905.pn.pn.pn.pn.pn.pn.pn, %2206 ], [ %.pn890.pn.pn.pn, %2262 ], [ %.pn882.pn.pn.pn.pn.pn.pn, %2372 ], [ %.pn874.pn, %2414 ], [ %2420, %2419 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #12
  br label %2610

2454:                                             ; preds = %605
  %2455 = tail call noundef ptr @_ZNK3MIR10CallTarget8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %608)
  %.not847 = icmp eq ptr %2455, null
  br i1 %.not847, label %2603, label %2456

2456:                                             ; preds = %2454
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %285) #12
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %286) #12
  %2457 = getelementptr inbounds i8, ptr %1, i64 480
  %2458 = load ptr, ptr %2457, align 8, !tbaa !79
  call void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %286, ptr noundef nonnull align 8 dereferenceable(96) %607, ptr noundef nonnull align 8 dereferenceable(8) %2458, ptr noundef nonnull align 8 dereferenceable(88) %2455, i1 noundef zeroext true)
  invoke void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.431") align 8 %285, ptr noundef nonnull align 8 dereferenceable(88) %286)
          to label %2459 unwind label %2475

2459:                                             ; preds = %2456
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %286) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %286) #12
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %287) #12
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %287)
          to label %2460 unwind label %2477

2460:                                             ; preds = %2459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %288) #12
  store ptr null, ptr %288, align 8, !tbaa !78
  %2461 = getelementptr inbounds i8, ptr %0, i64 8
  %2462 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %285) #12
  %2463 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(424) %2461, ptr noundef nonnull align 8 dereferenceable(88) %2462, ptr noundef nonnull align 8 dereferenceable(144) %287, ptr noundef nonnull align 8 dereferenceable(8) %288)
          to label %2464 unwind label %2479

2464:                                             ; preds = %2460
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %289) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %289) #12
  %2465 = getelementptr inbounds i8, ptr %606, i64 136
  %2466 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2465) #12
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %2466)
          to label %2467 unwind label %2481

2467:                                             ; preds = %2464
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %290) #12
  %2468 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2465) #12
  store ptr %2468, ptr %290, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %291) #12
  %2469 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2465) #12
  store ptr %2469, ptr %291, align 8
  %2470 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull align 8 dereferenceable(8) %291) #12
  br i1 %2470, label %.lr.ph1222, label %._crit_edge1223

._crit_edge1223:                                  ; preds = %2494, %2467
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %291) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %298) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #12
  %2471 = getelementptr inbounds i8, ptr %2463, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %299) #12
  %2472 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2471) #12
  store ptr %2472, ptr %299, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %300) #12
  %2473 = call ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2471) #12
  store ptr %2473, ptr %300, align 8
  %2474 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(8) %300) #12
  br i1 %2474, label %.lr.ph1225, label %._crit_edge1226

2475:                                             ; preds = %2456
  %2476 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %286) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %286) #12
  br label %2602

2477:                                             ; preds = %2459
  %2478 = landingpad { ptr, i32 }
          cleanup
  br label %2601

2479:                                             ; preds = %2460
  %2480 = landingpad { ptr, i32 }
          cleanup
  br label %2600

2481:                                             ; preds = %2464
  %2482 = landingpad { ptr, i32 }
          cleanup
  br label %2599

.lr.ph1222:                                       ; preds = %2467, %2494
  %2483 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %290) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %292) #12
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292)
          to label %2484 unwind label %2497

2484:                                             ; preds = %.lr.ph1222
  %2485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef nonnull align 8 dereferenceable(48) %2483)
          to label %2486 unwind label %2499

2486:                                             ; preds = %2484
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %293) #12
  invoke void @_ZN3MIR4eval13AllocationPtr8allocateERK18StaticTraitResolveRKNS_11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::eval::AllocationPtr") align 8 %293, ptr noundef nonnull align 8 dereferenceable(424) %2461, ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull align 8 dereferenceable(8) %2485)
          to label %2487 unwind label %2501

2487:                                             ; preds = %2486
  invoke void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %289, ptr noundef nonnull align 8 dereferenceable(8) %293)
          to label %2488 unwind label %2503

2488:                                             ; preds = %2487
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %293) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %294) #12
  %2489 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %289) #12
  invoke void @_ZN3MIR4eval13AllocationPtrC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull align 8 dereferenceable(8) %2489)
          to label %2490 unwind label %2506

2490:                                             ; preds = %2488
  invoke void @_ZN3MIR4eval8RelocPtrC2ENS0_13AllocationPtrE(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull %296)
          to label %2491 unwind label %2508

2491:                                             ; preds = %2490
  invoke void @_ZN3MIR4eval8ValueRefC2ENS0_8RelocPtrEm(ptr noundef nonnull align 8 dereferenceable(16) %294, ptr noundef nonnull %295, i64 noundef 0)
          to label %2492 unwind label %2510

2492:                                             ; preds = %2491
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #12
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #12
  invoke void @_ZN3MIR4eval8ValueRefC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %297, ptr noundef nonnull align 8 dereferenceable(16) %294)
          to label %2493 unwind label %2513

2493:                                             ; preds = %2492
  invoke void @_ZN3MIR4eval14CallStackEntry11write_paramENS0_8ValueRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816) %1, ptr noundef nonnull %297, ptr noundef nonnull align 8 dereferenceable(48) %2483)
          to label %2494 unwind label %2515

2494:                                             ; preds = %2493
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #12
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %294) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %294) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %292) #12
  %2495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %290) #12
  %2496 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull align 8 dereferenceable(8) %291) #12
  br i1 %2496, label %.lr.ph1222, label %._crit_edge1223

2497:                                             ; preds = %.lr.ph1222
  %2498 = landingpad { ptr, i32 }
          cleanup
  br label %2520

2499:                                             ; preds = %2484
  %2500 = landingpad { ptr, i32 }
          cleanup
  br label %2519

2501:                                             ; preds = %2486
  %2502 = landingpad { ptr, i32 }
          cleanup
  br label %2505

2503:                                             ; preds = %2487
  %2504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %293) #12
  br label %2505

2505:                                             ; preds = %2503, %2501
  %.pn860 = phi { ptr, i32 } [ %2504, %2503 ], [ %2502, %2501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %293) #12
  br label %2519

2506:                                             ; preds = %2488
  %2507 = landingpad { ptr, i32 }
          cleanup
  br label %2518

2508:                                             ; preds = %2490
  %2509 = landingpad { ptr, i32 }
          cleanup
  br label %2512

2510:                                             ; preds = %2491
  %2511 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8RelocPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #12
  br label %2512

2512:                                             ; preds = %2510, %2508
  %.pn862 = phi { ptr, i32 } [ %2511, %2510 ], [ %2509, %2508 ]
  call void @_ZN3MIR4eval11RefCountPtrINS0_10AllocationEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #12
  br label %2518

2513:                                             ; preds = %2492
  %2514 = landingpad { ptr, i32 }
          cleanup
  br label %2517

2515:                                             ; preds = %2493
  %2516 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %297) #12
  br label %2517

2517:                                             ; preds = %2515, %2513
  %.pn864 = phi { ptr, i32 } [ %2516, %2515 ], [ %2514, %2513 ]
  call void @_ZN3MIR4eval8ValueRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %294) #12
  br label %2518

2518:                                             ; preds = %2517, %2512, %2506
  %.pn864.pn = phi { ptr, i32 } [ %.pn864, %2517 ], [ %.pn862, %2512 ], [ %2507, %2506 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %294) #12
  br label %2519

2519:                                             ; preds = %2518, %2505, %2499
  %.pn864.pn.pn = phi { ptr, i32 } [ %.pn864.pn, %2518 ], [ %.pn860, %2505 ], [ %2500, %2499 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %292) #12
  br label %2520

2520:                                             ; preds = %2519, %2497
  %.pn864.pn.pn.pn = phi { ptr, i32 } [ %.pn864.pn.pn, %2519 ], [ %2498, %2497 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %292) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %291) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %290) #12
  br label %2599

._crit_edge1226:                                  ; preds = %2527, %._crit_edge1223
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %299) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %304) #12
  %2521 = getelementptr inbounds i8, ptr %2463, i64 240
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %304, ptr noundef nonnull align 8 dereferenceable(424) %2461, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %2521, ptr noundef nonnull align 8 dereferenceable(96) %287)
          to label %2541 unwind label %2551

.lr.ph1225:                                       ; preds = %._crit_edge1223, %2527
  %2522 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #12
  call void @llvm.lifetime.start.p0(i64 224, ptr nonnull %301) #12
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %302) #12
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) %302)
          to label %2523 unwind label %2530

2523:                                             ; preds = %.lr.ph1225
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %303) #12
  %2524 = getelementptr inbounds i8, ptr %2522, i64 216
  invoke void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %303, ptr noundef nonnull align 8 dereferenceable(424) %2461, ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %2524, ptr noundef nonnull align 8 dereferenceable(96) %287)
          to label %2525 unwind label %2532

2525:                                             ; preds = %2523
  invoke void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.444") align 8 %301, ptr noundef nonnull align 8 dereferenceable(212) %302, ptr noundef nonnull align 8 dereferenceable(8) %303)
          to label %2526 unwind label %2534

2526:                                             ; preds = %2525
  invoke void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %298, ptr noundef nonnull align 8 dereferenceable(224) %301)
          to label %2527 unwind label %2536

2527:                                             ; preds = %2526
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %301) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %303) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %302) #12
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %302) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %301) #12
  %2528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %299) #12
  %2529 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(8) %300) #12
  br i1 %2529, label %.lr.ph1225, label %._crit_edge1226

2530:                                             ; preds = %.lr.ph1225
  %2531 = landingpad { ptr, i32 }
          cleanup
  br label %2540

2532:                                             ; preds = %2523
  %2533 = landingpad { ptr, i32 }
          cleanup
  br label %2539

2534:                                             ; preds = %2525
  %2535 = landingpad { ptr, i32 }
          cleanup
  br label %2538

2536:                                             ; preds = %2526
  %2537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR7PatternENS0_7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(224) %301) #12
  br label %2538

2538:                                             ; preds = %2536, %2534
  %.pn855 = phi { ptr, i32 } [ %2537, %2536 ], [ %2535, %2534 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #12
  br label %2539

2539:                                             ; preds = %2538, %2532
  %.pn855.pn = phi { ptr, i32 } [ %.pn855, %2538 ], [ %2533, %2532 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %303) #12
  call void @_ZN3HIR7PatternD2Ev(ptr noundef nonnull align 8 dereferenceable(212) %302) #12
  br label %2540

2540:                                             ; preds = %2539, %2530
  %.pn855.pn.pn = phi { ptr, i32 } [ %.pn855.pn, %2539 ], [ %2531, %2530 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %302) #12
  call void @llvm.lifetime.end.p0(i64 224, ptr nonnull %301) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %299) #12
  br label %2598

2541:                                             ; preds = %._crit_edge1226
  %2542 = getelementptr inbounds i8, ptr %2463, i64 248
  %2543 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %2542)
          to label %2544 unwind label %2553

2544:                                             ; preds = %2541
  br i1 %2543, label %2566, label %2545

2545:                                             ; preds = %2544
  %2546 = getelementptr inbounds i8, ptr %2463, i64 304
  %2547 = call noundef zeroext i1 @_ZNK3MIR15FunctionPointercvbEv(ptr noundef nonnull align 8 dereferenceable(8) %2546)
  br i1 %2547, label %2566, label %2548

2548:                                             ; preds = %2545
  %2549 = getelementptr inbounds i8, ptr %2463, i64 16
  %2550 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2549, ptr noundef nonnull @.str.19)
  br i1 %2550, label %2566, label %2555

2551:                                             ; preds = %._crit_edge1226
  %2552 = landingpad { ptr, i32 }
          cleanup
  br label %2597

2553:                                             ; preds = %.invoke, %2541
  %2554 = landingpad { ptr, i32 }
          cleanup
  br label %2596

2555:                                             ; preds = %2548
  %2556 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2549, ptr noundef nonnull @.str.70)
  br i1 %2556, label %2557, label %2561

2557:                                             ; preds = %2555
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %306) #12
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %305, ptr noundef nonnull align 1 dereferenceable(1) %306) #12
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %305)
          to label %2558 unwind label %2559

2558:                                             ; preds = %2557
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %305) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %306) #12
  br label %.invoke

2559:                                             ; preds = %2557
  %2560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %305) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %306) #12
  br label %2596

2561:                                             ; preds = %2555
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %308) #12
  store ptr %2463, ptr %308, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_52vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull align 8 dereferenceable(8) %308) #12
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %307)
          to label %2562 unwind label %2564

2562:                                             ; preds = %2561
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %308) #12
  br label %.invoke

.invoke:                                          ; preds = %2558, %2562
  %2563 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %2563, align 16, !tbaa !78
  invoke void @__cxa_throw(ptr nonnull %2563, ptr nonnull @_ZTIPKc, ptr null) #13
          to label %.cont unwind label %2553

.cont:                                            ; preds = %.invoke
  unreachable

2564:                                             ; preds = %2561
  %2565 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %308) #12
  br label %2596

2566:                                             ; preds = %2548, %2545, %2544
  %2567 = getelementptr inbounds i8, ptr %0, i64 16
  %2568 = load ptr, ptr %2567, align 8, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %309) #12
  %2569 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %285) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %309, ptr noundef nonnull align 8 dereferenceable(88) %2569)
  %2570 = invoke noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944) %2568, ptr noundef nonnull align 8 dereferenceable(56) %309, ptr noundef nonnull align 8 dereferenceable(352) %2463)
          to label %2571 unwind label %2574

2571:                                             ; preds = %2566
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %309) #12
  %.not848 = icmp eq ptr %2570, null
  br i1 %.not848, label %2572, label %2578

2572:                                             ; preds = %2571
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %311) #12
  store ptr %285, ptr %311, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_53vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %310, ptr noundef nonnull align 8 dereferenceable(8) %311) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %310)
          to label %2573 unwind label %2576

2573:                                             ; preds = %2572
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #12
  br label %2578

2574:                                             ; preds = %2566
  %2575 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %309) #12
  br label %2596

2576:                                             ; preds = %2572
  %2577 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %310) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #12
  br label %2596

2578:                                             ; preds = %2573, %2571
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %314) #12
  call void @_ZNSt10shared_ptrIN3HIR4PathEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %314, ptr noundef nonnull align 8 dereferenceable(16) %285) #12
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_54vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %313, ptr noundef nonnull align 8 dereferenceable(16) %314)
          to label %2579 unwind label %2585

2579:                                             ; preds = %2578
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef nonnull %313)
          to label %2580 unwind label %2587

2580:                                             ; preds = %2579
  invoke void @_ZN14MonomorphStateC2EOS_(ptr noundef nonnull align 8 dereferenceable(144) %315, ptr noundef nonnull align 8 dereferenceable(144) %287)
          to label %2581 unwind label %2589

2581:                                             ; preds = %2580
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %304)
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %317, ptr noundef nonnull align 8 dereferenceable(24) %298) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EEC2EOS4_(ptr noundef nonnull align 8 dereferenceable(24) %318, ptr noundef nonnull align 8 dereferenceable(24) %289) #12
  %2582 = getelementptr inbounds i8, ptr %2463, i64 112
  %2583 = load ptr, ptr %288, align 8, !tbaa !78
  invoke void @_ZN3HIR9Evaluator16push_stack_entryE9FmtLambdaRKN3MIR8FunctionE14MonomorphStateNS_7TypeRefESt6vectorISt4pairINS_7PatternES7_ESaISB_EES8_INS2_4eval13AllocationPtrESaISF_EEPKNS_13GenericParamsESK_(ptr noundef nonnull align 8 dereferenceable(472) %0, ptr noundef nonnull %312, ptr noundef nonnull align 8 dereferenceable(96) %2570, ptr noundef nonnull %315, ptr noundef nonnull %316, ptr noundef nonnull %317, ptr noundef nonnull %318, ptr noundef nonnull %2582, ptr noundef %2583)
          to label %2584 unwind label %2591

2584:                                             ; preds = %2581
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %315) #12
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #12
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %314) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %314) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %304) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %298) #12
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %289) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %289) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %287) #12
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %287) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #12
  br label %2609

2585:                                             ; preds = %2578
  %2586 = landingpad { ptr, i32 }
          cleanup
  br label %2595

2587:                                             ; preds = %2579
  %2588 = landingpad { ptr, i32 }
          cleanup
  br label %2594

2589:                                             ; preds = %2580
  %2590 = landingpad { ptr, i32 }
          cleanup
  br label %2593

2591:                                             ; preds = %2581
  %2592 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #12
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #12
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %315) #12
  br label %2593

2593:                                             ; preds = %2591, %2589
  %.pn = phi { ptr, i32 } [ %2592, %2591 ], [ %2590, %2589 ]
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #12
  br label %2594

2594:                                             ; preds = %2593, %2587
  %.pn.pn = phi { ptr, i32 } [ %.pn, %2593 ], [ %2588, %2587 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #12
  br label %2595

2595:                                             ; preds = %2594, %2585
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %2594 ], [ %2586, %2585 ]
  call void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16) %314) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %314) #12
  br label %2596

2596:                                             ; preds = %2574, %2576, %2595, %2564, %2559, %2553
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %2554, %2553 ], [ %2560, %2559 ], [ %2565, %2564 ], [ %.pn.pn.pn, %2595 ], [ %2577, %2576 ], [ %2575, %2574 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %304) #12
  br label %2597

2597:                                             ; preds = %2596, %2551
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %2596 ], [ %2552, %2551 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %304) #12
  br label %2598

2598:                                             ; preds = %2597, %2540
  %.pn855.pn.pn.pn = phi { ptr, i32 } [ %.pn855.pn.pn, %2540 ], [ %.pn.pn.pn.pn.pn.pn, %2597 ]
  call void @_ZNSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %298) #12
  br label %2599

2599:                                             ; preds = %2598, %2520, %2481
  %.pn864.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn864.pn.pn.pn, %2520 ], [ %.pn855.pn.pn.pn, %2598 ], [ %2482, %2481 ]
  call void @_ZNSt6vectorIN3MIR4eval13AllocationPtrESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %289) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %289) #12
  br label %2600

2600:                                             ; preds = %2599, %2479
  %.pn864.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn864.pn.pn.pn.pn, %2599 ], [ %2480, %2479 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #12
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %287) #12
  br label %2601

2601:                                             ; preds = %2600, %2477
  %.pn864.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn864.pn.pn.pn.pn.pn, %2600 ], [ %2478, %2477 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %287) #12
  call void @_ZNSt12__shared_ptrIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %285) #12
  br label %2602

2602:                                             ; preds = %2601, %2475
  %.pn864.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn864.pn.pn.pn.pn.pn.pn, %2601 ], [ %2476, %2475 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %285) #12
  br label %2610

2603:                                             ; preds = %2454
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %319) #12
  store ptr @__FUNCTION__._ZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorE, ptr %319, align 8, !tbaa !78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %321) #12
  store ptr %319, ptr %321, align 8, !tbaa !78
  %2604 = getelementptr inbounds i8, ptr %321, i64 8
  store ptr %2, ptr %2604, align 8, !tbaa !78
  call void @"_ZNSt8functionIFvRSoEEC2IZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS6_10TerminatorEE4$_55vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %320, ptr noundef nonnull align 8 dereferenceable(16) %321) #12
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %322, ptr noundef nonnull %320)
          to label %2605 unwind label %2607

2605:                                             ; preds = %2603
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #12
  %2606 = call ptr @__cxa_allocate_exception(i64 8) #12
  store ptr @.str.19, ptr %2606, align 16, !tbaa !78
  call void @__cxa_throw(ptr nonnull %2606, ptr nonnull @_ZTIPKc, ptr null) #13
  unreachable

2607:                                             ; preds = %2603
  %2608 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %320) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %321) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %319) #12
  br label %2610

2609:                                             ; preds = %2584, %2452
  %.21 = phi i32 [ %.20, %2452 ], [ -2, %2584 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  br label %2611

2610:                                             ; preds = %2602, %2607, %2453
  %.pn1098.pn = phi { ptr, i32 } [ %.pn1098, %2453 ], [ %.pn864.pn.pn.pn.pn.pn.pn.pn, %2602 ], [ %2608, %2607 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  br label %2612

2611:                                             ; preds = %2609, %602, %548, %372, %351, %348
  %.25 = phi i32 [ %.21, %2609 ], [ %.15, %602 ], [ %550, %548 ], [ %373, %372 ], [ -1, %351 ], [ %350, %348 ]
  ret i32 %.25

2612:                                             ; preds = %346, %370, %553, %604, %2610
  %.pn1129 = phi { ptr, i32 } [ %347, %346 ], [ %.pn1098.pn, %2610 ], [ %.pn1103.pn.pn.pn, %604 ], [ %.pn1108.pn.pn.pn.pn.pn.pn, %553 ], [ %371, %370 ]
  resume { ptr, i32 } %.pn1129

2613:                                             ; preds = %2417, %2278, %2225, %2092, %1953, %1923, %1869, %1125, %669, %639, %576, %485
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() local_unnamed_addr #2

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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 #4 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 #3 align 2

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKmSt6vectorImSaImEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN9__gnu_cxxmiIPKmSt6vectorImSaImEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128eqEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry16monomorph_expandERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

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

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

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

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

declare void @_ZN3HIR4PathC1ENS_7TypeRefE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

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

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

declare void @_ZN3HIR4PathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK3MIR4eval14CallStackEntry15read_param_uintEjRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(816), i32 noundef, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.ctpop.i64(i64) #9

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128anEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i16 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap16Et(i16 noundef zeroext) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap32Ej(i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H7bswap64Em(i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden { i64, i64 } @_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN1H8bswap128E4U128(i64, i64) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128leEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128lsEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128rsEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128orES_(ptr noundef nonnull align 8 dereferenceable(16), i64, i64) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_116get_tuple_t_boolERKN3MIR4eval14CallStackEntryERNS1_8ValueRefERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval8ValueRef8read_ptrERKNS_11TypeResolveE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.434") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3HIR4PathEJS1_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.431") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5

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

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

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

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

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

declare void @_ZNK13Monomorphiser14monomorph_pathERK4SpanRKN3HIR4PathEb(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), i1 noundef zeroext) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN8TypeRepr5FieldESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(352) ptr @_ZN12_GLOBAL__N_112get_functionERK4SpanRK18StaticTraitResolveRKN3HIR4PathER14MonomorphStateRPKNS6_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt19__shared_ptr_accessIN3HIR4PathELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIN3HIR7PatternENS2_7TypeRefEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN3HIR7PatternENS0_7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.444") align 8, ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK18StaticTraitResolve16monomorph_expandERK4SpanRKN3HIR7TypeRefERK13Monomorphiser(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK3HIR5Crate14get_or_gen_mirERKNS_8ItemPathERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(352)) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_40D2Ev"(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK4U128mlEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR4eval14CallStackEntry14read_param_ptrERKNS_5ParamE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.434") align 8, ptr noundef nonnull align 8 dereferenceable(816), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN3HIR9Evaluator14run_terminatorERN3MIR4eval14CallStackEntryERKNS1_10TerminatorEEN4$_54D2Ev"(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

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

declare void @_ZN3MIR4eval8RelocPtrD1Ev(ptr) local_unnamed_addr

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { "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 = { 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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind }
attributes #13 = { 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 = !{!52, !12, i64 8}
!80 = !{!81, !23, i64 8}
!81 = !{!"_ZTSN8TypeRepr11VariantMode11Data_LinearE", !82, i64 0, !23, i64 40, !23, i64 48}
!82 = !{!"_ZTSN8TypeRepr9FieldPathE", !23, i64 0, !23, i64 8, !83, i64 16}
!83 = !{!"_ZTSSt6vectorImSaImEE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseImSaImEE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!87 = !{!81, !23, i64 40}
!88 = !{!81, !23, i64 0}
!89 = !{!90, !23, i64 8}
!90 = !{!"_ZTSN8TypeRepr11VariantMode11Data_ValuesE", !82, i64 0, !83, i64 40}
!91 = !{!23, !23, i64 0}
!92 = !{!93, !23, i64 8}
!93 = !{!"_ZTSN8TypeRepr11VariantMode12Data_NonZeroE", !82, i64 0, !6, i64 40}
!94 = distinct !{!94, !95}
!95 = !{!"llvm.loop.mustprogress"}
!96 = !{!93, !6, i64 40}
!97 = distinct !{!97, !95}
!98 = !{!14, !12, i64 0}
!99 = !{!100, !23, i64 0}
!100 = !{!"_ZTSN8TypeRepr5FieldE", !23, i64 0, !51, i64 8}
!101 = distinct !{!101, !95}
!102 = distinct !{!102, !95}
!103 = !{!104, !104, i64 0}
!104 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!105 = !{i64 0, i64 8, !91, i64 8, i64 8, !91}
!106 = distinct !{!106, !95}
!107 = !{!108, !23, i64 0}
!108 = !{!"_ZTSSt4pairImN3MIR4eval8RelocPtrEE", !23, i64 0, !109, i64 8}
!109 = !{!"_ZTSN3MIR4eval8RelocPtrE", !23, i64 0}
!110 = !{!111, !6, i64 0}
!111 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !6, i64 0, !6, i64 4, !112, i64 8, !118, i64 40, !120, i64 136}
!112 = !{!"_ZTSN3MIR6LValueE", !113, i64 0, !114, i64 8}
!113 = !{!"_ZTSN3MIR6LValue7StorageE", !23, i64 0}
!114 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !115, i64 0}
!115 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!118 = !{!"_ZTSN3MIR10CallTargetE", !119, i64 0, !7, i64 8}
!119 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!120 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass