; LLVM IR from thepowersgang/mrustc :: src/mir (cleanup)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.68" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.68" = type { %"struct.std::_Vector_base.69" }
%"struct.std::_Vector_base.69" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, 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::TypeRef" = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%struct.Span = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.463 = type { ptr }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.464 = type { ptr }
%class.MirMutator = type { ptr, i32, i32, %"class.std::vector.136" }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.471" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.482" = type { ptr }
%"class.std::function.483" = type { %"class.std::_Function_base", ptr }
%class.anon.486 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.487" = type { ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"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::Terminator::Data_Diverge" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.488" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.491" = type { ptr }
%"class.MIR::LValue::Wrapper" = type { i32 }
%class.anon.508 = type { ptr }
%class.anon.509 = type { ptr }
%class.anon.510 = type { ptr }
%class.anon.511 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.512" = 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.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.513 = type { i8 }
%class.anon.515 = type { ptr }
%"class.std::function.516" = type { %"class.std::_Function_base", ptr }
%class.anon.519 = type { i8 }
%class.anon.521 = type { i8 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.44" }
%"class.HIR::GenericParams" = type { %"class.std::vector.24", %"class.std::vector.29", %"class.std::vector.34", %"class.std::vector.39" }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.523 = type { i8 }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.92" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.92" }
%struct.Visitor = type { %"class.MIR::visit::VisitorMut", %"class.std::set" }
%"class.MIR::visit::VisitorMut" = type { %"class.MIR::visit::VisitorBase" }
%"class.MIR::visit::VisitorBase" = type { ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.525" }
%"class.std::_Rb_tree.525" = type { %"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, 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.MIR::Function" = type { %"class.std::vector.44", %"class.std::vector.465", %"class.std::vector.466", %"class.MIR::EnumCachePtr" }
%"class.std::vector.465" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.466" = type { %"struct.std::_Vector_base.467" }
%"struct.std::_Vector_base.467" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::EnumCachePtr" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.136", %"class.MIR::Terminator" }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::Statement::Data_Asm" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.408", %"class.std::vector.408", %"class.std::vector.383", %"class.std::vector.383" }
%"class.std::vector.408" = type { %"struct.std::_Vector_base.409" }
%"struct.std::_Vector_base.409" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.383" = type { %"struct.std::_Vector_base.384" }
%"struct.std::_Vector_base.384" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.489" = type { %"class.std::__cxx11::basic_string", %"struct.MIR::LValue" }
%"struct.MIR::Statement::Data_Asm2" = type { %"struct.AsmCommon::Options", %"class.std::vector.413", %"class.std::vector.418" }
%"struct.AsmCommon::Options" = type { i8, [3 x i8] }
%"class.std::vector.413" = type { %"struct.std::_Vector_base.414" }
%"struct.std::_Vector_base.414" = type { %"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl" }
%"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl" = type { %"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.418" = type { %"struct.std::_Vector_base.419" }
%"struct.std::_Vector_base.419" = type { %"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::AsmParam::Data_Reg" = type { i32, %"class.AsmCommon::RegisterSpec", %"class.std::unique_ptr.492", %"class.std::unique_ptr.500" }
%"class.AsmCommon::RegisterSpec" = type { i32, %"union.AsmCommon::RegisterSpec::DataUnion" }
%"union.AsmCommon::RegisterSpec::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::unique_ptr.492" = type { %"struct.std::__uniq_ptr_data.493" }
%"struct.std::__uniq_ptr_data.493" = type { %"class.std::__uniq_ptr_impl.494" }
%"class.std::__uniq_ptr_impl.494" = type { %"class.std::tuple.495" }
%"class.std::tuple.495" = type { %"struct.std::_Tuple_impl.496" }
%"struct.std::_Tuple_impl.496" = type { %"struct.std::_Head_base.499" }
%"struct.std::_Head_base.499" = type { ptr }
%"class.std::unique_ptr.500" = type { %"struct.std::__uniq_ptr_data.501" }
%"struct.std::__uniq_ptr_data.501" = type { %"class.std::__uniq_ptr_impl.502" }
%"class.std::__uniq_ptr_impl.502" = type { %"class.std::tuple.503" }
%"class.std::tuple.503" = type { %"struct.std::_Tuple_impl.504" }
%"struct.std::_Tuple_impl.504" = type { %"struct.std::_Head_base.507" }
%"struct.std::_Head_base.507" = type { ptr }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.84", [8 x i8] }
%"class.std::unique_ptr.84" = type { %"struct.std::__uniq_ptr_data.85" }
%"struct.std::__uniq_ptr_data.85" = type { %"class.std::__uniq_ptr_impl.86" }
%"class.std::__uniq_ptr_impl.86" = type { %"class.std::tuple.87" }
%"class.std::tuple.87" = type { %"struct.std::_Tuple_impl.88" }
%"struct.std::_Tuple_impl.88" = type { %"struct.std::_Head_base.91" }
%"struct.std::_Head_base.91" = type { ptr }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"struct.MIR::RValue::Data_UniOp" = type <{ %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.92" }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%"struct.MIR::Constant::Data_Const" = type { %"class.std::unique_ptr.76" }
%"class.std::unique_ptr.76" = type { %"struct.std::__uniq_ptr_data.77" }
%"struct.std::__uniq_ptr_data.77" = type { %"class.std::__uniq_ptr_impl.78" }
%"class.std::__uniq_ptr_impl.78" = type { %"class.std::tuple.79" }
%"class.std::tuple.79" = type { %"struct.std::_Tuple_impl.80" }
%"struct.std::_Tuple_impl.80" = type { %"struct.std::_Head_base.83" }
%"struct.std::_Head_base.83" = type { ptr }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.393" }
%"class.std::vector.393" = type { %"struct.std::_Vector_base.394" }
%"struct.std::_Vector_base.394" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.393", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.126" }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.109", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.98", %"class.std::map.104", ptr }
%"class.std::map.98" = type { %"class.std::_Rb_tree.99" }
%"class.std::_Rb_tree.99" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.104" = type { %"class.std::_Rb_tree.105" }
%"class.std::_Rb_tree.105" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.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" }
%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 }
%"struct.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%"struct.MIR::CallTarget::Data_Intrinsic" = type { %class.RcString, %"struct.HIR::PathParams" }

@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.18 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [54 x i8], align 1
@__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [146 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z23MIR_Cleanup_GetConstantRKN3MIR11TypeResolveERKN3HIR4PathERNS3_7TypeRefER14MonomorphState(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) #0 align 2

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

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

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

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

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(172), ptr noundef nonnull align 8 dereferenceable(80)) #0

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

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

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

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

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

declare void @__cxa_free_exception(ptr)

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) #0

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(48)) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) #0

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

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

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

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

276:                                              ; preds = %5
  %277 = zext i1 %275 to i64
  %278 = select i1 %275, ptr @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %279 = getelementptr inbounds %class.anon.463, ptr %16, i32 0, i32 0
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %280, ptr %279, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef %278, ptr noundef %15)
          to label %281 unwind label %307

281:                                              ; preds = %276
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr %17) #10
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %283 = getelementptr inbounds %class.anon.464, ptr %20, i32 0, i32 0
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %284, ptr %283, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %19)
          to label %285 unwind label %311

285:                                              ; preds = %281
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = load ptr, ptr %9, align 8, !tbaa !5
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(424) %282, ptr noundef %18, ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(24) %287, ptr noundef nonnull align 8 dereferenceable(96) %288)
          to label %289 unwind label %315

289:                                              ; preds = %285
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #10
  %290 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN10MirMutatorC2ERN3MIR8FunctionEjj(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(96) %290, i32 noundef 0, i32 noundef 0)
          to label %291 unwind label %320

291:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = getelementptr inbounds %"class.MIR::Function", ptr %292, i32 0, i32 2
  store ptr %293, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %294) #10
  %296 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.471", ptr %23, i32 0, i32 0
  store ptr %295, ptr %296, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %297) #10
  %299 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.471", ptr %24, i32 0, i32 0
  store ptr %298, ptr %299, align 8
  br label %300

300:                                              ; preds = %3250, %291
  %301 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br i1 %301, label %324, label %302

302:                                              ; preds = %300
  store i32 2, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %3254

303:                                              ; preds = %5
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %13, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %14, align 4
  br label %3264

307:                                              ; preds = %276
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %13, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %3264

311:                                              ; preds = %281
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %13, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %14, align 4
  br label %319

315:                                              ; preds = %285
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %13, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %14, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %319

319:                                              ; preds = %315, %311
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %3263

320:                                              ; preds = %289
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %13, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %14, align 4
  br label %3262

324:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %325 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  store ptr %325, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %326 = load ptr, ptr %26, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %326, i32 0, i32 0
  %328 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %327) #10
  %329 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.482", ptr %27, i32 0, i32 0
  store ptr %328, ptr %329, align 8
  br label %330

330:                                              ; preds = %1938, %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %331 = load ptr, ptr %26, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %331, i32 0, i32 0
  %333 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %332) #10
  %334 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.482", ptr %28, i32 0, i32 0
  store ptr %333, ptr %334, align 8
  %335 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br i1 %335, label %337, label %336

336:                                              ; preds = %330
  store i32 4, ptr %25, align 4
  br label %1946

337:                                              ; preds = %330
  invoke void @_ZN10MirMutator12update_stateERN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %338 unwind label %381

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %339 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  store ptr %339, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %340 unwind label %385

340:                                              ; preds = %338
  %341 = load ptr, ptr %29, align 8, !tbaa !5
  %342 = invoke noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %341)
          to label %343 unwind label %389

343:                                              ; preds = %340
  br i1 %342, label %344, label %396

344:                                              ; preds = %343
  %345 = load ptr, ptr %29, align 8, !tbaa !5
  %346 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %345)
          to label %347 unwind label %389

347:                                              ; preds = %344
  %348 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %346, i32 0, i32 1
  %349 = invoke noundef zeroext i1 @_ZNK3MIR6RValue9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %348)
          to label %350 unwind label %389

350:                                              ; preds = %347
  br i1 %349, label %351, label %396

351:                                              ; preds = %350
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %352)
          to label %354 unwind label %389

354:                                              ; preds = %351
  %355 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %353, i32 0, i32 1
  %356 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %355)
          to label %357 unwind label %389

357:                                              ; preds = %354
  %358 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %356, i32 0, i32 1
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(32) %358, i32 noundef 0)
          to label %360 unwind label %389

360:                                              ; preds = %357
  %361 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
          to label %362 unwind label %389

362:                                              ; preds = %360
  %363 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %361)
          to label %364 unwind label %389

364:                                              ; preds = %362
  br i1 %363, label %365, label %396

365:                                              ; preds = %364
  br label %366

366:                                              ; preds = %365
  %367 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %368 unwind label %389

368:                                              ; preds = %366
  br i1 %367, label %369, label %393

369:                                              ; preds = %368
  %370 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %370, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %372 unwind label %389

372:                                              ; preds = %369
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %374 unwind label %389

374:                                              ; preds = %372
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %373, ptr noundef @.str.21)
          to label %376 unwind label %389

376:                                              ; preds = %374
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef @_ZSt3decRSt8ios_base)
          to label %378 unwind label %389

378:                                              ; preds = %376
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %380 unwind label %389

380:                                              ; preds = %378
  br label %393

381:                                              ; preds = %337
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %13, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %14, align 4
  br label %1947

385:                                              ; preds = %338
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %13, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %14, align 4
  br label %1945

389:                                              ; preds = %1610, %474, %472, %469, %467, %464, %461, %418, %416, %413, %411, %409, %406, %403, %378, %376, %374, %372, %369, %366, %362, %360, %357, %354, %351, %347, %344, %340
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %13, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %14, align 4
  br label %1944

393:                                              ; preds = %380, %368
  br label %394

394:                                              ; preds = %393
  br label %395

395:                                              ; preds = %394
  br label %460

396:                                              ; preds = %364, %350, %343
  %397 = load ptr, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #10
  %398 = getelementptr inbounds %class.anon.486, ptr %32, i32 0, i32 0
  store ptr %17, ptr %398, align 8, !tbaa !5
  %399 = getelementptr inbounds %class.anon.486, ptr %32, i32 0, i32 1
  store ptr %30, ptr %399, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3MIR6LValueENS0_5visit8ValUsageEEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERNS0_8FunctionERKSt6vectorISt4pairINSC_7PatternENSC_7TypeRefEESaISM_EERKSL_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(16) %32) #10
  %400 = invoke noundef zeroext i1 @_ZN3MIR5visit17visit_mir_lvaluesERKNS_9StatementESt8functionIFbRKNS_6LValueENS0_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %397, ptr noundef %31)
          to label %401 unwind label %421

401:                                              ; preds = %396
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #10
  br i1 %400, label %402, label %459

402:                                              ; preds = %401
  br label %403

403:                                              ; preds = %402
  %404 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %405 unwind label %389

405:                                              ; preds = %403
  br i1 %404, label %406, label %425

406:                                              ; preds = %405
  %407 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %407, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %409 unwind label %389

409:                                              ; preds = %406
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %411 unwind label %389

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef @.str.22)
          to label %413 unwind label %389

413:                                              ; preds = %411
  %414 = load ptr, ptr %29, align 8, !tbaa !5
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(152) %414)
          to label %416 unwind label %389

416:                                              ; preds = %413
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef @_ZSt3decRSt8ios_base)
          to label %418 unwind label %389

418:                                              ; preds = %416
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %420 unwind label %389

420:                                              ; preds = %418
  br label %425

421:                                              ; preds = %396
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %13, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #10
  br label %1944

425:                                              ; preds = %420, %405
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  %428 = load ptr, ptr %26, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %428, i32 0, i32 0
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %430, i32 0, i32 0
  %432 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %431) #10
  %433 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.482", ptr %35, i32 0, i32 0
  store ptr %432, ptr %433, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  %434 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.487", ptr %33, i32 0, i32 0
  %435 = load ptr, ptr %434, align 8
  %436 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.487", ptr %34, i32 0, i32 0
  %437 = load ptr, ptr %436, align 8
  %438 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EES8_(ptr noundef nonnull align 8 dereferenceable(24) %429, ptr %435, ptr %437)
          to label %439 unwind label %446

439:                                              ; preds = %427
  %440 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.482", ptr %36, i32 0, i32 0
  store ptr %438, ptr %440, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 168, ptr %37) #10
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %37)
          to label %441 unwind label %450

441:                                              ; preds = %439
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %442, i32 0, i32 1
  %444 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %443, ptr noundef nonnull align 8 dereferenceable(168) %37)
          to label %445 unwind label %454

445:                                              ; preds = %441
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %37) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %37) #10
  store i32 4, ptr %25, align 4
  br label %1935

446:                                              ; preds = %427
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %13, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %1944

450:                                              ; preds = %439
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %13, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %14, align 4
  br label %458

454:                                              ; preds = %441
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %13, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %14, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %37) #10
  br label %458

458:                                              ; preds = %454, %450
  call void @llvm.lifetime.end.p0(i64 168, ptr %37) #10
  br label %1944

459:                                              ; preds = %401
  br label %460

460:                                              ; preds = %459, %395
  br label %461

461:                                              ; preds = %460
  %462 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %463 unwind label %389

463:                                              ; preds = %461
  br i1 %462, label %464, label %477

464:                                              ; preds = %463
  %465 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %465, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %467 unwind label %389

467:                                              ; preds = %464
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %469 unwind label %389

469:                                              ; preds = %467
  %470 = load ptr, ptr %29, align 8, !tbaa !5
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %468, ptr noundef nonnull align 8 dereferenceable(152) %470)
          to label %472 unwind label %389

472:                                              ; preds = %469
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef @_ZSt3decRSt8ios_base)
          to label %474 unwind label %389

474:                                              ; preds = %472
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %476 unwind label %389

476:                                              ; preds = %474
  br label %477

477:                                              ; preds = %476, %463
  br label %478

478:                                              ; preds = %477
  br label %479

479:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #10
  store i8 1, ptr %39, align 1, !tbaa !11
  br label %480

480:                                              ; preds = %1609, %479
  %481 = load i8, ptr %39, align 1, !tbaa !11, !range !13, !noundef !14
  %482 = trunc i8 %481 to i1
  br i1 %482, label %484, label %483

483:                                              ; preds = %480
  store i32 13, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #10
  br label %1610

484:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %485 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %485, ptr %40, align 8, !tbaa !5
  br label %486

486:                                              ; preds = %1606, %484
  %487 = load i8, ptr %39, align 1, !tbaa !11, !range !13, !noundef !14
  %488 = trunc i8 %487 to i1
  br i1 %488, label %490, label %489

489:                                              ; preds = %486
  store i32 16, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  br label %1608

490:                                              ; preds = %486
  %491 = load ptr, ptr %40, align 8, !tbaa !5
  %492 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %491)
          to label %493 unwind label %494

493:                                              ; preds = %490
  switch i32 %492, label %1605 [
    i32 0, label %498
    i32 5, label %499
    i32 4, label %525
    i32 6, label %548
    i32 2, label %571
    i32 3, label %641
    i32 1, label %793
  ]

494:                                              ; preds = %490
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %13, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %14, align 4
  br label %1607

498:                                              ; preds = %493
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 1101, ptr noundef @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #11
  unreachable

499:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #10
  store i8 1, ptr %41, align 1, !tbaa !11
  br label %500

500:                                              ; preds = %523, %499
  %501 = load i8, ptr %41, align 1, !tbaa !11, !range !13, !noundef !14
  %502 = trunc i8 %501 to i1
  br i1 %502, label %504, label %503

503:                                              ; preds = %500
  store i32 20, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  br label %524

504:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %505 = load ptr, ptr %40, align 8, !tbaa !5
  %506 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %505)
          to label %507 unwind label %513

507:                                              ; preds = %504
  store ptr %506, ptr %42, align 8, !tbaa !5
  br label %508

508:                                              ; preds = %521, %507
  %509 = load ptr, ptr %42, align 8, !tbaa !5
  %510 = load i8, ptr %41, align 1, !tbaa !11, !range !13, !noundef !14
  %511 = trunc i8 %510 to i1
  br i1 %511, label %517, label %512

512:                                              ; preds = %508
  store i32 23, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %522

513:                                              ; preds = %517, %504
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %13, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  br label %1607

517:                                              ; preds = %508
  %518 = load ptr, ptr %42, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %518, i32 0, i32 2
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %519)
          to label %520 unwind label %513

520:                                              ; preds = %517
  br label %521

521:                                              ; preds = %520
  store i8 0, ptr %41, align 1, !tbaa !11
  br label %508, !llvm.loop !15

522:                                              ; preds = %512
  br label %523

523:                                              ; preds = %522
  store i8 0, ptr %41, align 1, !tbaa !11
  br label %500, !llvm.loop !17

524:                                              ; preds = %503
  br label %1605

525:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #10
  store i8 1, ptr %43, align 1, !tbaa !11
  br label %526

526:                                              ; preds = %546, %525
  %527 = load i8, ptr %43, align 1, !tbaa !11, !range !13, !noundef !14
  %528 = trunc i8 %527 to i1
  br i1 %528, label %530, label %529

529:                                              ; preds = %526
  store i32 26, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #10
  br label %547

530:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %531 = load ptr, ptr %40, align 8, !tbaa !5
  %532 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %531)
          to label %533 unwind label %539

533:                                              ; preds = %530
  store ptr %532, ptr %44, align 8, !tbaa !5
  br label %534

534:                                              ; preds = %544, %533
  %535 = load ptr, ptr %44, align 8, !tbaa !5
  %536 = load i8, ptr %43, align 1, !tbaa !11, !range !13, !noundef !14
  %537 = trunc i8 %536 to i1
  br i1 %537, label %543, label %538

538:                                              ; preds = %534
  store i32 29, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %545

539:                                              ; preds = %530
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %13, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #10
  br label %1607

543:                                              ; preds = %534
  br label %544

544:                                              ; preds = %543
  store i8 0, ptr %43, align 1, !tbaa !11
  br label %534, !llvm.loop !18

545:                                              ; preds = %538
  br label %546

546:                                              ; preds = %545
  store i8 0, ptr %43, align 1, !tbaa !11
  br label %526, !llvm.loop !19

547:                                              ; preds = %529
  br label %1605

548:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #10
  store i8 1, ptr %45, align 1, !tbaa !11
  br label %549

549:                                              ; preds = %569, %548
  %550 = load i8, ptr %45, align 1, !tbaa !11, !range !13, !noundef !14
  %551 = trunc i8 %550 to i1
  br i1 %551, label %553, label %552

552:                                              ; preds = %549
  store i32 32, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #10
  br label %570

553:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %554 = load ptr, ptr %40, align 8, !tbaa !5
  %555 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %554)
          to label %556 unwind label %562

556:                                              ; preds = %553
  store ptr %555, ptr %46, align 8, !tbaa !5
  br label %557

557:                                              ; preds = %567, %556
  %558 = load ptr, ptr %46, align 8, !tbaa !5
  %559 = load i8, ptr %45, align 1, !tbaa !11, !range !13, !noundef !14
  %560 = trunc i8 %559 to i1
  br i1 %560, label %566, label %561

561:                                              ; preds = %557
  store i32 35, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %568

562:                                              ; preds = %553
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %13, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #10
  br label %1607

566:                                              ; preds = %557
  br label %567

567:                                              ; preds = %566
  store i8 0, ptr %45, align 1, !tbaa !11
  br label %557, !llvm.loop !20

568:                                              ; preds = %561
  br label %569

569:                                              ; preds = %568
  store i8 0, ptr %45, align 1, !tbaa !11
  br label %549, !llvm.loop !21

570:                                              ; preds = %552
  br label %1605

571:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #10
  store i8 1, ptr %47, align 1, !tbaa !11
  br label %572

572:                                              ; preds = %639, %571
  %573 = load i8, ptr %47, align 1, !tbaa !11, !range !13, !noundef !14
  %574 = trunc i8 %573 to i1
  br i1 %574, label %576, label %575

575:                                              ; preds = %572
  store i32 38, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #10
  br label %640

576:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %577 = load ptr, ptr %40, align 8, !tbaa !5
  %578 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %577)
          to label %579 unwind label %585

579:                                              ; preds = %576
  store ptr %578, ptr %48, align 8, !tbaa !5
  br label %580

580:                                              ; preds = %636, %579
  %581 = load ptr, ptr %48, align 8, !tbaa !5
  %582 = load i8, ptr %47, align 1, !tbaa !11, !range !13, !noundef !14
  %583 = trunc i8 %582 to i1
  br i1 %583, label %589, label %584

584:                                              ; preds = %580
  store i32 41, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %638

585:                                              ; preds = %576
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %13, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %14, align 4
  br label %637

589:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %590 = load ptr, ptr %48, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %590, i32 0, i32 2
  store ptr %591, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %592 = load ptr, ptr %49, align 8, !tbaa !5
  %593 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %592) #10
  %594 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.488", ptr %50, i32 0, i32 0
  store ptr %593, ptr %594, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %595 = load ptr, ptr %49, align 8, !tbaa !5
  %596 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %595) #10
  %597 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.488", ptr %51, i32 0, i32 0
  store ptr %596, ptr %597, align 8
  br label %598

598:                                              ; preds = %606, %589
  %599 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  br i1 %599, label %601, label %600

600:                                              ; preds = %598
  store i32 44, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %612

601:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %602 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  store ptr %602, ptr %52, align 8, !tbaa !5
  %603 = load ptr, ptr %52, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.std::pair.489", ptr %603, i32 0, i32 1
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %604)
          to label %605 unwind label %608

605:                                              ; preds = %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %606

606:                                              ; preds = %605
  %607 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  br label %598

608:                                              ; preds = %601
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %13, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %637

612:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %613 = load ptr, ptr %48, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %613, i32 0, i32 1
  store ptr %614, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %615 = load ptr, ptr %53, align 8, !tbaa !5
  %616 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %615) #10
  %617 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.488", ptr %54, i32 0, i32 0
  store ptr %616, ptr %617, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %618 = load ptr, ptr %53, align 8, !tbaa !5
  %619 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %618) #10
  %620 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.488", ptr %55, i32 0, i32 0
  store ptr %619, ptr %620, align 8
  br label %621

621:                                              ; preds = %629, %612
  %622 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  br i1 %622, label %624, label %623

623:                                              ; preds = %621
  store i32 46, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %635

624:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %625 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  store ptr %625, ptr %56, align 8, !tbaa !5
  %626 = load ptr, ptr %56, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.std::pair.489", ptr %626, i32 0, i32 1
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %627)
          to label %628 unwind label %631

628:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %629

629:                                              ; preds = %628
  %630 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  br label %621

631:                                              ; preds = %624
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %13, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %637

635:                                              ; preds = %623
  br label %636

636:                                              ; preds = %635
  store i8 0, ptr %47, align 1, !tbaa !11
  br label %580, !llvm.loop !22

637:                                              ; preds = %631, %608, %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #10
  br label %1607

638:                                              ; preds = %584
  br label %639

639:                                              ; preds = %638
  store i8 0, ptr %47, align 1, !tbaa !11
  br label %572, !llvm.loop !23

640:                                              ; preds = %575
  br label %1605

641:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #10
  store i8 1, ptr %57, align 1, !tbaa !11
  br label %642

642:                                              ; preds = %791, %641
  %643 = load i8, ptr %57, align 1, !tbaa !11, !range !13, !noundef !14
  %644 = trunc i8 %643 to i1
  br i1 %644, label %646, label %645

645:                                              ; preds = %642
  store i32 48, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #10
  br label %792

646:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %647 = load ptr, ptr %40, align 8, !tbaa !5
  %648 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %647)
          to label %649 unwind label %655

649:                                              ; preds = %646
  store ptr %648, ptr %58, align 8, !tbaa !5
  br label %650

650:                                              ; preds = %788, %649
  %651 = load ptr, ptr %58, align 8, !tbaa !5
  %652 = load i8, ptr %57, align 1, !tbaa !11, !range !13, !noundef !14
  %653 = trunc i8 %652 to i1
  br i1 %653, label %659, label %654

654:                                              ; preds = %650
  store i32 51, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %790

655:                                              ; preds = %646
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %13, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %14, align 4
  br label %789

659:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %660 = load ptr, ptr %58, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm2", ptr %660, i32 0, i32 2
  store ptr %661, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %662 = load ptr, ptr %59, align 8, !tbaa !5
  %663 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %662) #10
  %664 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.491", ptr %60, i32 0, i32 0
  store ptr %663, ptr %664, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %665 = load ptr, ptr %59, align 8, !tbaa !5
  %666 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %665) #10
  %667 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.491", ptr %61, i32 0, i32 0
  store ptr %666, ptr %667, align 8
  br label %668

668:                                              ; preds = %785, %659
  %669 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  br i1 %669, label %671, label %670

670:                                              ; preds = %668
  store i32 54, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %787

671:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %672 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  store ptr %672, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #10
  store i8 1, ptr %63, align 1, !tbaa !11
  br label %673

673:                                              ; preds = %783, %671
  %674 = load i8, ptr %63, align 1, !tbaa !11, !range !13, !noundef !14
  %675 = trunc i8 %674 to i1
  br i1 %675, label %677, label %676

676:                                              ; preds = %673
  store i32 56, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #10
  br label %784

677:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %678 = load ptr, ptr %62, align 8, !tbaa !5
  store ptr %678, ptr %64, align 8, !tbaa !5
  br label %679

679:                                              ; preds = %780, %677
  %680 = load i8, ptr %63, align 1, !tbaa !11, !range !13, !noundef !14
  %681 = trunc i8 %680 to i1
  br i1 %681, label %683, label %682

682:                                              ; preds = %679
  store i32 59, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %782

683:                                              ; preds = %679
  %684 = load ptr, ptr %64, align 8, !tbaa !5
  %685 = invoke noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %684)
          to label %686 unwind label %687

686:                                              ; preds = %683
  switch i32 %685, label %779 [
    i32 0, label %691
    i32 1, label %692
    i32 2, label %715
    i32 3, label %738
  ]

687:                                              ; preds = %683
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %13, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %14, align 4
  br label %781

691:                                              ; preds = %686
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 1118, ptr noundef @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #11
  unreachable

692:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #10
  store i8 1, ptr %65, align 1, !tbaa !11
  br label %693

693:                                              ; preds = %713, %692
  %694 = load i8, ptr %65, align 1, !tbaa !11, !range !13, !noundef !14
  %695 = trunc i8 %694 to i1
  br i1 %695, label %697, label %696

696:                                              ; preds = %693
  store i32 63, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  br label %714

697:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %698 = load ptr, ptr %64, align 8, !tbaa !5
  %699 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %698)
          to label %700 unwind label %706

700:                                              ; preds = %697
  store ptr %699, ptr %66, align 8, !tbaa !5
  br label %701

701:                                              ; preds = %711, %700
  %702 = load ptr, ptr %66, align 8, !tbaa !5
  %703 = load i8, ptr %65, align 1, !tbaa !11, !range !13, !noundef !14
  %704 = trunc i8 %703 to i1
  br i1 %704, label %710, label %705

705:                                              ; preds = %701
  store i32 66, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  br label %712

706:                                              ; preds = %697
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %13, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  br label %781

710:                                              ; preds = %701
  br label %711

711:                                              ; preds = %710
  store i8 0, ptr %65, align 1, !tbaa !11
  br label %701, !llvm.loop !24

712:                                              ; preds = %705
  br label %713

713:                                              ; preds = %712
  store i8 0, ptr %65, align 1, !tbaa !11
  br label %693, !llvm.loop !25

714:                                              ; preds = %696
  br label %779

715:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #10
  store i8 1, ptr %67, align 1, !tbaa !11
  br label %716

716:                                              ; preds = %736, %715
  %717 = load i8, ptr %67, align 1, !tbaa !11, !range !13, !noundef !14
  %718 = trunc i8 %717 to i1
  br i1 %718, label %720, label %719

719:                                              ; preds = %716
  store i32 69, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #10
  br label %737

720:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %721 = load ptr, ptr %64, align 8, !tbaa !5
  %722 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %721)
          to label %723 unwind label %729

723:                                              ; preds = %720
  store ptr %722, ptr %68, align 8, !tbaa !5
  br label %724

724:                                              ; preds = %734, %723
  %725 = load ptr, ptr %68, align 8, !tbaa !5
  %726 = load i8, ptr %67, align 1, !tbaa !11, !range !13, !noundef !14
  %727 = trunc i8 %726 to i1
  br i1 %727, label %733, label %728

728:                                              ; preds = %724
  store i32 72, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %735

729:                                              ; preds = %720
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %13, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #10
  br label %781

733:                                              ; preds = %724
  br label %734

734:                                              ; preds = %733
  store i8 0, ptr %67, align 1, !tbaa !11
  br label %724, !llvm.loop !26

735:                                              ; preds = %728
  br label %736

736:                                              ; preds = %735
  store i8 0, ptr %67, align 1, !tbaa !11
  br label %716, !llvm.loop !27

737:                                              ; preds = %719
  br label %779

738:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #10
  store i8 1, ptr %69, align 1, !tbaa !11
  br label %739

739:                                              ; preds = %777, %738
  %740 = load i8, ptr %69, align 1, !tbaa !11, !range !13, !noundef !14
  %741 = trunc i8 %740 to i1
  br i1 %741, label %743, label %742

742:                                              ; preds = %739
  store i32 75, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #10
  br label %778

743:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %744 = load ptr, ptr %64, align 8, !tbaa !5
  %745 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %744)
          to label %746 unwind label %752

746:                                              ; preds = %743
  store ptr %745, ptr %70, align 8, !tbaa !5
  br label %747

747:                                              ; preds = %775, %746
  %748 = load ptr, ptr %70, align 8, !tbaa !5
  %749 = load i8, ptr %69, align 1, !tbaa !11, !range !13, !noundef !14
  %750 = trunc i8 %749 to i1
  br i1 %750, label %756, label %751

751:                                              ; preds = %747
  store i32 78, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %776

752:                                              ; preds = %769, %760, %743
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %13, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #10
  br label %781

756:                                              ; preds = %747
  %757 = load ptr, ptr %70, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %757, i32 0, i32 2
  %759 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %758) #10
  br i1 %759, label %760, label %765

760:                                              ; preds = %756
  %761 = load ptr, ptr %70, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %761, i32 0, i32 2
  %763 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %762) #10
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %763)
          to label %764 unwind label %752

764:                                              ; preds = %760
  br label %765

765:                                              ; preds = %764, %756
  %766 = load ptr, ptr %70, align 8, !tbaa !5
  %767 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %766, i32 0, i32 3
  %768 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %767) #10
  br i1 %768, label %769, label %774

769:                                              ; preds = %765
  %770 = load ptr, ptr %70, align 8, !tbaa !5
  %771 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %770, i32 0, i32 3
  %772 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %771) #10
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %772)
          to label %773 unwind label %752

773:                                              ; preds = %769
  br label %774

774:                                              ; preds = %773, %765
  br label %775

775:                                              ; preds = %774
  store i8 0, ptr %69, align 1, !tbaa !11
  br label %747, !llvm.loop !28

776:                                              ; preds = %751
  br label %777

777:                                              ; preds = %776
  store i8 0, ptr %69, align 1, !tbaa !11
  br label %739, !llvm.loop !29

778:                                              ; preds = %742
  br label %779

779:                                              ; preds = %778, %737, %714, %686
  br label %780

780:                                              ; preds = %779
  store i8 0, ptr %63, align 1, !tbaa !11
  br label %679, !llvm.loop !30

781:                                              ; preds = %752, %729, %706, %687
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %789

782:                                              ; preds = %682
  br label %783

783:                                              ; preds = %782
  store i8 0, ptr %63, align 1, !tbaa !11
  br label %673, !llvm.loop !31

784:                                              ; preds = %676
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %785

785:                                              ; preds = %784
  %786 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br label %668

787:                                              ; preds = %670
  br label %788

788:                                              ; preds = %787
  store i8 0, ptr %57, align 1, !tbaa !11
  br label %650, !llvm.loop !32

789:                                              ; preds = %781, %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #10
  br label %1607

790:                                              ; preds = %654
  br label %791

791:                                              ; preds = %790
  store i8 0, ptr %57, align 1, !tbaa !11
  br label %642, !llvm.loop !33

792:                                              ; preds = %645
  br label %1605

793:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #10
  store i8 1, ptr %71, align 1, !tbaa !11
  br label %794

794:                                              ; preds = %1603, %793
  %795 = load i8, ptr %71, align 1, !tbaa !11, !range !13, !noundef !14
  %796 = trunc i8 %795 to i1
  br i1 %796, label %798, label %797

797:                                              ; preds = %794
  store i32 81, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  br label %1604

798:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %799 = load ptr, ptr %40, align 8, !tbaa !5
  %800 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %799)
          to label %801 unwind label %807

801:                                              ; preds = %798
  store ptr %800, ptr %72, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %1600, %801
  %803 = load ptr, ptr %72, align 8, !tbaa !5
  %804 = load i8, ptr %71, align 1, !tbaa !11, !range !13, !noundef !14
  %805 = trunc i8 %804 to i1
  br i1 %805, label %811, label %806

806:                                              ; preds = %802
  store i32 84, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %1602

807:                                              ; preds = %811, %798
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %13, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %14, align 4
  br label %1601

811:                                              ; preds = %802
  %812 = load ptr, ptr %72, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %812, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %813)
          to label %814 unwind label %807

814:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #10
  store i8 1, ptr %73, align 1, !tbaa !11
  br label %815

815:                                              ; preds = %1598, %814
  %816 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %817 = trunc i8 %816 to i1
  br i1 %817, label %819, label %818

818:                                              ; preds = %815
  store i32 87, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  br label %1599

819:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %820 = load ptr, ptr %72, align 8, !tbaa !5
  %821 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %820, i32 0, i32 1
  store ptr %821, ptr %74, align 8, !tbaa !5
  br label %822

822:                                              ; preds = %1595, %819
  %823 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %824 = trunc i8 %823 to i1
  br i1 %824, label %826, label %825

825:                                              ; preds = %822
  store i32 90, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  br label %1597

826:                                              ; preds = %822
  %827 = load ptr, ptr %74, align 8, !tbaa !5
  %828 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %827)
          to label %829 unwind label %830

829:                                              ; preds = %826
  switch i32 %828, label %1594 [
    i32 0, label %834
    i32 1, label %835
    i32 3, label %860
    i32 4, label %885
    i32 2, label %911
    i32 5, label %937
    i32 6, label %963
    i32 7, label %992
    i32 8, label %1018
    i32 9, label %1208
    i32 10, label %1355
    i32 11, label %1384
    i32 12, label %1430
    i32 13, label %1476
    i32 14, label %1502
    i32 15, label %1548
  ]

830:                                              ; preds = %826
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %13, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %14, align 4
  br label %1596

834:                                              ; preds = %829
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 1132, ptr noundef @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #11
  unreachable

835:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #10
  store i8 1, ptr %75, align 1, !tbaa !11
  br label %836

836:                                              ; preds = %858, %835
  %837 = load i8, ptr %75, align 1, !tbaa !11, !range !13, !noundef !14
  %838 = trunc i8 %837 to i1
  br i1 %838, label %840, label %839

839:                                              ; preds = %836
  store i32 94, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #10
  br label %859

840:                                              ; preds = %836
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %841 = load ptr, ptr %74, align 8, !tbaa !5
  %842 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %841)
          to label %843 unwind label %849

843:                                              ; preds = %840
  store ptr %842, ptr %76, align 8, !tbaa !5
  br label %844

844:                                              ; preds = %856, %843
  %845 = load ptr, ptr %76, align 8, !tbaa !5
  %846 = load i8, ptr %75, align 1, !tbaa !11, !range !13, !noundef !14
  %847 = trunc i8 %846 to i1
  br i1 %847, label %853, label %848

848:                                              ; preds = %844
  store i32 97, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %857

849:                                              ; preds = %853, %840
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %13, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #10
  br label %1596

853:                                              ; preds = %844
  %854 = load ptr, ptr %76, align 8, !tbaa !5
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %854)
          to label %855 unwind label %849

855:                                              ; preds = %853
  br label %856

856:                                              ; preds = %855
  store i8 0, ptr %75, align 1, !tbaa !11
  br label %844, !llvm.loop !34

857:                                              ; preds = %848
  br label %858

858:                                              ; preds = %857
  store i8 0, ptr %75, align 1, !tbaa !11
  br label %836, !llvm.loop !35

859:                                              ; preds = %839
  br label %1594

860:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #10
  store i8 1, ptr %77, align 1, !tbaa !11
  br label %861

861:                                              ; preds = %883, %860
  %862 = load i8, ptr %77, align 1, !tbaa !11, !range !13, !noundef !14
  %863 = trunc i8 %862 to i1
  br i1 %863, label %865, label %864

864:                                              ; preds = %861
  store i32 100, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  br label %884

865:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %866 = load ptr, ptr %74, align 8, !tbaa !5
  %867 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %866)
          to label %868 unwind label %874

868:                                              ; preds = %865
  store ptr %867, ptr %78, align 8, !tbaa !5
  br label %869

869:                                              ; preds = %881, %868
  %870 = load ptr, ptr %78, align 8, !tbaa !5
  %871 = load i8, ptr %77, align 1, !tbaa !11, !range !13, !noundef !14
  %872 = trunc i8 %871 to i1
  br i1 %872, label %878, label %873

873:                                              ; preds = %869
  store i32 103, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %882

874:                                              ; preds = %878, %865
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %13, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  br label %1596

878:                                              ; preds = %869
  %879 = load ptr, ptr %78, align 8, !tbaa !5
  invoke void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %879)
          to label %880 unwind label %874

880:                                              ; preds = %878
  br label %881

881:                                              ; preds = %880
  store i8 0, ptr %77, align 1, !tbaa !11
  br label %869, !llvm.loop !36

882:                                              ; preds = %873
  br label %883

883:                                              ; preds = %882
  store i8 0, ptr %77, align 1, !tbaa !11
  br label %861, !llvm.loop !37

884:                                              ; preds = %864
  br label %1594

885:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  store i8 1, ptr %79, align 1, !tbaa !11
  br label %886

886:                                              ; preds = %909, %885
  %887 = load i8, ptr %79, align 1, !tbaa !11, !range !13, !noundef !14
  %888 = trunc i8 %887 to i1
  br i1 %888, label %890, label %889

889:                                              ; preds = %886
  store i32 106, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  br label %910

890:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %891 = load ptr, ptr %74, align 8, !tbaa !5
  %892 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %891)
          to label %893 unwind label %899

893:                                              ; preds = %890
  store ptr %892, ptr %80, align 8, !tbaa !5
  br label %894

894:                                              ; preds = %907, %893
  %895 = load ptr, ptr %80, align 8, !tbaa !5
  %896 = load i8, ptr %79, align 1, !tbaa !11, !range !13, !noundef !14
  %897 = trunc i8 %896 to i1
  br i1 %897, label %903, label %898

898:                                              ; preds = %894
  store i32 109, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  br label %908

899:                                              ; preds = %903, %890
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %13, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  br label %1596

903:                                              ; preds = %894
  %904 = load ptr, ptr %80, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %904, i32 0, i32 0
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %905)
          to label %906 unwind label %899

906:                                              ; preds = %903
  br label %907

907:                                              ; preds = %906
  store i8 0, ptr %79, align 1, !tbaa !11
  br label %894, !llvm.loop !38

908:                                              ; preds = %898
  br label %909

909:                                              ; preds = %908
  store i8 0, ptr %79, align 1, !tbaa !11
  br label %886, !llvm.loop !39

910:                                              ; preds = %889
  br label %1594

911:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #10
  store i8 1, ptr %81, align 1, !tbaa !11
  br label %912

912:                                              ; preds = %935, %911
  %913 = load i8, ptr %81, align 1, !tbaa !11, !range !13, !noundef !14
  %914 = trunc i8 %913 to i1
  br i1 %914, label %916, label %915

915:                                              ; preds = %912
  store i32 112, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #10
  br label %936

916:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  %917 = load ptr, ptr %74, align 8, !tbaa !5
  %918 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %917)
          to label %919 unwind label %925

919:                                              ; preds = %916
  store ptr %918, ptr %82, align 8, !tbaa !5
  br label %920

920:                                              ; preds = %933, %919
  %921 = load ptr, ptr %82, align 8, !tbaa !5
  %922 = load i8, ptr %81, align 1, !tbaa !11, !range !13, !noundef !14
  %923 = trunc i8 %922 to i1
  br i1 %923, label %929, label %924

924:                                              ; preds = %920
  store i32 115, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %934

925:                                              ; preds = %929, %916
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %13, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #10
  br label %1596

929:                                              ; preds = %920
  %930 = load ptr, ptr %82, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %930, i32 0, i32 1
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %931)
          to label %932 unwind label %925

932:                                              ; preds = %929
  br label %933

933:                                              ; preds = %932
  store i8 0, ptr %81, align 1, !tbaa !11
  br label %920, !llvm.loop !40

934:                                              ; preds = %924
  br label %935

935:                                              ; preds = %934
  store i8 0, ptr %81, align 1, !tbaa !11
  br label %912, !llvm.loop !41

936:                                              ; preds = %915
  br label %1594

937:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #10
  store i8 1, ptr %83, align 1, !tbaa !11
  br label %938

938:                                              ; preds = %961, %937
  %939 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %940 = trunc i8 %939 to i1
  br i1 %940, label %942, label %941

941:                                              ; preds = %938
  store i32 118, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #10
  br label %962

942:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  %943 = load ptr, ptr %74, align 8, !tbaa !5
  %944 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %943)
          to label %945 unwind label %951

945:                                              ; preds = %942
  store ptr %944, ptr %84, align 8, !tbaa !5
  br label %946

946:                                              ; preds = %959, %945
  %947 = load ptr, ptr %84, align 8, !tbaa !5
  %948 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %949 = trunc i8 %948 to i1
  br i1 %949, label %955, label %950

950:                                              ; preds = %946
  store i32 121, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br label %960

951:                                              ; preds = %955, %942
  %952 = landingpad { ptr, i32 }
          cleanup
  %953 = extractvalue { ptr, i32 } %952, 0
  store ptr %953, ptr %13, align 8
  %954 = extractvalue { ptr, i32 } %952, 1
  store i32 %954, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #10
  br label %1596

955:                                              ; preds = %946
  %956 = load ptr, ptr %84, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %956, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %957)
          to label %958 unwind label %951

958:                                              ; preds = %955
  br label %959

959:                                              ; preds = %958
  store i8 0, ptr %83, align 1, !tbaa !11
  br label %946, !llvm.loop !42

960:                                              ; preds = %950
  br label %961

961:                                              ; preds = %960
  store i8 0, ptr %83, align 1, !tbaa !11
  br label %938, !llvm.loop !43

962:                                              ; preds = %941
  br label %1594

963:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #10
  store i8 1, ptr %85, align 1, !tbaa !11
  br label %964

964:                                              ; preds = %990, %963
  %965 = load i8, ptr %85, align 1, !tbaa !11, !range !13, !noundef !14
  %966 = trunc i8 %965 to i1
  br i1 %966, label %968, label %967

967:                                              ; preds = %964
  store i32 124, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #10
  br label %991

968:                                              ; preds = %964
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  %969 = load ptr, ptr %74, align 8, !tbaa !5
  %970 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %969)
          to label %971 unwind label %977

971:                                              ; preds = %968
  store ptr %970, ptr %86, align 8, !tbaa !5
  br label %972

972:                                              ; preds = %988, %971
  %973 = load ptr, ptr %86, align 8, !tbaa !5
  %974 = load i8, ptr %85, align 1, !tbaa !11, !range !13, !noundef !14
  %975 = trunc i8 %974 to i1
  br i1 %975, label %981, label %976

976:                                              ; preds = %972
  store i32 127, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  br label %989

977:                                              ; preds = %984, %981, %968
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %13, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #10
  br label %1596

981:                                              ; preds = %972
  %982 = load ptr, ptr %86, align 8, !tbaa !5
  %983 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %982, i32 0, i32 0
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %983)
          to label %984 unwind label %977

984:                                              ; preds = %981
  %985 = load ptr, ptr %86, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %985, i32 0, i32 2
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %986)
          to label %987 unwind label %977

987:                                              ; preds = %984
  br label %988

988:                                              ; preds = %987
  store i8 0, ptr %85, align 1, !tbaa !11
  br label %972, !llvm.loop !44

989:                                              ; preds = %976
  br label %990

990:                                              ; preds = %989
  store i8 0, ptr %85, align 1, !tbaa !11
  br label %964, !llvm.loop !45

991:                                              ; preds = %967
  br label %1594

992:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #10
  store i8 1, ptr %87, align 1, !tbaa !11
  br label %993

993:                                              ; preds = %1016, %992
  %994 = load i8, ptr %87, align 1, !tbaa !11, !range !13, !noundef !14
  %995 = trunc i8 %994 to i1
  br i1 %995, label %997, label %996

996:                                              ; preds = %993
  store i32 130, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #10
  br label %1017

997:                                              ; preds = %993
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %998 = load ptr, ptr %74, align 8, !tbaa !5
  %999 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %998)
          to label %1000 unwind label %1006

1000:                                             ; preds = %997
  store ptr %999, ptr %88, align 8, !tbaa !5
  br label %1001

1001:                                             ; preds = %1014, %1000
  %1002 = load ptr, ptr %88, align 8, !tbaa !5
  %1003 = load i8, ptr %87, align 1, !tbaa !11, !range !13, !noundef !14
  %1004 = trunc i8 %1003 to i1
  br i1 %1004, label %1010, label %1005

1005:                                             ; preds = %1001
  store i32 133, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1015

1006:                                             ; preds = %1010, %997
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %13, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #10
  br label %1596

1010:                                             ; preds = %1001
  %1011 = load ptr, ptr %88, align 8, !tbaa !5
  %1012 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %1011, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %1012)
          to label %1013 unwind label %1006

1013:                                             ; preds = %1010
  br label %1014

1014:                                             ; preds = %1013
  store i8 0, ptr %87, align 1, !tbaa !11
  br label %1001, !llvm.loop !46

1015:                                             ; preds = %1005
  br label %1016

1016:                                             ; preds = %1015
  store i8 0, ptr %87, align 1, !tbaa !11
  br label %993, !llvm.loop !47

1017:                                             ; preds = %996
  br label %1594

1018:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #10
  store i8 1, ptr %89, align 1, !tbaa !11
  br label %1019

1019:                                             ; preds = %1206, %1018
  %1020 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %1021 = trunc i8 %1020 to i1
  br i1 %1021, label %1023, label %1022

1022:                                             ; preds = %1019
  store i32 136, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #10
  br label %1207

1023:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  %1024 = load ptr, ptr %74, align 8, !tbaa !5
  %1025 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %1024)
          to label %1026 unwind label %1032

1026:                                             ; preds = %1023
  store ptr %1025, ptr %90, align 8, !tbaa !5
  br label %1027

1027:                                             ; preds = %1199, %1026
  %1028 = load ptr, ptr %90, align 8, !tbaa !5
  %1029 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %1030 = trunc i8 %1029 to i1
  br i1 %1030, label %1036, label %1031

1031:                                             ; preds = %1027
  store i32 139, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %1205

1032:                                             ; preds = %1043, %1023
  %1033 = landingpad { ptr, i32 }
          cleanup
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %13, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %14, align 4
  br label %1204

1036:                                             ; preds = %1027
  %1037 = load ptr, ptr %90, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1037, i32 0, i32 0
  %1039 = getelementptr inbounds %"struct.MIR::LValue", ptr %1038, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #10
  %1040 = invoke i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv()
          to label %1041 unwind label %1065

1041:                                             ; preds = %1036
  %1042 = getelementptr inbounds %"class.MIR::LValue::Wrapper", ptr %91, i32 0, i32 0
  store i32 %1040, ptr %1042, align 4
  invoke void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %1039, ptr noundef nonnull align 4 dereferenceable(4) %91)
          to label %1043 unwind label %1065

1043:                                             ; preds = %1041
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  %1044 = load ptr, ptr %90, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1044, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %1045)
          to label %1046 unwind label %1032

1046:                                             ; preds = %1043
  %1047 = load ptr, ptr %90, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1047, i32 0, i32 0
  %1049 = getelementptr inbounds %"struct.MIR::LValue", ptr %1048, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1049) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1050 unwind label %1069

1050:                                             ; preds = %1046
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %1051 = load ptr, ptr %90, align 8, !tbaa !5
  %1052 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1051, i32 0, i32 0
  %1053 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(32) %1052, i32 noundef 0)
          to label %1054 unwind label %1073

1054:                                             ; preds = %1050
  store ptr %1053, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #10
  %1055 = load ptr, ptr %93, align 8, !tbaa !5
  %1056 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1055)
          to label %1057 unwind label %1077

1057:                                             ; preds = %1054
  %1058 = invoke noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1056)
          to label %1059 unwind label %1077

1059:                                             ; preds = %1057
  store ptr %1058, ptr %95, align 8, !tbaa !5
  %1060 = load ptr, ptr %95, align 8, !tbaa !5
  %1061 = icmp ne ptr %1060, null
  br i1 %1061, label %1062, label %1081

1062:                                             ; preds = %1059
  %1063 = load ptr, ptr %95, align 8, !tbaa !5
  %1064 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1063, i32 0, i32 2
  store ptr %1064, ptr %94, align 8, !tbaa !5
  br label %1156

1065:                                             ; preds = %1041, %1036
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %13, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  br label %1204

1069:                                             ; preds = %1046
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %13, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %14, align 4
  br label %1203

1073:                                             ; preds = %1050
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %13, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %14, align 4
  br label %1202

1077:                                             ; preds = %1057, %1054
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %13, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %14, align 4
  br label %1179

1081:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %1082 = load ptr, ptr %93, align 8, !tbaa !5
  %1083 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1082)
          to label %1084 unwind label %1092

1084:                                             ; preds = %1081
  %1085 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1083)
          to label %1086 unwind label %1092

1086:                                             ; preds = %1084
  store ptr %1085, ptr %96, align 8, !tbaa !5
  %1087 = load ptr, ptr %96, align 8, !tbaa !5
  %1088 = icmp ne ptr %1087, null
  br i1 %1088, label %1089, label %1096

1089:                                             ; preds = %1086
  %1090 = load ptr, ptr %96, align 8, !tbaa !5
  %1091 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1090, i32 0, i32 1
  store ptr %1091, ptr %94, align 8, !tbaa !5
  br label %1154

1092:                                             ; preds = %1137, %1109, %1099, %1096, %1084, %1081
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %13, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %14, align 4
  br label %1155

1096:                                             ; preds = %1086
  %1097 = load ptr, ptr %93, align 8, !tbaa !5
  %1098 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1097)
          to label %1099 unwind label %1092

1099:                                             ; preds = %1096
  %1100 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1098)
          to label %1101 unwind label %1092

1101:                                             ; preds = %1099
  br i1 %1100, label %1102, label %1130

1102:                                             ; preds = %1101
  %1103 = load ptr, ptr %93, align 8, !tbaa !5
  store ptr %1103, ptr %94, align 8, !tbaa !5
  br label %1104

1104:                                             ; preds = %1102
  %1105 = load ptr, ptr %90, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1105, i32 0, i32 0
  %1107 = getelementptr inbounds %"struct.MIR::LValue", ptr %1106, i32 0, i32 1
  %1108 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1107) #10
  br i1 %1108, label %1116, label %1109

1109:                                             ; preds = %1104
  %1110 = load ptr, ptr %90, align 8, !tbaa !5
  %1111 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1110, i32 0, i32 0
  %1112 = getelementptr inbounds %"struct.MIR::LValue", ptr %1111, i32 0, i32 1
  %1113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1112) #10
  %1114 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %1113)
          to label %1115 unwind label %1092

1115:                                             ; preds = %1109
  br i1 %1114, label %1124, label %1116

1116:                                             ; preds = %1115, %1104
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  %1117 = getelementptr inbounds %class.anon.508, ptr %98, i32 0, i32 0
  %1118 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %1118, ptr %1117, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %97)
          to label %1119 unwind label %1120

1119:                                             ; preds = %1116
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  br label %1124

1120:                                             ; preds = %1116
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %13, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  br label %1155

1124:                                             ; preds = %1119, %1115
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load ptr, ptr %90, align 8, !tbaa !5
  %1128 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %1127, i32 0, i32 0
  %1129 = getelementptr inbounds %"struct.MIR::LValue", ptr %1128, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1129) #10
  br label %1153

1130:                                             ; preds = %1101
  br label %1131

1131:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1132 unwind label %1138

1132:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %1133 = getelementptr inbounds %class.anon.509, ptr %101, i32 0, i32 0
  %1134 = load ptr, ptr %93, align 8, !tbaa !5
  store ptr %1134, ptr %1133, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef %100)
          to label %1135 unwind label %1142

1135:                                             ; preds = %1132
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  %1136 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1136, ptr noundef @.str.13)
          to label %1137 unwind label %1147

1137:                                             ; preds = %1135
  invoke void @__cxa_throw(ptr %1136, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %3270 unwind label %1092

1138:                                             ; preds = %1131
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %13, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %14, align 4
  br label %1146

1142:                                             ; preds = %1132
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %13, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  br label %1146

1146:                                             ; preds = %1142, %1138
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1155

1147:                                             ; preds = %1135
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %13, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1136) #10
  br label %1155

1151:                                             ; No predecessors!
  br label %1152

1152:                                             ; preds = %1151
  br label %1153

1153:                                             ; preds = %1152, %1126
  br label %1154

1154:                                             ; preds = %1153, %1089
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1156

1155:                                             ; preds = %1147, %1146, %1120, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1179

1156:                                             ; preds = %1154, %1062
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %1157 = load ptr, ptr %94, align 8, !tbaa !5
  %1158 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1157)
          to label %1159 unwind label %1180

1159:                                             ; preds = %1156
  %1160 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1158)
          to label %1161 unwind label %1180

1161:                                             ; preds = %1159
  store ptr %1160, ptr %102, align 8, !tbaa !5
  %1162 = load ptr, ptr %102, align 8, !tbaa !5
  %1163 = icmp ne ptr %1162, null
  br i1 %1163, label %1164, label %1198

1164:                                             ; preds = %1161
  call void @llvm.lifetime.start.p0(i64 112, ptr %103) #10
  %1165 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %105, i32 0, i32 0
  %1166 = load ptr, ptr %102, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1166, i32 0, i32 1
  %1168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1167)
          to label %1169 unwind label %1184

1169:                                             ; preds = %1164
  %1170 = load i64, ptr %1168, align 8, !tbaa !48
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %1165, i64 noundef %1170, i64 noundef 0)
          to label %1171 unwind label %1184

1171:                                             ; preds = %1169
  %1172 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %105, i32 0, i32 1
  store i32 0, ptr %1172, align 8, !tbaa !50
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %104, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %105)
          to label %1173 unwind label %1184

1173:                                             ; preds = %1171
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %103, ptr noundef %104)
          to label %1174 unwind label %1188

1174:                                             ; preds = %1173
  %1175 = load ptr, ptr %72, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1175, i32 0, i32 1
  %1177 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %1176, ptr noundef nonnull align 8 dereferenceable(112) %103)
          to label %1178 unwind label %1192

1178:                                             ; preds = %1174
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %103) #10
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #10
  call void @llvm.lifetime.end.p0(i64 112, ptr %103) #10
  br label %1198

1179:                                             ; preds = %1155, %1077
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  br label %1201

1180:                                             ; preds = %1159, %1156
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %13, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %14, align 4
  br label %1200

1184:                                             ; preds = %1171, %1169, %1164
  %1185 = landingpad { ptr, i32 }
          cleanup
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %13, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %14, align 4
  br label %1197

1188:                                             ; preds = %1173
  %1189 = landingpad { ptr, i32 }
          cleanup
  %1190 = extractvalue { ptr, i32 } %1189, 0
  store ptr %1190, ptr %13, align 8
  %1191 = extractvalue { ptr, i32 } %1189, 1
  store i32 %1191, ptr %14, align 4
  br label %1196

1192:                                             ; preds = %1174
  %1193 = landingpad { ptr, i32 }
          cleanup
  %1194 = extractvalue { ptr, i32 } %1193, 0
  store ptr %1194, ptr %13, align 8
  %1195 = extractvalue { ptr, i32 } %1193, 1
  store i32 %1195, ptr %14, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %103) #10
  br label %1196

1196:                                             ; preds = %1192, %1188
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #10
  br label %1197

1197:                                             ; preds = %1196, %1184
  call void @llvm.lifetime.end.p0(i64 112, ptr %103) #10
  br label %1200

1198:                                             ; preds = %1178, %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %1199

1199:                                             ; preds = %1198
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %1027, !llvm.loop !54

1200:                                             ; preds = %1197, %1180
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  br label %1201

1201:                                             ; preds = %1200, %1179
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  br label %1202

1202:                                             ; preds = %1201, %1073
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #10
  br label %1203

1203:                                             ; preds = %1202, %1069
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %1204

1204:                                             ; preds = %1203, %1065, %1032
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #10
  br label %1596

1205:                                             ; preds = %1031
  br label %1206

1206:                                             ; preds = %1205
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %1019, !llvm.loop !55

1207:                                             ; preds = %1022
  br label %1594

1208:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #10
  store i8 1, ptr %106, align 1, !tbaa !11
  br label %1209

1209:                                             ; preds = %1353, %1208
  %1210 = load i8, ptr %106, align 1, !tbaa !11, !range !13, !noundef !14
  %1211 = trunc i8 %1210 to i1
  br i1 %1211, label %1213, label %1212

1212:                                             ; preds = %1209
  store i32 146, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #10
  br label %1354

1213:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  %1214 = load ptr, ptr %74, align 8, !tbaa !5
  %1215 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %1214)
          to label %1216 unwind label %1222

1216:                                             ; preds = %1213
  store ptr %1215, ptr %107, align 8, !tbaa !5
  br label %1217

1217:                                             ; preds = %1347, %1216
  %1218 = load ptr, ptr %107, align 8, !tbaa !5
  %1219 = load i8, ptr %106, align 1, !tbaa !11, !range !13, !noundef !14
  %1220 = trunc i8 %1219 to i1
  br i1 %1220, label %1226, label %1221

1221:                                             ; preds = %1217
  store i32 149, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  br label %1352

1222:                                             ; preds = %1233, %1213
  %1223 = landingpad { ptr, i32 }
          cleanup
  %1224 = extractvalue { ptr, i32 } %1223, 0
  store ptr %1224, ptr %13, align 8
  %1225 = extractvalue { ptr, i32 } %1223, 1
  store i32 %1225, ptr %14, align 4
  br label %1351

1226:                                             ; preds = %1217
  %1227 = load ptr, ptr %107, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1227, i32 0, i32 0
  %1229 = getelementptr inbounds %"struct.MIR::LValue", ptr %1228, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #10
  %1230 = invoke i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv()
          to label %1231 unwind label %1255

1231:                                             ; preds = %1226
  %1232 = getelementptr inbounds %"class.MIR::LValue::Wrapper", ptr %108, i32 0, i32 0
  store i32 %1230, ptr %1232, align 4
  invoke void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %1229, ptr noundef nonnull align 4 dereferenceable(4) %108)
          to label %1233 unwind label %1255

1233:                                             ; preds = %1231
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #10
  %1234 = load ptr, ptr %107, align 8, !tbaa !5
  %1235 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1234, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %1235)
          to label %1236 unwind label %1222

1236:                                             ; preds = %1233
  %1237 = load ptr, ptr %107, align 8, !tbaa !5
  %1238 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1237, i32 0, i32 0
  %1239 = getelementptr inbounds %"struct.MIR::LValue", ptr %1238, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1239) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109)
          to label %1240 unwind label %1259

1240:                                             ; preds = %1236
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  %1241 = load ptr, ptr %107, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1241, i32 0, i32 0
  %1243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(32) %1242, i32 noundef 0)
          to label %1244 unwind label %1263

1244:                                             ; preds = %1240
  store ptr %1243, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #10
  %1245 = load ptr, ptr %110, align 8, !tbaa !5
  %1246 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1245)
          to label %1247 unwind label %1267

1247:                                             ; preds = %1244
  %1248 = invoke noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1246)
          to label %1249 unwind label %1267

1249:                                             ; preds = %1247
  store ptr %1248, ptr %112, align 8, !tbaa !5
  %1250 = load ptr, ptr %112, align 8, !tbaa !5
  %1251 = icmp ne ptr %1250, null
  br i1 %1251, label %1252, label %1271

1252:                                             ; preds = %1249
  %1253 = load ptr, ptr %112, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1253, i32 0, i32 2
  store ptr %1254, ptr %111, align 8, !tbaa !5
  br label %1346

1255:                                             ; preds = %1231, %1226
  %1256 = landingpad { ptr, i32 }
          cleanup
  %1257 = extractvalue { ptr, i32 } %1256, 0
  store ptr %1257, ptr %13, align 8
  %1258 = extractvalue { ptr, i32 } %1256, 1
  store i32 %1258, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #10
  br label %1351

1259:                                             ; preds = %1236
  %1260 = landingpad { ptr, i32 }
          cleanup
  %1261 = extractvalue { ptr, i32 } %1260, 0
  store ptr %1261, ptr %13, align 8
  %1262 = extractvalue { ptr, i32 } %1260, 1
  store i32 %1262, ptr %14, align 4
  br label %1350

1263:                                             ; preds = %1240
  %1264 = landingpad { ptr, i32 }
          cleanup
  %1265 = extractvalue { ptr, i32 } %1264, 0
  store ptr %1265, ptr %13, align 8
  %1266 = extractvalue { ptr, i32 } %1264, 1
  store i32 %1266, ptr %14, align 4
  br label %1349

1267:                                             ; preds = %1247, %1244
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %13, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %14, align 4
  br label %1348

1271:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  %1272 = load ptr, ptr %110, align 8, !tbaa !5
  %1273 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1272)
          to label %1274 unwind label %1282

1274:                                             ; preds = %1271
  %1275 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1273)
          to label %1276 unwind label %1282

1276:                                             ; preds = %1274
  store ptr %1275, ptr %113, align 8, !tbaa !5
  %1277 = load ptr, ptr %113, align 8, !tbaa !5
  %1278 = icmp ne ptr %1277, null
  br i1 %1278, label %1279, label %1286

1279:                                             ; preds = %1276
  %1280 = load ptr, ptr %113, align 8, !tbaa !5
  %1281 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1280, i32 0, i32 1
  store ptr %1281, ptr %111, align 8, !tbaa !5
  br label %1344

1282:                                             ; preds = %1327, %1299, %1289, %1286, %1274, %1271
  %1283 = landingpad { ptr, i32 }
          cleanup
  %1284 = extractvalue { ptr, i32 } %1283, 0
  store ptr %1284, ptr %13, align 8
  %1285 = extractvalue { ptr, i32 } %1283, 1
  store i32 %1285, ptr %14, align 4
  br label %1345

1286:                                             ; preds = %1276
  %1287 = load ptr, ptr %110, align 8, !tbaa !5
  %1288 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1287)
          to label %1289 unwind label %1282

1289:                                             ; preds = %1286
  %1290 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1288)
          to label %1291 unwind label %1282

1291:                                             ; preds = %1289
  br i1 %1290, label %1292, label %1320

1292:                                             ; preds = %1291
  %1293 = load ptr, ptr %110, align 8, !tbaa !5
  store ptr %1293, ptr %111, align 8, !tbaa !5
  br label %1294

1294:                                             ; preds = %1292
  %1295 = load ptr, ptr %107, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1295, i32 0, i32 0
  %1297 = getelementptr inbounds %"struct.MIR::LValue", ptr %1296, i32 0, i32 1
  %1298 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1297) #10
  br i1 %1298, label %1306, label %1299

1299:                                             ; preds = %1294
  %1300 = load ptr, ptr %107, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1300, i32 0, i32 0
  %1302 = getelementptr inbounds %"struct.MIR::LValue", ptr %1301, i32 0, i32 1
  %1303 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1302) #10
  %1304 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %1303)
          to label %1305 unwind label %1282

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

1306:                                             ; preds = %1305, %1294
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  %1307 = getelementptr inbounds %class.anon.510, ptr %115, i32 0, i32 0
  %1308 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %1308, ptr %1307, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(8) %115) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %114)
          to label %1309 unwind label %1310

1309:                                             ; preds = %1306
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  br label %1314

1310:                                             ; preds = %1306
  %1311 = landingpad { ptr, i32 }
          cleanup
  %1312 = extractvalue { ptr, i32 } %1311, 0
  store ptr %1312, ptr %13, align 8
  %1313 = extractvalue { ptr, i32 } %1311, 1
  store i32 %1313, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  br label %1345

1314:                                             ; preds = %1309, %1305
  br label %1315

1315:                                             ; preds = %1314
  br label %1316

1316:                                             ; preds = %1315
  %1317 = load ptr, ptr %107, align 8, !tbaa !5
  %1318 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %1317, i32 0, i32 0
  %1319 = getelementptr inbounds %"struct.MIR::LValue", ptr %1318, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1319) #10
  br label %1343

1320:                                             ; preds = %1291
  br label %1321

1321:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %1322 unwind label %1328

1322:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %1323 = getelementptr inbounds %class.anon.511, ptr %118, i32 0, i32 0
  %1324 = load ptr, ptr %110, align 8, !tbaa !5
  store ptr %1324, ptr %1323, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(8) %118) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef %117)
          to label %1325 unwind label %1332

1325:                                             ; preds = %1322
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  %1326 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1326, ptr noundef @.str.13)
          to label %1327 unwind label %1337

1327:                                             ; preds = %1325
  invoke void @__cxa_throw(ptr %1326, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %3270 unwind label %1282

1328:                                             ; preds = %1321
  %1329 = landingpad { ptr, i32 }
          cleanup
  %1330 = extractvalue { ptr, i32 } %1329, 0
  store ptr %1330, ptr %13, align 8
  %1331 = extractvalue { ptr, i32 } %1329, 1
  store i32 %1331, ptr %14, align 4
  br label %1336

1332:                                             ; preds = %1322
  %1333 = landingpad { ptr, i32 }
          cleanup
  %1334 = extractvalue { ptr, i32 } %1333, 0
  store ptr %1334, ptr %13, align 8
  %1335 = extractvalue { ptr, i32 } %1333, 1
  store i32 %1335, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  br label %1336

1336:                                             ; preds = %1332, %1328
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  br label %1345

1337:                                             ; preds = %1325
  %1338 = landingpad { ptr, i32 }
          cleanup
  %1339 = extractvalue { ptr, i32 } %1338, 0
  store ptr %1339, ptr %13, align 8
  %1340 = extractvalue { ptr, i32 } %1338, 1
  store i32 %1340, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1326) #10
  br label %1345

1341:                                             ; No predecessors!
  br label %1342

1342:                                             ; preds = %1341
  br label %1343

1343:                                             ; preds = %1342, %1316
  br label %1344

1344:                                             ; preds = %1343, %1279
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  br label %1346

1345:                                             ; preds = %1337, %1336, %1310, %1282
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  br label %1348

1346:                                             ; preds = %1344, %1252
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  br label %1347

1347:                                             ; preds = %1346
  store i8 0, ptr %106, align 1, !tbaa !11
  br label %1217, !llvm.loop !56

1348:                                             ; preds = %1345, %1267
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1349

1349:                                             ; preds = %1348, %1263
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  br label %1350

1350:                                             ; preds = %1349, %1259
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  br label %1351

1351:                                             ; preds = %1350, %1255, %1222
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #10
  br label %1596

1352:                                             ; preds = %1221
  br label %1353

1353:                                             ; preds = %1352
  store i8 0, ptr %106, align 1, !tbaa !11
  br label %1209, !llvm.loop !57

1354:                                             ; preds = %1212
  br label %1594

1355:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #10
  store i8 1, ptr %119, align 1, !tbaa !11
  br label %1356

1356:                                             ; preds = %1382, %1355
  %1357 = load i8, ptr %119, align 1, !tbaa !11, !range !13, !noundef !14
  %1358 = trunc i8 %1357 to i1
  br i1 %1358, label %1360, label %1359

1359:                                             ; preds = %1356
  store i32 156, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #10
  br label %1383

1360:                                             ; preds = %1356
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  %1361 = load ptr, ptr %74, align 8, !tbaa !5
  %1362 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %1361)
          to label %1363 unwind label %1369

1363:                                             ; preds = %1360
  store ptr %1362, ptr %120, align 8, !tbaa !5
  br label %1364

1364:                                             ; preds = %1380, %1363
  %1365 = load ptr, ptr %120, align 8, !tbaa !5
  %1366 = load i8, ptr %119, align 1, !tbaa !11, !range !13, !noundef !14
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1373, label %1368

1368:                                             ; preds = %1364
  store i32 159, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1381

1369:                                             ; preds = %1376, %1373, %1360
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %13, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #10
  br label %1596

1373:                                             ; preds = %1364
  %1374 = load ptr, ptr %120, align 8, !tbaa !5
  %1375 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1374, i32 0, i32 0
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1375)
          to label %1376 unwind label %1369

1376:                                             ; preds = %1373
  %1377 = load ptr, ptr %120, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1377, i32 0, i32 1
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1378)
          to label %1379 unwind label %1369

1379:                                             ; preds = %1376
  br label %1380

1380:                                             ; preds = %1379
  store i8 0, ptr %119, align 1, !tbaa !11
  br label %1364, !llvm.loop !58

1381:                                             ; preds = %1368
  br label %1382

1382:                                             ; preds = %1381
  store i8 0, ptr %119, align 1, !tbaa !11
  br label %1356, !llvm.loop !59

1383:                                             ; preds = %1359
  br label %1594

1384:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #10
  store i8 1, ptr %121, align 1, !tbaa !11
  br label %1385

1385:                                             ; preds = %1428, %1384
  %1386 = load i8, ptr %121, align 1, !tbaa !11, !range !13, !noundef !14
  %1387 = trunc i8 %1386 to i1
  br i1 %1387, label %1389, label %1388

1388:                                             ; preds = %1385
  store i32 162, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #10
  br label %1429

1389:                                             ; preds = %1385
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #10
  %1390 = load ptr, ptr %74, align 8, !tbaa !5
  %1391 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %1390)
          to label %1392 unwind label %1398

1392:                                             ; preds = %1389
  store ptr %1391, ptr %122, align 8, !tbaa !5
  br label %1393

1393:                                             ; preds = %1425, %1392
  %1394 = load ptr, ptr %122, align 8, !tbaa !5
  %1395 = load i8, ptr %121, align 1, !tbaa !11, !range !13, !noundef !14
  %1396 = trunc i8 %1395 to i1
  br i1 %1396, label %1402, label %1397

1397:                                             ; preds = %1393
  store i32 165, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  br label %1427

1398:                                             ; preds = %1389
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %13, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %14, align 4
  br label %1426

1402:                                             ; preds = %1393
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  %1403 = load ptr, ptr %122, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %1403, i32 0, i32 0
  store ptr %1404, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %1405 = load ptr, ptr %123, align 8, !tbaa !5
  %1406 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1405) #10
  %1407 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %124, i32 0, i32 0
  store ptr %1406, ptr %1407, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #10
  %1408 = load ptr, ptr %123, align 8, !tbaa !5
  %1409 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1408) #10
  %1410 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %125, i32 0, i32 0
  store ptr %1409, ptr %1410, align 8
  br label %1411

1411:                                             ; preds = %1418, %1402
  %1412 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(8) %125) #10
  br i1 %1412, label %1414, label %1413

1413:                                             ; preds = %1411
  store i32 168, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1424

1414:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #10
  %1415 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  store ptr %1415, ptr %126, align 8, !tbaa !5
  %1416 = load ptr, ptr %126, align 8, !tbaa !5
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1416)
          to label %1417 unwind label %1420

1417:                                             ; preds = %1414
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  br label %1418

1418:                                             ; preds = %1417
  %1419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  br label %1411

1420:                                             ; preds = %1414
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %13, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1426

1424:                                             ; preds = %1413
  br label %1425

1425:                                             ; preds = %1424
  store i8 0, ptr %121, align 1, !tbaa !11
  br label %1393, !llvm.loop !60

1426:                                             ; preds = %1420, %1398
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #10
  br label %1596

1427:                                             ; preds = %1397
  br label %1428

1428:                                             ; preds = %1427
  store i8 0, ptr %121, align 1, !tbaa !11
  br label %1385, !llvm.loop !61

1429:                                             ; preds = %1388
  br label %1594

1430:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #10
  store i8 1, ptr %127, align 1, !tbaa !11
  br label %1431

1431:                                             ; preds = %1474, %1430
  %1432 = load i8, ptr %127, align 1, !tbaa !11, !range !13, !noundef !14
  %1433 = trunc i8 %1432 to i1
  br i1 %1433, label %1435, label %1434

1434:                                             ; preds = %1431
  store i32 170, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #10
  br label %1475

1435:                                             ; preds = %1431
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #10
  %1436 = load ptr, ptr %74, align 8, !tbaa !5
  %1437 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %1436)
          to label %1438 unwind label %1444

1438:                                             ; preds = %1435
  store ptr %1437, ptr %128, align 8, !tbaa !5
  br label %1439

1439:                                             ; preds = %1471, %1438
  %1440 = load ptr, ptr %128, align 8, !tbaa !5
  %1441 = load i8, ptr %127, align 1, !tbaa !11, !range !13, !noundef !14
  %1442 = trunc i8 %1441 to i1
  br i1 %1442, label %1448, label %1443

1443:                                             ; preds = %1439
  store i32 173, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  br label %1473

1444:                                             ; preds = %1435
  %1445 = landingpad { ptr, i32 }
          cleanup
  %1446 = extractvalue { ptr, i32 } %1445, 0
  store ptr %1446, ptr %13, align 8
  %1447 = extractvalue { ptr, i32 } %1445, 1
  store i32 %1447, ptr %14, align 4
  br label %1472

1448:                                             ; preds = %1439
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #10
  %1449 = load ptr, ptr %128, align 8, !tbaa !5
  %1450 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %1449, i32 0, i32 0
  store ptr %1450, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #10
  %1451 = load ptr, ptr %129, align 8, !tbaa !5
  %1452 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1451) #10
  %1453 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %130, i32 0, i32 0
  store ptr %1452, ptr %1453, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #10
  %1454 = load ptr, ptr %129, align 8, !tbaa !5
  %1455 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1454) #10
  %1456 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %131, i32 0, i32 0
  store ptr %1455, ptr %1456, align 8
  br label %1457

1457:                                             ; preds = %1464, %1448
  %1458 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %131) #10
  br i1 %1458, label %1460, label %1459

1459:                                             ; preds = %1457
  store i32 176, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  br label %1470

1460:                                             ; preds = %1457
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  %1461 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %130) #10
  store ptr %1461, ptr %132, align 8, !tbaa !5
  %1462 = load ptr, ptr %132, align 8, !tbaa !5
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1462)
          to label %1463 unwind label %1466

1463:                                             ; preds = %1460
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  br label %1464

1464:                                             ; preds = %1463
  %1465 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %130) #10
  br label %1457

1466:                                             ; preds = %1460
  %1467 = landingpad { ptr, i32 }
          cleanup
  %1468 = extractvalue { ptr, i32 } %1467, 0
  store ptr %1468, ptr %13, align 8
  %1469 = extractvalue { ptr, i32 } %1467, 1
  store i32 %1469, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  br label %1472

1470:                                             ; preds = %1459
  br label %1471

1471:                                             ; preds = %1470
  store i8 0, ptr %127, align 1, !tbaa !11
  br label %1439, !llvm.loop !62

1472:                                             ; preds = %1466, %1444
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #10
  br label %1596

1473:                                             ; preds = %1443
  br label %1474

1474:                                             ; preds = %1473
  store i8 0, ptr %127, align 1, !tbaa !11
  br label %1431, !llvm.loop !63

1475:                                             ; preds = %1434
  br label %1594

1476:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #10
  store i8 1, ptr %133, align 1, !tbaa !11
  br label %1477

1477:                                             ; preds = %1500, %1476
  %1478 = load i8, ptr %133, align 1, !tbaa !11, !range !13, !noundef !14
  %1479 = trunc i8 %1478 to i1
  br i1 %1479, label %1481, label %1480

1480:                                             ; preds = %1477
  store i32 178, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #10
  br label %1501

1481:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #10
  %1482 = load ptr, ptr %74, align 8, !tbaa !5
  %1483 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %1482)
          to label %1484 unwind label %1490

1484:                                             ; preds = %1481
  store ptr %1483, ptr %134, align 8, !tbaa !5
  br label %1485

1485:                                             ; preds = %1498, %1484
  %1486 = load ptr, ptr %134, align 8, !tbaa !5
  %1487 = load i8, ptr %133, align 1, !tbaa !11, !range !13, !noundef !14
  %1488 = trunc i8 %1487 to i1
  br i1 %1488, label %1494, label %1489

1489:                                             ; preds = %1485
  store i32 181, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  br label %1499

1490:                                             ; preds = %1494, %1481
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %13, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #10
  br label %1596

1494:                                             ; preds = %1485
  %1495 = load ptr, ptr %134, align 8, !tbaa !5
  %1496 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %1495, i32 0, i32 2
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1496)
          to label %1497 unwind label %1490

1497:                                             ; preds = %1494
  br label %1498

1498:                                             ; preds = %1497
  store i8 0, ptr %133, align 1, !tbaa !11
  br label %1485, !llvm.loop !64

1499:                                             ; preds = %1489
  br label %1500

1500:                                             ; preds = %1499
  store i8 0, ptr %133, align 1, !tbaa !11
  br label %1477, !llvm.loop !65

1501:                                             ; preds = %1480
  br label %1594

1502:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %135) #10
  store i8 1, ptr %135, align 1, !tbaa !11
  br label %1503

1503:                                             ; preds = %1546, %1502
  %1504 = load i8, ptr %135, align 1, !tbaa !11, !range !13, !noundef !14
  %1505 = trunc i8 %1504 to i1
  br i1 %1505, label %1507, label %1506

1506:                                             ; preds = %1503
  store i32 184, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #10
  br label %1547

1507:                                             ; preds = %1503
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #10
  %1508 = load ptr, ptr %74, align 8, !tbaa !5
  %1509 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %1508)
          to label %1510 unwind label %1516

1510:                                             ; preds = %1507
  store ptr %1509, ptr %136, align 8, !tbaa !5
  br label %1511

1511:                                             ; preds = %1543, %1510
  %1512 = load ptr, ptr %136, align 8, !tbaa !5
  %1513 = load i8, ptr %135, align 1, !tbaa !11, !range !13, !noundef !14
  %1514 = trunc i8 %1513 to i1
  br i1 %1514, label %1520, label %1515

1515:                                             ; preds = %1511
  store i32 187, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  br label %1545

1516:                                             ; preds = %1507
  %1517 = landingpad { ptr, i32 }
          cleanup
  %1518 = extractvalue { ptr, i32 } %1517, 0
  store ptr %1518, ptr %13, align 8
  %1519 = extractvalue { ptr, i32 } %1517, 1
  store i32 %1519, ptr %14, align 4
  br label %1544

1520:                                             ; preds = %1511
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #10
  %1521 = load ptr, ptr %136, align 8, !tbaa !5
  %1522 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %1521, i32 0, i32 2
  store ptr %1522, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #10
  %1523 = load ptr, ptr %137, align 8, !tbaa !5
  %1524 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1523) #10
  %1525 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %138, i32 0, i32 0
  store ptr %1524, ptr %1525, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #10
  %1526 = load ptr, ptr %137, align 8, !tbaa !5
  %1527 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1526) #10
  %1528 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %139, i32 0, i32 0
  store ptr %1527, ptr %1528, align 8
  br label %1529

1529:                                             ; preds = %1536, %1520
  %1530 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %139) #10
  br i1 %1530, label %1532, label %1531

1531:                                             ; preds = %1529
  store i32 190, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  br label %1542

1532:                                             ; preds = %1529
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #10
  %1533 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #10
  store ptr %1533, ptr %140, align 8, !tbaa !5
  %1534 = load ptr, ptr %140, align 8, !tbaa !5
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1534)
          to label %1535 unwind label %1538

1535:                                             ; preds = %1532
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  br label %1536

1536:                                             ; preds = %1535
  %1537 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #10
  br label %1529

1538:                                             ; preds = %1532
  %1539 = landingpad { ptr, i32 }
          cleanup
  %1540 = extractvalue { ptr, i32 } %1539, 0
  store ptr %1540, ptr %13, align 8
  %1541 = extractvalue { ptr, i32 } %1539, 1
  store i32 %1541, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  br label %1544

1542:                                             ; preds = %1531
  br label %1543

1543:                                             ; preds = %1542
  store i8 0, ptr %135, align 1, !tbaa !11
  br label %1511, !llvm.loop !66

1544:                                             ; preds = %1538, %1516
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #10
  br label %1596

1545:                                             ; preds = %1515
  br label %1546

1546:                                             ; preds = %1545
  store i8 0, ptr %135, align 1, !tbaa !11
  br label %1503, !llvm.loop !67

1547:                                             ; preds = %1506
  br label %1594

1548:                                             ; preds = %829
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #10
  store i8 1, ptr %141, align 1, !tbaa !11
  br label %1549

1549:                                             ; preds = %1592, %1548
  %1550 = load i8, ptr %141, align 1, !tbaa !11, !range !13, !noundef !14
  %1551 = trunc i8 %1550 to i1
  br i1 %1551, label %1553, label %1552

1552:                                             ; preds = %1549
  store i32 192, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #10
  br label %1593

1553:                                             ; preds = %1549
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  %1554 = load ptr, ptr %74, align 8, !tbaa !5
  %1555 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %1554)
          to label %1556 unwind label %1562

1556:                                             ; preds = %1553
  store ptr %1555, ptr %142, align 8, !tbaa !5
  br label %1557

1557:                                             ; preds = %1589, %1556
  %1558 = load ptr, ptr %142, align 8, !tbaa !5
  %1559 = load i8, ptr %141, align 1, !tbaa !11, !range !13, !noundef !14
  %1560 = trunc i8 %1559 to i1
  br i1 %1560, label %1566, label %1561

1561:                                             ; preds = %1557
  store i32 195, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  br label %1591

1562:                                             ; preds = %1553
  %1563 = landingpad { ptr, i32 }
          cleanup
  %1564 = extractvalue { ptr, i32 } %1563, 0
  store ptr %1564, ptr %13, align 8
  %1565 = extractvalue { ptr, i32 } %1563, 1
  store i32 %1565, ptr %14, align 4
  br label %1590

1566:                                             ; preds = %1557
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  %1567 = load ptr, ptr %142, align 8, !tbaa !5
  %1568 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %1567, i32 0, i32 1
  store ptr %1568, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #10
  %1569 = load ptr, ptr %143, align 8, !tbaa !5
  %1570 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1569) #10
  %1571 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %144, i32 0, i32 0
  store ptr %1570, ptr %1571, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  %1572 = load ptr, ptr %143, align 8, !tbaa !5
  %1573 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1572) #10
  %1574 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %145, i32 0, i32 0
  store ptr %1573, ptr %1574, align 8
  br label %1575

1575:                                             ; preds = %1582, %1566
  %1576 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  br i1 %1576, label %1578, label %1577

1577:                                             ; preds = %1575
  store i32 198, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  br label %1588

1578:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #10
  %1579 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  store ptr %1579, ptr %146, align 8, !tbaa !5
  %1580 = load ptr, ptr %146, align 8, !tbaa !5
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %1580)
          to label %1581 unwind label %1584

1581:                                             ; preds = %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  br label %1582

1582:                                             ; preds = %1581
  %1583 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  br label %1575

1584:                                             ; preds = %1578
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %13, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  br label %1590

1588:                                             ; preds = %1577
  br label %1589

1589:                                             ; preds = %1588
  store i8 0, ptr %141, align 1, !tbaa !11
  br label %1557, !llvm.loop !68

1590:                                             ; preds = %1584, %1562
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #10
  br label %1596

1591:                                             ; preds = %1561
  br label %1592

1592:                                             ; preds = %1591
  store i8 0, ptr %141, align 1, !tbaa !11
  br label %1549, !llvm.loop !69

1593:                                             ; preds = %1552
  br label %1594

1594:                                             ; preds = %1593, %1547, %1501, %1475, %1429, %1383, %1354, %1207, %1017, %991, %962, %936, %910, %884, %859, %829
  br label %1595

1595:                                             ; preds = %1594
  store i8 0, ptr %73, align 1, !tbaa !11
  br label %822, !llvm.loop !70

1596:                                             ; preds = %1590, %1544, %1490, %1472, %1426, %1369, %1351, %1204, %1006, %977, %951, %925, %899, %874, %849, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  br label %1601

1597:                                             ; preds = %825
  br label %1598

1598:                                             ; preds = %1597
  store i8 0, ptr %73, align 1, !tbaa !11
  br label %815, !llvm.loop !71

1599:                                             ; preds = %818
  br label %1600

1600:                                             ; preds = %1599
  store i8 0, ptr %71, align 1, !tbaa !11
  br label %802, !llvm.loop !72

1601:                                             ; preds = %1596, %807
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  br label %1607

1602:                                             ; preds = %806
  br label %1603

1603:                                             ; preds = %1602
  store i8 0, ptr %71, align 1, !tbaa !11
  br label %794, !llvm.loop !73

1604:                                             ; preds = %797
  br label %1605

1605:                                             ; preds = %1604, %792, %640, %570, %547, %524, %493
  br label %1606

1606:                                             ; preds = %1605
  store i8 0, ptr %39, align 1, !tbaa !11
  br label %486, !llvm.loop !74

1607:                                             ; preds = %1601, %789, %637, %562, %539, %513, %494
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #10
  br label %1944

1608:                                             ; preds = %489
  br label %1609

1609:                                             ; preds = %1608
  store i8 0, ptr %39, align 1, !tbaa !11
  br label %480, !llvm.loop !75

1610:                                             ; preds = %483
  %1611 = load ptr, ptr %29, align 8, !tbaa !5
  %1612 = invoke noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %1611)
          to label %1613 unwind label %389

1613:                                             ; preds = %1610
  br i1 %1612, label %1614, label %1931

1614:                                             ; preds = %1613
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #10
  %1615 = load ptr, ptr %29, align 8, !tbaa !5
  %1616 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %1615)
          to label %1617 unwind label %1664

1617:                                             ; preds = %1614
  store ptr %1616, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #10
  %1618 = load ptr, ptr %147, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1618, i32 0, i32 1
  %1620 = invoke noundef ptr @_ZN3MIR6RValue12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %1619)
          to label %1621 unwind label %1668

1621:                                             ; preds = %1617
  store ptr %1620, ptr %148, align 8, !tbaa !5
  %1622 = load ptr, ptr %148, align 8, !tbaa !5
  %1623 = icmp ne ptr %1622, null
  br i1 %1623, label %1624, label %1758

1624:                                             ; preds = %1621
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #10
  %1625 = load ptr, ptr %148, align 8, !tbaa !5
  %1626 = invoke noundef ptr @_ZN3MIR8Constant9opt_ConstEv(ptr noundef nonnull align 8 dereferenceable(40) %1625)
          to label %1627 unwind label %1672

1627:                                             ; preds = %1624
  store ptr %1626, ptr %149, align 8, !tbaa !5
  %1628 = load ptr, ptr %149, align 8, !tbaa !5
  %1629 = icmp ne ptr %1628, null
  br i1 %1629, label %1630, label %1756

1630:                                             ; preds = %1627
  call void @llvm.lifetime.start.p0(i64 144, ptr %150) #10
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %150)
          to label %1631 unwind label %1676

1631:                                             ; preds = %1630
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %1632 unwind label %1680

1632:                                             ; preds = %1631
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #10
  %1633 = load ptr, ptr %149, align 8, !tbaa !5
  %1634 = getelementptr inbounds %"struct.MIR::Constant::Data_Const", ptr %1633, i32 0, i32 0
  %1635 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1634) #10
  %1636 = invoke noundef ptr @_Z23MIR_Cleanup_GetConstantRKN3MIR11TypeResolveERKN3HIR4PathERNS3_7TypeRefER14MonomorphState(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(88) %1635, ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(144) %150)
          to label %1637 unwind label %1684

1637:                                             ; preds = %1632
  store ptr %1636, ptr %152, align 8, !tbaa !5
  %1638 = load ptr, ptr %152, align 8, !tbaa !5
  %1639 = icmp ne ptr %1638, null
  br i1 %1639, label %1640, label %1730

1640:                                             ; preds = %1637
  br label %1641

1641:                                             ; preds = %1640
  %1642 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1643 unwind label %1684

1643:                                             ; preds = %1641
  br i1 %1642, label %1644, label %1688

1644:                                             ; preds = %1643
  %1645 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1645, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %1647 unwind label %1684

1647:                                             ; preds = %1644
  %1648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1646, ptr noundef @.str.18)
          to label %1649 unwind label %1684

1649:                                             ; preds = %1647
  %1650 = load ptr, ptr %149, align 8, !tbaa !5
  %1651 = getelementptr inbounds %"struct.MIR::Constant::Data_Const", ptr %1650, i32 0, i32 0
  %1652 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1651) #10
  %1653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1648, ptr noundef nonnull align 8 dereferenceable(88) %1652)
          to label %1654 unwind label %1684

1654:                                             ; preds = %1649
  %1655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1653, ptr noundef @.str.19)
          to label %1656 unwind label %1684

1656:                                             ; preds = %1654
  %1657 = load ptr, ptr %152, align 8, !tbaa !5
  %1658 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %1655, ptr noundef nonnull align 8 dereferenceable(48) %1657)
          to label %1659 unwind label %1684

1659:                                             ; preds = %1656
  %1660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1658, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1661 unwind label %1684

1661:                                             ; preds = %1659
  %1662 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1660, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1663 unwind label %1684

1663:                                             ; preds = %1661
  br label %1688

1664:                                             ; preds = %1614
  %1665 = landingpad { ptr, i32 }
          cleanup
  %1666 = extractvalue { ptr, i32 } %1665, 0
  store ptr %1666, ptr %13, align 8
  %1667 = extractvalue { ptr, i32 } %1665, 1
  store i32 %1667, ptr %14, align 4
  br label %1930

1668:                                             ; preds = %1617
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %13, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %14, align 4
  br label %1804

1672:                                             ; preds = %1624
  %1673 = landingpad { ptr, i32 }
          cleanup
  %1674 = extractvalue { ptr, i32 } %1673, 0
  store ptr %1674, ptr %13, align 8
  %1675 = extractvalue { ptr, i32 } %1673, 1
  store i32 %1675, ptr %14, align 4
  br label %1757

1676:                                             ; preds = %1630
  %1677 = landingpad { ptr, i32 }
          cleanup
  %1678 = extractvalue { ptr, i32 } %1677, 0
  store ptr %1678, ptr %13, align 8
  %1679 = extractvalue { ptr, i32 } %1677, 1
  store i32 %1679, ptr %14, align 4
  br label %1755

1680:                                             ; preds = %1631
  %1681 = landingpad { ptr, i32 }
          cleanup
  %1682 = extractvalue { ptr, i32 } %1681, 0
  store ptr %1682, ptr %13, align 8
  %1683 = extractvalue { ptr, i32 } %1681, 1
  store i32 %1683, ptr %14, align 4
  br label %1754

1684:                                             ; preds = %1746, %1744, %1739, %1737, %1734, %1731, %1661, %1659, %1656, %1654, %1649, %1647, %1644, %1641, %1632
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %13, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %14, align 4
  br label %1753

1688:                                             ; preds = %1663, %1643
  br label %1689

1689:                                             ; preds = %1688
  br label %1690

1690:                                             ; preds = %1689
  call void @llvm.lifetime.start.p0(i64 112, ptr %153) #10
  %1691 = load ptr, ptr %152, align 8, !tbaa !5
  invoke void @_ZN19EncodedLiteralSliceC2ERK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(24) %154, ptr noundef nonnull align 8 dereferenceable(48) %1691)
          to label %1692 unwind label %1711

1692:                                             ; preds = %1690
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull align 8 dereferenceable(8) %151)
          to label %1693 unwind label %1711

1693:                                             ; preds = %1692
  %1694 = load ptr, ptr %149, align 8, !tbaa !5
  %1695 = getelementptr inbounds %"struct.MIR::Constant::Data_Const", ptr %1694, i32 0, i32 0
  %1696 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1695) #10
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %156, ptr noundef nonnull align 8 dereferenceable(88) %1696) #10
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %153, ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %154, ptr noundef %155, ptr noundef nonnull align 8 dereferenceable(144) %150, ptr noundef %156)
          to label %1697 unwind label %1715

1697:                                             ; preds = %1693
  %1698 = load ptr, ptr %147, align 8, !tbaa !5
  %1699 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1698, i32 0, i32 1
  %1700 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %1699, ptr noundef nonnull align 8 dereferenceable(112) %153)
          to label %1701 unwind label %1719

1701:                                             ; preds = %1697
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %153) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %156) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #10
  call void @llvm.lifetime.end.p0(i64 112, ptr %153) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #10
  %1702 = load ptr, ptr %147, align 8, !tbaa !5
  %1703 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1702, i32 0, i32 1
  %1704 = invoke noundef ptr @_ZN3MIR6RValue12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %1703)
          to label %1705 unwind label %1725

1705:                                             ; preds = %1701
  store ptr %1704, ptr %157, align 8, !tbaa !5
  %1706 = load ptr, ptr %157, align 8, !tbaa !5
  %1707 = icmp ne ptr %1706, null
  br i1 %1707, label %1708, label %1729

1708:                                             ; preds = %1705
  %1709 = load ptr, ptr %157, align 8, !tbaa !5
  invoke void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %1709)
          to label %1710 unwind label %1725

1710:                                             ; preds = %1708
  br label %1729

1711:                                             ; preds = %1692, %1690
  %1712 = landingpad { ptr, i32 }
          cleanup
  %1713 = extractvalue { ptr, i32 } %1712, 0
  store ptr %1713, ptr %13, align 8
  %1714 = extractvalue { ptr, i32 } %1712, 1
  store i32 %1714, ptr %14, align 4
  br label %1724

1715:                                             ; preds = %1693
  %1716 = landingpad { ptr, i32 }
          cleanup
  %1717 = extractvalue { ptr, i32 } %1716, 0
  store ptr %1717, ptr %13, align 8
  %1718 = extractvalue { ptr, i32 } %1716, 1
  store i32 %1718, ptr %14, align 4
  br label %1723

1719:                                             ; preds = %1697
  %1720 = landingpad { ptr, i32 }
          cleanup
  %1721 = extractvalue { ptr, i32 } %1720, 0
  store ptr %1721, ptr %13, align 8
  %1722 = extractvalue { ptr, i32 } %1720, 1
  store i32 %1722, ptr %14, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %153) #10
  br label %1723

1723:                                             ; preds = %1719, %1715
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %156) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %155) #10
  br label %1724

1724:                                             ; preds = %1723, %1711
  call void @llvm.lifetime.end.p0(i64 112, ptr %153) #10
  br label %1753

1725:                                             ; preds = %1708, %1701
  %1726 = landingpad { ptr, i32 }
          cleanup
  %1727 = extractvalue { ptr, i32 } %1726, 0
  store ptr %1727, ptr %13, align 8
  %1728 = extractvalue { ptr, i32 } %1726, 1
  store i32 %1728, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  br label %1753

1729:                                             ; preds = %1710, %1705
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  br label %1752

1730:                                             ; preds = %1637
  br label %1731

1731:                                             ; preds = %1730
  %1732 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1733 unwind label %1684

1733:                                             ; preds = %1731
  br i1 %1732, label %1734, label %1749

1734:                                             ; preds = %1733
  %1735 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1736 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1735, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %1737 unwind label %1684

1737:                                             ; preds = %1734
  %1738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1736, ptr noundef @.str.20)
          to label %1739 unwind label %1684

1739:                                             ; preds = %1737
  %1740 = load ptr, ptr %149, align 8, !tbaa !5
  %1741 = getelementptr inbounds %"struct.MIR::Constant::Data_Const", ptr %1740, i32 0, i32 0
  %1742 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1741) #10
  %1743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1738, ptr noundef nonnull align 8 dereferenceable(88) %1742)
          to label %1744 unwind label %1684

1744:                                             ; preds = %1739
  %1745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1743, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1746 unwind label %1684

1746:                                             ; preds = %1744
  %1747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1745, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1748 unwind label %1684

1748:                                             ; preds = %1746
  br label %1749

1749:                                             ; preds = %1748, %1733
  br label %1750

1750:                                             ; preds = %1749
  br label %1751

1751:                                             ; preds = %1750
  br label %1752

1752:                                             ; preds = %1751, %1729
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %150) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %150) #10
  br label %1756

1753:                                             ; preds = %1725, %1724, %1684
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #10
  br label %1754

1754:                                             ; preds = %1753, %1680
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %150) #10
  br label %1755

1755:                                             ; preds = %1754, %1676
  call void @llvm.lifetime.end.p0(i64 144, ptr %150) #10
  br label %1757

1756:                                             ; preds = %1752, %1627
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  br label %1758

1757:                                             ; preds = %1755, %1672
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  br label %1804

1758:                                             ; preds = %1756, %1621
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #10
  %1759 = load ptr, ptr %147, align 8, !tbaa !5
  %1760 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1759, i32 0, i32 1
  %1761 = invoke noundef ptr @_ZN3MIR6RValue11opt_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %1760)
          to label %1762 unwind label %1805

1762:                                             ; preds = %1758
  store ptr %1761, ptr %158, align 8, !tbaa !5
  %1763 = load ptr, ptr %158, align 8, !tbaa !5
  %1764 = icmp ne ptr %1763, null
  br i1 %1764, label %1765, label %1863

1765:                                             ; preds = %1762
  %1766 = load ptr, ptr %158, align 8, !tbaa !5
  %1767 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1766, i32 0, i32 1
  %1768 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1767)
          to label %1769 unwind label %1805

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

1770:                                             ; preds = %1769
  %1771 = load ptr, ptr %158, align 8, !tbaa !5
  %1772 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1771, i32 0, i32 1
  %1773 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1772)
          to label %1774 unwind label %1805

1774:                                             ; preds = %1770
  %1775 = invoke noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1773)
          to label %1776 unwind label %1805

1776:                                             ; preds = %1774
  br i1 %1775, label %1777, label %1862

1777:                                             ; preds = %1776
  %1778 = load ptr, ptr %158, align 8, !tbaa !5
  %1779 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1778, i32 0, i32 1
  %1780 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1779)
          to label %1781 unwind label %1805

1781:                                             ; preds = %1777
  %1782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1780)
          to label %1783 unwind label %1805

1783:                                             ; preds = %1781
  %1784 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1782) #10
  %1785 = icmp eq ptr %1784, null
  br i1 %1785, label %1786, label %1862

1786:                                             ; preds = %1783
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159)
          to label %1787 unwind label %1809

1787:                                             ; preds = %1786
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160)
          to label %1788 unwind label %1813

1788:                                             ; preds = %1787
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #10
  %1789 = load ptr, ptr %158, align 8, !tbaa !5
  %1790 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1789, i32 0, i32 0
  %1791 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(48) %1790)
          to label %1792 unwind label %1817

1792:                                             ; preds = %1788
  store ptr %1791, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %1793 = load ptr, ptr %147, align 8, !tbaa !5
  %1794 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1793, i32 0, i32 0
  %1795 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull align 8 dereferenceable(32) %1794, i32 noundef 0)
          to label %1796 unwind label %1821

1796:                                             ; preds = %1792
  store ptr %1795, ptr %162, align 8, !tbaa !5
  br label %1797

1797:                                             ; preds = %1796
  %1798 = load ptr, ptr %158, align 8, !tbaa !5
  %1799 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1798, i32 0, i32 0
  %1800 = invoke noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1799)
          to label %1801 unwind label %1821

1801:                                             ; preds = %1797
  br i1 %1800, label %1829, label %1802

1802:                                             ; preds = %1801
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %163, ptr noundef nonnull align 1 dereferenceable(1) %164) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %163)
          to label %1803 unwind label %1825

1803:                                             ; preds = %1802
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #10
  br label %1829

1804:                                             ; preds = %1757, %1668
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #10
  br label %1930

1805:                                             ; preds = %1781, %1777, %1774, %1770, %1765, %1758
  %1806 = landingpad { ptr, i32 }
          cleanup
  %1807 = extractvalue { ptr, i32 } %1806, 0
  store ptr %1807, ptr %13, align 8
  %1808 = extractvalue { ptr, i32 } %1806, 1
  store i32 %1808, ptr %14, align 4
  br label %1905

1809:                                             ; preds = %1786
  %1810 = landingpad { ptr, i32 }
          cleanup
  %1811 = extractvalue { ptr, i32 } %1810, 0
  store ptr %1811, ptr %13, align 8
  %1812 = extractvalue { ptr, i32 } %1810, 1
  store i32 %1812, ptr %14, align 4
  br label %1861

1813:                                             ; preds = %1787
  %1814 = landingpad { ptr, i32 }
          cleanup
  %1815 = extractvalue { ptr, i32 } %1814, 0
  store ptr %1815, ptr %13, align 8
  %1816 = extractvalue { ptr, i32 } %1814, 1
  store i32 %1816, ptr %14, align 4
  br label %1860

1817:                                             ; preds = %1788
  %1818 = landingpad { ptr, i32 }
          cleanup
  %1819 = extractvalue { ptr, i32 } %1818, 0
  store ptr %1819, ptr %13, align 8
  %1820 = extractvalue { ptr, i32 } %1818, 1
  store i32 %1820, ptr %14, align 4
  br label %1859

1821:                                             ; preds = %1797, %1792
  %1822 = landingpad { ptr, i32 }
          cleanup
  %1823 = extractvalue { ptr, i32 } %1822, 0
  store ptr %1823, ptr %13, align 8
  %1824 = extractvalue { ptr, i32 } %1822, 1
  store i32 %1824, ptr %14, align 4
  br label %1858

1825:                                             ; preds = %1802
  %1826 = landingpad { ptr, i32 }
          cleanup
  %1827 = extractvalue { ptr, i32 } %1826, 0
  store ptr %1827, ptr %13, align 8
  %1828 = extractvalue { ptr, i32 } %1826, 1
  store i32 %1828, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #10
  br label %1858

1829:                                             ; preds = %1803, %1801
  br label %1830

1830:                                             ; preds = %1829
  br label %1831

1831:                                             ; preds = %1830
  call void @llvm.lifetime.start.p0(i64 112, ptr %165) #10
  %1832 = load ptr, ptr %162, align 8, !tbaa !5
  %1833 = load ptr, ptr %161, align 8, !tbaa !5
  %1834 = load ptr, ptr %158, align 8, !tbaa !5
  %1835 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1834, i32 0, i32 0
  %1836 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1835)
          to label %1837 unwind label %1844

1837:                                             ; preds = %1831
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(32) %1836)
          to label %1838 unwind label %1844

1838:                                             ; preds = %1837
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %165, ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(8) %1832, ptr noundef nonnull align 8 dereferenceable(8) %1833, ptr noundef %166)
          to label %1839 unwind label %1848

1839:                                             ; preds = %1838
  %1840 = load ptr, ptr %147, align 8, !tbaa !5
  %1841 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1840, i32 0, i32 1
  %1842 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %1841, ptr noundef nonnull align 8 dereferenceable(112) %165)
          to label %1843 unwind label %1852

1843:                                             ; preds = %1839
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %165) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #10
  call void @llvm.lifetime.end.p0(i64 112, ptr %165) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  br label %1862

1844:                                             ; preds = %1837, %1831
  %1845 = landingpad { ptr, i32 }
          cleanup
  %1846 = extractvalue { ptr, i32 } %1845, 0
  store ptr %1846, ptr %13, align 8
  %1847 = extractvalue { ptr, i32 } %1845, 1
  store i32 %1847, ptr %14, align 4
  br label %1857

1848:                                             ; preds = %1838
  %1849 = landingpad { ptr, i32 }
          cleanup
  %1850 = extractvalue { ptr, i32 } %1849, 0
  store ptr %1850, ptr %13, align 8
  %1851 = extractvalue { ptr, i32 } %1849, 1
  store i32 %1851, ptr %14, align 4
  br label %1856

1852:                                             ; preds = %1839
  %1853 = landingpad { ptr, i32 }
          cleanup
  %1854 = extractvalue { ptr, i32 } %1853, 0
  store ptr %1854, ptr %13, align 8
  %1855 = extractvalue { ptr, i32 } %1853, 1
  store i32 %1855, ptr %14, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %165) #10
  br label %1856

1856:                                             ; preds = %1852, %1848
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #10
  br label %1857

1857:                                             ; preds = %1856, %1844
  call void @llvm.lifetime.end.p0(i64 112, ptr %165) #10
  br label %1858

1858:                                             ; preds = %1857, %1825, %1821
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  br label %1859

1859:                                             ; preds = %1858, %1817
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  br label %1860

1860:                                             ; preds = %1859, %1813
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #10
  br label %1861

1861:                                             ; preds = %1860, %1809
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  br label %1905

1862:                                             ; preds = %1843, %1783, %1776, %1769
  br label %1863

1863:                                             ; preds = %1862, %1762
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #10
  %1864 = load ptr, ptr %147, align 8, !tbaa !5
  %1865 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1864, i32 0, i32 1
  %1866 = invoke noundef ptr @_ZN3MIR6RValue11opt_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %1865)
          to label %1867 unwind label %1906

1867:                                             ; preds = %1863
  store ptr %1866, ptr %167, align 8, !tbaa !5
  %1868 = load ptr, ptr %167, align 8, !tbaa !5
  %1869 = icmp ne ptr %1868, null
  br i1 %1869, label %1870, label %1928

1870:                                             ; preds = %1867
  %1871 = load ptr, ptr %167, align 8, !tbaa !5
  %1872 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1871, i32 0, i32 1
  %1873 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1872)
          to label %1874 unwind label %1906

1874:                                             ; preds = %1870
  br i1 %1873, label %1875, label %1927

1875:                                             ; preds = %1874
  %1876 = load ptr, ptr %167, align 8, !tbaa !5
  %1877 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1876, i32 0, i32 1
  %1878 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1877)
          to label %1879 unwind label %1906

1879:                                             ; preds = %1875
  %1880 = invoke noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1878)
          to label %1881 unwind label %1906

1881:                                             ; preds = %1879
  br i1 %1880, label %1882, label %1927

1882:                                             ; preds = %1881
  %1883 = load ptr, ptr %167, align 8, !tbaa !5
  %1884 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1883, i32 0, i32 1
  %1885 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %1884)
          to label %1886 unwind label %1906

1886:                                             ; preds = %1882
  %1887 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1885)
          to label %1888 unwind label %1906

1888:                                             ; preds = %1886
  %1889 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1887) #10
  %1890 = icmp eq ptr %1889, null
  br i1 %1890, label %1891, label %1927

1891:                                             ; preds = %1888
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %168)
          to label %1892 unwind label %1910

1892:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #10
  %1893 = load ptr, ptr %167, align 8, !tbaa !5
  %1894 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1893, i32 0, i32 0
  %1895 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(48) %1894)
          to label %1896 unwind label %1914

1896:                                             ; preds = %1892
  store ptr %1895, ptr %169, align 8, !tbaa !5
  br label %1897

1897:                                             ; preds = %1896
  %1898 = load ptr, ptr %169, align 8, !tbaa !5
  %1899 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %1898, i1 noundef zeroext false)
          to label %1900 unwind label %1914

1900:                                             ; preds = %1897
  br i1 %1899, label %1922, label %1901

1901:                                             ; preds = %1900
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #10
  %1902 = getelementptr inbounds %class.anon.515, ptr %171, i32 0, i32 0
  %1903 = load ptr, ptr %169, align 8, !tbaa !5
  store ptr %1903, ptr %1902, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef nonnull align 8 dereferenceable(8) %171) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %170)
          to label %1904 unwind label %1918

1904:                                             ; preds = %1901
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  br label %1922

1905:                                             ; preds = %1861, %1805
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  br label %1930

1906:                                             ; preds = %1886, %1882, %1879, %1875, %1870, %1863
  %1907 = landingpad { ptr, i32 }
          cleanup
  %1908 = extractvalue { ptr, i32 } %1907, 0
  store ptr %1908, ptr %13, align 8
  %1909 = extractvalue { ptr, i32 } %1907, 1
  store i32 %1909, ptr %14, align 4
  br label %1929

1910:                                             ; preds = %1891
  %1911 = landingpad { ptr, i32 }
          cleanup
  %1912 = extractvalue { ptr, i32 } %1911, 0
  store ptr %1912, ptr %13, align 8
  %1913 = extractvalue { ptr, i32 } %1911, 1
  store i32 %1913, ptr %14, align 4
  br label %1926

1914:                                             ; preds = %1897, %1892
  %1915 = landingpad { ptr, i32 }
          cleanup
  %1916 = extractvalue { ptr, i32 } %1915, 0
  store ptr %1916, ptr %13, align 8
  %1917 = extractvalue { ptr, i32 } %1915, 1
  store i32 %1917, ptr %14, align 4
  br label %1925

1918:                                             ; preds = %1901
  %1919 = landingpad { ptr, i32 }
          cleanup
  %1920 = extractvalue { ptr, i32 } %1919, 0
  store ptr %1920, ptr %13, align 8
  %1921 = extractvalue { ptr, i32 } %1919, 1
  store i32 %1921, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  br label %1925

1922:                                             ; preds = %1904, %1900
  br label %1923

1923:                                             ; preds = %1922
  br label %1924

1924:                                             ; preds = %1923
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  br label %1927

1925:                                             ; preds = %1918, %1914
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  br label %1926

1926:                                             ; preds = %1925, %1910
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  br label %1929

1927:                                             ; preds = %1924, %1888, %1881, %1874
  br label %1928

1928:                                             ; preds = %1927, %1867
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  br label %1931

1929:                                             ; preds = %1926, %1906
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #10
  br label %1930

1930:                                             ; preds = %1929, %1905, %1804, %1664
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  br label %1944

1931:                                             ; preds = %1928, %1613
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #10
  %1932 = invoke ptr @_ZN10MirMutator10flush_stmtEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %1933 unwind label %1940

1933:                                             ; preds = %1931
  %1934 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.482", ptr %172, i32 0, i32 0
  store ptr %1932, ptr %1934, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %172, i64 8, i1 false), !tbaa.struct !76
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #10
  store i32 0, ptr %25, align 4
  br label %1935

1935:                                             ; preds = %1933, %445
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  %1936 = load i32, ptr %25, align 4
  switch i32 %1936, label %1946 [
    i32 0, label %1937
  ]

1937:                                             ; preds = %1935
  br label %1938

1938:                                             ; preds = %1937
  %1939 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  br label %330, !llvm.loop !77

1940:                                             ; preds = %1931
  %1941 = landingpad { ptr, i32 }
          cleanup
  %1942 = extractvalue { ptr, i32 } %1941, 0
  store ptr %1942, ptr %13, align 8
  %1943 = extractvalue { ptr, i32 } %1941, 1
  store i32 %1943, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #10
  br label %1944

1944:                                             ; preds = %1940, %1930, %1607, %458, %446, %421, %389
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br label %1945

1945:                                             ; preds = %1944, %385
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %1947

1946:                                             ; preds = %1935, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %1948

1947:                                             ; preds = %1945, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %3253

1948:                                             ; preds = %1946
  invoke void @_ZN10MirMutator12update_stateERN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %1949 unwind label %1954

1949:                                             ; preds = %1948
  call void @llvm.lifetime.start.p0(i64 1, ptr %173) #10
  store i8 1, ptr %173, align 1, !tbaa !11
  br label %1950

1950:                                             ; preds = %2231, %1949
  %1951 = load i8, ptr %173, align 1, !tbaa !11, !range !13, !noundef !14
  %1952 = trunc i8 %1951 to i1
  br i1 %1952, label %1958, label %1953

1953:                                             ; preds = %1950
  store i32 208, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #10
  br label %2232

1954:                                             ; preds = %3248, %1948
  %1955 = landingpad { ptr, i32 }
          cleanup
  %1956 = extractvalue { ptr, i32 } %1955, 0
  store ptr %1956, ptr %13, align 8
  %1957 = extractvalue { ptr, i32 } %1955, 1
  store i32 %1957, ptr %14, align 4
  br label %3253

1958:                                             ; preds = %1950
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #10
  %1959 = load ptr, ptr %26, align 8, !tbaa !5
  %1960 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1959, i32 0, i32 1
  store ptr %1960, ptr %174, align 8, !tbaa !5
  br label %1961

1961:                                             ; preds = %2228, %1958
  %1962 = load i8, ptr %173, align 1, !tbaa !11, !range !13, !noundef !14
  %1963 = trunc i8 %1962 to i1
  br i1 %1963, label %1965, label %1964

1964:                                             ; preds = %1961
  store i32 211, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #10
  br label %2230

1965:                                             ; preds = %1961
  %1966 = load ptr, ptr %174, align 8, !tbaa !5
  %1967 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1966)
          to label %1968 unwind label %1969

1968:                                             ; preds = %1965
  switch i32 %1967, label %2227 [
    i32 0, label %1973
    i32 1, label %1974
    i32 2, label %1997
    i32 3, label %2020
    i32 4, label %2043
    i32 5, label %2066
    i32 6, label %2089
    i32 7, label %2115
    i32 8, label %2141
    i32 9, label %2167
  ]

1969:                                             ; preds = %1965
  %1970 = landingpad { ptr, i32 }
          cleanup
  %1971 = extractvalue { ptr, i32 } %1970, 0
  store ptr %1971, ptr %13, align 8
  %1972 = extractvalue { ptr, i32 } %1970, 1
  store i32 %1972, ptr %14, align 4
  br label %2229

1973:                                             ; preds = %1968
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 1302, ptr noundef @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #11
  unreachable

1974:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %175) #10
  store i8 1, ptr %175, align 1, !tbaa !11
  br label %1975

1975:                                             ; preds = %1995, %1974
  %1976 = load i8, ptr %175, align 1, !tbaa !11, !range !13, !noundef !14
  %1977 = trunc i8 %1976 to i1
  br i1 %1977, label %1979, label %1978

1978:                                             ; preds = %1975
  store i32 215, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #10
  br label %1996

1979:                                             ; preds = %1975
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #10
  %1980 = load ptr, ptr %174, align 8, !tbaa !5
  %1981 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %1980)
          to label %1982 unwind label %1988

1982:                                             ; preds = %1979
  store ptr %1981, ptr %176, align 8, !tbaa !5
  br label %1983

1983:                                             ; preds = %1993, %1982
  %1984 = load ptr, ptr %176, align 8, !tbaa !5
  %1985 = load i8, ptr %175, align 1, !tbaa !11, !range !13, !noundef !14
  %1986 = trunc i8 %1985 to i1
  br i1 %1986, label %1992, label %1987

1987:                                             ; preds = %1983
  store i32 218, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  br label %1994

1988:                                             ; preds = %1979
  %1989 = landingpad { ptr, i32 }
          cleanup
  %1990 = extractvalue { ptr, i32 } %1989, 0
  store ptr %1990, ptr %13, align 8
  %1991 = extractvalue { ptr, i32 } %1989, 1
  store i32 %1991, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #10
  br label %2229

1992:                                             ; preds = %1983
  br label %1993

1993:                                             ; preds = %1992
  store i8 0, ptr %175, align 1, !tbaa !11
  br label %1983, !llvm.loop !78

1994:                                             ; preds = %1987
  br label %1995

1995:                                             ; preds = %1994
  store i8 0, ptr %175, align 1, !tbaa !11
  br label %1975, !llvm.loop !79

1996:                                             ; preds = %1978
  br label %2227

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

1998:                                             ; preds = %2018, %1997
  %1999 = load i8, ptr %177, align 1, !tbaa !11, !range !13, !noundef !14
  %2000 = trunc i8 %1999 to i1
  br i1 %2000, label %2002, label %2001

2001:                                             ; preds = %1998
  store i32 221, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #10
  br label %2019

2002:                                             ; preds = %1998
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #10
  %2003 = load ptr, ptr %174, align 8, !tbaa !5
  %2004 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %2003)
          to label %2005 unwind label %2011

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

2006:                                             ; preds = %2016, %2005
  %2007 = load ptr, ptr %178, align 8, !tbaa !5
  %2008 = load i8, ptr %177, align 1, !tbaa !11, !range !13, !noundef !14
  %2009 = trunc i8 %2008 to i1
  br i1 %2009, label %2015, label %2010

2010:                                             ; preds = %2006
  store i32 224, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #10
  br label %2017

2011:                                             ; preds = %2002
  %2012 = landingpad { ptr, i32 }
          cleanup
  %2013 = extractvalue { ptr, i32 } %2012, 0
  store ptr %2013, ptr %13, align 8
  %2014 = extractvalue { ptr, i32 } %2012, 1
  store i32 %2014, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #10
  br label %2229

2015:                                             ; preds = %2006
  br label %2016

2016:                                             ; preds = %2015
  store i8 0, ptr %177, align 1, !tbaa !11
  br label %2006, !llvm.loop !80

2017:                                             ; preds = %2010
  br label %2018

2018:                                             ; preds = %2017
  store i8 0, ptr %177, align 1, !tbaa !11
  br label %1998, !llvm.loop !81

2019:                                             ; preds = %2001
  br label %2227

2020:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #10
  store i8 1, ptr %179, align 1, !tbaa !11
  br label %2021

2021:                                             ; preds = %2041, %2020
  %2022 = load i8, ptr %179, align 1, !tbaa !11, !range !13, !noundef !14
  %2023 = trunc i8 %2022 to i1
  br i1 %2023, label %2025, label %2024

2024:                                             ; preds = %2021
  store i32 227, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #10
  br label %2042

2025:                                             ; preds = %2021
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #10
  %2026 = load ptr, ptr %174, align 8, !tbaa !5
  %2027 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %2026)
          to label %2028 unwind label %2034

2028:                                             ; preds = %2025
  store ptr %2027, ptr %180, align 8, !tbaa !5
  br label %2029

2029:                                             ; preds = %2039, %2028
  %2030 = load ptr, ptr %180, align 8, !tbaa !5
  %2031 = load i8, ptr %179, align 1, !tbaa !11, !range !13, !noundef !14
  %2032 = trunc i8 %2031 to i1
  br i1 %2032, label %2038, label %2033

2033:                                             ; preds = %2029
  store i32 230, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %2040

2034:                                             ; preds = %2025
  %2035 = landingpad { ptr, i32 }
          cleanup
  %2036 = extractvalue { ptr, i32 } %2035, 0
  store ptr %2036, ptr %13, align 8
  %2037 = extractvalue { ptr, i32 } %2035, 1
  store i32 %2037, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #10
  br label %2229

2038:                                             ; preds = %2029
  br label %2039

2039:                                             ; preds = %2038
  store i8 0, ptr %179, align 1, !tbaa !11
  br label %2029, !llvm.loop !82

2040:                                             ; preds = %2033
  br label %2041

2041:                                             ; preds = %2040
  store i8 0, ptr %179, align 1, !tbaa !11
  br label %2021, !llvm.loop !83

2042:                                             ; preds = %2024
  br label %2227

2043:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %181) #10
  store i8 1, ptr %181, align 1, !tbaa !11
  br label %2044

2044:                                             ; preds = %2064, %2043
  %2045 = load i8, ptr %181, align 1, !tbaa !11, !range !13, !noundef !14
  %2046 = trunc i8 %2045 to i1
  br i1 %2046, label %2048, label %2047

2047:                                             ; preds = %2044
  store i32 233, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #10
  br label %2065

2048:                                             ; preds = %2044
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #10
  %2049 = load ptr, ptr %174, align 8, !tbaa !5
  %2050 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %2049)
          to label %2051 unwind label %2057

2051:                                             ; preds = %2048
  store ptr %2050, ptr %182, align 8, !tbaa !5
  br label %2052

2052:                                             ; preds = %2062, %2051
  %2053 = load ptr, ptr %182, align 8, !tbaa !5
  %2054 = load i8, ptr %181, align 1, !tbaa !11, !range !13, !noundef !14
  %2055 = trunc i8 %2054 to i1
  br i1 %2055, label %2061, label %2056

2056:                                             ; preds = %2052
  store i32 236, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #10
  br label %2063

2057:                                             ; preds = %2048
  %2058 = landingpad { ptr, i32 }
          cleanup
  %2059 = extractvalue { ptr, i32 } %2058, 0
  store ptr %2059, ptr %13, align 8
  %2060 = extractvalue { ptr, i32 } %2058, 1
  store i32 %2060, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #10
  br label %2229

2061:                                             ; preds = %2052
  br label %2062

2062:                                             ; preds = %2061
  store i8 0, ptr %181, align 1, !tbaa !11
  br label %2052, !llvm.loop !84

2063:                                             ; preds = %2056
  br label %2064

2064:                                             ; preds = %2063
  store i8 0, ptr %181, align 1, !tbaa !11
  br label %2044, !llvm.loop !85

2065:                                             ; preds = %2047
  br label %2227

2066:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %183) #10
  store i8 1, ptr %183, align 1, !tbaa !11
  br label %2067

2067:                                             ; preds = %2087, %2066
  %2068 = load i8, ptr %183, align 1, !tbaa !11, !range !13, !noundef !14
  %2069 = trunc i8 %2068 to i1
  br i1 %2069, label %2071, label %2070

2070:                                             ; preds = %2067
  store i32 239, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #10
  br label %2088

2071:                                             ; preds = %2067
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #10
  %2072 = load ptr, ptr %174, align 8, !tbaa !5
  %2073 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %2072)
          to label %2074 unwind label %2080

2074:                                             ; preds = %2071
  store ptr %2073, ptr %184, align 8, !tbaa !5
  br label %2075

2075:                                             ; preds = %2085, %2074
  %2076 = load ptr, ptr %184, align 8, !tbaa !5
  %2077 = load i8, ptr %183, align 1, !tbaa !11, !range !13, !noundef !14
  %2078 = trunc i8 %2077 to i1
  br i1 %2078, label %2084, label %2079

2079:                                             ; preds = %2075
  store i32 242, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #10
  br label %2086

2080:                                             ; preds = %2071
  %2081 = landingpad { ptr, i32 }
          cleanup
  %2082 = extractvalue { ptr, i32 } %2081, 0
  store ptr %2082, ptr %13, align 8
  %2083 = extractvalue { ptr, i32 } %2081, 1
  store i32 %2083, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #10
  br label %2229

2084:                                             ; preds = %2075
  br label %2085

2085:                                             ; preds = %2084
  store i8 0, ptr %183, align 1, !tbaa !11
  br label %2075, !llvm.loop !86

2086:                                             ; preds = %2079
  br label %2087

2087:                                             ; preds = %2086
  store i8 0, ptr %183, align 1, !tbaa !11
  br label %2067, !llvm.loop !87

2088:                                             ; preds = %2070
  br label %2227

2089:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #10
  store i8 1, ptr %185, align 1, !tbaa !11
  br label %2090

2090:                                             ; preds = %2113, %2089
  %2091 = load i8, ptr %185, align 1, !tbaa !11, !range !13, !noundef !14
  %2092 = trunc i8 %2091 to i1
  br i1 %2092, label %2094, label %2093

2093:                                             ; preds = %2090
  store i32 245, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #10
  br label %2114

2094:                                             ; preds = %2090
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #10
  %2095 = load ptr, ptr %174, align 8, !tbaa !5
  %2096 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %2095)
          to label %2097 unwind label %2103

2097:                                             ; preds = %2094
  store ptr %2096, ptr %186, align 8, !tbaa !5
  br label %2098

2098:                                             ; preds = %2111, %2097
  %2099 = load ptr, ptr %186, align 8, !tbaa !5
  %2100 = load i8, ptr %185, align 1, !tbaa !11, !range !13, !noundef !14
  %2101 = trunc i8 %2100 to i1
  br i1 %2101, label %2107, label %2102

2102:                                             ; preds = %2098
  store i32 248, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #10
  br label %2112

2103:                                             ; preds = %2107, %2094
  %2104 = landingpad { ptr, i32 }
          cleanup
  %2105 = extractvalue { ptr, i32 } %2104, 0
  store ptr %2105, ptr %13, align 8
  %2106 = extractvalue { ptr, i32 } %2104, 1
  store i32 %2106, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #10
  br label %2229

2107:                                             ; preds = %2098
  %2108 = load ptr, ptr %186, align 8, !tbaa !5
  %2109 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %2108, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2109)
          to label %2110 unwind label %2103

2110:                                             ; preds = %2107
  br label %2111

2111:                                             ; preds = %2110
  store i8 0, ptr %185, align 1, !tbaa !11
  br label %2098, !llvm.loop !88

2112:                                             ; preds = %2102
  br label %2113

2113:                                             ; preds = %2112
  store i8 0, ptr %185, align 1, !tbaa !11
  br label %2090, !llvm.loop !89

2114:                                             ; preds = %2093
  br label %2227

2115:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %187) #10
  store i8 1, ptr %187, align 1, !tbaa !11
  br label %2116

2116:                                             ; preds = %2139, %2115
  %2117 = load i8, ptr %187, align 1, !tbaa !11, !range !13, !noundef !14
  %2118 = trunc i8 %2117 to i1
  br i1 %2118, label %2120, label %2119

2119:                                             ; preds = %2116
  store i32 251, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #10
  br label %2140

2120:                                             ; preds = %2116
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #10
  %2121 = load ptr, ptr %174, align 8, !tbaa !5
  %2122 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %2121)
          to label %2123 unwind label %2129

2123:                                             ; preds = %2120
  store ptr %2122, ptr %188, align 8, !tbaa !5
  br label %2124

2124:                                             ; preds = %2137, %2123
  %2125 = load ptr, ptr %188, align 8, !tbaa !5
  %2126 = load i8, ptr %187, align 1, !tbaa !11, !range !13, !noundef !14
  %2127 = trunc i8 %2126 to i1
  br i1 %2127, label %2133, label %2128

2128:                                             ; preds = %2124
  store i32 254, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #10
  br label %2138

2129:                                             ; preds = %2133, %2120
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %13, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #10
  br label %2229

2133:                                             ; preds = %2124
  %2134 = load ptr, ptr %188, align 8, !tbaa !5
  %2135 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %2134, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2135)
          to label %2136 unwind label %2129

2136:                                             ; preds = %2133
  br label %2137

2137:                                             ; preds = %2136
  store i8 0, ptr %187, align 1, !tbaa !11
  br label %2124, !llvm.loop !90

2138:                                             ; preds = %2128
  br label %2139

2139:                                             ; preds = %2138
  store i8 0, ptr %187, align 1, !tbaa !11
  br label %2116, !llvm.loop !91

2140:                                             ; preds = %2119
  br label %2227

2141:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %189) #10
  store i8 1, ptr %189, align 1, !tbaa !11
  br label %2142

2142:                                             ; preds = %2165, %2141
  %2143 = load i8, ptr %189, align 1, !tbaa !11, !range !13, !noundef !14
  %2144 = trunc i8 %2143 to i1
  br i1 %2144, label %2146, label %2145

2145:                                             ; preds = %2142
  store i32 257, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #10
  br label %2166

2146:                                             ; preds = %2142
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #10
  %2147 = load ptr, ptr %174, align 8, !tbaa !5
  %2148 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %2147)
          to label %2149 unwind label %2155

2149:                                             ; preds = %2146
  store ptr %2148, ptr %190, align 8, !tbaa !5
  br label %2150

2150:                                             ; preds = %2163, %2149
  %2151 = load ptr, ptr %190, align 8, !tbaa !5
  %2152 = load i8, ptr %189, align 1, !tbaa !11, !range !13, !noundef !14
  %2153 = trunc i8 %2152 to i1
  br i1 %2153, label %2159, label %2154

2154:                                             ; preds = %2150
  store i32 260, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #10
  br label %2164

2155:                                             ; preds = %2159, %2146
  %2156 = landingpad { ptr, i32 }
          cleanup
  %2157 = extractvalue { ptr, i32 } %2156, 0
  store ptr %2157, ptr %13, align 8
  %2158 = extractvalue { ptr, i32 } %2156, 1
  store i32 %2158, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #10
  br label %2229

2159:                                             ; preds = %2150
  %2160 = load ptr, ptr %190, align 8, !tbaa !5
  %2161 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %2160, i32 0, i32 0
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2161)
          to label %2162 unwind label %2155

2162:                                             ; preds = %2159
  br label %2163

2163:                                             ; preds = %2162
  store i8 0, ptr %189, align 1, !tbaa !11
  br label %2150, !llvm.loop !92

2164:                                             ; preds = %2154
  br label %2165

2165:                                             ; preds = %2164
  store i8 0, ptr %189, align 1, !tbaa !11
  br label %2142, !llvm.loop !93

2166:                                             ; preds = %2145
  br label %2227

2167:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 1, ptr %191) #10
  store i8 1, ptr %191, align 1, !tbaa !11
  br label %2168

2168:                                             ; preds = %2225, %2167
  %2169 = load i8, ptr %191, align 1, !tbaa !11, !range !13, !noundef !14
  %2170 = trunc i8 %2169 to i1
  br i1 %2170, label %2172, label %2171

2171:                                             ; preds = %2168
  store i32 263, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #10
  br label %2226

2172:                                             ; preds = %2168
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #10
  %2173 = load ptr, ptr %174, align 8, !tbaa !5
  %2174 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %2173)
          to label %2175 unwind label %2181

2175:                                             ; preds = %2172
  store ptr %2174, ptr %192, align 8, !tbaa !5
  br label %2176

2176:                                             ; preds = %2222, %2175
  %2177 = load ptr, ptr %192, align 8, !tbaa !5
  %2178 = load i8, ptr %191, align 1, !tbaa !11, !range !13, !noundef !14
  %2179 = trunc i8 %2178 to i1
  br i1 %2179, label %2185, label %2180

2180:                                             ; preds = %2176
  store i32 266, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #10
  br label %2224

2181:                                             ; preds = %2197, %2193, %2188, %2185, %2172
  %2182 = landingpad { ptr, i32 }
          cleanup
  %2183 = extractvalue { ptr, i32 } %2182, 0
  store ptr %2183, ptr %13, align 8
  %2184 = extractvalue { ptr, i32 } %2182, 1
  store i32 %2184, ptr %14, align 4
  br label %2223

2185:                                             ; preds = %2176
  %2186 = load ptr, ptr %192, align 8, !tbaa !5
  %2187 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2186, i32 0, i32 2
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2187)
          to label %2188 unwind label %2181

2188:                                             ; preds = %2185
  %2189 = load ptr, ptr %192, align 8, !tbaa !5
  %2190 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2189, i32 0, i32 3
  %2191 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %2190)
          to label %2192 unwind label %2181

2192:                                             ; preds = %2188
  br i1 %2191, label %2193, label %2199

2193:                                             ; preds = %2192
  %2194 = load ptr, ptr %192, align 8, !tbaa !5
  %2195 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2194, i32 0, i32 3
  %2196 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %2195)
          to label %2197 unwind label %2181

2197:                                             ; preds = %2193
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2196)
          to label %2198 unwind label %2181

2198:                                             ; preds = %2197
  br label %2199

2199:                                             ; preds = %2198, %2192
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #10
  %2200 = load ptr, ptr %192, align 8, !tbaa !5
  %2201 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2200, i32 0, i32 4
  store ptr %2201, ptr %193, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #10
  %2202 = load ptr, ptr %193, align 8, !tbaa !5
  %2203 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2202) #10
  %2204 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %194, i32 0, i32 0
  store ptr %2203, ptr %2204, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #10
  %2205 = load ptr, ptr %193, align 8, !tbaa !5
  %2206 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2205) #10
  %2207 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.512", ptr %195, i32 0, i32 0
  store ptr %2206, ptr %2207, align 8
  br label %2208

2208:                                             ; preds = %2215, %2199
  %2209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(8) %195) #10
  br i1 %2209, label %2211, label %2210

2210:                                             ; preds = %2208
  store i32 269, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #10
  br label %2221

2211:                                             ; preds = %2208
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #10
  %2212 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #10
  store ptr %2212, ptr %196, align 8, !tbaa !5
  %2213 = load ptr, ptr %196, align 8, !tbaa !5
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(48) %2213)
          to label %2214 unwind label %2217

2214:                                             ; preds = %2211
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  br label %2215

2215:                                             ; preds = %2214
  %2216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #10
  br label %2208

2217:                                             ; preds = %2211
  %2218 = landingpad { ptr, i32 }
          cleanup
  %2219 = extractvalue { ptr, i32 } %2218, 0
  store ptr %2219, ptr %13, align 8
  %2220 = extractvalue { ptr, i32 } %2218, 1
  store i32 %2220, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #10
  br label %2223

2221:                                             ; preds = %2210
  br label %2222

2222:                                             ; preds = %2221
  store i8 0, ptr %191, align 1, !tbaa !11
  br label %2176, !llvm.loop !94

2223:                                             ; preds = %2217, %2181
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #10
  br label %2229

2224:                                             ; preds = %2180
  br label %2225

2225:                                             ; preds = %2224
  store i8 0, ptr %191, align 1, !tbaa !11
  br label %2168, !llvm.loop !95

2226:                                             ; preds = %2171
  br label %2227

2227:                                             ; preds = %2226, %2166, %2140, %2114, %2088, %2065, %2042, %2019, %1996, %1968
  br label %2228

2228:                                             ; preds = %2227
  store i8 0, ptr %173, align 1, !tbaa !11
  br label %1961, !llvm.loop !96

2229:                                             ; preds = %2223, %2155, %2129, %2103, %2080, %2057, %2034, %2011, %1988, %1969
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #10
  br label %3253

2230:                                             ; preds = %1964
  br label %2231

2231:                                             ; preds = %2230
  store i8 0, ptr %173, align 1, !tbaa !11
  br label %1950, !llvm.loop !97

2232:                                             ; preds = %1953
  call void @llvm.lifetime.start.p0(i64 8, ptr %197) #10
  %2233 = load ptr, ptr %26, align 8, !tbaa !5
  %2234 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %2233, i32 0, i32 1
  %2235 = invoke noundef ptr @_ZN3MIR10Terminator8opt_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %2234)
          to label %2236 unwind label %2325

2236:                                             ; preds = %2232
  store ptr %2235, ptr %197, align 8, !tbaa !5
  %2237 = load ptr, ptr %197, align 8, !tbaa !5
  %2238 = icmp ne ptr %2237, null
  br i1 %2238, label %2239, label %3248

2239:                                             ; preds = %2236
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #10
  %2240 = load ptr, ptr %197, align 8, !tbaa !5
  store ptr %2240, ptr %198, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #10
  %2241 = load ptr, ptr %198, align 8, !tbaa !5
  %2242 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2241, i32 0, i32 3
  %2243 = invoke noundef ptr @_ZN3MIR10CallTarget8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %2242)
          to label %2244 unwind label %2329

2244:                                             ; preds = %2239
  store ptr %2243, ptr %199, align 8, !tbaa !5
  %2245 = load ptr, ptr %199, align 8, !tbaa !5
  %2246 = icmp ne ptr %2245, null
  br i1 %2246, label %2247, label %3042

2247:                                             ; preds = %2244
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #10
  %2248 = load ptr, ptr %199, align 8, !tbaa !5
  store ptr %2248, ptr %200, align 8, !tbaa !5
  %2249 = load ptr, ptr %200, align 8, !tbaa !5
  %2250 = getelementptr inbounds %"class.HIR::Path", ptr %2249, i32 0, i32 0
  %2251 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2250)
          to label %2252 unwind label %2333

2252:                                             ; preds = %2247
  br i1 %2251, label %2253, label %2374

2253:                                             ; preds = %2252
  %2254 = load ptr, ptr %200, align 8, !tbaa !5
  %2255 = getelementptr inbounds %"class.HIR::Path", ptr %2254, i32 0, i32 0
  %2256 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2255)
          to label %2257 unwind label %2333

2257:                                             ; preds = %2253
  %2258 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2256, i32 0, i32 0
  %2259 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2258)
          to label %2260 unwind label %2333

2260:                                             ; preds = %2257
  %2261 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2259)
          to label %2262 unwind label %2333

2262:                                             ; preds = %2260
  br i1 %2261, label %2263, label %2374

2263:                                             ; preds = %2262
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #10
  %2264 = load ptr, ptr %200, align 8, !tbaa !5
  %2265 = getelementptr inbounds %"class.HIR::Path", ptr %2264, i32 0, i32 0
  %2266 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2265)
          to label %2267 unwind label %2337

2267:                                             ; preds = %2263
  store ptr %2266, ptr %201, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #10
  %2268 = load ptr, ptr %201, align 8, !tbaa !5
  %2269 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2268, i32 0, i32 0
  %2270 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2269)
          to label %2271 unwind label %2341

2271:                                             ; preds = %2267
  %2272 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2270)
          to label %2273 unwind label %2341

2273:                                             ; preds = %2271
  store ptr %2272, ptr %202, align 8, !tbaa !5
  %2274 = load ptr, ptr %202, align 8, !tbaa !5
  %2275 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2274, i32 0, i32 0
  %2276 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2275, i32 0, i32 1
  %2277 = load ptr, ptr %201, align 8, !tbaa !5
  %2278 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2277, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %204) #10
  store i1 false, ptr %205, align 1
  %2279 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %2276, ptr noundef nonnull align 8 dereferenceable(32) %2278)
          to label %2280 unwind label %2341

2280:                                             ; preds = %2273
  br i1 %2279, label %2305, label %2281

2281:                                             ; preds = %2280
  %2282 = load ptr, ptr %6, align 8, !tbaa !5
  %2283 = load ptr, ptr %201, align 8, !tbaa !5
  %2284 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2283, i32 0, i32 1
  %2285 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2284, i32 0, i32 0
  %2286 = load ptr, ptr %201, align 8, !tbaa !5
  %2287 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2286, i32 0, i32 1
  %2288 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2287, i32 0, i32 1
  %2289 = load ptr, ptr %202, align 8, !tbaa !5
  %2290 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2289, i32 0, i32 0
  %2291 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2290, i32 0, i32 4
  %2292 = load ptr, ptr %2291, align 8, !tbaa !98
  %2293 = load ptr, ptr %202, align 8, !tbaa !5
  %2294 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2293, i32 0, i32 0
  %2295 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2294, i32 0, i32 1
  %2296 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2295, i32 0, i32 0
  %2297 = load ptr, ptr %202, align 8, !tbaa !5
  %2298 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2297, i32 0, i32 0
  %2299 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2298, i32 0, i32 1
  %2300 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2299, i32 0, i32 1
  %2301 = load ptr, ptr %201, align 8, !tbaa !5
  %2302 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2301, i32 0, i32 0
  call void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKNS0_8ItemPathERN3MIR8FunctionERKSt6vectorISA_INS0_7PatternENS0_7TypeRefEESaISU_EERKST_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef nonnull align 1 dereferenceable(1) %204) #10
  store i1 true, ptr %205, align 1
  %2303 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %2282, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %2285, ptr noundef nonnull align 8 dereferenceable(24) %2288, ptr noundef nonnull align 8 dereferenceable(400) %2292, ptr noundef nonnull align 8 dereferenceable(8) %2296, ptr noundef nonnull align 8 dereferenceable(24) %2300, ptr noundef nonnull align 8 dereferenceable(8) %2302, ptr noundef %203)
          to label %2304 unwind label %2345

2304:                                             ; preds = %2281
  br label %2305

2305:                                             ; preds = %2304, %2280
  %2306 = phi i1 [ true, %2280 ], [ %2303, %2304 ]
  %2307 = load i1, ptr %205, align 1
  br i1 %2307, label %2308, label %2309

2308:                                             ; preds = %2305
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #10
  br label %2309

2309:                                             ; preds = %2308, %2305
  call void @llvm.lifetime.end.p0(i64 1, ptr %204) #10
  br i1 %2306, label %2310, label %2371

2310:                                             ; preds = %2309
  call void @llvm.lifetime.start.p0(i64 32, ptr %206) #10
  %2311 = load ptr, ptr %198, align 8, !tbaa !5
  %2312 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2311, i32 0, i32 4
  %2313 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %2312) #10
  %2314 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2313)
          to label %2315 unwind label %2352

2315:                                             ; preds = %2310
  %2316 = load ptr, ptr %202, align 8, !tbaa !5
  %2317 = load ptr, ptr %201, align 8, !tbaa !5
  invoke void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %206, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(32) %2314, ptr noundef nonnull align 8 dereferenceable(172) %2316, ptr noundef nonnull align 8 dereferenceable(80) %2317)
          to label %2318 unwind label %2352

2318:                                             ; preds = %2315
  call void @llvm.lifetime.start.p0(i64 96, ptr %207) #10
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull align 8 dereferenceable(32) %206)
          to label %2319 unwind label %2356

2319:                                             ; preds = %2318
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %207, ptr noundef %208)
          to label %2320 unwind label %2360

2320:                                             ; preds = %2319
  %2321 = load ptr, ptr %198, align 8, !tbaa !5
  %2322 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2321, i32 0, i32 3
  %2323 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %2322, ptr noundef nonnull align 8 dereferenceable(96) %207)
          to label %2324 unwind label %2364

2324:                                             ; preds = %2320
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %207) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %207) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %206) #10
  br label %2371

2325:                                             ; preds = %2232
  %2326 = landingpad { ptr, i32 }
          cleanup
  %2327 = extractvalue { ptr, i32 } %2326, 0
  store ptr %2327, ptr %13, align 8
  %2328 = extractvalue { ptr, i32 } %2326, 1
  store i32 %2328, ptr %14, align 4
  br label %3252

2329:                                             ; preds = %2239
  %2330 = landingpad { ptr, i32 }
          cleanup
  %2331 = extractvalue { ptr, i32 } %2330, 0
  store ptr %2331, ptr %13, align 8
  %2332 = extractvalue { ptr, i32 } %2330, 1
  store i32 %2332, ptr %14, align 4
  br label %3082

2333:                                             ; preds = %2611, %2608, %2604, %2599, %2386, %2383, %2379, %2374, %2260, %2257, %2253, %2247
  %2334 = landingpad { ptr, i32 }
          cleanup
  %2335 = extractvalue { ptr, i32 } %2334, 0
  store ptr %2335, ptr %13, align 8
  %2336 = extractvalue { ptr, i32 } %2334, 1
  store i32 %2336, ptr %14, align 4
  br label %3041

2337:                                             ; preds = %2263
  %2338 = landingpad { ptr, i32 }
          cleanup
  %2339 = extractvalue { ptr, i32 } %2338, 0
  store ptr %2339, ptr %13, align 8
  %2340 = extractvalue { ptr, i32 } %2338, 1
  store i32 %2340, ptr %14, align 4
  br label %2373

2341:                                             ; preds = %2273, %2271, %2267
  %2342 = landingpad { ptr, i32 }
          cleanup
  %2343 = extractvalue { ptr, i32 } %2342, 0
  store ptr %2343, ptr %13, align 8
  %2344 = extractvalue { ptr, i32 } %2342, 1
  store i32 %2344, ptr %14, align 4
  br label %2372

2345:                                             ; preds = %2281
  %2346 = landingpad { ptr, i32 }
          cleanup
  %2347 = extractvalue { ptr, i32 } %2346, 0
  store ptr %2347, ptr %13, align 8
  %2348 = extractvalue { ptr, i32 } %2346, 1
  store i32 %2348, ptr %14, align 4
  %2349 = load i1, ptr %205, align 1
  br i1 %2349, label %2350, label %2351

2350:                                             ; preds = %2345
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #10
  br label %2351

2351:                                             ; preds = %2350, %2345
  call void @llvm.lifetime.end.p0(i64 1, ptr %204) #10
  br label %2372

2352:                                             ; preds = %2315, %2310
  %2353 = landingpad { ptr, i32 }
          cleanup
  %2354 = extractvalue { ptr, i32 } %2353, 0
  store ptr %2354, ptr %13, align 8
  %2355 = extractvalue { ptr, i32 } %2353, 1
  store i32 %2355, ptr %14, align 4
  br label %2370

2356:                                             ; preds = %2318
  %2357 = landingpad { ptr, i32 }
          cleanup
  %2358 = extractvalue { ptr, i32 } %2357, 0
  store ptr %2358, ptr %13, align 8
  %2359 = extractvalue { ptr, i32 } %2357, 1
  store i32 %2359, ptr %14, align 4
  br label %2369

2360:                                             ; preds = %2319
  %2361 = landingpad { ptr, i32 }
          cleanup
  %2362 = extractvalue { ptr, i32 } %2361, 0
  store ptr %2362, ptr %13, align 8
  %2363 = extractvalue { ptr, i32 } %2361, 1
  store i32 %2363, ptr %14, align 4
  br label %2368

2364:                                             ; preds = %2320
  %2365 = landingpad { ptr, i32 }
          cleanup
  %2366 = extractvalue { ptr, i32 } %2365, 0
  store ptr %2366, ptr %13, align 8
  %2367 = extractvalue { ptr, i32 } %2365, 1
  store i32 %2367, ptr %14, align 4
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %207) #10
  br label %2368

2368:                                             ; preds = %2364, %2360
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #10
  br label %2369

2369:                                             ; preds = %2368, %2356
  call void @llvm.lifetime.end.p0(i64 96, ptr %207) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #10
  br label %2370

2370:                                             ; preds = %2369, %2352
  call void @llvm.lifetime.end.p0(i64 32, ptr %206) #10
  br label %2372

2371:                                             ; preds = %2324, %2309
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  br label %2374

2372:                                             ; preds = %2370, %2351, %2341
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #10
  br label %2373

2373:                                             ; preds = %2372, %2337
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  br label %3041

2374:                                             ; preds = %2371, %2262, %2252
  %2375 = load ptr, ptr %200, align 8, !tbaa !5
  %2376 = getelementptr inbounds %"class.HIR::Path", ptr %2375, i32 0, i32 0
  %2377 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2376)
          to label %2378 unwind label %2333

2378:                                             ; preds = %2374
  br i1 %2377, label %2379, label %2599

2379:                                             ; preds = %2378
  %2380 = load ptr, ptr %200, align 8, !tbaa !5
  %2381 = getelementptr inbounds %"class.HIR::Path", ptr %2380, i32 0, i32 0
  %2382 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2381)
          to label %2383 unwind label %2333

2383:                                             ; preds = %2379
  %2384 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2382, i32 0, i32 0
  %2385 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2384)
          to label %2386 unwind label %2333

2386:                                             ; preds = %2383
  %2387 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2385)
          to label %2388 unwind label %2333

2388:                                             ; preds = %2386
  br i1 %2387, label %2389, label %2599

2389:                                             ; preds = %2388
  call void @llvm.lifetime.start.p0(i64 8, ptr %209) #10
  %2390 = load ptr, ptr %200, align 8, !tbaa !5
  %2391 = getelementptr inbounds %"class.HIR::Path", ptr %2390, i32 0, i32 0
  %2392 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2391)
          to label %2393 unwind label %2434

2393:                                             ; preds = %2389
  store ptr %2392, ptr %209, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #10
  %2394 = load ptr, ptr %209, align 8, !tbaa !5
  %2395 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2394, i32 0, i32 0
  %2396 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2395)
          to label %2397 unwind label %2438

2397:                                             ; preds = %2393
  %2398 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2396)
          to label %2399 unwind label %2438

2399:                                             ; preds = %2397
  store ptr %2398, ptr %210, align 8, !tbaa !5
  %2400 = load ptr, ptr %209, align 8, !tbaa !5
  %2401 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2400, i32 0, i32 1
  %2402 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2401, i32 0, i32 0
  %2403 = load ptr, ptr %6, align 8, !tbaa !5
  %2404 = getelementptr inbounds i8, ptr %2403, i64 8
  %2405 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2404, i32 0, i32 10
  %2406 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2402, ptr noundef nonnull align 8 dereferenceable(8) %2405)
          to label %2407 unwind label %2438

2407:                                             ; preds = %2399
  br i1 %2406, label %2426, label %2408

2408:                                             ; preds = %2407
  %2409 = load ptr, ptr %209, align 8, !tbaa !5
  %2410 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2409, i32 0, i32 1
  %2411 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2410, i32 0, i32 0
  %2412 = load ptr, ptr %6, align 8, !tbaa !5
  %2413 = getelementptr inbounds i8, ptr %2412, i64 8
  %2414 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2413, i32 0, i32 11
  %2415 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2411, ptr noundef nonnull align 8 dereferenceable(8) %2414)
          to label %2416 unwind label %2438

2416:                                             ; preds = %2408
  br i1 %2415, label %2426, label %2417

2417:                                             ; preds = %2416
  %2418 = load ptr, ptr %209, align 8, !tbaa !5
  %2419 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2418, i32 0, i32 1
  %2420 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2419, i32 0, i32 0
  %2421 = load ptr, ptr %6, align 8, !tbaa !5
  %2422 = getelementptr inbounds i8, ptr %2421, i64 8
  %2423 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2422, i32 0, i32 12
  %2424 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2420, ptr noundef nonnull align 8 dereferenceable(8) %2423)
          to label %2425 unwind label %2438

2425:                                             ; preds = %2417
  br i1 %2424, label %2426, label %2596

2426:                                             ; preds = %2425, %2416, %2407
  br label %2427

2427:                                             ; preds = %2426
  %2428 = load ptr, ptr %198, align 8, !tbaa !5
  %2429 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2428, i32 0, i32 4
  %2430 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2429) #10
  %2431 = icmp eq i64 %2430, 2
  br i1 %2431, label %2446, label %2432

2432:                                             ; preds = %2427
  call void @llvm.lifetime.start.p0(i64 1, ptr %212) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 1 dereferenceable(1) %212) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %211)
          to label %2433 unwind label %2442

2433:                                             ; preds = %2432
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #10
  br label %2446

2434:                                             ; preds = %2389
  %2435 = landingpad { ptr, i32 }
          cleanup
  %2436 = extractvalue { ptr, i32 } %2435, 0
  store ptr %2436, ptr %13, align 8
  %2437 = extractvalue { ptr, i32 } %2435, 1
  store i32 %2437, ptr %14, align 4
  br label %2598

2438:                                             ; preds = %2417, %2408, %2399, %2397, %2393
  %2439 = landingpad { ptr, i32 }
          cleanup
  %2440 = extractvalue { ptr, i32 } %2439, 0
  store ptr %2440, ptr %13, align 8
  %2441 = extractvalue { ptr, i32 } %2439, 1
  store i32 %2441, ptr %14, align 4
  br label %2597

2442:                                             ; preds = %2432
  %2443 = landingpad { ptr, i32 }
          cleanup
  %2444 = extractvalue { ptr, i32 } %2443, 0
  store ptr %2444, ptr %13, align 8
  %2445 = extractvalue { ptr, i32 } %2443, 1
  store i32 %2445, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #10
  br label %2597

2446:                                             ; preds = %2433, %2427
  br label %2447

2447:                                             ; preds = %2446
  br label %2448

2448:                                             ; preds = %2447
  call void @llvm.lifetime.start.p0(i64 32, ptr %213) #10
  %2449 = load ptr, ptr %198, align 8, !tbaa !5
  %2450 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2449, i32 0, i32 4
  %2451 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2450, i64 noundef 0) #10
  %2452 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2451)
          to label %2453 unwind label %2474

2453:                                             ; preds = %2448
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %213, ptr noundef nonnull align 8 dereferenceable(32) %2452)
          to label %2454 unwind label %2474

2454:                                             ; preds = %2453
  call void @llvm.lifetime.start.p0(i64 32, ptr %214) #10
  %2455 = load ptr, ptr %198, align 8, !tbaa !5
  %2456 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2455, i32 0, i32 4
  %2457 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2456, i64 noundef 1) #10
  %2458 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2457)
          to label %2459 unwind label %2478

2459:                                             ; preds = %2454
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %214, ptr noundef nonnull align 8 dereferenceable(32) %2458)
          to label %2460 unwind label %2478

2460:                                             ; preds = %2459
  br label %2461

2461:                                             ; preds = %2460
  %2462 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2463 unwind label %2482

2463:                                             ; preds = %2461
  br i1 %2462, label %2464, label %2486

2464:                                             ; preds = %2463
  %2465 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %2466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2465, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %2467 unwind label %2482

2467:                                             ; preds = %2464
  %2468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2466, ptr noundef @.str.23)
          to label %2469 unwind label %2482

2469:                                             ; preds = %2467
  %2470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2468, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2471 unwind label %2482

2471:                                             ; preds = %2469
  %2472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2470, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2473 unwind label %2482

2473:                                             ; preds = %2471
  br label %2486

2474:                                             ; preds = %2453, %2448
  %2475 = landingpad { ptr, i32 }
          cleanup
  %2476 = extractvalue { ptr, i32 } %2475, 0
  store ptr %2476, ptr %13, align 8
  %2477 = extractvalue { ptr, i32 } %2475, 1
  store i32 %2477, ptr %14, align 4
  br label %2595

2478:                                             ; preds = %2459, %2454
  %2479 = landingpad { ptr, i32 }
          cleanup
  %2480 = extractvalue { ptr, i32 } %2479, 0
  store ptr %2480, ptr %13, align 8
  %2481 = extractvalue { ptr, i32 } %2479, 1
  store i32 %2481, ptr %14, align 4
  br label %2594

2482:                                             ; preds = %2535, %2488, %2471, %2469, %2467, %2464, %2461
  %2483 = landingpad { ptr, i32 }
          cleanup
  %2484 = extractvalue { ptr, i32 } %2483, 0
  store ptr %2484, ptr %13, align 8
  %2485 = extractvalue { ptr, i32 } %2483, 1
  store i32 %2485, ptr %14, align 4
  br label %2593

2486:                                             ; preds = %2473, %2463
  br label %2487

2487:                                             ; preds = %2486
  br label %2488

2488:                                             ; preds = %2487
  %2489 = load ptr, ptr %198, align 8, !tbaa !5
  %2490 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2489, i32 0, i32 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %2490) #10
  %2491 = load ptr, ptr %198, align 8, !tbaa !5
  %2492 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2491, i32 0, i32 4
  %2493 = load ptr, ptr %210, align 8, !tbaa !5
  %2494 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2493, i32 0, i32 5
  %2495 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2494) #10
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %2492, i64 noundef %2495)
          to label %2496 unwind label %2482

2496:                                             ; preds = %2488
  call void @llvm.lifetime.start.p0(i64 4, ptr %215) #10
  store i32 0, ptr %215, align 4, !tbaa !9
  br label %2497

2497:                                             ; preds = %2513, %2496
  %2498 = load i32, ptr %215, align 4, !tbaa !9
  %2499 = zext i32 %2498 to i64
  %2500 = load ptr, ptr %210, align 8, !tbaa !5
  %2501 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %2500, i32 0, i32 5
  %2502 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2501) #10
  %2503 = icmp ult i64 %2499, %2502
  br i1 %2503, label %2505, label %2504

2504:                                             ; preds = %2497
  store i32 275, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #10
  br label %2535

2505:                                             ; preds = %2497
  %2506 = load ptr, ptr %198, align 8, !tbaa !5
  %2507 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2506, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 48, ptr %216) #10
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %218, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %2508 unwind label %2516

2508:                                             ; preds = %2505
  %2509 = load i32, ptr %215, align 4, !tbaa !9
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %217, ptr noundef %218, i32 noundef %2509)
          to label %2510 unwind label %2520

2510:                                             ; preds = %2508
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %216, ptr noundef %217)
          to label %2511 unwind label %2524

2511:                                             ; preds = %2510
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2507, ptr noundef nonnull align 8 dereferenceable(48) %216)
          to label %2512 unwind label %2528

2512:                                             ; preds = %2511
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %216) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %216) #10
  br label %2513

2513:                                             ; preds = %2512
  %2514 = load i32, ptr %215, align 4, !tbaa !9
  %2515 = add i32 %2514, 1
  store i32 %2515, ptr %215, align 4, !tbaa !9
  br label %2497, !llvm.loop !130

2516:                                             ; preds = %2505
  %2517 = landingpad { ptr, i32 }
          cleanup
  %2518 = extractvalue { ptr, i32 } %2517, 0
  store ptr %2518, ptr %13, align 8
  %2519 = extractvalue { ptr, i32 } %2517, 1
  store i32 %2519, ptr %14, align 4
  br label %2534

2520:                                             ; preds = %2508
  %2521 = landingpad { ptr, i32 }
          cleanup
  %2522 = extractvalue { ptr, i32 } %2521, 0
  store ptr %2522, ptr %13, align 8
  %2523 = extractvalue { ptr, i32 } %2521, 1
  store i32 %2523, ptr %14, align 4
  br label %2533

2524:                                             ; preds = %2510
  %2525 = landingpad { ptr, i32 }
          cleanup
  %2526 = extractvalue { ptr, i32 } %2525, 0
  store ptr %2526, ptr %13, align 8
  %2527 = extractvalue { ptr, i32 } %2525, 1
  store i32 %2527, ptr %14, align 4
  br label %2532

2528:                                             ; preds = %2511
  %2529 = landingpad { ptr, i32 }
          cleanup
  %2530 = extractvalue { ptr, i32 } %2529, 0
  store ptr %2530, ptr %13, align 8
  %2531 = extractvalue { ptr, i32 } %2529, 1
  store i32 %2531, ptr %14, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %216) #10
  br label %2532

2532:                                             ; preds = %2528, %2524
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #10
  br label %2533

2533:                                             ; preds = %2532, %2520
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #10
  br label %2534

2534:                                             ; preds = %2533, %2516
  call void @llvm.lifetime.end.p0(i64 48, ptr %216) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #10
  br label %2593

2535:                                             ; preds = %2504
  %2536 = load ptr, ptr %209, align 8, !tbaa !5
  %2537 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2536, i32 0, i32 1
  %2538 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2537, i32 0, i32 0
  %2539 = load ptr, ptr %6, align 8, !tbaa !5
  %2540 = getelementptr inbounds i8, ptr %2539, i64 8
  %2541 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2540, i32 0, i32 12
  %2542 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2538, ptr noundef nonnull align 8 dereferenceable(8) %2541)
          to label %2543 unwind label %2482

2543:                                             ; preds = %2535
  br i1 %2542, label %2544, label %2565

2544:                                             ; preds = %2543
  call void @llvm.lifetime.start.p0(i64 96, ptr %219) #10
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef nonnull align 8 dereferenceable(32) %213)
          to label %2545 unwind label %2551

2545:                                             ; preds = %2544
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %219, ptr noundef %220)
          to label %2546 unwind label %2555

2546:                                             ; preds = %2545
  %2547 = load ptr, ptr %198, align 8, !tbaa !5
  %2548 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2547, i32 0, i32 3
  %2549 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %2548, ptr noundef nonnull align 8 dereferenceable(96) %219)
          to label %2550 unwind label %2559

2550:                                             ; preds = %2546
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %219) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %219) #10
  br label %2592

2551:                                             ; preds = %2544
  %2552 = landingpad { ptr, i32 }
          cleanup
  %2553 = extractvalue { ptr, i32 } %2552, 0
  store ptr %2553, ptr %13, align 8
  %2554 = extractvalue { ptr, i32 } %2552, 1
  store i32 %2554, ptr %14, align 4
  br label %2564

2555:                                             ; preds = %2545
  %2556 = landingpad { ptr, i32 }
          cleanup
  %2557 = extractvalue { ptr, i32 } %2556, 0
  store ptr %2557, ptr %13, align 8
  %2558 = extractvalue { ptr, i32 } %2556, 1
  store i32 %2558, ptr %14, align 4
  br label %2563

2559:                                             ; preds = %2546
  %2560 = landingpad { ptr, i32 }
          cleanup
  %2561 = extractvalue { ptr, i32 } %2560, 0
  store ptr %2561, ptr %13, align 8
  %2562 = extractvalue { ptr, i32 } %2560, 1
  store i32 %2562, ptr %14, align 4
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %219) #10
  br label %2563

2563:                                             ; preds = %2559, %2555
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #10
  br label %2564

2564:                                             ; preds = %2563, %2551
  call void @llvm.lifetime.end.p0(i64 96, ptr %219) #10
  br label %2593

2565:                                             ; preds = %2543
  call void @llvm.lifetime.start.p0(i64 96, ptr %221) #10
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull align 8 dereferenceable(32) %213)
          to label %2566 unwind label %2573

2566:                                             ; preds = %2565
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %222, ptr noundef %223)
          to label %2567 unwind label %2577

2567:                                             ; preds = %2566
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %221, ptr noundef %222)
          to label %2568 unwind label %2581

2568:                                             ; preds = %2567
  %2569 = load ptr, ptr %198, align 8, !tbaa !5
  %2570 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2569, i32 0, i32 3
  %2571 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %2570, ptr noundef nonnull align 8 dereferenceable(96) %221)
          to label %2572 unwind label %2585

2572:                                             ; preds = %2568
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %221) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %221) #10
  br label %2592

2573:                                             ; preds = %2565
  %2574 = landingpad { ptr, i32 }
          cleanup
  %2575 = extractvalue { ptr, i32 } %2574, 0
  store ptr %2575, ptr %13, align 8
  %2576 = extractvalue { ptr, i32 } %2574, 1
  store i32 %2576, ptr %14, align 4
  br label %2591

2577:                                             ; preds = %2566
  %2578 = landingpad { ptr, i32 }
          cleanup
  %2579 = extractvalue { ptr, i32 } %2578, 0
  store ptr %2579, ptr %13, align 8
  %2580 = extractvalue { ptr, i32 } %2578, 1
  store i32 %2580, ptr %14, align 4
  br label %2590

2581:                                             ; preds = %2567
  %2582 = landingpad { ptr, i32 }
          cleanup
  %2583 = extractvalue { ptr, i32 } %2582, 0
  store ptr %2583, ptr %13, align 8
  %2584 = extractvalue { ptr, i32 } %2582, 1
  store i32 %2584, ptr %14, align 4
  br label %2589

2585:                                             ; preds = %2568
  %2586 = landingpad { ptr, i32 }
          cleanup
  %2587 = extractvalue { ptr, i32 } %2586, 0
  store ptr %2587, ptr %13, align 8
  %2588 = extractvalue { ptr, i32 } %2586, 1
  store i32 %2588, ptr %14, align 4
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %221) #10
  br label %2589

2589:                                             ; preds = %2585, %2581
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #10
  br label %2590

2590:                                             ; preds = %2589, %2577
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #10
  br label %2591

2591:                                             ; preds = %2590, %2573
  call void @llvm.lifetime.end.p0(i64 96, ptr %221) #10
  br label %2593

2592:                                             ; preds = %2572, %2550
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %214) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #10
  br label %2596

2593:                                             ; preds = %2591, %2564, %2534, %2482
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %214) #10
  br label %2594

2594:                                             ; preds = %2593, %2478
  call void @llvm.lifetime.end.p0(i64 32, ptr %214) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  br label %2595

2595:                                             ; preds = %2594, %2474
  call void @llvm.lifetime.end.p0(i64 32, ptr %213) #10
  br label %2597

2596:                                             ; preds = %2592, %2425
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #10
  br label %2599

2597:                                             ; preds = %2595, %2442, %2438
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  br label %2598

2598:                                             ; preds = %2597, %2434
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #10
  br label %3041

2599:                                             ; preds = %2596, %2388, %2378
  %2600 = load ptr, ptr %200, align 8, !tbaa !5
  %2601 = getelementptr inbounds %"class.HIR::Path", ptr %2600, i32 0, i32 0
  %2602 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2601)
          to label %2603 unwind label %2333

2603:                                             ; preds = %2599
  br i1 %2602, label %2604, label %3040

2604:                                             ; preds = %2603
  %2605 = load ptr, ptr %200, align 8, !tbaa !5
  %2606 = getelementptr inbounds %"class.HIR::Path", ptr %2605, i32 0, i32 0
  %2607 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2606)
          to label %2608 unwind label %2333

2608:                                             ; preds = %2604
  %2609 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2607, i32 0, i32 0
  %2610 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2609)
          to label %2611 unwind label %2333

2611:                                             ; preds = %2608
  %2612 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2610)
          to label %2613 unwind label %2333

2613:                                             ; preds = %2611
  br i1 %2612, label %2614, label %3040

2614:                                             ; preds = %2613
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #10
  %2615 = load ptr, ptr %200, align 8, !tbaa !5
  %2616 = getelementptr inbounds %"class.HIR::Path", ptr %2615, i32 0, i32 0
  %2617 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2616)
          to label %2618 unwind label %2665

2618:                                             ; preds = %2614
  store ptr %2617, ptr %224, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #10
  %2619 = load ptr, ptr %224, align 8, !tbaa !5
  %2620 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2619, i32 0, i32 0
  %2621 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2620)
          to label %2622 unwind label %2669

2622:                                             ; preds = %2618
  %2623 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2621)
          to label %2624 unwind label %2669

2624:                                             ; preds = %2622
  store ptr %2623, ptr %225, align 8, !tbaa !5
  %2625 = load ptr, ptr %224, align 8, !tbaa !5
  %2626 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2625, i32 0, i32 1
  %2627 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2626, i32 0, i32 0
  %2628 = load ptr, ptr %6, align 8, !tbaa !5
  %2629 = getelementptr inbounds i8, ptr %2628, i64 8
  %2630 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2629, i32 0, i32 10
  %2631 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2627, ptr noundef nonnull align 8 dereferenceable(8) %2630)
          to label %2632 unwind label %2669

2632:                                             ; preds = %2624
  br i1 %2631, label %2651, label %2633

2633:                                             ; preds = %2632
  %2634 = load ptr, ptr %224, align 8, !tbaa !5
  %2635 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2634, i32 0, i32 1
  %2636 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2635, i32 0, i32 0
  %2637 = load ptr, ptr %6, align 8, !tbaa !5
  %2638 = getelementptr inbounds i8, ptr %2637, i64 8
  %2639 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2638, i32 0, i32 11
  %2640 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2636, ptr noundef nonnull align 8 dereferenceable(8) %2639)
          to label %2641 unwind label %2669

2641:                                             ; preds = %2633
  br i1 %2640, label %2651, label %2642

2642:                                             ; preds = %2641
  %2643 = load ptr, ptr %224, align 8, !tbaa !5
  %2644 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2643, i32 0, i32 1
  %2645 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2644, i32 0, i32 0
  %2646 = load ptr, ptr %6, align 8, !tbaa !5
  %2647 = getelementptr inbounds i8, ptr %2646, i64 8
  %2648 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2647, i32 0, i32 12
  %2649 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2645, ptr noundef nonnull align 8 dereferenceable(8) %2648)
          to label %2650 unwind label %2669

2650:                                             ; preds = %2642
  br i1 %2649, label %2651, label %3037

2651:                                             ; preds = %2650, %2641, %2632
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr %227) #10
  %2652 = load ptr, ptr %225, align 8, !tbaa !5
  %2653 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %2654 = load ptr, ptr %2653, align 8, !tbaa !131
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %227, ptr noundef nonnull align 8 dereferenceable(112) %2652, ptr noundef nonnull align 8 dereferenceable(8) %2654)
          to label %2655 unwind label %2673

2655:                                             ; preds = %2651
  %2656 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %227, i32 0, i32 5
  %2657 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2656) #10
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %227) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %227) #10
  store i64 %2657, ptr %226, align 8, !tbaa !48
  br label %2658

2658:                                             ; preds = %2655
  %2659 = load ptr, ptr %198, align 8, !tbaa !5
  %2660 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2659, i32 0, i32 4
  %2661 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2660) #10
  %2662 = icmp eq i64 %2661, 2
  br i1 %2662, label %2681, label %2663

2663:                                             ; preds = %2658
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 1 dereferenceable(1) %229) #10
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %228)
          to label %2664 unwind label %2677

2664:                                             ; preds = %2663
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #10
  br label %2681

2665:                                             ; preds = %2614
  %2666 = landingpad { ptr, i32 }
          cleanup
  %2667 = extractvalue { ptr, i32 } %2666, 0
  store ptr %2667, ptr %13, align 8
  %2668 = extractvalue { ptr, i32 } %2666, 1
  store i32 %2668, ptr %14, align 4
  br label %3039

2669:                                             ; preds = %2642, %2633, %2624, %2622, %2618
  %2670 = landingpad { ptr, i32 }
          cleanup
  %2671 = extractvalue { ptr, i32 } %2670, 0
  store ptr %2671, ptr %13, align 8
  %2672 = extractvalue { ptr, i32 } %2670, 1
  store i32 %2672, ptr %14, align 4
  br label %3038

2673:                                             ; preds = %2651
  %2674 = landingpad { ptr, i32 }
          cleanup
  %2675 = extractvalue { ptr, i32 } %2674, 0
  store ptr %2675, ptr %13, align 8
  %2676 = extractvalue { ptr, i32 } %2674, 1
  store i32 %2676, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 144, ptr %227) #10
  br label %3036

2677:                                             ; preds = %2663
  %2678 = landingpad { ptr, i32 }
          cleanup
  %2679 = extractvalue { ptr, i32 } %2678, 0
  store ptr %2679, ptr %13, align 8
  %2680 = extractvalue { ptr, i32 } %2678, 1
  store i32 %2680, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #10
  br label %3036

2681:                                             ; preds = %2664, %2658
  br label %2682

2682:                                             ; preds = %2681
  br label %2683

2683:                                             ; preds = %2682
  call void @llvm.lifetime.start.p0(i64 32, ptr %230) #10
  %2684 = load ptr, ptr %198, align 8, !tbaa !5
  %2685 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2684, i32 0, i32 4
  %2686 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2685, i64 noundef 0) #10
  %2687 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2686)
          to label %2688 unwind label %2709

2688:                                             ; preds = %2683
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef nonnull align 8 dereferenceable(32) %2687)
          to label %2689 unwind label %2709

2689:                                             ; preds = %2688
  call void @llvm.lifetime.start.p0(i64 32, ptr %231) #10
  %2690 = load ptr, ptr %198, align 8, !tbaa !5
  %2691 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2690, i32 0, i32 4
  %2692 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2691, i64 noundef 1) #10
  %2693 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %2692)
          to label %2694 unwind label %2713

2694:                                             ; preds = %2689
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %231, ptr noundef nonnull align 8 dereferenceable(32) %2693)
          to label %2695 unwind label %2713

2695:                                             ; preds = %2694
  br label %2696

2696:                                             ; preds = %2695
  %2697 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2698 unwind label %2717

2698:                                             ; preds = %2696
  br i1 %2697, label %2699, label %2721

2699:                                             ; preds = %2698
  %2700 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %2701 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2700, ptr noundef @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %2702 unwind label %2717

2702:                                             ; preds = %2699
  %2703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2701, ptr noundef @.str.24)
          to label %2704 unwind label %2717

2704:                                             ; preds = %2702
  %2705 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2703, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2706 unwind label %2717

2706:                                             ; preds = %2704
  %2707 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2705, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2708 unwind label %2717

2708:                                             ; preds = %2706
  br label %2721

2709:                                             ; preds = %2688, %2683
  %2710 = landingpad { ptr, i32 }
          cleanup
  %2711 = extractvalue { ptr, i32 } %2710, 0
  store ptr %2711, ptr %13, align 8
  %2712 = extractvalue { ptr, i32 } %2710, 1
  store i32 %2712, ptr %14, align 4
  br label %3035

2713:                                             ; preds = %2694, %2689
  %2714 = landingpad { ptr, i32 }
          cleanup
  %2715 = extractvalue { ptr, i32 } %2714, 0
  store ptr %2715, ptr %13, align 8
  %2716 = extractvalue { ptr, i32 } %2714, 1
  store i32 %2716, ptr %14, align 4
  br label %3034

2717:                                             ; preds = %2723, %2706, %2704, %2702, %2699, %2696
  %2718 = landingpad { ptr, i32 }
          cleanup
  %2719 = extractvalue { ptr, i32 } %2718, 0
  store ptr %2719, ptr %13, align 8
  %2720 = extractvalue { ptr, i32 } %2718, 1
  store i32 %2720, ptr %14, align 4
  br label %3033

2721:                                             ; preds = %2708, %2698
  br label %2722

2722:                                             ; preds = %2721
  br label %2723

2723:                                             ; preds = %2722
  %2724 = load ptr, ptr %198, align 8, !tbaa !5
  %2725 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2724, i32 0, i32 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %2725) #10
  %2726 = load ptr, ptr %198, align 8, !tbaa !5
  %2727 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2726, i32 0, i32 4
  %2728 = load i64, ptr %226, align 8, !tbaa !48
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %2727, i64 noundef %2728)
          to label %2729 unwind label %2717

2729:                                             ; preds = %2723
  call void @llvm.lifetime.start.p0(i64 4, ptr %232) #10
  store i32 0, ptr %232, align 4, !tbaa !9
  br label %2730

2730:                                             ; preds = %2744, %2729
  %2731 = load i32, ptr %232, align 4, !tbaa !9
  %2732 = zext i32 %2731 to i64
  %2733 = load i64, ptr %226, align 8, !tbaa !48
  %2734 = icmp ult i64 %2732, %2733
  br i1 %2734, label %2736, label %2735

2735:                                             ; preds = %2730
  store i32 282, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %232) #10
  br label %2766

2736:                                             ; preds = %2730
  %2737 = load ptr, ptr %198, align 8, !tbaa !5
  %2738 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2737, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 48, ptr %233) #10
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %235, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %2739 unwind label %2747

2739:                                             ; preds = %2736
  %2740 = load i32, ptr %232, align 4, !tbaa !9
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %234, ptr noundef %235, i32 noundef %2740)
          to label %2741 unwind label %2751

2741:                                             ; preds = %2739
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %233, ptr noundef %234)
          to label %2742 unwind label %2755

2742:                                             ; preds = %2741
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2738, ptr noundef nonnull align 8 dereferenceable(48) %233)
          to label %2743 unwind label %2759

2743:                                             ; preds = %2742
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %233) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %233) #10
  br label %2744

2744:                                             ; preds = %2743
  %2745 = load i32, ptr %232, align 4, !tbaa !9
  %2746 = add i32 %2745, 1
  store i32 %2746, ptr %232, align 4, !tbaa !9
  br label %2730, !llvm.loop !136

2747:                                             ; preds = %2736
  %2748 = landingpad { ptr, i32 }
          cleanup
  %2749 = extractvalue { ptr, i32 } %2748, 0
  store ptr %2749, ptr %13, align 8
  %2750 = extractvalue { ptr, i32 } %2748, 1
  store i32 %2750, ptr %14, align 4
  br label %2765

2751:                                             ; preds = %2739
  %2752 = landingpad { ptr, i32 }
          cleanup
  %2753 = extractvalue { ptr, i32 } %2752, 0
  store ptr %2753, ptr %13, align 8
  %2754 = extractvalue { ptr, i32 } %2752, 1
  store i32 %2754, ptr %14, align 4
  br label %2764

2755:                                             ; preds = %2741
  %2756 = landingpad { ptr, i32 }
          cleanup
  %2757 = extractvalue { ptr, i32 } %2756, 0
  store ptr %2757, ptr %13, align 8
  %2758 = extractvalue { ptr, i32 } %2756, 1
  store i32 %2758, ptr %14, align 4
  br label %2763

2759:                                             ; preds = %2742
  %2760 = landingpad { ptr, i32 }
          cleanup
  %2761 = extractvalue { ptr, i32 } %2760, 0
  store ptr %2761, ptr %13, align 8
  %2762 = extractvalue { ptr, i32 } %2760, 1
  store i32 %2762, ptr %14, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %233) #10
  br label %2763

2763:                                             ; preds = %2759, %2755
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #10
  br label %2764

2764:                                             ; preds = %2763, %2751
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %235) #10
  br label %2765

2765:                                             ; preds = %2764, %2747
  call void @llvm.lifetime.end.p0(i64 48, ptr %233) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %232) #10
  br label %3033

2766:                                             ; preds = %2735
  call void @llvm.lifetime.start.p0(i64 1, ptr %236) #10
  store i8 1, ptr %236, align 1, !tbaa !11
  br label %2767

2767:                                             ; preds = %3031, %2766
  %2768 = load i8, ptr %236, align 1, !tbaa !11, !range !13, !noundef !14
  %2769 = trunc i8 %2768 to i1
  br i1 %2769, label %2771, label %2770

2770:                                             ; preds = %2767
  store i32 285, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %236) #10
  br label %3032

2771:                                             ; preds = %2767
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #10
  %2772 = load ptr, ptr %225, align 8, !tbaa !5
  %2773 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2772, i32 0, i32 1
  store ptr %2773, ptr %237, align 8, !tbaa !5
  br label %2774

2774:                                             ; preds = %3028, %2771
  %2775 = load i8, ptr %236, align 1, !tbaa !11, !range !13, !noundef !14
  %2776 = trunc i8 %2775 to i1
  br i1 %2776, label %2778, label %2777

2777:                                             ; preds = %2774
  store i32 288, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #10
  br label %3030

2778:                                             ; preds = %2774
  %2779 = load ptr, ptr %237, align 8, !tbaa !5
  %2780 = invoke noundef i32 @_ZNK3HIR25TypeData_NamedFunction_Ty3tagEv(ptr noundef nonnull align 8 dereferenceable(24) %2779)
          to label %2781 unwind label %2782

2781:                                             ; preds = %2778
  switch i32 %2780, label %3027 [
    i32 0, label %2786
    i32 1, label %2787
    i32 3, label %2833
    i32 2, label %2921
  ]

2782:                                             ; preds = %2778
  %2783 = landingpad { ptr, i32 }
          cleanup
  %2784 = extractvalue { ptr, i32 } %2783, 0
  store ptr %2784, ptr %13, align 8
  %2785 = extractvalue { ptr, i32 } %2783, 1
  store i32 %2785, ptr %14, align 4
  br label %3029

2786:                                             ; preds = %2781
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 1403, ptr noundef @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #11
  unreachable

2787:                                             ; preds = %2781
  call void @llvm.lifetime.start.p0(i64 1, ptr %238) #10
  store i8 1, ptr %238, align 1, !tbaa !11
  br label %2788

2788:                                             ; preds = %2831, %2787
  %2789 = load i8, ptr %238, align 1, !tbaa !11, !range !13, !noundef !14
  %2790 = trunc i8 %2789 to i1
  br i1 %2790, label %2792, label %2791

2791:                                             ; preds = %2788
  store i32 292, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %238) #10
  br label %2832

2792:                                             ; preds = %2788
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #10
  %2793 = load ptr, ptr %237, align 8, !tbaa !5
  %2794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %2793)
          to label %2795 unwind label %2801

2795:                                             ; preds = %2792
  store ptr %2794, ptr %239, align 8, !tbaa !5
  br label %2796

2796:                                             ; preds = %2814, %2795
  %2797 = load ptr, ptr %239, align 8, !tbaa !5
  %2798 = load i8, ptr %238, align 1, !tbaa !11, !range !13, !noundef !14
  %2799 = trunc i8 %2798 to i1
  br i1 %2799, label %2805, label %2800

2800:                                             ; preds = %2796
  store i32 295, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #10
  br label %2830

2801:                                             ; preds = %2792
  %2802 = landingpad { ptr, i32 }
          cleanup
  %2803 = extractvalue { ptr, i32 } %2802, 0
  store ptr %2803, ptr %13, align 8
  %2804 = extractvalue { ptr, i32 } %2802, 1
  store i32 %2804, ptr %14, align 4
  br label %2829

2805:                                             ; preds = %2796
  call void @llvm.lifetime.start.p0(i64 96, ptr %240) #10
  %2806 = load ptr, ptr %225, align 8, !tbaa !5
  %2807 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2806, i32 0, i32 0
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %241, ptr noundef nonnull align 8 dereferenceable(88) %2807)
          to label %2808 unwind label %2815

2808:                                             ; preds = %2805
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %240, ptr noundef %241)
          to label %2809 unwind label %2819

2809:                                             ; preds = %2808
  %2810 = load ptr, ptr %198, align 8, !tbaa !5
  %2811 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2810, i32 0, i32 3
  %2812 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %2811, ptr noundef nonnull align 8 dereferenceable(96) %240)
          to label %2813 unwind label %2823

2813:                                             ; preds = %2809
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %240) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %241) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %240) #10
  br label %2814

2814:                                             ; preds = %2813
  store i8 0, ptr %238, align 1, !tbaa !11
  br label %2796, !llvm.loop !137

2815:                                             ; preds = %2805
  %2816 = landingpad { ptr, i32 }
          cleanup
  %2817 = extractvalue { ptr, i32 } %2816, 0
  store ptr %2817, ptr %13, align 8
  %2818 = extractvalue { ptr, i32 } %2816, 1
  store i32 %2818, ptr %14, align 4
  br label %2828

2819:                                             ; preds = %2808
  %2820 = landingpad { ptr, i32 }
          cleanup
  %2821 = extractvalue { ptr, i32 } %2820, 0
  store ptr %2821, ptr %13, align 8
  %2822 = extractvalue { ptr, i32 } %2820, 1
  store i32 %2822, ptr %14, align 4
  br label %2827

2823:                                             ; preds = %2809
  %2824 = landingpad { ptr, i32 }
          cleanup
  %2825 = extractvalue { ptr, i32 } %2824, 0
  store ptr %2825, ptr %13, align 8
  %2826 = extractvalue { ptr, i32 } %2824, 1
  store i32 %2826, ptr %14, align 4
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %240) #10
  br label %2827

2827:                                             ; preds = %2823, %2819
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %241) #10
  br label %2828

2828:                                             ; preds = %2827, %2815
  call void @llvm.lifetime.end.p0(i64 96, ptr %240) #10
  br label %2829

2829:                                             ; preds = %2828, %2801
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %238) #10
  br label %3029

2830:                                             ; preds = %2800
  br label %2831

2831:                                             ; preds = %2830
  store i8 0, ptr %238, align 1, !tbaa !11
  br label %2788, !llvm.loop !138

2832:                                             ; preds = %2791
  br label %3027

2833:                                             ; preds = %2781
  call void @llvm.lifetime.start.p0(i64 1, ptr %242) #10
  store i8 1, ptr %242, align 1, !tbaa !11
  br label %2834

2834:                                             ; preds = %2919, %2833
  %2835 = load i8, ptr %242, align 1, !tbaa !11, !range !13, !noundef !14
  %2836 = trunc i8 %2835 to i1
  br i1 %2836, label %2838, label %2837

2837:                                             ; preds = %2834
  store i32 298, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #10
  br label %2920

2838:                                             ; preds = %2834
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #10
  %2839 = load ptr, ptr %237, align 8, !tbaa !5
  %2840 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %2839)
          to label %2841 unwind label %2847

2841:                                             ; preds = %2838
  store ptr %2840, ptr %243, align 8, !tbaa !5
  br label %2842

2842:                                             ; preds = %2880, %2841
  %2843 = load ptr, ptr %243, align 8, !tbaa !5
  %2844 = load i8, ptr %242, align 1, !tbaa !11, !range !13, !noundef !14
  %2845 = trunc i8 %2844 to i1
  br i1 %2845, label %2851, label %2846

2846:                                             ; preds = %2842
  store i32 301, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #10
  br label %2918

2847:                                             ; preds = %2838
  %2848 = landingpad { ptr, i32 }
          cleanup
  %2849 = extractvalue { ptr, i32 } %2848, 0
  store ptr %2849, ptr %13, align 8
  %2850 = extractvalue { ptr, i32 } %2848, 1
  store i32 %2850, ptr %14, align 4
  br label %2917

2851:                                             ; preds = %2842
  %2852 = load ptr, ptr %26, align 8, !tbaa !5
  %2853 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %2852, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %244) #10
  %2854 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %245, i32 0, i32 0
  %2855 = load ptr, ptr %198, align 8, !tbaa !5
  %2856 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2855, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2854, ptr noundef nonnull align 8 dereferenceable(32) %2856)
          to label %2857 unwind label %2881

2857:                                             ; preds = %2851
  store i1 true, ptr %247, align 1
  %2858 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %245, i32 0, i32 1
  %2859 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %246, i32 0, i32 0
  %2860 = load ptr, ptr %225, align 8, !tbaa !5
  %2861 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2860, i32 0, i32 0
  %2862 = getelementptr inbounds %"class.HIR::Path", ptr %2861, i32 0, i32 0
  %2863 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %2862)
          to label %2864 unwind label %2885

2864:                                             ; preds = %2857
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %2859, ptr noundef nonnull align 8 dereferenceable(32) %2863)
          to label %2865 unwind label %2885

2865:                                             ; preds = %2864
  %2866 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %246, i32 0, i32 1
  %2867 = load ptr, ptr %198, align 8, !tbaa !5
  %2868 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2867, i32 0, i32 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %2866, ptr noundef nonnull align 8 dereferenceable(24) %2868) #10
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %2858, ptr noundef %246)
          to label %2869 unwind label %2889

2869:                                             ; preds = %2865
  store i1 false, ptr %247, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %244, ptr noundef %245)
          to label %2870 unwind label %2893

2870:                                             ; preds = %2869
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2853, ptr noundef nonnull align 8 dereferenceable(152) %244)
          to label %2871 unwind label %2897

2871:                                             ; preds = %2870
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %244) #10
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %245) #10
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %246) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %244) #10
  call void @llvm.lifetime.start.p0(i64 168, ptr %248) #10
  %2872 = load ptr, ptr %198, align 8, !tbaa !5
  %2873 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2872, i32 0, i32 0
  %2874 = load i32, ptr %2873, align 8, !tbaa !139
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %248, i32 noundef %2874)
          to label %2875 unwind label %2908

2875:                                             ; preds = %2871
  %2876 = load ptr, ptr %26, align 8, !tbaa !5
  %2877 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %2876, i32 0, i32 1
  %2878 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %2877, ptr noundef nonnull align 8 dereferenceable(168) %248)
          to label %2879 unwind label %2912

2879:                                             ; preds = %2875
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %248) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %248) #10
  br label %2880

2880:                                             ; preds = %2879
  store i8 0, ptr %242, align 1, !tbaa !11
  br label %2842, !llvm.loop !153

2881:                                             ; preds = %2851
  %2882 = landingpad { ptr, i32 }
          cleanup
  %2883 = extractvalue { ptr, i32 } %2882, 0
  store ptr %2883, ptr %13, align 8
  %2884 = extractvalue { ptr, i32 } %2882, 1
  store i32 %2884, ptr %14, align 4
  br label %2907

2885:                                             ; preds = %2864, %2857
  %2886 = landingpad { ptr, i32 }
          cleanup
  %2887 = extractvalue { ptr, i32 } %2886, 0
  store ptr %2887, ptr %13, align 8
  %2888 = extractvalue { ptr, i32 } %2886, 1
  store i32 %2888, ptr %14, align 4
  br label %2903

2889:                                             ; preds = %2865
  %2890 = landingpad { ptr, i32 }
          cleanup
  %2891 = extractvalue { ptr, i32 } %2890, 0
  store ptr %2891, ptr %13, align 8
  %2892 = extractvalue { ptr, i32 } %2890, 1
  store i32 %2892, ptr %14, align 4
  br label %2902

2893:                                             ; preds = %2869
  %2894 = landingpad { ptr, i32 }
          cleanup
  %2895 = extractvalue { ptr, i32 } %2894, 0
  store ptr %2895, ptr %13, align 8
  %2896 = extractvalue { ptr, i32 } %2894, 1
  store i32 %2896, ptr %14, align 4
  br label %2901

2897:                                             ; preds = %2870
  %2898 = landingpad { ptr, i32 }
          cleanup
  %2899 = extractvalue { ptr, i32 } %2898, 0
  store ptr %2899, ptr %13, align 8
  %2900 = extractvalue { ptr, i32 } %2898, 1
  store i32 %2900, ptr %14, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %244) #10
  br label %2901

2901:                                             ; preds = %2897, %2893
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %245) #10
  br label %2902

2902:                                             ; preds = %2901, %2889
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %246) #10
  br label %2903

2903:                                             ; preds = %2902, %2885
  %2904 = load i1, ptr %247, align 1
  br i1 %2904, label %2905, label %2906

2905:                                             ; preds = %2903
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2854) #10
  br label %2906

2906:                                             ; preds = %2905, %2903
  br label %2907

2907:                                             ; preds = %2906, %2881
  call void @llvm.lifetime.end.p0(i64 152, ptr %244) #10
  br label %2917

2908:                                             ; preds = %2871
  %2909 = landingpad { ptr, i32 }
          cleanup
  %2910 = extractvalue { ptr, i32 } %2909, 0
  store ptr %2910, ptr %13, align 8
  %2911 = extractvalue { ptr, i32 } %2909, 1
  store i32 %2911, ptr %14, align 4
  br label %2916

2912:                                             ; preds = %2875
  %2913 = landingpad { ptr, i32 }
          cleanup
  %2914 = extractvalue { ptr, i32 } %2913, 0
  store ptr %2914, ptr %13, align 8
  %2915 = extractvalue { ptr, i32 } %2913, 1
  store i32 %2915, ptr %14, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %248) #10
  br label %2916

2916:                                             ; preds = %2912, %2908
  call void @llvm.lifetime.end.p0(i64 168, ptr %248) #10
  br label %2917

2917:                                             ; preds = %2916, %2907, %2847
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #10
  br label %3029

2918:                                             ; preds = %2846
  br label %2919

2919:                                             ; preds = %2918
  store i8 0, ptr %242, align 1, !tbaa !11
  br label %2834, !llvm.loop !154

2920:                                             ; preds = %2837
  br label %3027

2921:                                             ; preds = %2781
  call void @llvm.lifetime.start.p0(i64 1, ptr %249) #10
  store i8 1, ptr %249, align 1, !tbaa !11
  br label %2922

2922:                                             ; preds = %3025, %2921
  %2923 = load i8, ptr %249, align 1, !tbaa !11, !range !13, !noundef !14
  %2924 = trunc i8 %2923 to i1
  br i1 %2924, label %2926, label %2925

2925:                                             ; preds = %2922
  store i32 304, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #10
  br label %3026

2926:                                             ; preds = %2922
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #10
  %2927 = load ptr, ptr %237, align 8, !tbaa !5
  %2928 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty18as_EnumConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %2927)
          to label %2929 unwind label %2935

2929:                                             ; preds = %2926
  store ptr %2928, ptr %250, align 8, !tbaa !5
  br label %2930

2930:                                             ; preds = %2976, %2929
  %2931 = load ptr, ptr %250, align 8, !tbaa !5
  %2932 = load i8, ptr %249, align 1, !tbaa !11, !range !13, !noundef !14
  %2933 = trunc i8 %2932 to i1
  br i1 %2933, label %2939, label %2934

2934:                                             ; preds = %2930
  store i32 307, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #10
  br label %3024

2935:                                             ; preds = %2926
  %2936 = landingpad { ptr, i32 }
          cleanup
  %2937 = extractvalue { ptr, i32 } %2936, 0
  store ptr %2937, ptr %13, align 8
  %2938 = extractvalue { ptr, i32 } %2936, 1
  store i32 %2938, ptr %14, align 4
  br label %3023

2939:                                             ; preds = %2930
  call void @llvm.lifetime.start.p0(i64 32, ptr %251) #10
  %2940 = load ptr, ptr %225, align 8, !tbaa !5
  %2941 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %2940, i32 0, i32 0
  %2942 = getelementptr inbounds %"class.HIR::Path", ptr %2941, i32 0, i32 0
  %2943 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %2942)
          to label %2944 unwind label %2977

2944:                                             ; preds = %2939
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %251, ptr noundef nonnull align 8 dereferenceable(32) %2943)
          to label %2945 unwind label %2977

2945:                                             ; preds = %2944
  %2946 = getelementptr inbounds %"class.HIR::GenericPath", ptr %251, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePath13pop_componentEv(ptr dead_on_unwind writable sret(%class.RcString) align 8 %252, ptr noundef nonnull align 8 dereferenceable(8) %2946)
          to label %2947 unwind label %2981

2947:                                             ; preds = %2945
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %252) #10
  %2948 = load ptr, ptr %26, align 8, !tbaa !5
  %2949 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %2948, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %253) #10
  %2950 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %254, i32 0, i32 0
  %2951 = load ptr, ptr %198, align 8, !tbaa !5
  %2952 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2951, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2950, ptr noundef nonnull align 8 dereferenceable(32) %2952)
          to label %2953 unwind label %2985

2953:                                             ; preds = %2947
  store i1 true, ptr %256, align 1
  %2954 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %254, i32 0, i32 1
  %2955 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %255, i32 0, i32 0
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2955, ptr noundef nonnull align 8 dereferenceable(32) %251)
          to label %2956 unwind label %2989

2956:                                             ; preds = %2953
  %2957 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %255, i32 0, i32 1
  %2958 = load ptr, ptr %250, align 8, !tbaa !5
  %2959 = getelementptr inbounds %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor", ptr %2958, i32 0, i32 1
  %2960 = load i64, ptr %2959, align 8, !tbaa !155
  %2961 = trunc i64 %2960 to i32
  store i32 %2961, ptr %2957, align 8, !tbaa !157
  %2962 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %255, i32 0, i32 2
  %2963 = load ptr, ptr %198, align 8, !tbaa !5
  %2964 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2963, i32 0, i32 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %2962, ptr noundef nonnull align 8 dereferenceable(24) %2964) #10
  invoke void @_ZN3MIR6RValue16make_EnumVariantENS0_16Data_EnumVariantE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %2954, ptr noundef %255)
          to label %2965 unwind label %2993

2965:                                             ; preds = %2956
  store i1 false, ptr %256, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %253, ptr noundef %254)
          to label %2966 unwind label %2997

2966:                                             ; preds = %2965
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2949, ptr noundef nonnull align 8 dereferenceable(152) %253)
          to label %2967 unwind label %3001

2967:                                             ; preds = %2966
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %253) #10
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %254) #10
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %255) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %253) #10
  call void @llvm.lifetime.start.p0(i64 168, ptr %257) #10
  %2968 = load ptr, ptr %198, align 8, !tbaa !5
  %2969 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2968, i32 0, i32 0
  %2970 = load i32, ptr %2969, align 8, !tbaa !139
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %257, i32 noundef %2970)
          to label %2971 unwind label %3012

2971:                                             ; preds = %2967
  %2972 = load ptr, ptr %26, align 8, !tbaa !5
  %2973 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %2972, i32 0, i32 1
  %2974 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %2973, ptr noundef nonnull align 8 dereferenceable(168) %257)
          to label %2975 unwind label %3016

2975:                                             ; preds = %2971
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %257) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %257) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #10
  br label %2976

2976:                                             ; preds = %2975
  store i8 0, ptr %249, align 1, !tbaa !11
  br label %2930, !llvm.loop !159

2977:                                             ; preds = %2944, %2939
  %2978 = landingpad { ptr, i32 }
          cleanup
  %2979 = extractvalue { ptr, i32 } %2978, 0
  store ptr %2979, ptr %13, align 8
  %2980 = extractvalue { ptr, i32 } %2978, 1
  store i32 %2980, ptr %14, align 4
  br label %3022

2981:                                             ; preds = %2945
  %2982 = landingpad { ptr, i32 }
          cleanup
  %2983 = extractvalue { ptr, i32 } %2982, 0
  store ptr %2983, ptr %13, align 8
  %2984 = extractvalue { ptr, i32 } %2982, 1
  store i32 %2984, ptr %14, align 4
  br label %3021

2985:                                             ; preds = %2947
  %2986 = landingpad { ptr, i32 }
          cleanup
  %2987 = extractvalue { ptr, i32 } %2986, 0
  store ptr %2987, ptr %13, align 8
  %2988 = extractvalue { ptr, i32 } %2986, 1
  store i32 %2988, ptr %14, align 4
  br label %3011

2989:                                             ; preds = %2953
  %2990 = landingpad { ptr, i32 }
          cleanup
  %2991 = extractvalue { ptr, i32 } %2990, 0
  store ptr %2991, ptr %13, align 8
  %2992 = extractvalue { ptr, i32 } %2990, 1
  store i32 %2992, ptr %14, align 4
  br label %3007

2993:                                             ; preds = %2956
  %2994 = landingpad { ptr, i32 }
          cleanup
  %2995 = extractvalue { ptr, i32 } %2994, 0
  store ptr %2995, ptr %13, align 8
  %2996 = extractvalue { ptr, i32 } %2994, 1
  store i32 %2996, ptr %14, align 4
  br label %3006

2997:                                             ; preds = %2965
  %2998 = landingpad { ptr, i32 }
          cleanup
  %2999 = extractvalue { ptr, i32 } %2998, 0
  store ptr %2999, ptr %13, align 8
  %3000 = extractvalue { ptr, i32 } %2998, 1
  store i32 %3000, ptr %14, align 4
  br label %3005

3001:                                             ; preds = %2966
  %3002 = landingpad { ptr, i32 }
          cleanup
  %3003 = extractvalue { ptr, i32 } %3002, 0
  store ptr %3003, ptr %13, align 8
  %3004 = extractvalue { ptr, i32 } %3002, 1
  store i32 %3004, ptr %14, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %253) #10
  br label %3005

3005:                                             ; preds = %3001, %2997
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %254) #10
  br label %3006

3006:                                             ; preds = %3005, %2993
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %255) #10
  br label %3007

3007:                                             ; preds = %3006, %2989
  %3008 = load i1, ptr %256, align 1
  br i1 %3008, label %3009, label %3010

3009:                                             ; preds = %3007
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2950) #10
  br label %3010

3010:                                             ; preds = %3009, %3007
  br label %3011

3011:                                             ; preds = %3010, %2985
  call void @llvm.lifetime.end.p0(i64 152, ptr %253) #10
  br label %3021

3012:                                             ; preds = %2967
  %3013 = landingpad { ptr, i32 }
          cleanup
  %3014 = extractvalue { ptr, i32 } %3013, 0
  store ptr %3014, ptr %13, align 8
  %3015 = extractvalue { ptr, i32 } %3013, 1
  store i32 %3015, ptr %14, align 4
  br label %3020

3016:                                             ; preds = %2971
  %3017 = landingpad { ptr, i32 }
          cleanup
  %3018 = extractvalue { ptr, i32 } %3017, 0
  store ptr %3018, ptr %13, align 8
  %3019 = extractvalue { ptr, i32 } %3017, 1
  store i32 %3019, ptr %14, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %257) #10
  br label %3020

3020:                                             ; preds = %3016, %3012
  call void @llvm.lifetime.end.p0(i64 168, ptr %257) #10
  br label %3021

3021:                                             ; preds = %3020, %3011, %2981
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #10
  br label %3022

3022:                                             ; preds = %3021, %2977
  call void @llvm.lifetime.end.p0(i64 32, ptr %251) #10
  br label %3023

3023:                                             ; preds = %3022, %2935
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #10
  br label %3029

3024:                                             ; preds = %2934
  br label %3025

3025:                                             ; preds = %3024
  store i8 0, ptr %249, align 1, !tbaa !11
  br label %2922, !llvm.loop !160

3026:                                             ; preds = %2925
  br label %3027

3027:                                             ; preds = %3026, %2920, %2832, %2781
  br label %3028

3028:                                             ; preds = %3027
  store i8 0, ptr %236, align 1, !tbaa !11
  br label %2774, !llvm.loop !161

3029:                                             ; preds = %3023, %2917, %2829, %2782
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %236) #10
  br label %3033

3030:                                             ; preds = %2777
  br label %3031

3031:                                             ; preds = %3030
  store i8 0, ptr %236, align 1, !tbaa !11
  br label %2767, !llvm.loop !162

3032:                                             ; preds = %2770
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  br label %3037

3033:                                             ; preds = %3029, %2765, %2717
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %231) #10
  br label %3034

3034:                                             ; preds = %3033, %2713
  call void @llvm.lifetime.end.p0(i64 32, ptr %231) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #10
  br label %3035

3035:                                             ; preds = %3034, %2709
  call void @llvm.lifetime.end.p0(i64 32, ptr %230) #10
  br label %3036

3036:                                             ; preds = %3035, %2677, %2673
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  br label %3038

3037:                                             ; preds = %3032, %2650
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #10
  br label %3040

3038:                                             ; preds = %3036, %2669
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  br label %3039

3039:                                             ; preds = %3038, %2665
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #10
  br label %3041

3040:                                             ; preds = %3037, %2613, %2603
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #10
  br label %3042

3041:                                             ; preds = %3039, %2598, %2373, %2333
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #10
  br label %3082

3042:                                             ; preds = %3040, %2244
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #10
  %3043 = load ptr, ptr %198, align 8, !tbaa !5
  %3044 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3043, i32 0, i32 3
  %3045 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget12is_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %3044)
          to label %3046 unwind label %3083

3046:                                             ; preds = %3042
  br i1 %3045, label %3047, label %3128

3047:                                             ; preds = %3046
  %3048 = load ptr, ptr %198, align 8, !tbaa !5
  %3049 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3048, i32 0, i32 3
  %3050 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %3049)
          to label %3051 unwind label %3083

3051:                                             ; preds = %3047
  %3052 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3050, i32 0, i32 0
  %3053 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3052, ptr noundef @.str.25)
          to label %3054 unwind label %3083

3054:                                             ; preds = %3051
  br i1 %3053, label %3055, label %3128

3055:                                             ; preds = %3054
  %3056 = load ptr, ptr %26, align 8, !tbaa !5
  %3057 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %3056, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %258) #10
  %3058 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %259, i32 0, i32 0
  %3059 = load ptr, ptr %198, align 8, !tbaa !5
  %3060 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3059, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %3058, ptr noundef nonnull align 8 dereferenceable(32) %3060)
          to label %3061 unwind label %3087

3061:                                             ; preds = %3055
  store i1 true, ptr %262, align 1
  %3062 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %259, i32 0, i32 1
  %3063 = load ptr, ptr %198, align 8, !tbaa !5
  %3064 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3063, i32 0, i32 4
  %3065 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3064, i64 noundef 0)
          to label %3066 unwind label %3091

3066:                                             ; preds = %3061
  %3067 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %3065)
          to label %3068 unwind label %3091

3068:                                             ; preds = %3066
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull align 8 dereferenceable(32) %3067)
          to label %3069 unwind label %3091

3069:                                             ; preds = %3068
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %260, ptr noundef %261)
          to label %3070 unwind label %3095

3070:                                             ; preds = %3069
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %3062, ptr noundef %260)
          to label %3071 unwind label %3099

3071:                                             ; preds = %3070
  store i1 false, ptr %262, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %258, ptr noundef %259)
          to label %3072 unwind label %3103

3072:                                             ; preds = %3071
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3057, ptr noundef nonnull align 8 dereferenceable(152) %258)
          to label %3073 unwind label %3107

3073:                                             ; preds = %3072
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %258) #10
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %259) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %258) #10
  call void @llvm.lifetime.start.p0(i64 168, ptr %263) #10
  %3074 = load ptr, ptr %198, align 8, !tbaa !5
  %3075 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3074, i32 0, i32 0
  %3076 = load i32, ptr %3075, align 8, !tbaa !139
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %263, i32 noundef %3076)
          to label %3077 unwind label %3119

3077:                                             ; preds = %3073
  %3078 = load ptr, ptr %26, align 8, !tbaa !5
  %3079 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %3078, i32 0, i32 1
  %3080 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %3079, ptr noundef nonnull align 8 dereferenceable(168) %263)
          to label %3081 unwind label %3123

3081:                                             ; preds = %3077
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %263) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %263) #10
  br label %3128

3082:                                             ; preds = %3041, %2329
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #10
  br label %3247

3083:                                             ; preds = %3137, %3133, %3128, %3051, %3047, %3042
  %3084 = landingpad { ptr, i32 }
          cleanup
  %3085 = extractvalue { ptr, i32 } %3084, 0
  store ptr %3085, ptr %13, align 8
  %3086 = extractvalue { ptr, i32 } %3084, 1
  store i32 %3086, ptr %14, align 4
  br label %3247

3087:                                             ; preds = %3055
  %3088 = landingpad { ptr, i32 }
          cleanup
  %3089 = extractvalue { ptr, i32 } %3088, 0
  store ptr %3089, ptr %13, align 8
  %3090 = extractvalue { ptr, i32 } %3088, 1
  store i32 %3090, ptr %14, align 4
  br label %3118

3091:                                             ; preds = %3068, %3066, %3061
  %3092 = landingpad { ptr, i32 }
          cleanup
  %3093 = extractvalue { ptr, i32 } %3092, 0
  store ptr %3093, ptr %13, align 8
  %3094 = extractvalue { ptr, i32 } %3092, 1
  store i32 %3094, ptr %14, align 4
  br label %3114

3095:                                             ; preds = %3069
  %3096 = landingpad { ptr, i32 }
          cleanup
  %3097 = extractvalue { ptr, i32 } %3096, 0
  store ptr %3097, ptr %13, align 8
  %3098 = extractvalue { ptr, i32 } %3096, 1
  store i32 %3098, ptr %14, align 4
  br label %3113

3099:                                             ; preds = %3070
  %3100 = landingpad { ptr, i32 }
          cleanup
  %3101 = extractvalue { ptr, i32 } %3100, 0
  store ptr %3101, ptr %13, align 8
  %3102 = extractvalue { ptr, i32 } %3100, 1
  store i32 %3102, ptr %14, align 4
  br label %3112

3103:                                             ; preds = %3071
  %3104 = landingpad { ptr, i32 }
          cleanup
  %3105 = extractvalue { ptr, i32 } %3104, 0
  store ptr %3105, ptr %13, align 8
  %3106 = extractvalue { ptr, i32 } %3104, 1
  store i32 %3106, ptr %14, align 4
  br label %3111

3107:                                             ; preds = %3072
  %3108 = landingpad { ptr, i32 }
          cleanup
  %3109 = extractvalue { ptr, i32 } %3108, 0
  store ptr %3109, ptr %13, align 8
  %3110 = extractvalue { ptr, i32 } %3108, 1
  store i32 %3110, ptr %14, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %258) #10
  br label %3111

3111:                                             ; preds = %3107, %3103
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %259) #10
  br label %3112

3112:                                             ; preds = %3111, %3099
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #10
  br label %3113

3113:                                             ; preds = %3112, %3095
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #10
  br label %3114

3114:                                             ; preds = %3113, %3091
  %3115 = load i1, ptr %262, align 1
  br i1 %3115, label %3116, label %3117

3116:                                             ; preds = %3114
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3058) #10
  br label %3117

3117:                                             ; preds = %3116, %3114
  br label %3118

3118:                                             ; preds = %3117, %3087
  call void @llvm.lifetime.end.p0(i64 152, ptr %258) #10
  br label %3247

3119:                                             ; preds = %3073
  %3120 = landingpad { ptr, i32 }
          cleanup
  %3121 = extractvalue { ptr, i32 } %3120, 0
  store ptr %3121, ptr %13, align 8
  %3122 = extractvalue { ptr, i32 } %3120, 1
  store i32 %3122, ptr %14, align 4
  br label %3127

3123:                                             ; preds = %3077
  %3124 = landingpad { ptr, i32 }
          cleanup
  %3125 = extractvalue { ptr, i32 } %3124, 0
  store ptr %3125, ptr %13, align 8
  %3126 = extractvalue { ptr, i32 } %3124, 1
  store i32 %3126, ptr %14, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %263) #10
  br label %3127

3127:                                             ; preds = %3123, %3119
  call void @llvm.lifetime.end.p0(i64 168, ptr %263) #10
  br label %3247

3128:                                             ; preds = %3081, %3054, %3046
  %3129 = load ptr, ptr %198, align 8, !tbaa !5
  %3130 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3129, i32 0, i32 3
  %3131 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget12is_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %3130)
          to label %3132 unwind label %3083

3132:                                             ; preds = %3128
  br i1 %3131, label %3133, label %3246

3133:                                             ; preds = %3132
  %3134 = load ptr, ptr %198, align 8, !tbaa !5
  %3135 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3134, i32 0, i32 3
  %3136 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %3135)
          to label %3137 unwind label %3083

3137:                                             ; preds = %3133
  %3138 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %3136, i32 0, i32 0
  %3139 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3138, ptr noundef @.str.26)
          to label %3140 unwind label %3083

3140:                                             ; preds = %3137
  br i1 %3139, label %3141, label %3246

3141:                                             ; preds = %3140
  %3142 = load ptr, ptr %26, align 8, !tbaa !5
  %3143 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %3142, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %264) #10
  %3144 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %265, i32 0, i32 0
  %3145 = load ptr, ptr %198, align 8, !tbaa !5
  %3146 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3145, i32 0, i32 4
  %3147 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3146, i64 noundef 0)
          to label %3148 unwind label %3183

3148:                                             ; preds = %3141
  %3149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %3147)
          to label %3150 unwind label %3183

3150:                                             ; preds = %3148
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %266, ptr noundef nonnull align 8 dereferenceable(32) %3149)
          to label %3151 unwind label %3183

3151:                                             ; preds = %3150
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %3144, ptr noundef %266)
          to label %3152 unwind label %3187

3152:                                             ; preds = %3151
  store i1 true, ptr %268, align 1
  %3153 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %265, i32 0, i32 1
  %3154 = load ptr, ptr %198, align 8, !tbaa !5
  %3155 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3154, i32 0, i32 4
  %3156 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3155, i64 noundef 1)
          to label %3157 unwind label %3191

3157:                                             ; preds = %3152
  %3158 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %3156)
          to label %3159 unwind label %3191

3159:                                             ; preds = %3157
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %267, ptr noundef nonnull align 8 dereferenceable(32) %3158)
          to label %3160 unwind label %3191

3160:                                             ; preds = %3159
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %3153, ptr noundef %267)
          to label %3161 unwind label %3195

3161:                                             ; preds = %3160
  store i1 false, ptr %268, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %264, ptr noundef %265)
          to label %3162 unwind label %3199

3162:                                             ; preds = %3161
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3143, ptr noundef nonnull align 8 dereferenceable(152) %264)
          to label %3163 unwind label %3203

3163:                                             ; preds = %3162
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %264) #10
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %265) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #10
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %264) #10
  %3164 = load ptr, ptr %26, align 8, !tbaa !5
  %3165 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %3164, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 152, ptr %269) #10
  %3166 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %270, i32 0, i32 0
  %3167 = load ptr, ptr %198, align 8, !tbaa !5
  %3168 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3167, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %3166, ptr noundef nonnull align 8 dereferenceable(32) %3168)
          to label %3169 unwind label %3215

3169:                                             ; preds = %3163
  store i1 true, ptr %272, align 1
  %3170 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %270, i32 0, i32 1
  %3171 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %271, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %3171, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3171) #10
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %3170, ptr noundef %271)
          to label %3172 unwind label %3219

3172:                                             ; preds = %3169
  store i1 false, ptr %272, align 1
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %269, ptr noundef %270)
          to label %3173 unwind label %3223

3173:                                             ; preds = %3172
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3165, ptr noundef nonnull align 8 dereferenceable(152) %269)
          to label %3174 unwind label %3227

3174:                                             ; preds = %3173
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %269) #10
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %270) #10
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %271) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %269) #10
  call void @llvm.lifetime.start.p0(i64 168, ptr %273) #10
  %3175 = load ptr, ptr %198, align 8, !tbaa !5
  %3176 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %3175, i32 0, i32 0
  %3177 = load i32, ptr %3176, align 8, !tbaa !139
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %273, i32 noundef %3177)
          to label %3178 unwind label %3237

3178:                                             ; preds = %3174
  %3179 = load ptr, ptr %26, align 8, !tbaa !5
  %3180 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %3179, i32 0, i32 1
  %3181 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %3180, ptr noundef nonnull align 8 dereferenceable(168) %273)
          to label %3182 unwind label %3241

3182:                                             ; preds = %3178
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %273) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %273) #10
  br label %3246

3183:                                             ; preds = %3150, %3148, %3141
  %3184 = landingpad { ptr, i32 }
          cleanup
  %3185 = extractvalue { ptr, i32 } %3184, 0
  store ptr %3185, ptr %13, align 8
  %3186 = extractvalue { ptr, i32 } %3184, 1
  store i32 %3186, ptr %14, align 4
  br label %3214

3187:                                             ; preds = %3151
  %3188 = landingpad { ptr, i32 }
          cleanup
  %3189 = extractvalue { ptr, i32 } %3188, 0
  store ptr %3189, ptr %13, align 8
  %3190 = extractvalue { ptr, i32 } %3188, 1
  store i32 %3190, ptr %14, align 4
  br label %3213

3191:                                             ; preds = %3159, %3157, %3152
  %3192 = landingpad { ptr, i32 }
          cleanup
  %3193 = extractvalue { ptr, i32 } %3192, 0
  store ptr %3193, ptr %13, align 8
  %3194 = extractvalue { ptr, i32 } %3192, 1
  store i32 %3194, ptr %14, align 4
  br label %3209

3195:                                             ; preds = %3160
  %3196 = landingpad { ptr, i32 }
          cleanup
  %3197 = extractvalue { ptr, i32 } %3196, 0
  store ptr %3197, ptr %13, align 8
  %3198 = extractvalue { ptr, i32 } %3196, 1
  store i32 %3198, ptr %14, align 4
  br label %3208

3199:                                             ; preds = %3161
  %3200 = landingpad { ptr, i32 }
          cleanup
  %3201 = extractvalue { ptr, i32 } %3200, 0
  store ptr %3201, ptr %13, align 8
  %3202 = extractvalue { ptr, i32 } %3200, 1
  store i32 %3202, ptr %14, align 4
  br label %3207

3203:                                             ; preds = %3162
  %3204 = landingpad { ptr, i32 }
          cleanup
  %3205 = extractvalue { ptr, i32 } %3204, 0
  store ptr %3205, ptr %13, align 8
  %3206 = extractvalue { ptr, i32 } %3204, 1
  store i32 %3206, ptr %14, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %264) #10
  br label %3207

3207:                                             ; preds = %3203, %3199
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %265) #10
  br label %3208

3208:                                             ; preds = %3207, %3195
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %267) #10
  br label %3209

3209:                                             ; preds = %3208, %3191
  %3210 = load i1, ptr %268, align 1
  br i1 %3210, label %3211, label %3212

3211:                                             ; preds = %3209
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3144) #10
  br label %3212

3212:                                             ; preds = %3211, %3209
  br label %3213

3213:                                             ; preds = %3212, %3187
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #10
  br label %3214

3214:                                             ; preds = %3213, %3183
  call void @llvm.lifetime.end.p0(i64 152, ptr %264) #10
  br label %3247

3215:                                             ; preds = %3163
  %3216 = landingpad { ptr, i32 }
          cleanup
  %3217 = extractvalue { ptr, i32 } %3216, 0
  store ptr %3217, ptr %13, align 8
  %3218 = extractvalue { ptr, i32 } %3216, 1
  store i32 %3218, ptr %14, align 4
  br label %3236

3219:                                             ; preds = %3169
  %3220 = landingpad { ptr, i32 }
          cleanup
  %3221 = extractvalue { ptr, i32 } %3220, 0
  store ptr %3221, ptr %13, align 8
  %3222 = extractvalue { ptr, i32 } %3220, 1
  store i32 %3222, ptr %14, align 4
  br label %3232

3223:                                             ; preds = %3172
  %3224 = landingpad { ptr, i32 }
          cleanup
  %3225 = extractvalue { ptr, i32 } %3224, 0
  store ptr %3225, ptr %13, align 8
  %3226 = extractvalue { ptr, i32 } %3224, 1
  store i32 %3226, ptr %14, align 4
  br label %3231

3227:                                             ; preds = %3173
  %3228 = landingpad { ptr, i32 }
          cleanup
  %3229 = extractvalue { ptr, i32 } %3228, 0
  store ptr %3229, ptr %13, align 8
  %3230 = extractvalue { ptr, i32 } %3228, 1
  store i32 %3230, ptr %14, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %269) #10
  br label %3231

3231:                                             ; preds = %3227, %3223
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %270) #10
  br label %3232

3232:                                             ; preds = %3231, %3219
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %271) #10
  %3233 = load i1, ptr %272, align 1
  br i1 %3233, label %3234, label %3235

3234:                                             ; preds = %3232
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3166) #10
  br label %3235

3235:                                             ; preds = %3234, %3232
  br label %3236

3236:                                             ; preds = %3235, %3215
  call void @llvm.lifetime.end.p0(i64 152, ptr %269) #10
  br label %3247

3237:                                             ; preds = %3174
  %3238 = landingpad { ptr, i32 }
          cleanup
  %3239 = extractvalue { ptr, i32 } %3238, 0
  store ptr %3239, ptr %13, align 8
  %3240 = extractvalue { ptr, i32 } %3238, 1
  store i32 %3240, ptr %14, align 4
  br label %3245

3241:                                             ; preds = %3178
  %3242 = landingpad { ptr, i32 }
          cleanup
  %3243 = extractvalue { ptr, i32 } %3242, 0
  store ptr %3243, ptr %13, align 8
  %3244 = extractvalue { ptr, i32 } %3242, 1
  store i32 %3244, ptr %14, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %273) #10
  br label %3245

3245:                                             ; preds = %3241, %3237
  call void @llvm.lifetime.end.p0(i64 168, ptr %273) #10
  br label %3247

3246:                                             ; preds = %3182, %3140, %3132
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #10
  br label %3248

3247:                                             ; preds = %3245, %3236, %3214, %3127, %3118, %3083, %3082
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #10
  br label %3252

3248:                                             ; preds = %3246, %2236
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #10
  invoke void @_ZN10MirMutator11flush_blockEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %3249 unwind label %1954

3249:                                             ; preds = %3248
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %3250

3250:                                             ; preds = %3249
  %3251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br label %300

3252:                                             ; preds = %3247, %2325
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #10
  br label %3253

3253:                                             ; preds = %3252, %2229, %1954, %1947
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %3261

3254:                                             ; preds = %302
  call void @llvm.lifetime.start.p0(i64 56, ptr %274) #10
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %274) #10
  %3255 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(96) %3255)
          to label %3256 unwind label %3257

3256:                                             ; preds = %3254
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %274) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %274) #10
  call void @_ZN10MirMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #10
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %17) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %17) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  ret void

3257:                                             ; preds = %3254
  %3258 = landingpad { ptr, i32 }
          cleanup
  %3259 = extractvalue { ptr, i32 } %3258, 0
  store ptr %3259, ptr %13, align 8
  %3260 = extractvalue { ptr, i32 } %3258, 1
  store i32 %3260, ptr %14, align 4
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %274) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %274) #10
  br label %3261

3261:                                             ; preds = %3257, %3253
  call void @_ZN10MirMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  br label %3262

3262:                                             ; preds = %3261, %320
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #10
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %17) #10
  br label %3263

3263:                                             ; preds = %3262, %319
  call void @llvm.lifetime.end.p0(i64 120, ptr %17) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  br label %3264

3264:                                             ; preds = %3263, %307, %303
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %3265

3265:                                             ; preds = %3264
  %3266 = load ptr, ptr %13, align 8
  %3267 = load i32, ptr %14, align 4
  %3268 = insertvalue { ptr, i32 } poison, ptr %3266, 0
  %3269 = insertvalue { ptr, i32 } %3268, i32 %3267, 1
  resume { ptr, i32 } %3269

3270:                                             ; preds = %1327, %1137
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

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

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

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

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

declare noundef zeroext i1 @_ZN3MIR5visit17visit_mir_lvaluesERKNS_9StatementESt8functionIFbRKNS_6LValueENS0_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) #2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(168)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) #7 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv() #0 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(112)) #0 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZN10MirMutator10flush_stmtEv(ptr noundef nonnull align 8 dereferenceable(40)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) #7 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(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(24), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

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

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR25TypeData_NamedFunction_Ty3tagEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152)) #0 align 2

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

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

declare void @_ZN3HIR10SimplePath13pop_componentEv(ptr dead_on_unwind writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { 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 #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }
attributes #12 = { 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, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !16}
!48 = !{!49, !49, i64 0}
!49 = !{!"long", !7, i64 0}
!50 = !{!51, !53, i64 16}
!51 = !{!"_ZTSN3MIR8Constant9Data_UintE", !52, i64 0, !53, i64 16}
!52 = !{!"_ZTS4U128", !49, i64 0, !49, i64 8}
!53 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!54 = distinct !{!54, !16}
!55 = distinct !{!55, !16}
!56 = distinct !{!56, !16}
!57 = distinct !{!57, !16}
!58 = distinct !{!58, !16}
!59 = distinct !{!59, !16}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !16}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !16}
!64 = distinct !{!64, !16}
!65 = distinct !{!65, !16}
!66 = distinct !{!66, !16}
!67 = distinct !{!67, !16}
!68 = distinct !{!68, !16}
!69 = distinct !{!69, !16}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !16}
!72 = distinct !{!72, !16}
!73 = distinct !{!73, !16}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !16}
!76 = !{i64 0, i64 8, !5}
!77 = distinct !{!77, !16}
!78 = distinct !{!78, !16}
!79 = distinct !{!79, !16}
!80 = distinct !{!80, !16}
!81 = distinct !{!81, !16}
!82 = distinct !{!82, !16}
!83 = distinct !{!83, !16}
!84 = distinct !{!84, !16}
!85 = distinct !{!85, !16}
!86 = distinct !{!86, !16}
!87 = distinct !{!87, !16}
!88 = distinct !{!88, !16}
!89 = distinct !{!89, !16}
!90 = distinct !{!90, !16}
!91 = distinct !{!91, !16}
!92 = distinct !{!92, !16}
!93 = distinct !{!93, !16}
!94 = distinct !{!94, !16}
!95 = distinct !{!95, !16}
!96 = distinct !{!96, !16}
!97 = distinct !{!97, !16}
!98 = !{!99, !6, i64 136}
!99 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !100, i64 0, !125, i64 144, !129, i64 168}
!100 = !{!"_ZTSN3HIR9TraitPathE", !101, i64 0, !107, i64 8, !114, i64 40, !122, i64 88, !6, i64 136}
!101 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !102, i64 0}
!102 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !103, i64 0}
!103 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !105, i64 0}
!105 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !106, i64 0}
!106 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!107 = !{!"_ZTSN3HIR11GenericPathE", !108, i64 0, !110, i64 8}
!108 = !{!"_ZTSN3HIR10SimplePathE", !109, i64 0}
!109 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!110 = !{!"_ZTSN3HIR10PathParamsE", !111, i64 0, !112, i64 8, !113, i64 16}
!111 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!112 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!113 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!114 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !115, i64 0}
!115 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !116, i64 0}
!116 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !117, i64 0, !119, i64 8}
!117 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !118, i64 0}
!118 = !{!"_ZTSSt4lessI8RcStringE"}
!119 = !{!"_ZTSSt15_Rb_tree_header", !120, i64 0, !49, i64 32}
!120 = !{!"_ZTSSt18_Rb_tree_node_base", !121, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!121 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!122 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !123, i64 0}
!123 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !124, i64 0}
!124 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !117, i64 0, !119, i64 8}
!125 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !126, i64 0}
!126 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !127, i64 0}
!127 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !128, i64 0}
!128 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!129 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!130 = distinct !{!130, !16}
!131 = !{!132, !6, i64 8}
!132 = !{!"_ZTSN3MIR11TypeResolveE", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !133, 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}
!133 = !{!"_ZTS9FmtLambda", !134, i64 0}
!134 = !{!"_ZTSSt8functionIFvRSoEE", !135, i64 0, !6, i64 24}
!135 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!136 = distinct !{!136, !16}
!137 = distinct !{!137, !16}
!138 = distinct !{!138, !16}
!139 = !{!140, !10, i64 0}
!140 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !10, i64 0, !10, i64 4, !141, i64 8, !147, i64 40, !149, i64 136}
!141 = !{!"_ZTSN3MIR6LValueE", !142, i64 0, !143, i64 8}
!142 = !{!"_ZTSN3MIR6LValue7StorageE", !49, i64 0}
!143 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !144, i64 0}
!144 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !145, i64 0}
!145 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !146, i64 0}
!146 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!147 = !{!"_ZTSN3MIR10CallTargetE", !148, i64 0, !7, i64 8}
!148 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!149 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !150, i64 0}
!150 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !151, i64 0}
!151 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !152, i64 0}
!152 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!153 = distinct !{!153, !16}
!154 = distinct !{!154, !16}
!155 = !{!156, !49, i64 8}
!156 = !{!"_ZTSN3HIR25TypeData_NamedFunction_Ty20Data_EnumConstructorE", !6, i64 0, !49, i64 8}
!157 = !{!158, !10, i64 32}
!158 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !107, i64 0, !10, i64 32, !149, i64 40}
!159 = distinct !{!159, !16}
!160 = distinct !{!160, !16}
!161 = distinct !{!161, !16}
!162 = distinct !{!162, !16}


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

%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.68" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.68" = type { %"struct.std::_Vector_base.69" }
%"struct.std::_Vector_base.69" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, 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::TypeRef" = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%struct.Span = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.463 = type { ptr }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.464 = type { ptr }
%class.MirMutator = type { ptr, i32, i32, %"class.std::vector.136" }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.471" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.482" = type { ptr }
%"class.std::function.483" = type { %"class.std::_Function_base", ptr }
%class.anon.486 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.487" = type { ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"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 }
%"class.__gnu_cxx::__normal_iterator.488" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.491" = type { ptr }
%"class.MIR::LValue::Wrapper" = type { i32 }
%class.anon.508 = type { ptr }
%class.anon.509 = type { ptr }
%class.anon.510 = type { ptr }
%class.anon.511 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.512" = 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.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.513 = type { i8 }
%class.anon.515 = type { ptr }
%"class.std::function.516" = type { %"class.std::_Function_base", ptr }
%class.anon.519 = type { i8 }
%class.anon.521 = type { i8 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.44" }
%"class.HIR::GenericParams" = type { %"class.std::vector.24", %"class.std::vector.29", %"class.std::vector.34", %"class.std::vector.39" }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.523 = type { i8 }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.92" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.92" }
%struct.Visitor = type { %"class.MIR::visit::VisitorMut", %"class.std::set" }
%"class.MIR::visit::VisitorMut" = type { %"class.MIR::visit::VisitorBase" }
%"class.MIR::visit::VisitorBase" = type { ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.525" }
%"class.std::_Rb_tree.525" = type { %"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, HIR::TypeRef, std::_Identity<HIR::TypeRef>, 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 }

@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.18 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [12 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [54 x i8], align 1
@__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [146 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z23MIR_Cleanup_GetConstantRKN3MIR11TypeResolveERKN3HIR4PathERNS3_7TypeRefER14MonomorphState(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) local_unnamed_addr #0 align 2

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

; Function Attrs: 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 #7 align 2

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

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

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(172), ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca %struct.Span, align 8
  %7 = alloca %class.TraceLog, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.463, align 8
  %10 = alloca %"class.MIR::TypeResolve", align 8
  %11 = alloca %struct.FmtLambda, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.464, align 8
  %14 = alloca %class.MirMutator, align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.471", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.471", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.482", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.482", align 8
  %19 = alloca %"class.HIR::TypeRef", align 8
  %20 = alloca %"class.std::function.483", align 8
  %21 = alloca %class.anon.486, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.487", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.487", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.482", align 8
  %25 = alloca %"class.MIR::Terminator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.488", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.488", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.488", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.488", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.491", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.491", align 8
  %32 = alloca %"class.MIR::LValue::Wrapper", align 4
  %33 = alloca %"class.HIR::TypeRef", align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.508, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.509, align 8
  %39 = alloca %"class.MIR::RValue", align 8
  %40 = alloca %"class.MIR::Constant", align 8
  %41 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %42 = alloca %"class.MIR::LValue::Wrapper", align 4
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.510, align 8
  %46 = alloca %struct.Span, align 8
  %47 = alloca %"class.std::function", align 8
  %48 = alloca %class.anon.511, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %57 = alloca %struct.MonomorphState, align 8
  %58 = alloca %"class.HIR::TypeRef", align 8
  %59 = alloca %"class.MIR::RValue", align 8
  %60 = alloca %struct.EncodedLiteralSlice, align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca %"class.HIR::Path", align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.513, align 1
  %67 = alloca %"class.MIR::RValue", align 8
  %68 = alloca %"struct.MIR::LValue", align 8
  %69 = alloca %"class.HIR::TypeRef", align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.515, align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.512", align 8
  %74 = alloca %"class.std::function.516", align 8
  %75 = alloca %class.anon.519, align 1
  %76 = alloca %"struct.MIR::LValue", align 8
  %77 = alloca %"class.MIR::CallTarget", align 8
  %78 = alloca %"struct.MIR::LValue", align 8
  %79 = alloca %"class.std::function", align 8
  %80 = alloca %class.anon.521, align 1
  %81 = alloca %"struct.MIR::LValue", align 8
  %82 = alloca %"struct.MIR::LValue", align 8
  %83 = alloca %"class.MIR::Param", align 8
  %84 = alloca %"struct.MIR::LValue", align 8
  %85 = alloca %"struct.MIR::LValue", align 8
  %86 = alloca %"class.MIR::CallTarget", align 8
  %87 = alloca %"struct.MIR::LValue", align 8
  %88 = alloca %"class.MIR::CallTarget", align 8
  %89 = alloca %"struct.MIR::LValue", align 8
  %90 = alloca %"struct.MIR::LValue", align 8
  %91 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %92 = alloca %"class.std::function", align 8
  %93 = alloca %class.anon.523, align 1
  %94 = alloca %"struct.MIR::LValue", align 8
  %95 = alloca %"struct.MIR::LValue", align 8
  %96 = alloca %"class.MIR::Param", align 8
  %97 = alloca %"struct.MIR::LValue", align 8
  %98 = alloca %"struct.MIR::LValue", align 8
  %99 = alloca %"class.MIR::CallTarget", align 8
  %100 = alloca %"class.HIR::Path", align 8
  %101 = alloca %"class.MIR::Statement", align 8
  %102 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %103 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %104 = alloca %"class.MIR::Terminator", align 8
  %105 = alloca %"class.HIR::GenericPath", align 8
  %106 = alloca %class.RcString, align 8
  %107 = alloca %"class.MIR::Statement", align 8
  %108 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %109 = alloca %"struct.MIR::RValue::Data_EnumVariant", align 8
  %110 = alloca %"class.MIR::Terminator", align 8
  %111 = alloca %"class.MIR::Statement", align 8
  %112 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %113 = alloca %"struct.MIR::LValue", align 8
  %114 = alloca %"struct.MIR::LValue", align 8
  %115 = alloca %"class.MIR::Terminator", align 8
  %116 = alloca %"class.MIR::Statement", align 8
  %117 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %118 = alloca %"struct.MIR::LValue", align 8
  %119 = alloca %"struct.MIR::LValue", align 8
  %120 = alloca %"class.MIR::Statement", align 8
  %121 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %122 = alloca %"struct.MIR::RValue::Data_Tuple", align 8
  %123 = alloca %"class.MIR::Terminator", align 8
  %124 = alloca %struct.Visitor, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #9
  %125 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %126 unwind label %150

126:                                              ; preds = %5
  %127 = select i1 %125, ptr @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  store ptr %1, ptr %9, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %127, ptr noundef nonnull %8)
          to label %128 unwind label %152

128:                                              ; preds = %126
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  store ptr %1, ptr %13, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %12)
          to label %129 unwind label %154

129:                                              ; preds = %128
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(96) %2)
          to label %130 unwind label %156

130:                                              ; preds = %129
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #9
  call void @_ZN10MirMutatorC2ERN3MIR8FunctionEjj(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(96) %2, i32 noundef 0, i32 noundef 0)
  %131 = getelementptr inbounds i8, ptr %2, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  %132 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #9
  store ptr %132, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %133 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #9
  store ptr %133, ptr %16, align 8
  %134 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %134, label %.lr.ph3751, label %._crit_edge3752

.lr.ph3751:                                       ; preds = %130
  %135 = getelementptr inbounds i8, ptr %21, i64 8
  %136 = getelementptr inbounds i8, ptr %41, i64 16
  %137 = getelementptr inbounds i8, ptr %0, i64 152
  %138 = getelementptr inbounds i8, ptr %0, i64 160
  %139 = getelementptr inbounds i8, ptr %0, i64 168
  %140 = getelementptr inbounds i8, ptr %10, i64 8
  %141 = getelementptr inbounds i8, ptr %91, i64 120
  %142 = getelementptr inbounds i8, ptr %108, i64 32
  %143 = getelementptr inbounds i8, ptr %109, i64 32
  %144 = getelementptr inbounds i8, ptr %109, i64 40
  %145 = getelementptr inbounds i8, ptr %102, i64 32
  %146 = getelementptr inbounds i8, ptr %103, i64 32
  %147 = getelementptr inbounds i8, ptr %112, i64 32
  %148 = getelementptr inbounds i8, ptr %117, i64 32
  %149 = getelementptr inbounds i8, ptr %121, i64 32
  br label %159

._crit_edge3752:                                  ; preds = %1088, %130
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %124) #9
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %124) #9
  invoke void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(96) %2)
          to label %1092 unwind label %1093

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

152:                                              ; preds = %126
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %1097

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

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

158:                                              ; preds = %156, %154
  %.pn = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %1096

159:                                              ; preds = %.lr.ph3751, %1088
  %160 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %161 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #9
  store ptr %161, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %162 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #9
  store ptr %162, ptr %18, align 8
  %163 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br i1 %163, label %.lr.ph1961, label %.loopexit917

.lr.ph1961:                                       ; preds = %159, %.critedge
  invoke void @_ZN10MirMutator12update_stateERN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %164 unwind label %195

164:                                              ; preds = %.lr.ph1961
  %165 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %166 unwind label %197

166:                                              ; preds = %164
  %167 = call noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  br i1 %167, label %168, label %199

168:                                              ; preds = %166
  %169 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %170 = getelementptr inbounds i8, ptr %169, i64 32
  %171 = call noundef zeroext i1 @_ZNK3MIR6RValue9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %170)
  br i1 %171, label %172, label %199

172:                                              ; preds = %168
  %173 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %174 = getelementptr inbounds i8, ptr %173, i64 32
  %175 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %174)
  %176 = getelementptr inbounds i8, ptr %175, i64 8
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(32) %176, i32 noundef 0)
          to label %178 unwind label %.loopexit918

178:                                              ; preds = %172
  %179 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %177)
  %180 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %179)
  br i1 %180, label %181, label %199

181:                                              ; preds = %178
  %182 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %183 unwind label %.loopexit918

183:                                              ; preds = %181
  br i1 %182, label %184, label %237

184:                                              ; preds = %183
  %185 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %185, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %187 unwind label %.loopexit918

187:                                              ; preds = %184
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %189 unwind label %.loopexit918

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull @.str.21)
          to label %191 unwind label %.loopexit918

191:                                              ; preds = %189
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %193 unwind label %.loopexit918

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %237 unwind label %.loopexit918

195:                                              ; preds = %.lr.ph1961
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %646

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

.loopexit918:                                     ; preds = %172, %181, %184, %187, %189, %191, %193, %237, %240, %243, %245, %247, %249
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %644

.loopexit.split-lp:                               ; preds = %202, %205, %208, %210, %212, %214, %216
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %644

199:                                              ; preds = %178, %168, %166
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  store ptr %10, ptr %21, align 8, !tbaa !5
  store ptr %19, ptr %135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3MIR6LValueENS0_5visit8ValUsageEEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERNS0_8FunctionERKSt6vectorISt4pairINSC_7PatternENSC_7TypeRefEESaISM_EERKSL_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  %200 = invoke noundef zeroext i1 @_ZN3MIR5visit17visit_mir_lvaluesERKNS_9StatementESt8functionIFbRKNS_6LValueENS0_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %165, ptr noundef nonnull %20)
          to label %201 unwind label %218

201:                                              ; preds = %199
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  br i1 %200, label %202, label %237

202:                                              ; preds = %201
  %203 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %204 unwind label %.loopexit.split-lp

204:                                              ; preds = %202
  br i1 %203, label %205, label %220

205:                                              ; preds = %204
  %206 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %206, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %208 unwind label %.loopexit.split-lp

208:                                              ; preds = %205
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %210 unwind label %.loopexit.split-lp

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @.str.22)
          to label %212 unwind label %.loopexit.split-lp

212:                                              ; preds = %210
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(152) %165)
          to label %214 unwind label %.loopexit.split-lp

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %216 unwind label %.loopexit.split-lp

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %220 unwind label %.loopexit.split-lp

218:                                              ; preds = %199
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  br label %644

220:                                              ; preds = %216, %204
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %221 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #9
  store ptr %221, ptr %24, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %222 = load ptr, ptr %22, align 8
  %223 = load ptr, ptr %23, align 8
  %224 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EES8_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr %222, ptr %223)
          to label %225 unwind label %230

225:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %25) #9
  invoke void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %25)
          to label %226 unwind label %232

226:                                              ; preds = %225
  %227 = getelementptr inbounds i8, ptr %160, i64 24
  %228 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %227, ptr noundef nonnull align 8 dereferenceable(168) %25)
          to label %229 unwind label %234

229:                                              ; preds = %226
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %25) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %25) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %.loopexit917

230:                                              ; preds = %220
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %644

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

234:                                              ; preds = %226
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %25) #9
  br label %236

236:                                              ; preds = %234, %232
  %.pn632 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %25) #9
  br label %644

237:                                              ; preds = %193, %183, %201
  %238 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %239 unwind label %.loopexit918

239:                                              ; preds = %237
  br i1 %238, label %240, label %.lr.ph1958

240:                                              ; preds = %239
  %241 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %241, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %243 unwind label %.loopexit918

243:                                              ; preds = %240
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %245 unwind label %.loopexit918

245:                                              ; preds = %243
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(152) %165)
          to label %247 unwind label %.loopexit918

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %249 unwind label %.loopexit918

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph1958 unwind label %.loopexit918

.loopexit910:                                     ; preds = %.preheader846.split, %464, %.preheader834.split, %343, %.preheader830.split, %.preheader828.split, %.preheader826.split, %.preheader824.split, %.preheader822.split, %.preheader873.split, %.preheader877.split, %.preheader875.split, %.lr.ph1958, %..loopexit858_crit_edge, %..loopexit859_crit_edge, %.lr.ph1603, %..loopexit815_crit_edge, %..loopexit816_crit_edge, %..loopexit818_crit_edge, %..loopexit819_crit_edge, %..loopexit812_crit_edge, %..loopexit813_crit_edge
  %251 = call noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  br i1 %251, label %487, label %637

.lr.ph1958:                                       ; preds = %249, %239
  %252 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  switch i32 %252, label %.loopexit910 [
    i32 0, label %257
    i32 5, label %.preheader873.split
    i32 4, label %.preheader875.split
    i32 6, label %.preheader877.split
    i32 2, label %.lr.ph1684
    i32 3, label %.split1673.lr.ph
    i32 1, label %.lr.ph1606
  ]

.preheader877.split:                              ; preds = %.lr.ph1958
  %253 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  br label %.loopexit910

.preheader875.split:                              ; preds = %.lr.ph1958
  %254 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  br label %.loopexit910

.preheader873.split:                              ; preds = %.lr.ph1958
  %255 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %256 = getelementptr inbounds i8, ptr %255, i64 8
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %256)
          to label %.loopexit910 unwind label %.split1870, !llvm.loop !11

257:                                              ; preds = %.lr.ph1958
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 1101, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.split1870:                                       ; preds = %.preheader873.split
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %644

.lr.ph1684:                                       ; preds = %.lr.ph1958
  %259 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %260 = getelementptr inbounds i8, ptr %259, i64 56
  %261 = getelementptr inbounds i8, ptr %259, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %262 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %260) #9
  store ptr %262, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %263 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %260) #9
  store ptr %263, ptr %27, align 8
  %264 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br i1 %264, label %.lr.ph1678, label %._crit_edge1679

._crit_edge1679:                                  ; preds = %270, %.lr.ph1684
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %265 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %261) #9
  store ptr %265, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %266 = call ptr @_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %261) #9
  store ptr %266, ptr %29, align 8
  %267 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %267, label %.lr.ph1681, label %..loopexit858_crit_edge

.lr.ph1678:                                       ; preds = %.lr.ph1684, %270
  %268 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %269 = getelementptr inbounds i8, ptr %268, i64 32
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %269)
          to label %270 unwind label %.split1689

270:                                              ; preds = %.lr.ph1678
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %272 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br i1 %272, label %.lr.ph1678, label %._crit_edge1679

.split1689:                                       ; preds = %.lr.ph1678
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %644

..loopexit858_crit_edge:                          ; preds = %276, %._crit_edge1679
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  br label %.loopexit910

.lr.ph1681:                                       ; preds = %._crit_edge1679, %276
  %274 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %275 = getelementptr inbounds i8, ptr %274, i64 32
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %275)
          to label %276 unwind label %.split1686

276:                                              ; preds = %.lr.ph1681
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %278 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %278, label %.lr.ph1681, label %..loopexit858_crit_edge

.split1686:                                       ; preds = %.lr.ph1681
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  br label %644

.split1673.lr.ph:                                 ; preds = %.lr.ph1958
  %280 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %281 = getelementptr inbounds i8, ptr %280, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  %282 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %281) #9
  store ptr %282, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %283 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %281) #9
  store ptr %283, ptr %31, align 8
  %284 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br i1 %284, label %.split1654, label %..loopexit859_crit_edge

..loopexit859_crit_edge:                          ; preds = %..loopexit821_crit_edge, %.split1673.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %.loopexit910

.split1654:                                       ; preds = %.split1673.lr.ph, %..loopexit821_crit_edge
  %285 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %286 = call noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %285)
  switch i32 %286, label %..loopexit821_crit_edge [
    i32 0, label %.split1645
    i32 1, label %.preheader
    i32 2, label %.preheader801
    i32 3, label %.preheader803
  ]

.preheader803:                                    ; preds = %.split1654
  %287 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %285)
  %288 = getelementptr inbounds i8, ptr %287, i64 48
  %289 = getelementptr inbounds i8, ptr %287, i64 56
  %290 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %288) #9
  br i1 %290, label %294, label %296

.preheader801:                                    ; preds = %.split1654
  %291 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %285)
  br label %..loopexit821_crit_edge

.preheader:                                       ; preds = %.split1654
  %292 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %285)
  br label %..loopexit821_crit_edge

.split1645:                                       ; preds = %.split1654
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 1118, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.split1611.split.split.split:                     ; preds = %298, %294
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %644

294:                                              ; preds = %.preheader803
  %295 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %288) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %295)
          to label %296 unwind label %.split1611.split.split.split

296:                                              ; preds = %294, %.preheader803
  %297 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %289) #9
  br i1 %297, label %298, label %..loopexit821_crit_edge

298:                                              ; preds = %296
  %299 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %289) #9
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %299)
          to label %..loopexit821_crit_edge unwind label %.split1611.split.split.split

..loopexit821_crit_edge:                          ; preds = %.preheader801, %.preheader, %298, %296, %.split1654
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %301 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br i1 %301, label %.split1654, label %..loopexit859_crit_edge

.lr.ph1606:                                       ; preds = %.lr.ph1958
  %302 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %303 = getelementptr inbounds i8, ptr %302, i64 32
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %302)
          to label %.lr.ph1603 unwind label %304

304:                                              ; preds = %.lr.ph1606
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %644

.lr.ph1603:                                       ; preds = %.lr.ph1606
  %306 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  switch i32 %306, label %.loopexit910 [
    i32 0, label %336
    i32 1, label %.preheader822.split
    i32 3, label %.preheader824.split
    i32 4, label %.preheader826.split
    i32 2, label %.preheader828.split
    i32 5, label %.preheader830.split
    i32 6, label %.preheader832.split
    i32 7, label %.preheader834.split
    i32 8, label %.lr.ph1264
    i32 9, label %.lr.ph1261
    i32 10, label %.preheader840.split
    i32 11, label %.preheader842.split.split
    i32 12, label %.preheader844.split.split
    i32 13, label %.preheader846.split
    i32 14, label %.preheader848.split.split
    i32 15, label %.preheader850.split.split
  ]

.preheader850.split.split:                        ; preds = %.lr.ph1603
  %307 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %308 = getelementptr inbounds i8, ptr %307, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #9
  %309 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #9
  store ptr %309, ptr %55, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  %310 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #9
  store ptr %310, ptr %56, align 8
  %311 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %311, label %.lr.ph, label %..loopexit819_crit_edge

.preheader848.split.split:                        ; preds = %.lr.ph1603
  %312 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %313 = getelementptr inbounds i8, ptr %312, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #9
  %314 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %313) #9
  store ptr %314, ptr %53, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #9
  %315 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %313) #9
  store ptr %315, ptr %54, align 8
  %316 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  br i1 %316, label %.lr.ph1023, label %..loopexit818_crit_edge

.preheader846.split:                              ; preds = %.lr.ph1603
  %317 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %318 = getelementptr inbounds i8, ptr %317, i64 40
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %318)
          to label %.loopexit910 unwind label %.split1073, !llvm.loop !13

.preheader844.split.split:                        ; preds = %.lr.ph1603
  %319 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #9
  %320 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #9
  store ptr %320, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  %321 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #9
  store ptr %321, ptr %52, align 8
  %322 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br i1 %322, label %.lr.ph1111, label %..loopexit816_crit_edge

.preheader842.split.split:                        ; preds = %.lr.ph1603
  %323 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  %324 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %323) #9
  store ptr %324, ptr %49, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #9
  %325 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %323) #9
  store ptr %325, ptr %50, align 8
  %326 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br i1 %326, label %.lr.ph1163, label %..loopexit815_crit_edge

.preheader840.split:                              ; preds = %.lr.ph1603
  %327 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %327)
          to label %464 unwind label %.split1218

.preheader834.split:                              ; preds = %.lr.ph1603
  %328 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %328)
          to label %.loopexit910 unwind label %.split1268, !llvm.loop !14

.preheader832.split:                              ; preds = %.lr.ph1603
  %329 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %329)
          to label %343 unwind label %.split1313

.preheader830.split:                              ; preds = %.lr.ph1603
  %330 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %330)
          to label %.loopexit910 unwind label %.split1359, !llvm.loop !15

.preheader828.split:                              ; preds = %.lr.ph1603
  %331 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %332 = getelementptr inbounds i8, ptr %331, i64 8
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %332)
          to label %.loopexit910 unwind label %.split1406, !llvm.loop !16

.preheader826.split:                              ; preds = %.lr.ph1603
  %333 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %333)
          to label %.loopexit910 unwind label %.split1454, !llvm.loop !17

.preheader824.split:                              ; preds = %.lr.ph1603
  %334 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %334)
          to label %.loopexit910 unwind label %.split1503, !llvm.loop !18

.preheader822.split:                              ; preds = %.lr.ph1603
  %335 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %.loopexit910 unwind label %.split1553, !llvm.loop !19

336:                                              ; preds = %.lr.ph1603
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 1132, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.split1553:                                       ; preds = %.preheader822.split
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %644

.split1503:                                       ; preds = %.preheader824.split
  %338 = landingpad { ptr, i32 }
          cleanup
  br label %644

.split1454:                                       ; preds = %.preheader826.split
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %644

.split1406:                                       ; preds = %.preheader828.split
  %340 = landingpad { ptr, i32 }
          cleanup
  br label %644

.split1359:                                       ; preds = %.preheader830.split
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %644

.split1313:                                       ; preds = %343, %.preheader832.split
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %644

343:                                              ; preds = %.preheader832.split
  %344 = getelementptr inbounds i8, ptr %329, i64 56
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %344)
          to label %.loopexit910 unwind label %.split1313, !llvm.loop !20

.split1268:                                       ; preds = %.preheader834.split
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %644

.lr.ph1264:                                       ; preds = %.lr.ph1603
  %346 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %347 = getelementptr inbounds i8, ptr %346, i64 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #9
  %348 = invoke i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv()
          to label %351 unwind label %361

349:                                              ; preds = %352
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %644

351:                                              ; preds = %.lr.ph1264
  store i32 %348, ptr %32, align 4
  invoke void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %347, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %352 unwind label %361

352:                                              ; preds = %351
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #9
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %346)
          to label %353 unwind label %349

353:                                              ; preds = %352
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %354 unwind label %363

354:                                              ; preds = %353
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(32) %346, i32 noundef 0)
          to label %356 unwind label %365

356:                                              ; preds = %354
  %357 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %355)
  %358 = call noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %357)
  %.not740 = icmp eq ptr %358, null
  br i1 %.not740, label %367, label %359

359:                                              ; preds = %356
  %360 = getelementptr inbounds i8, ptr %358, i64 8
  br label %395

361:                                              ; preds = %351, %.lr.ph1264
  %362 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #9
  br label %644

363:                                              ; preds = %353
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %415

365:                                              ; preds = %354
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %414

367:                                              ; preds = %356
  %368 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %355)
  %369 = call noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %368)
  %.not741 = icmp eq ptr %369, null
  br i1 %.not741, label %374, label %370

370:                                              ; preds = %367
  %371 = getelementptr inbounds i8, ptr %369, i64 8
  br label %395

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

374:                                              ; preds = %367
  %375 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %355)
  %376 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %375)
  br i1 %376, label %377, label %387

377:                                              ; preds = %374
  %378 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #9
  br i1 %378, label %382, label %379

379:                                              ; preds = %377
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #9
  %381 = call noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %380)
  br i1 %381, label %386, label %382

382:                                              ; preds = %379, %377
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  store ptr %346, ptr %35, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %34)
          to label %383 unwind label %384

383:                                              ; preds = %382
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %386

384:                                              ; preds = %382
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %414

386:                                              ; preds = %383, %379
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #9
  br label %395

387:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  store ptr %355, ptr %38, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %388 unwind label %391

388:                                              ; preds = %387
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  %389 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %389, ptr noundef nonnull @.str.13)
          to label %390 unwind label %393

390:                                              ; preds = %388
  invoke void @__cxa_throw(ptr nonnull %389, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1098 unwind label %372

391:                                              ; preds = %387
  %392 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %414

393:                                              ; preds = %388
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %389) #9
  br label %414

395:                                              ; preds = %370, %386, %359
  %.1597 = phi ptr [ %360, %359 ], [ %371, %370 ], [ %355, %386 ]
  %396 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.1597)
  %397 = call noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %396)
  %.not744 = icmp eq ptr %397, null
  br i1 %.not744, label %..loopexit812_crit_edge, label %398

398:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %39) #9
  %399 = getelementptr inbounds i8, ptr %397, i64 8
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %399)
  %401 = load i64, ptr %400, align 8, !tbaa !21
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %41, i64 noundef %401, i64 noundef 0)
  store i32 0, ptr %136, align 8, !tbaa !23
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %40, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %41)
          to label %402 unwind label %406

402:                                              ; preds = %398
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %39, ptr noundef nonnull %40)
          to label %403 unwind label %408

403:                                              ; preds = %402
  %404 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %303, ptr noundef nonnull align 8 dereferenceable(112) %39)
          to label %405 unwind label %410

405:                                              ; preds = %403
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %39) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %39) #9
  br label %..loopexit812_crit_edge

406:                                              ; preds = %398
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %413

408:                                              ; preds = %402
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %412

410:                                              ; preds = %403
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %39) #9
  br label %412

412:                                              ; preds = %410, %408
  %.pn745 = phi { ptr, i32 } [ %411, %410 ], [ %409, %408 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #9
  br label %413

413:                                              ; preds = %412, %406
  %.pn745.pn = phi { ptr, i32 } [ %.pn745, %412 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %39) #9
  br label %414

..loopexit812_crit_edge:                          ; preds = %405, %395
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %.loopexit910

414:                                              ; preds = %413, %393, %391, %384, %372, %365
  %.pn745.pn.pn.pn = phi { ptr, i32 } [ %366, %365 ], [ %.pn745.pn, %413 ], [ %385, %384 ], [ %373, %372 ], [ %394, %393 ], [ %392, %391 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br label %415

415:                                              ; preds = %414, %363
  %.pn745.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn745.pn.pn.pn, %414 ], [ %364, %363 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %644

.lr.ph1261:                                       ; preds = %.lr.ph1603
  %416 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
  %417 = getelementptr inbounds i8, ptr %416, i64 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #9
  %418 = invoke i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv()
          to label %421 unwind label %429

419:                                              ; preds = %422
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %644

421:                                              ; preds = %.lr.ph1261
  store i32 %418, ptr %42, align 4
  invoke void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %417, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %422 unwind label %429

422:                                              ; preds = %421
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #9
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %416)
          to label %423 unwind label %419

423:                                              ; preds = %422
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %417) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %424 unwind label %431

424:                                              ; preds = %423
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(32) %416, i32 noundef 0)
          to label %426 unwind label %433

426:                                              ; preds = %424
  %427 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %425)
  %428 = call noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %427)
  %.not733 = icmp eq ptr %428, null
  br i1 %.not733, label %435, label %..loopexit813_crit_edge

429:                                              ; preds = %421, %.lr.ph1261
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #9
  br label %644

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

433:                                              ; preds = %424
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %461

435:                                              ; preds = %426
  %436 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %425)
  %437 = call noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %436)
  %.not734 = icmp eq ptr %437, null
  br i1 %.not734, label %440, label %..loopexit813_crit_edge

438:                                              ; preds = %456
  %439 = landingpad { ptr, i32 }
          cleanup
  br label %461

440:                                              ; preds = %435
  %441 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %425)
  %442 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %441)
  br i1 %442, label %443, label %453

443:                                              ; preds = %440
  %444 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %417) #9
  br i1 %444, label %448, label %445

445:                                              ; preds = %443
  %446 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %417) #9
  %447 = call noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %446)
  br i1 %447, label %452, label %448

448:                                              ; preds = %445, %443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #9
  store ptr %416, ptr %45, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %44)
          to label %449 unwind label %450

449:                                              ; preds = %448
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %452

450:                                              ; preds = %448
  %451 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %461

452:                                              ; preds = %449, %445
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %417) #9
  br label %..loopexit813_crit_edge

453:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  store ptr %425, ptr %48, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull %47)
          to label %454 unwind label %457

454:                                              ; preds = %453
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  %455 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef nonnull @.str.13)
          to label %456 unwind label %459

456:                                              ; preds = %454
  invoke void @__cxa_throw(ptr nonnull %455, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1098 unwind label %438

457:                                              ; preds = %453
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %461

459:                                              ; preds = %454
  %460 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %455) #9
  br label %461

..loopexit813_crit_edge:                          ; preds = %452, %435, %426
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br label %.loopexit910

461:                                              ; preds = %438, %450, %457, %459, %433
  %.pn735.pn = phi { ptr, i32 } [ %434, %433 ], [ %451, %450 ], [ %439, %438 ], [ %460, %459 ], [ %458, %457 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br label %462

462:                                              ; preds = %461, %431
  %.pn735.pn.pn = phi { ptr, i32 } [ %.pn735.pn, %461 ], [ %432, %431 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br label %644

.split1218:                                       ; preds = %464, %.preheader840.split
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %644

464:                                              ; preds = %.preheader840.split
  %465 = getelementptr inbounds i8, ptr %327, i64 48
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %465)
          to label %.loopexit910 unwind label %.split1218, !llvm.loop !27

..loopexit815_crit_edge:                          ; preds = %467, %.preheader842.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %.loopexit910

.lr.ph1163:                                       ; preds = %.preheader842.split.split, %467
  %466 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %466)
          to label %467 unwind label %.split1168.split

467:                                              ; preds = %.lr.ph1163
  %468 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  %469 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br i1 %469, label %.lr.ph1163, label %..loopexit815_crit_edge

.split1168.split:                                 ; preds = %.lr.ph1163
  %470 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %644

..loopexit816_crit_edge:                          ; preds = %472, %.preheader844.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  br label %.loopexit910

.lr.ph1111:                                       ; preds = %.preheader844.split.split, %472
  %471 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %471)
          to label %472 unwind label %.split1116.split

472:                                              ; preds = %.lr.ph1111
  %473 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  %474 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br i1 %474, label %.lr.ph1111, label %..loopexit816_crit_edge

.split1116.split:                                 ; preds = %.lr.ph1111
  %475 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  br label %644

.split1073:                                       ; preds = %.preheader846.split
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %644

..loopexit818_crit_edge:                          ; preds = %478, %.preheader848.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  br label %.loopexit910

.lr.ph1023:                                       ; preds = %.preheader848.split.split, %478
  %477 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %477)
          to label %478 unwind label %.split1028.split

478:                                              ; preds = %.lr.ph1023
  %479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  %480 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  br i1 %480, label %.lr.ph1023, label %..loopexit818_crit_edge

.split1028.split:                                 ; preds = %.lr.ph1023
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  br label %644

..loopexit819_crit_edge:                          ; preds = %483, %.preheader850.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  br label %.loopexit910

.lr.ph:                                           ; preds = %.preheader850.split.split, %483
  %482 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %482)
          to label %483 unwind label %.split.split

483:                                              ; preds = %.lr.ph
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %485 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %485, label %.lr.ph, label %..loopexit819_crit_edge

.split.split:                                     ; preds = %.lr.ph
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  br label %644

487:                                              ; preds = %.loopexit910
  %488 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %165)
  %489 = getelementptr inbounds i8, ptr %488, i64 32
  %490 = call noundef ptr @_ZN3MIR6RValue12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %489)
  %.not = icmp eq ptr %490, null
  br i1 %.not, label %557, label %491

491:                                              ; preds = %487
  %492 = call noundef ptr @_ZN3MIR8Constant9opt_ConstEv(ptr noundef nonnull align 8 dereferenceable(40) %490)
  %.not634 = icmp eq ptr %492, null
  br i1 %.not634, label %557, label %493

493:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %57) #9
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57)
          to label %494 unwind label %518

494:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %495 unwind label %520

495:                                              ; preds = %494
  %496 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %492) #9
  %497 = invoke noundef ptr @_Z23MIR_Cleanup_GetConstantRKN3MIR11TypeResolveERKN3HIR4PathERNS3_7TypeRefER14MonomorphState(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(88) %496, ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(144) %57)
          to label %498 unwind label %522

498:                                              ; preds = %495
  %.not635 = icmp eq ptr %497, null
  br i1 %.not635, label %538, label %499

499:                                              ; preds = %498
  %500 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %501 unwind label %522

501:                                              ; preds = %499
  br i1 %500, label %502, label %524

502:                                              ; preds = %501
  %503 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %503, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %505 unwind label %522

505:                                              ; preds = %502
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %504, ptr noundef nonnull @.str.18)
          to label %507 unwind label %522

507:                                              ; preds = %505
  %508 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %492) #9
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull align 8 dereferenceable(88) %508)
          to label %510 unwind label %522

510:                                              ; preds = %507
  %511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %509, ptr noundef nonnull @.str.19)
          to label %512 unwind label %522

512:                                              ; preds = %510
  %513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(8) %511, ptr noundef nonnull align 8 dereferenceable(48) %497)
          to label %514 unwind label %522

514:                                              ; preds = %512
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %513, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %516 unwind label %522

516:                                              ; preds = %514
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %524 unwind label %522

518:                                              ; preds = %493
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %556

520:                                              ; preds = %494
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %555

522:                                              ; preds = %551, %549, %546, %544, %541, %538, %516, %514, %512, %510, %507, %505, %502, %499, %495
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %554

524:                                              ; preds = %516, %501
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %59) #9
  call void @_ZN19EncodedLiteralSliceC2ERK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 8 dereferenceable(48) %497)
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %58)
  %525 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %492) #9
  call void @_ZN3HIR4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(88) %62, ptr noundef nonnull align 8 dereferenceable(88) %525) #9
  invoke void @_Z27MIR_Cleanup_LiteralToRValueRKN3MIR11TypeResolveER10MirMutator19EncodedLiteralSliceN3HIR7TypeRefERK14MonomorphStateNS6_4PathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %59, ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %60, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(144) %57, ptr noundef nonnull %62)
          to label %526 unwind label %531

526:                                              ; preds = %524
  %527 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %489, ptr noundef nonnull align 8 dereferenceable(112) %59)
          to label %528 unwind label %533

528:                                              ; preds = %526
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %59) #9
  %529 = call noundef ptr @_ZN3MIR6RValue12opt_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %489)
  %.not638 = icmp eq ptr %529, null
  br i1 %.not638, label %553, label %530

530:                                              ; preds = %528
  invoke void @_Z20MIR_Cleanup_ConstantRKN3MIR11TypeResolveER10MirMutatorRNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %529)
          to label %553 unwind label %536

531:                                              ; preds = %524
  %532 = landingpad { ptr, i32 }
          cleanup
  br label %535

533:                                              ; preds = %526
  %534 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  br label %535

535:                                              ; preds = %533, %531
  %.pn636 = phi { ptr, i32 } [ %534, %533 ], [ %532, %531 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %59) #9
  br label %554

536:                                              ; preds = %530
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %554

538:                                              ; preds = %498
  %539 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %540 unwind label %522

540:                                              ; preds = %538
  br i1 %539, label %541, label %553

541:                                              ; preds = %540
  %542 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %542, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %544 unwind label %522

544:                                              ; preds = %541
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef nonnull @.str.20)
          to label %546 unwind label %522

546:                                              ; preds = %544
  %547 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %492) #9
  %548 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef nonnull align 8 dereferenceable(88) %547)
          to label %549 unwind label %522

549:                                              ; preds = %546
  %550 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %548, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %551 unwind label %522

551:                                              ; preds = %549
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %553 unwind label %522

553:                                              ; preds = %528, %530, %540, %551
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %57) #9
  br label %557

554:                                              ; preds = %536, %535, %522
  %.pn639 = phi { ptr, i32 } [ %537, %536 ], [ %.pn636, %535 ], [ %523, %522 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %555

555:                                              ; preds = %554, %520
  %.pn639.pn = phi { ptr, i32 } [ %.pn639, %554 ], [ %521, %520 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #9
  br label %556

556:                                              ; preds = %555, %518
  %.pn639.pn.pn = phi { ptr, i32 } [ %.pn639.pn, %555 ], [ %519, %518 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %57) #9
  br label %644

557:                                              ; preds = %491, %553, %487
  %558 = call noundef ptr @_ZN3MIR6RValue11opt_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %489)
  %.not643 = icmp eq ptr %558, null
  br i1 %.not643, label %607, label %559

559:                                              ; preds = %557
  %560 = getelementptr inbounds i8, ptr %558, i64 48
  %561 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %560)
  br i1 %561, label %562, label %607

562:                                              ; preds = %559
  %563 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %560)
  %564 = call noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %563)
  br i1 %564, label %565, label %607

565:                                              ; preds = %562
  %566 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %560)
  %567 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %566)
  %568 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %567) #9
  %569 = icmp eq ptr %568, null
  br i1 %569, label %570, label %607

570:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %571 unwind label %580

571:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %572 unwind label %582

572:                                              ; preds = %571
  %573 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(48) %558)
          to label %574 unwind label %584

574:                                              ; preds = %572
  %575 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(32) %488, i32 noundef 0)
          to label %576 unwind label %586

576:                                              ; preds = %574
  %577 = call noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %558)
  br i1 %577, label %590, label %578

578:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %65)
          to label %579 unwind label %588

579:                                              ; preds = %578
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #9
  br label %590

580:                                              ; preds = %570
  %581 = landingpad { ptr, i32 }
          cleanup
  br label %606

582:                                              ; preds = %571
  %583 = landingpad { ptr, i32 }
          cleanup
  br label %605

584:                                              ; preds = %572
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %604

586:                                              ; preds = %574
  %587 = landingpad { ptr, i32 }
          cleanup
  br label %604

588:                                              ; preds = %578
  %589 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #9
  br label %604

590:                                              ; preds = %579, %576
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %67) #9
  %591 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %558)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %591)
          to label %592 unwind label %596

592:                                              ; preds = %590
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %67, ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(8) %575, ptr noundef nonnull align 8 dereferenceable(8) %573, ptr noundef nonnull %68)
          to label %593 unwind label %598

593:                                              ; preds = %592
  %594 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112) %489, ptr noundef nonnull align 8 dereferenceable(112) %67)
          to label %595 unwind label %600

595:                                              ; preds = %593
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %67) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %67) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  br label %607

596:                                              ; preds = %590
  %597 = landingpad { ptr, i32 }
          cleanup
  br label %603

598:                                              ; preds = %592
  %599 = landingpad { ptr, i32 }
          cleanup
  br label %602

600:                                              ; preds = %593
  %601 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %67) #9
  br label %602

602:                                              ; preds = %600, %598
  %.pn644 = phi { ptr, i32 } [ %601, %600 ], [ %599, %598 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  br label %603

603:                                              ; preds = %602, %596
  %.pn644.pn = phi { ptr, i32 } [ %.pn644, %602 ], [ %597, %596 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %67) #9
  br label %604

604:                                              ; preds = %586, %588, %603, %584
  %.pn644.pn.pn.pn = phi { ptr, i32 } [ %585, %584 ], [ %.pn644.pn, %603 ], [ %589, %588 ], [ %587, %586 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %605

605:                                              ; preds = %604, %582
  %.pn644.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn644.pn.pn.pn, %604 ], [ %583, %582 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  br label %606

606:                                              ; preds = %605, %580
  %.pn644.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn644.pn.pn.pn.pn, %605 ], [ %581, %580 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  br label %644

607:                                              ; preds = %559, %562, %565, %595, %557
  %608 = call noundef ptr @_ZN3MIR6RValue11opt_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %489)
  %.not651 = icmp eq ptr %608, null
  br i1 %.not651, label %637, label %609

609:                                              ; preds = %607
  %610 = getelementptr inbounds i8, ptr %608, i64 48
  %611 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %610)
  br i1 %611, label %612, label %637

612:                                              ; preds = %609
  %613 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %610)
  %614 = call noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %613)
  br i1 %614, label %615, label %637

615:                                              ; preds = %612
  %616 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %610)
  %617 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %616)
  %618 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %617) #9
  %619 = icmp eq ptr %618, null
  br i1 %619, label %620, label %637

620:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %621 unwind label %628

621:                                              ; preds = %620
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(48) %608)
          to label %623 unwind label %630

623:                                              ; preds = %621
  %624 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %622, i1 noundef zeroext false)
          to label %625 unwind label %630

625:                                              ; preds = %623
  br i1 %624, label %634, label %626

626:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #9
  store ptr %622, ptr %71, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %70)
          to label %627 unwind label %632

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

628:                                              ; preds = %620
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %636

630:                                              ; preds = %623, %621
  %631 = landingpad { ptr, i32 }
          cleanup
  br label %635

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

634:                                              ; preds = %627, %625
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #9
  br label %637

635:                                              ; preds = %632, %630
  %.pn652 = phi { ptr, i32 } [ %633, %632 ], [ %631, %630 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  br label %636

636:                                              ; preds = %635, %628
  %.pn652.pn = phi { ptr, i32 } [ %.pn652, %635 ], [ %629, %628 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #9
  br label %644

637:                                              ; preds = %607, %634, %615, %612, %609, %.loopexit910
  %638 = invoke ptr @_ZN10MirMutator10flush_stmtEv(ptr noundef nonnull align 8 dereferenceable(40) %14)
          to label %.critedge unwind label %642

.critedge:                                        ; preds = %637
  store ptr %638, ptr %17, align 8, !tbaa !5
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  %639 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %640 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #9
  store ptr %640, ptr %18, align 8
  %641 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br i1 %641, label %.lr.ph1961, label %.loopexit917, !llvm.loop !28

642:                                              ; preds = %637
  %643 = landingpad { ptr, i32 }
          cleanup
  br label %644

644:                                              ; preds = %.loopexit918, %.loopexit.split-lp, %556, %606, %636, %.split1870, %.split1611.split.split.split, %.split1686, %.split1689, %.split1553, %.split1503, %.split1454, %.split1406, %.split1359, %.split1313, %.split1268, %.split1218, %.split1168.split, %.split1116.split, %.split1073, %.split1028.split, %.split.split, %415, %361, %349, %462, %429, %419, %304, %642, %236, %230, %218
  %.pn752.pn.pn.pn = phi { ptr, i32 } [ %643, %642 ], [ %.pn632, %236 ], [ %231, %230 ], [ %219, %218 ], [ %293, %.split1611.split.split.split ], [ %258, %.split1870 ], [ %273, %.split1689 ], [ %279, %.split1686 ], [ %305, %304 ], [ %486, %.split.split ], [ %481, %.split1028.split ], [ %476, %.split1073 ], [ %475, %.split1116.split ], [ %470, %.split1168.split ], [ %463, %.split1218 ], [ %345, %.split1268 ], [ %342, %.split1313 ], [ %341, %.split1359 ], [ %340, %.split1406 ], [ %339, %.split1454 ], [ %338, %.split1503 ], [ %337, %.split1553 ], [ %.pn745.pn.pn.pn.pn, %415 ], [ %350, %349 ], [ %362, %361 ], [ %.pn735.pn.pn, %462 ], [ %420, %419 ], [ %430, %429 ], [ %.pn652.pn, %636 ], [ %.pn644.pn.pn.pn.pn.pn, %606 ], [ %.pn639.pn.pn, %556 ], [ %lpad.loopexit, %.loopexit918 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br label %645

645:                                              ; preds = %644, %197
  %.pn752.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn, %644 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %646

.loopexit917:                                     ; preds = %.critedge, %159, %229
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN10MirMutator12update_stateERN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %.lr.ph2121 unwind label %648

646:                                              ; preds = %645, %195
  %.pn752.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn, %645 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %1091

.loopexit912:                                     ; preds = %.preheader905.split, %.preheader903.split, %.preheader901.split, %.preheader899.split, %.preheader897.split, %.preheader895.split, %.preheader893.split, %.preheader891.split, %.lr.ph2121, %..loopexit872_crit_edge
  %647 = call noundef ptr @_ZN3MIR10Terminator8opt_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  %.not656 = icmp eq ptr %647, null
  br i1 %.not656, label %1087, label %682

648:                                              ; preds = %1087, %.loopexit917
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %1091

.lr.ph2121:                                       ; preds = %.loopexit917
  %650 = getelementptr inbounds i8, ptr %160, i64 24
  %651 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  switch i32 %651, label %.loopexit912 [
    i32 0, label %664
    i32 1, label %.preheader891.split
    i32 2, label %.preheader893.split
    i32 3, label %.preheader895.split
    i32 4, label %.preheader897.split
    i32 5, label %.preheader899.split
    i32 6, label %.preheader901.split
    i32 7, label %.preheader903.split
    i32 8, label %.preheader905.split
    i32 9, label %.preheader907.split.split
  ]

.preheader907.split.split:                        ; preds = %.lr.ph2121
  %652 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  %653 = getelementptr inbounds i8, ptr %652, i64 8
  %654 = getelementptr inbounds i8, ptr %652, i64 40
  %655 = getelementptr inbounds i8, ptr %652, i64 136
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %653)
          to label %669 unwind label %.split1968.split

.preheader905.split:                              ; preds = %.lr.ph2121
  %656 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %656)
          to label %.loopexit912 unwind label %.split1997, !llvm.loop !29

.preheader903.split:                              ; preds = %.lr.ph2121
  %657 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %657)
          to label %.loopexit912 unwind label %.split2011, !llvm.loop !30

.preheader901.split:                              ; preds = %.lr.ph2121
  %658 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %658)
          to label %.loopexit912 unwind label %.split2026, !llvm.loop !31

.preheader899.split:                              ; preds = %.lr.ph2121
  %659 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  br label %.loopexit912

.preheader897.split:                              ; preds = %.lr.ph2121
  %660 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  br label %.loopexit912

.preheader895.split:                              ; preds = %.lr.ph2121
  %661 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  br label %.loopexit912

.preheader893.split:                              ; preds = %.lr.ph2121
  %662 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  br label %.loopexit912

.preheader891.split:                              ; preds = %.lr.ph2121
  %663 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %650)
  br label %.loopexit912

664:                                              ; preds = %.lr.ph2121
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 1302, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.split2026:                                       ; preds = %.preheader901.split
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %1091

.split2011:                                       ; preds = %.preheader903.split
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %1091

.split1997:                                       ; preds = %.preheader905.split
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %1091

.split1968.split:                                 ; preds = %671, %.preheader907.split.split
  %668 = landingpad { ptr, i32 }
          cleanup
  br label %1091

669:                                              ; preds = %.preheader907.split.split
  %670 = call noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %654)
  br i1 %670, label %671, label %673

671:                                              ; preds = %669
  %672 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %654)
  invoke void @_Z18MIR_Cleanup_LValueRKN3MIR11TypeResolveER10MirMutatorRNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %672)
          to label %673 unwind label %.split1968.split

673:                                              ; preds = %671, %669
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #9
  %674 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %655) #9
  store ptr %674, ptr %72, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #9
  %675 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %655) #9
  store ptr %675, ptr %73, align 8
  %676 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br i1 %676, label %.lr.ph1963, label %..loopexit872_crit_edge

..loopexit872_crit_edge:                          ; preds = %678, %673
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  br label %.loopexit912

.lr.ph1963:                                       ; preds = %673, %678
  %677 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  invoke void @_Z17MIR_Cleanup_ParamRKN3MIR11TypeResolveER10MirMutatorRNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(48) %677)
          to label %678 unwind label %.split1971.split

678:                                              ; preds = %.lr.ph1963
  %679 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  %680 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #9
  br i1 %680, label %.lr.ph1963, label %..loopexit872_crit_edge

.split1971.split:                                 ; preds = %.lr.ph1963
  %681 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  br label %1091

682:                                              ; preds = %.loopexit912
  %683 = getelementptr inbounds i8, ptr %647, i64 40
  %684 = call noundef ptr @_ZN3MIR10CallTarget8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %683)
  %.not657 = icmp eq ptr %684, null
  br i1 %.not657, label %986, label %685

685:                                              ; preds = %682
  %686 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  br i1 %686, label %687, label %730

687:                                              ; preds = %685
  %688 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %689 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %688)
  %690 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %689)
  br i1 %690, label %691, label %730

691:                                              ; preds = %687
  %692 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %693 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %692)
  %694 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %693)
  %695 = getelementptr inbounds i8, ptr %694, i64 8
  %696 = getelementptr inbounds i8, ptr %692, i64 8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #9
  %697 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %695, ptr noundef nonnull align 8 dereferenceable(32) %696)
          to label %698 unwind label %715

698:                                              ; preds = %691
  br i1 %697, label %.thread765, label %699

.thread765:                                       ; preds = %698
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  br label %706

699:                                              ; preds = %698
  %700 = getelementptr inbounds i8, ptr %692, i64 16
  %701 = getelementptr inbounds i8, ptr %694, i64 136
  %702 = load ptr, ptr %701, align 8, !tbaa !32
  %703 = getelementptr inbounds i8, ptr %694, i64 16
  call void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKNS0_8ItemPathERN3MIR8FunctionERKSt6vectorISA_INS0_7PatternENS0_7TypeRefEESaISU_EERKST_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  %704 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef nonnull align 8 dereferenceable(24) %700, ptr noundef nonnull align 8 dereferenceable(400) %702, ptr noundef nonnull align 8 dereferenceable(8) %695, ptr noundef nonnull align 8 dereferenceable(24) %703, ptr noundef nonnull align 8 dereferenceable(8) %692, ptr noundef nonnull %74)
          to label %705 unwind label %717

705:                                              ; preds = %699
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  br i1 %704, label %706, label %730

706:                                              ; preds = %.thread765, %705
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %76) #9
  %707 = getelementptr inbounds i8, ptr %647, i64 136
  %708 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %707) #9
  %709 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %708)
  invoke void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %76, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(32) %709, ptr noundef nonnull align 8 dereferenceable(172) %694, ptr noundef nonnull align 8 dereferenceable(80) %692)
          to label %710 unwind label %719

710:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %77) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %711 unwind label %721

711:                                              ; preds = %710
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %77, ptr noundef nonnull %78)
          to label %712 unwind label %723

712:                                              ; preds = %711
  %713 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %683, ptr noundef nonnull align 8 dereferenceable(96) %77)
          to label %714 unwind label %725

714:                                              ; preds = %712
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %77) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %77) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #9
  br label %730

715:                                              ; preds = %691
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %1091

717:                                              ; preds = %699
  %718 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  br label %1091

719:                                              ; preds = %706
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %729

721:                                              ; preds = %710
  %722 = landingpad { ptr, i32 }
          cleanup
  br label %728

723:                                              ; preds = %711
  %724 = landingpad { ptr, i32 }
          cleanup
  br label %727

725:                                              ; preds = %712
  %726 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %77) #9
  br label %727

727:                                              ; preds = %725, %723
  %.pn658 = phi { ptr, i32 } [ %726, %725 ], [ %724, %723 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  br label %728

728:                                              ; preds = %727, %721
  %.pn658.pn = phi { ptr, i32 } [ %.pn658, %727 ], [ %722, %721 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %77) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  br label %729

729:                                              ; preds = %728, %719
  %.pn658.pn.pn = phi { ptr, i32 } [ %.pn658.pn, %728 ], [ %720, %719 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %76) #9
  br label %1091

730:                                              ; preds = %705, %714, %687, %685
  %731 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  br i1 %731, label %732, label %842

732:                                              ; preds = %730
  %733 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %734 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %733)
  %735 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %734)
  br i1 %735, label %736, label %842

736:                                              ; preds = %732
  %737 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %738 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %737)
  %739 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %738)
  %740 = getelementptr inbounds i8, ptr %737, i64 8
  %741 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %742 unwind label %755

742:                                              ; preds = %736
  br i1 %741, label %749, label %743

743:                                              ; preds = %742
  %744 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %745 unwind label %755

745:                                              ; preds = %743
  br i1 %744, label %749, label %746

746:                                              ; preds = %745
  %747 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %748 unwind label %755

748:                                              ; preds = %746
  br i1 %747, label %749, label %842

749:                                              ; preds = %742, %745, %748
  %750 = getelementptr inbounds i8, ptr %647, i64 136
  %751 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %750) #9
  %752 = icmp eq i64 %751, 2
  br i1 %752, label %759, label %753

753:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 1 dereferenceable(1) %80) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %79)
          to label %754 unwind label %757

754:                                              ; preds = %753
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #9
  br label %759

755:                                              ; preds = %746, %743, %736
  %756 = landingpad { ptr, i32 }
          cleanup
  br label %1091

757:                                              ; preds = %753
  %758 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #9
  br label %1091

759:                                              ; preds = %754, %749
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #9
  %760 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %750, i64 noundef 0) #9
  %761 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %760)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(32) %761)
          to label %762 unwind label %777

762:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #9
  %763 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %750, i64 noundef 1) #9
  %764 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %763)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(32) %764)
          to label %765 unwind label %779

765:                                              ; preds = %762
  %766 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %767 unwind label %781

767:                                              ; preds = %765
  br i1 %766, label %768, label %783

768:                                              ; preds = %767
  %769 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %769, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %771 unwind label %781

771:                                              ; preds = %768
  %772 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %770, ptr noundef nonnull @.str.23)
          to label %773 unwind label %781

773:                                              ; preds = %771
  %774 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %772, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %775 unwind label %781

775:                                              ; preds = %773
  %776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %774, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %783 unwind label %781

777:                                              ; preds = %759
  %778 = landingpad { ptr, i32 }
          cleanup
  br label %841

779:                                              ; preds = %762
  %780 = landingpad { ptr, i32 }
          cleanup
  br label %840

781:                                              ; preds = %._crit_edge2125, %783, %775, %773, %771, %768, %765
  %782 = landingpad { ptr, i32 }
          cleanup
  br label %839

783:                                              ; preds = %775, %767
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %750) #9
  %784 = getelementptr inbounds i8, ptr %739, i64 120
  %785 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %750, i64 noundef %785)
          to label %.preheader915 unwind label %781

.preheader915:                                    ; preds = %783
  %786 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #9
  %.not3753 = icmp eq i64 %786, 0
  br i1 %.not3753, label %._crit_edge2125, label %.lr.ph2124

._crit_edge2125:                                  ; preds = %791, %.preheader915
  %787 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %807 unwind label %781

.lr.ph2124:                                       ; preds = %.preheader915, %791
  %.05502123 = phi i32 [ %792, %791 ], [ 0, %.preheader915 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %83) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %85, ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %788 unwind label %796

788:                                              ; preds = %.lr.ph2124
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %84, ptr noundef nonnull %85, i32 noundef %.05502123)
          to label %789 unwind label %798

789:                                              ; preds = %788
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %83, ptr noundef nonnull %84)
          to label %790 unwind label %800

790:                                              ; preds = %789
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %750, ptr noundef nonnull align 8 dereferenceable(48) %83)
          to label %791 unwind label %802

791:                                              ; preds = %790
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %83) #9
  %792 = add i32 %.05502123, 1
  %793 = zext i32 %792 to i64
  %794 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #9
  %795 = icmp ugt i64 %794, %793
  br i1 %795, label %.lr.ph2124, label %._crit_edge2125, !llvm.loop !64

796:                                              ; preds = %.lr.ph2124
  %797 = landingpad { ptr, i32 }
          cleanup
  br label %806

798:                                              ; preds = %788
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %805

800:                                              ; preds = %789
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %804

802:                                              ; preds = %790
  %803 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #9
  br label %804

804:                                              ; preds = %802, %800
  %.pn720 = phi { ptr, i32 } [ %803, %802 ], [ %801, %800 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #9
  br label %805

805:                                              ; preds = %804, %798
  %.pn720.pn = phi { ptr, i32 } [ %.pn720, %804 ], [ %799, %798 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %806

806:                                              ; preds = %805, %796
  %.pn720.pn.pn = phi { ptr, i32 } [ %.pn720.pn, %805 ], [ %797, %796 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %83) #9
  br label %839

807:                                              ; preds = %._crit_edge2125
  br i1 %787, label %808, label %821

808:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %86) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %809 unwind label %813

809:                                              ; preds = %808
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %86, ptr noundef nonnull %87)
          to label %810 unwind label %815

810:                                              ; preds = %809
  %811 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %683, ptr noundef nonnull align 8 dereferenceable(96) %86)
          to label %812 unwind label %817

812:                                              ; preds = %810
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %86) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %86) #9
  br label %838

813:                                              ; preds = %808
  %814 = landingpad { ptr, i32 }
          cleanup
  br label %820

815:                                              ; preds = %809
  %816 = landingpad { ptr, i32 }
          cleanup
  br label %819

817:                                              ; preds = %810
  %818 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %86) #9
  br label %819

819:                                              ; preds = %817, %815
  %.pn667 = phi { ptr, i32 } [ %818, %817 ], [ %816, %815 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %820

820:                                              ; preds = %819, %813
  %.pn667.pn = phi { ptr, i32 } [ %.pn667, %819 ], [ %814, %813 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %86) #9
  br label %839

821:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %88) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %822 unwind label %827

822:                                              ; preds = %821
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %89, ptr noundef nonnull %90)
          to label %823 unwind label %829

823:                                              ; preds = %822
  invoke void @_ZN3MIR10CallTargetC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(96) %88, ptr noundef nonnull %89)
          to label %824 unwind label %831

824:                                              ; preds = %823
  %825 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %683, ptr noundef nonnull align 8 dereferenceable(96) %88)
          to label %826 unwind label %833

826:                                              ; preds = %824
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %88) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %88) #9
  br label %838

827:                                              ; preds = %821
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %837

829:                                              ; preds = %822
  %830 = landingpad { ptr, i32 }
          cleanup
  br label %836

831:                                              ; preds = %823
  %832 = landingpad { ptr, i32 }
          cleanup
  br label %835

833:                                              ; preds = %824
  %834 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %88) #9
  br label %835

835:                                              ; preds = %833, %831
  %.pn663 = phi { ptr, i32 } [ %834, %833 ], [ %832, %831 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #9
  br label %836

836:                                              ; preds = %835, %829
  %.pn663.pn = phi { ptr, i32 } [ %.pn663, %835 ], [ %830, %829 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  br label %837

837:                                              ; preds = %836, %827
  %.pn663.pn.pn = phi { ptr, i32 } [ %.pn663.pn, %836 ], [ %828, %827 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %88) #9
  br label %839

838:                                              ; preds = %826, %812
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  br label %842

839:                                              ; preds = %837, %820, %806, %781
  %.pn720.pn.pn.pn = phi { ptr, i32 } [ %.pn720.pn.pn, %806 ], [ %.pn667.pn, %820 ], [ %.pn663.pn.pn, %837 ], [ %782, %781 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  br label %840

840:                                              ; preds = %839, %779
  %.pn720.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn720.pn.pn.pn, %839 ], [ %780, %779 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %841

841:                                              ; preds = %840, %777
  %.pn720.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn720.pn.pn.pn.pn, %840 ], [ %778, %777 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  br label %1091

842:                                              ; preds = %748, %838, %732, %730
  %843 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  br i1 %843, label %844, label %986

844:                                              ; preds = %842
  %845 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %846 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %845)
  %847 = call noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %846)
  br i1 %847, label %848, label %986

848:                                              ; preds = %844
  %849 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %684)
  %850 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %849)
  %851 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %850)
  %852 = getelementptr inbounds i8, ptr %849, i64 8
  %853 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %854 unwind label %870

854:                                              ; preds = %848
  br i1 %853, label %861, label %855

855:                                              ; preds = %854
  %856 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %857 unwind label %870

857:                                              ; preds = %855
  br i1 %856, label %861, label %858

858:                                              ; preds = %857
  %859 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %860 unwind label %870

860:                                              ; preds = %858
  br i1 %859, label %861, label %986

861:                                              ; preds = %860, %857, %854
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %91) #9
  %862 = load ptr, ptr %140, align 8, !tbaa !65
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %91, ptr noundef nonnull align 8 dereferenceable(112) %851, ptr noundef nonnull align 8 dereferenceable(8) %862)
          to label %863 unwind label %872

863:                                              ; preds = %861
  %864 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %141) #9
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %91) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %91) #9
  %865 = getelementptr inbounds i8, ptr %647, i64 136
  %866 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %865) #9
  %867 = icmp eq i64 %866, 2
  br i1 %867, label %876, label %868

868:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %92)
          to label %869 unwind label %874

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

870:                                              ; preds = %858, %855, %848
  %871 = landingpad { ptr, i32 }
          cleanup
  br label %1091

872:                                              ; preds = %861
  %873 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %91) #9
  br label %1091

874:                                              ; preds = %868
  %875 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #9
  br label %1091

876:                                              ; preds = %869, %863
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #9
  %877 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %865, i64 noundef 0) #9
  %878 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %877)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %878)
          to label %879 unwind label %894

879:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #9
  %880 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %865, i64 noundef 1) #9
  %881 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %880)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %881)
          to label %882 unwind label %896

882:                                              ; preds = %879
  %883 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %884 unwind label %898

884:                                              ; preds = %882
  br i1 %883, label %885, label %900

885:                                              ; preds = %884
  %886 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %887 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %886, ptr noundef nonnull @__func__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %888 unwind label %898

888:                                              ; preds = %885
  %889 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %887, ptr noundef nonnull @.str.24)
          to label %890 unwind label %898

890:                                              ; preds = %888
  %891 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %889, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %892 unwind label %898

892:                                              ; preds = %890
  %893 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %891, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %900 unwind label %898

894:                                              ; preds = %876
  %895 = landingpad { ptr, i32 }
          cleanup
  br label %985

896:                                              ; preds = %879
  %897 = landingpad { ptr, i32 }
          cleanup
  br label %984

898:                                              ; preds = %900, %892, %890, %888, %885, %882
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %983

900:                                              ; preds = %892, %884
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %865) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %865, i64 noundef %864)
          to label %.preheader914 unwind label %898

.preheader914:                                    ; preds = %900
  %.not3754 = icmp eq i64 %864, 0
  br i1 %.not3754, label %.lr.ph3748, label %.lr.ph2127

.lr.ph2127:                                       ; preds = %.preheader914, %904
  %.05432126 = phi i32 [ %905, %904 ], [ 0, %.preheader914 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %96) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %98, ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %901 unwind label %908

901:                                              ; preds = %.lr.ph2127
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %97, ptr noundef nonnull %98, i32 noundef %.05432126)
          to label %902 unwind label %910

902:                                              ; preds = %901
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %96, ptr noundef nonnull %97)
          to label %903 unwind label %912

903:                                              ; preds = %902
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %865, ptr noundef nonnull align 8 dereferenceable(48) %96)
          to label %904 unwind label %914

904:                                              ; preds = %903
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %96) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %96) #9
  %905 = add i32 %.05432126, 1
  %906 = zext i32 %905 to i64
  %907 = icmp ugt i64 %864, %906
  br i1 %907, label %.lr.ph2127, label %.lr.ph3748, !llvm.loop !70

908:                                              ; preds = %.lr.ph2127
  %909 = landingpad { ptr, i32 }
          cleanup
  br label %918

910:                                              ; preds = %901
  %911 = landingpad { ptr, i32 }
          cleanup
  br label %917

912:                                              ; preds = %902
  %913 = landingpad { ptr, i32 }
          cleanup
  br label %916

914:                                              ; preds = %903
  %915 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %96) #9
  br label %916

916:                                              ; preds = %914, %912
  %.pn711 = phi { ptr, i32 } [ %915, %914 ], [ %913, %912 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  br label %917

917:                                              ; preds = %916, %910
  %.pn711.pn = phi { ptr, i32 } [ %.pn711, %916 ], [ %911, %910 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %918

918:                                              ; preds = %917, %908
  %.pn711.pn.pn = phi { ptr, i32 } [ %.pn711.pn, %917 ], [ %909, %908 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %96) #9
  br label %983

.loopexit911:                                     ; preds = %.lr.ph3748, %..loopexit861_crit_edge, %..loopexit862_crit_edge, %..loopexit863_crit_edge
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #9
  br label %986

.lr.ph3748:                                       ; preds = %904, %.preheader914
  %919 = getelementptr inbounds i8, ptr %851, i64 88
  %920 = getelementptr inbounds i8, ptr %647, i64 8
  %921 = call noundef i32 @_ZNK3HIR25TypeData_NamedFunction_Ty3tagEv(ptr noundef nonnull align 8 dereferenceable(24) %919)
  switch i32 %921, label %.loopexit911 [
    i32 0, label %924
    i32 1, label %.preheader885
    i32 3, label %.preheader887
    i32 2, label %.lr.ph2129
  ]

.preheader887:                                    ; preds = %.lr.ph3748
  %922 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %919)
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %101) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %920)
          to label %933 unwind label %.split2595.split

.preheader885:                                    ; preds = %.lr.ph3748
  %923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %919)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %99) #9
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %100, ptr noundef nonnull align 8 dereferenceable(88) %851)
          to label %925 unwind label %.split3484.split

924:                                              ; preds = %.lr.ph3748
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 1403, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

925:                                              ; preds = %.preheader885
  invoke void @_ZN3MIR10CallTargetC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(96) %99, ptr noundef nonnull %100)
          to label %926 unwind label %.split3487.split

926:                                              ; preds = %925
  %927 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %683, ptr noundef nonnull align 8 dereferenceable(96) %99)
          to label %..loopexit861_crit_edge unwind label %.split3490.split

..loopexit861_crit_edge:                          ; preds = %926
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %99) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %99) #9
  br label %.loopexit911

.split3484.split:                                 ; preds = %.preheader885
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %932

.split3487.split:                                 ; preds = %925
  %929 = landingpad { ptr, i32 }
          cleanup
  br label %931

.split3490.split:                                 ; preds = %926
  %930 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10CallTargetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %99) #9
  br label %931

931:                                              ; preds = %.split3490.split, %.split3487.split
  %.pn707 = phi { ptr, i32 } [ %930, %.split3490.split ], [ %929, %.split3487.split ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #9
  br label %932

932:                                              ; preds = %931, %.split3484.split
  %.pn707.pn = phi { ptr, i32 } [ %.pn707, %931 ], [ %928, %.split3484.split ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %99) #9
  br label %983

933:                                              ; preds = %.preheader887
  %934 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %851)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %103, ptr noundef nonnull align 8 dereferenceable(32) %934)
          to label %935 unwind label %.thread766.split.split

935:                                              ; preds = %933
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %146, ptr noundef nonnull align 8 dereferenceable(24) %865) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %145, ptr noundef nonnull %103)
          to label %936 unwind label %.thread770.split.split

936:                                              ; preds = %935
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %101, ptr noundef nonnull %102)
          to label %937 unwind label %.split2600.split

937:                                              ; preds = %936
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 8 dereferenceable(152) %101)
          to label %938 unwind label %.split2603.split

938:                                              ; preds = %937
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %101) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %102) #9
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %103) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %101) #9
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %104) #9
  %939 = load i32, ptr %647, align 8, !tbaa !71
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %104, i32 noundef %939)
          to label %940 unwind label %.split2606.split

940:                                              ; preds = %938
  %941 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %650, ptr noundef nonnull align 8 dereferenceable(168) %104)
          to label %..loopexit862_crit_edge unwind label %.split2609.split

..loopexit862_crit_edge:                          ; preds = %940
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %104) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %104) #9
  br label %.loopexit911

.split2595.split:                                 ; preds = %.preheader887
  %942 = landingpad { ptr, i32 }
          cleanup
  br label %949

.thread766.split.split:                           ; preds = %933
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %948

.thread770.split.split:                           ; preds = %935
  %944 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %103) #9
  br label %948

.split2600.split:                                 ; preds = %936
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %947

.split2603.split:                                 ; preds = %937
  %946 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %101) #9
  br label %947

947:                                              ; preds = %.split2600.split, %.split2603.split
  %.pn699 = phi { ptr, i32 } [ %946, %.split2603.split ], [ %945, %.split2600.split ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %102) #9
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %103) #9
  br label %949

948:                                              ; preds = %.thread770.split.split, %.thread766.split.split
  %.pn699.pn.pn769 = phi { ptr, i32 } [ %943, %.thread766.split.split ], [ %944, %.thread770.split.split ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %949

949:                                              ; preds = %947, %948, %.split2595.split
  %.pn699.pn.pn.pn = phi { ptr, i32 } [ %.pn699.pn.pn769, %948 ], [ %.pn699, %947 ], [ %942, %.split2595.split ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %101) #9
  br label %983

.split2606.split:                                 ; preds = %938
  %950 = landingpad { ptr, i32 }
          cleanup
  br label %952

.split2609.split:                                 ; preds = %940
  %951 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %104) #9
  br label %952

952:                                              ; preds = %.split2609.split, %.split2606.split
  %.pn704 = phi { ptr, i32 } [ %951, %.split2609.split ], [ %950, %.split2606.split ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %104) #9
  br label %983

.lr.ph2129:                                       ; preds = %.lr.ph3748
  %953 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR25TypeData_NamedFunction_Ty18as_EnumConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %919)
  %954 = getelementptr inbounds i8, ptr %953, i64 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %105) #9
  %955 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %851)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %105, ptr noundef nonnull align 8 dereferenceable(32) %955)
          to label %956 unwind label %.split2131

956:                                              ; preds = %.lr.ph2129
  invoke void @_ZN3HIR10SimplePath13pop_componentEv(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %106, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %957 unwind label %.split2134

957:                                              ; preds = %956
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %107) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %920)
          to label %958 unwind label %.split2137

958:                                              ; preds = %957
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %959 unwind label %.thread773.split

959:                                              ; preds = %958
  %960 = load i64, ptr %954, align 8, !tbaa !85
  %961 = trunc i64 %960 to i32
  store i32 %961, ptr %143, align 8, !tbaa !87
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %144, ptr noundef nonnull align 8 dereferenceable(24) %865) #9
  invoke void @_ZN3MIR6RValue16make_EnumVariantENS0_16Data_EnumVariantE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %142, ptr noundef nonnull %109)
          to label %962 unwind label %.thread777.split

962:                                              ; preds = %959
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %107, ptr noundef nonnull %108)
          to label %963 unwind label %.split2142

963:                                              ; preds = %962
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 8 dereferenceable(152) %107)
          to label %964 unwind label %.split2145

964:                                              ; preds = %963
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %107) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %108) #9
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %109) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %107) #9
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %110) #9
  %965 = load i32, ptr %647, align 8, !tbaa !71
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %110, i32 noundef %965)
          to label %966 unwind label %.split2148

966:                                              ; preds = %964
  %967 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %650, ptr noundef nonnull align 8 dereferenceable(168) %110)
          to label %..loopexit863_crit_edge unwind label %.split2151

..loopexit863_crit_edge:                          ; preds = %966
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %110) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %110) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #9
  br label %.loopexit911

.split2131:                                       ; preds = %.lr.ph2129
  %968 = landingpad { ptr, i32 }
          cleanup
  br label %982

.split2134:                                       ; preds = %956
  %969 = landingpad { ptr, i32 }
          cleanup
  br label %981

.split2137:                                       ; preds = %957
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %977

.thread773.split:                                 ; preds = %958
  %971 = landingpad { ptr, i32 }
          cleanup
  br label %976

.thread777.split:                                 ; preds = %959
  %972 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %109) #9
  br label %976

.split2142:                                       ; preds = %962
  %973 = landingpad { ptr, i32 }
          cleanup
  br label %975

.split2145:                                       ; preds = %963
  %974 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %107) #9
  br label %975

975:                                              ; preds = %.split2142, %.split2145
  %.pn690 = phi { ptr, i32 } [ %974, %.split2145 ], [ %973, %.split2142 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %108) #9
  call void @_ZN3MIR6RValue16Data_EnumVariantD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %109) #9
  br label %977

976:                                              ; preds = %.thread777.split, %.thread773.split
  %.pn690.pn.pn776 = phi { ptr, i32 } [ %971, %.thread773.split ], [ %972, %.thread777.split ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %977

977:                                              ; preds = %975, %976, %.split2137
  %.pn690.pn.pn.pn = phi { ptr, i32 } [ %.pn690.pn.pn776, %976 ], [ %.pn690, %975 ], [ %970, %.split2137 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %107) #9
  br label %981

.split2148:                                       ; preds = %964
  %978 = landingpad { ptr, i32 }
          cleanup
  br label %980

.split2151:                                       ; preds = %966
  %979 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %110) #9
  br label %980

980:                                              ; preds = %.split2151, %.split2148
  %.pn695 = phi { ptr, i32 } [ %979, %.split2151 ], [ %978, %.split2148 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %110) #9
  br label %981

981:                                              ; preds = %980, %977, %.split2134
  %.pn695.pn = phi { ptr, i32 } [ %.pn695, %980 ], [ %.pn690.pn.pn.pn, %977 ], [ %969, %.split2134 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  br label %982

982:                                              ; preds = %981, %.split2131
  %.pn695.pn.pn = phi { ptr, i32 } [ %.pn695.pn, %981 ], [ %968, %.split2131 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %105) #9
  br label %983

983:                                              ; preds = %932, %982, %952, %949, %918, %898
  %.pn711.pn.pn.pn = phi { ptr, i32 } [ %.pn711.pn.pn, %918 ], [ %899, %898 ], [ %.pn695.pn.pn, %982 ], [ %.pn707.pn, %932 ], [ %.pn704, %952 ], [ %.pn699.pn.pn.pn, %949 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  br label %984

984:                                              ; preds = %983, %896
  %.pn711.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn711.pn.pn.pn, %983 ], [ %897, %896 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #9
  br label %985

985:                                              ; preds = %984, %894
  %.pn711.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn711.pn.pn.pn.pn, %984 ], [ %895, %894 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #9
  br label %1091

986:                                              ; preds = %842, %844, %.loopexit911, %860, %682
  %987 = call noundef zeroext i1 @_ZNK3MIR10CallTarget12is_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %683)
  br i1 %987, label %988, label %1029

988:                                              ; preds = %986
  %989 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %683)
  %990 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %989, ptr noundef nonnull @.str.25)
          to label %991 unwind label %1008

991:                                              ; preds = %988
  br i1 %990, label %992, label %1029

992:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %111) #9
  %993 = getelementptr inbounds i8, ptr %647, i64 8
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(32) %993)
          to label %994 unwind label %1010

994:                                              ; preds = %992
  %995 = getelementptr inbounds i8, ptr %647, i64 136
  %996 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %995, i64 noundef 0)
          to label %997 unwind label %.thread780

997:                                              ; preds = %994
  %998 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %996)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(32) %998)
          to label %999 unwind label %.thread780

999:                                              ; preds = %997
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %113, ptr noundef nonnull %114)
          to label %1000 unwind label %.thread784

1000:                                             ; preds = %999
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %147, ptr noundef nonnull %113)
          to label %1001 unwind label %1014

1001:                                             ; preds = %1000
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %111, ptr noundef nonnull %112)
          to label %1002 unwind label %1016

1002:                                             ; preds = %1001
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 8 dereferenceable(152) %111)
          to label %1003 unwind label %1018

1003:                                             ; preds = %1002
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %111) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %112) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %111) #9
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %115) #9
  %1004 = load i32, ptr %647, align 8, !tbaa !71
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %115, i32 noundef %1004)
          to label %1005 unwind label %1024

1005:                                             ; preds = %1003
  %1006 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %650, ptr noundef nonnull align 8 dereferenceable(168) %115)
          to label %1007 unwind label %1026

1007:                                             ; preds = %1005
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %115) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %115) #9
  br label %1029

1008:                                             ; preds = %1031, %988
  %1009 = landingpad { ptr, i32 }
          cleanup
  br label %1091

1010:                                             ; preds = %992
  %1011 = landingpad { ptr, i32 }
          cleanup
  br label %1023

.thread780:                                       ; preds = %994, %997
  %1012 = landingpad { ptr, i32 }
          cleanup
  br label %1022

.thread784:                                       ; preds = %999
  %1013 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  br label %1022

1014:                                             ; preds = %1000
  %1015 = landingpad { ptr, i32 }
          cleanup
  br label %1021

1016:                                             ; preds = %1001
  %1017 = landingpad { ptr, i32 }
          cleanup
  br label %1020

1018:                                             ; preds = %1002
  %1019 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %111) #9
  br label %1020

1020:                                             ; preds = %1018, %1016
  %.pn670 = phi { ptr, i32 } [ %1019, %1018 ], [ %1017, %1016 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %112) #9
  br label %1021

1021:                                             ; preds = %1014, %1020
  %.pn670.pn = phi { ptr, i32 } [ %.pn670, %1020 ], [ %1015, %1014 ]
  %.0427 = phi i1 [ false, %1020 ], [ true, %1014 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #9
  br i1 %.0427, label %1022, label %1023

1022:                                             ; preds = %.thread784, %.thread780, %1021
  %.pn670.pn.pn.pn783 = phi { ptr, i32 } [ %1012, %.thread780 ], [ %.pn670.pn, %1021 ], [ %1013, %.thread784 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #9
  br label %1023

1023:                                             ; preds = %1021, %1022, %1010
  %.pn670.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn670.pn.pn.pn783, %1022 ], [ %.pn670.pn, %1021 ], [ %1011, %1010 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %111) #9
  br label %1091

1024:                                             ; preds = %1003
  %1025 = landingpad { ptr, i32 }
          cleanup
  br label %1028

1026:                                             ; preds = %1005
  %1027 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %115) #9
  br label %1028

1028:                                             ; preds = %1026, %1024
  %.pn676 = phi { ptr, i32 } [ %1027, %1026 ], [ %1025, %1024 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %115) #9
  br label %1091

1029:                                             ; preds = %1007, %991, %986
  %1030 = call noundef zeroext i1 @_ZNK3MIR10CallTarget12is_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %683)
  br i1 %1030, label %1031, label %1087

1031:                                             ; preds = %1029
  %1032 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %683)
  %1033 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1032, ptr noundef nonnull @.str.26)
          to label %1034 unwind label %1008

1034:                                             ; preds = %1031
  br i1 %1033, label %1035, label %1087

1035:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %116) #9
  %1036 = getelementptr inbounds i8, ptr %647, i64 136
  %1037 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1036, i64 noundef 0)
          to label %1038 unwind label %1058

1038:                                             ; preds = %1035
  %1039 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1037)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(32) %1039)
          to label %1040 unwind label %1058

1040:                                             ; preds = %1038
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %117, ptr noundef nonnull %118)
          to label %1041 unwind label %1060

1041:                                             ; preds = %1040
  %1042 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1036, i64 noundef 1)
          to label %1043 unwind label %.thread787

1043:                                             ; preds = %1041
  %1044 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1042)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(32) %1044)
          to label %1045 unwind label %.thread787

1045:                                             ; preds = %1043
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %148, ptr noundef nonnull %119)
          to label %1046 unwind label %.thread791

1046:                                             ; preds = %1045
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %116, ptr noundef nonnull %117)
          to label %1047 unwind label %1064

1047:                                             ; preds = %1046
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 8 dereferenceable(152) %116)
          to label %1048 unwind label %1066

1048:                                             ; preds = %1047
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %116) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %117) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %116) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %120) #9
  %1049 = getelementptr inbounds i8, ptr %647, i64 8
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(32) %1049)
          to label %1050 unwind label %1072

1050:                                             ; preds = %1048
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %122, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  invoke void @_ZN3MIR6RValue10make_TupleENS0_10Data_TupleE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %149, ptr noundef nonnull %122)
          to label %1051 unwind label %1079

1051:                                             ; preds = %1050
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %120, ptr noundef nonnull %121)
          to label %1052 unwind label %1074

1052:                                             ; preds = %1051
  invoke void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 8 dereferenceable(152) %120)
          to label %1053 unwind label %1076

1053:                                             ; preds = %1052
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %120) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %121) #9
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %120) #9
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %123) #9
  %1054 = load i32, ptr %647, align 8, !tbaa !71
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %123, i32 noundef %1054)
          to label %1055 unwind label %1082

1055:                                             ; preds = %1053
  %1056 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %650, ptr noundef nonnull align 8 dereferenceable(168) %123)
          to label %1057 unwind label %1084

1057:                                             ; preds = %1055
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %123) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %123) #9
  br label %1087

1058:                                             ; preds = %1038, %1035
  %1059 = landingpad { ptr, i32 }
          cleanup
  br label %1071

1060:                                             ; preds = %1040
  %1061 = landingpad { ptr, i32 }
          cleanup
  br label %1070

.thread787:                                       ; preds = %1041, %1043
  %1062 = landingpad { ptr, i32 }
          cleanup
  br label %1069

.thread791:                                       ; preds = %1045
  %1063 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1069

1064:                                             ; preds = %1046
  %1065 = landingpad { ptr, i32 }
          cleanup
  br label %1068

1066:                                             ; preds = %1047
  %1067 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %116) #9
  br label %1068

1068:                                             ; preds = %1064, %1066
  %.pn678 = phi { ptr, i32 } [ %1067, %1066 ], [ %1065, %1064 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %117) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1070

1069:                                             ; preds = %.thread791, %.thread787
  %.pn678.pn.pn790 = phi { ptr, i32 } [ %1062, %.thread787 ], [ %1063, %.thread791 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  br label %1070

1070:                                             ; preds = %1068, %1069, %1060
  %.pn678.pn.pn.pn = phi { ptr, i32 } [ %.pn678.pn.pn790, %1069 ], [ %.pn678, %1068 ], [ %1061, %1060 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  br label %1071

1071:                                             ; preds = %1070, %1058
  %.pn678.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn678.pn.pn.pn, %1070 ], [ %1059, %1058 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %116) #9
  br label %1091

1072:                                             ; preds = %1048
  %1073 = landingpad { ptr, i32 }
          cleanup
  br label %1081

1074:                                             ; preds = %1051
  %1075 = landingpad { ptr, i32 }
          cleanup
  br label %1078

1076:                                             ; preds = %1052
  %1077 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %120) #9
  br label %1078

1078:                                             ; preds = %1074, %1076
  %.pn684 = phi { ptr, i32 } [ %1077, %1076 ], [ %1075, %1074 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %121) #9
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  br label %1081

1079:                                             ; preds = %1050
  %1080 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue10Data_TupleD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  br label %1081

1081:                                             ; preds = %1078, %1079, %1072
  %.pn684.pn.pn = phi { ptr, i32 } [ %1080, %1079 ], [ %.pn684, %1078 ], [ %1073, %1072 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %120) #9
  br label %1091

1082:                                             ; preds = %1053
  %1083 = landingpad { ptr, i32 }
          cleanup
  br label %1086

1084:                                             ; preds = %1055
  %1085 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %123) #9
  br label %1086

1086:                                             ; preds = %1084, %1082
  %.pn688 = phi { ptr, i32 } [ %1085, %1084 ], [ %1083, %1082 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %123) #9
  br label %1091

1087:                                             ; preds = %1029, %1034, %1057, %.loopexit912
  invoke void @_ZN10MirMutator11flush_blockEv(ptr noundef nonnull align 8 dereferenceable(40) %14)
          to label %1088 unwind label %648

1088:                                             ; preds = %1087
  %1089 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  %1090 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %1090, label %159, label %._crit_edge3752

1091:                                             ; preds = %1008, %1023, %1028, %1071, %1081, %1086, %870, %985, %874, %872, %755, %757, %841, %715, %717, %729, %.split2026, %.split2011, %.split1997, %.split1971.split, %.split1968.split, %648, %646
  %.pn752.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn, %646 ], [ %649, %648 ], [ %667, %.split1997 ], [ %666, %.split2011 ], [ %665, %.split2026 ], [ %681, %.split1971.split ], [ %668, %.split1968.split ], [ %.pn688, %1086 ], [ %.pn684.pn.pn, %1081 ], [ %.pn678.pn.pn.pn.pn, %1071 ], [ %1009, %1008 ], [ %.pn676, %1028 ], [ %.pn670.pn.pn.pn.pn, %1023 ], [ %.pn658.pn.pn, %729 ], [ %718, %717 ], [ %716, %715 ], [ %.pn720.pn.pn.pn.pn.pn, %841 ], [ %758, %757 ], [ %756, %755 ], [ %871, %870 ], [ %.pn711.pn.pn.pn.pn.pn, %985 ], [ %875, %874 ], [ %873, %872 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %1095

1092:                                             ; preds = %._crit_edge3752
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %124) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %124) #9
  call void @_ZN10MirMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #9
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  ret void

1093:                                             ; preds = %._crit_edge3752
  %1094 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ11MIR_CleanupRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN7VisitorD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %124) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %124) #9
  br label %1095

1095:                                             ; preds = %1093, %1091
  %.pn752.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn, %1091 ], [ %1094, %1093 ]
  call void @_ZN10MirMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #9
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #9
  br label %1096

1096:                                             ; preds = %1095, %158
  %.pn752.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %1095 ], [ %.pn, %158 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #9
  br label %1097

1097:                                             ; preds = %1096, %152, %150
  %.pn752.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn.pn, %1096 ], [ %153, %152 ], [ %151, %150 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  resume { ptr, i32 } %.pn752.pn.pn.pn.pn.pn.pn.pn.pn.pn

1098:                                             ; preds = %456, %390
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

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

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

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

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

declare noundef zeroext i1 @_ZN3MIR5visit17visit_mir_lvaluesERKNS_9StatementESt8functionIFbRKNS_6LValueENS0_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) local_unnamed_addr #2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator12make_DivergeENS0_12Data_DivergeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESK_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZN3MIR6LValue7Wrapper9new_DerefEv() local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZN3MIR6RValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZN10MirMutator10flush_stmtEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

declare noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(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(24), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR10CallTargetaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #7 align 2

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

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

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR25TypeData_NamedFunction_Ty3tagEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3MIR9StatementESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #0 align 2

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

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

declare void @_ZN3HIR10SimplePath13pop_componentEv(ptr dead_on_unwind writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

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

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { 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 #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = !{!22, !22, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!24, !26, i64 16}
!24 = !{!"_ZTSN3MIR8Constant9Data_UintE", !25, i64 0, !26, i64 16}
!25 = !{!"_ZTS4U128", !22, i64 0, !22, i64 8}
!26 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = !{!33, !6, i64 136}
!33 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !34, i64 0, !59, i64 144, !63, i64 168}
!34 = !{!"_ZTSN3HIR9TraitPathE", !35, i64 0, !41, i64 8, !48, i64 40, !56, i64 88, !6, i64 136}
!35 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !39, i64 0}
!39 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !40, i64 0}
!40 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!41 = !{!"_ZTSN3HIR11GenericPathE", !42, i64 0, !44, i64 8}
!42 = !{!"_ZTSN3HIR10SimplePathE", !43, i64 0}
!43 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!44 = !{!"_ZTSN3HIR10PathParamsE", !45, i64 0, !46, i64 8, !47, i64 16}
!45 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!46 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!47 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!48 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !49, i64 0}
!49 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !50, i64 0}
!50 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !51, i64 0, !53, i64 8}
!51 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !52, i64 0}
!52 = !{!"_ZTSSt4lessI8RcStringE"}
!53 = !{!"_ZTSSt15_Rb_tree_header", !54, i64 0, !22, i64 32}
!54 = !{!"_ZTSSt18_Rb_tree_node_base", !55, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!55 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!56 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !57, i64 0}
!57 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !58, i64 0}
!58 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !51, i64 0, !53, i64 8}
!59 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!64 = distinct !{!64, !12}
!65 = !{!66, !6, i64 8}
!66 = !{!"_ZTSN3MIR11TypeResolveE", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !67, 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}
!67 = !{!"_ZTS9FmtLambda", !68, i64 0}
!68 = !{!"_ZTSSt8functionIFvRSoEE", !69, i64 0, !6, i64 24}
!69 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!70 = distinct !{!70, !12}
!71 = !{!72, !10, i64 0}
!72 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !10, i64 0, !10, i64 4, !73, i64 8, !79, i64 40, !81, i64 136}
!73 = !{!"_ZTSN3MIR6LValueE", !74, i64 0, !75, i64 8}
!74 = !{!"_ZTSN3MIR6LValue7StorageE", !22, i64 0}
!75 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSN3MIR10CallTargetE", !80, i64 0, !7, i64 8}
!80 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!81 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!86, !22, i64 8}
!86 = !{!"_ZTSN3HIR25TypeData_NamedFunction_Ty20Data_EnumConstructorE", !6, i64 0, !22, i64 8}
!87 = !{!88, !10, i64 32}
!88 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !41, i64 0, !10, i64 32, !81, i64 40}


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