; LLVM IR from thepowersgang/mrustc :: src/mir/check_full.ll (Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)

; 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.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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 }
%"class.std::allocator.11" = type { i8 }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.26" = type { i8 }
%"struct.MIR::ValueLifetimes" = type { %"class.std::vector.29", %"class.std::vector.31" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.(anonymous namespace)::ValueStates" = type { %"struct.(anonymous namespace)::State", %"class.std::vector", %"class.std::vector", %"class.std::vector.0", %"class.std::vector.4", %"class.std::vector.9" }
%"struct.(anonymous namespace)::State" = type { i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = 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.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.41" = type { ptr }
%"class.std::function.77" = 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 = type { ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, %"struct.(anonymous namespace)::ValueStates" }
%"struct.std::pair.85" = type { i32, %"struct.(anonymous namespace)::ValueStates" }
%"class.__gnu_cxx::__normal_iterator.131" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.132" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.135" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.152 = type { ptr }
%class.anon.153 = type { ptr, ptr, ptr }
%class.anon.154 = type { ptr, ptr }
%class.anon.155 = type { ptr, ptr, ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.47" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Function" = type { %"class.std::vector.14", %"class.std::vector.0", %"class.std::vector.19", %"class.MIR::EnumCachePtr" }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = 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 }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.42", %"class.MIR::Terminator" }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = 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.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.72" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.67, %class.ThinVector.68, %class.ThinVector.69 }
%class.ThinVector.67 = type { ptr }
%class.ThinVector.68 = type { ptr }
%class.ThinVector.69 = 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.71" }
%"struct.std::_Head_base.71" = type { ptr }
%"class.std::vector.72" = type { %"struct.std::_Vector_base.73" }
%"struct.std::_Vector_base.73" = 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::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_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.108", [8 x i8] }
%"class.std::unique_ptr.108" = type { %"struct.std::__uniq_ptr_data.109" }
%"struct.std::__uniq_ptr_data.109" = type { %"class.std::__uniq_ptr_impl.110" }
%"class.std::__uniq_ptr_impl.110" = type { %"class.std::tuple.111" }
%"class.std::tuple.111" = type { %"struct.std::_Tuple_impl.112" }
%"struct.std::_Tuple_impl.112" = type { %"struct.std::_Head_base.115" }
%"struct.std::_Head_base.115" = type { ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"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.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.72" }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.72" }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.72" }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.72" }
%"struct.MIR::Statement::Data_Asm" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.116", %"class.std::vector.116", %"class.std::vector.57", %"class.std::vector.57" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = 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.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = 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.133" = type { %"class.std::__cxx11::basic_string", %"struct.MIR::LValue" }
%"struct.MIR::Statement::Data_Asm2" = type { %"struct.AsmCommon::Options", %"class.std::vector.121", %"class.std::vector.126" }
%"struct.AsmCommon::Options" = type { i8, [3 x i8] }
%"class.std::vector.121" = type { %"struct.std::_Vector_base.122" }
%"struct.std::_Vector_base.122" = 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.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = 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.136", %"class.std::unique_ptr.144" }
%"class.AsmCommon::RegisterSpec" = type { i32, %"union.AsmCommon::RegisterSpec::DataUnion" }
%"union.AsmCommon::RegisterSpec::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::unique_ptr.136" = type { %"struct.std::__uniq_ptr_data.137" }
%"struct.std::__uniq_ptr_data.137" = type { %"class.std::__uniq_ptr_impl.138" }
%"class.std::__uniq_ptr_impl.138" = type { %"class.std::tuple.139" }
%"class.std::tuple.139" = type { %"struct.std::_Tuple_impl.140" }
%"struct.std::_Tuple_impl.140" = type { %"struct.std::_Head_base.143" }
%"struct.std::_Head_base.143" = type { ptr }
%"class.std::unique_ptr.144" = type { %"struct.std::__uniq_ptr_data.145" }
%"struct.std::__uniq_ptr_data.145" = type { %"class.std::__uniq_ptr_impl.146" }
%"class.std::__uniq_ptr_impl.146" = type { %"class.std::tuple.147" }
%"class.std::tuple.147" = type { %"struct.std::_Tuple_impl.148" }
%"struct.std::_Tuple_impl.148" = type { %"struct.std::_Head_base.151" }
%"struct.std::_Head_base.151" = type { ptr }
%"struct.MIR::Statement::Data_SetDropFlag" = type { i32, i8, i32 }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::Terminator::Data_Panic" = type { i32 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.9" }
%"struct.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.9", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.29" }

@.str.3 = external hidden unnamed_addr constant [77 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [78 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::vector.9", align 8
  %6 = alloca %"class.std::allocator.11", align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector.24", align 8
  %10 = alloca %"class.std::allocator.26", align 1
  %11 = alloca %"struct.MIR::ValueLifetimes", align 8
  %12 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.41", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.41", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::function.77", align 8
  %20 = alloca %class.anon, align 8
  %21 = alloca %"class.std::vector.80", align 8
  %22 = alloca %"struct.std::pair", align 8
  %23 = alloca %"struct.std::pair.85", align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.(anonymous namespace)::State", align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %80 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %81 = alloca ptr, align 8
  %82 = alloca i8, align 1
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator.135", align 8
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.135", align 8
  %87 = alloca ptr, align 8
  %88 = alloca i8, align 1
  %89 = alloca ptr, align 8
  %90 = alloca i8, align 1
  %91 = alloca ptr, align 8
  %92 = alloca i8, align 1
  %93 = alloca ptr, align 8
  %94 = alloca i8, align 1
  %95 = alloca ptr, align 8
  %96 = alloca i8, align 1
  %97 = alloca ptr, align 8
  %98 = alloca %"struct.std::_Bit_reference", align 8
  %99 = alloca %"struct.std::_Bit_reference", align 8
  %100 = alloca %"struct.std::_Bit_reference", align 8
  %101 = alloca i8, align 1
  %102 = alloca ptr, align 8
  %103 = alloca %"struct.std::_Bit_reference", align 8
  %104 = alloca ptr, align 8
  %105 = alloca %"class.std::function", align 8
  %106 = alloca %class.anon.152, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.153, align 8
  %109 = alloca ptr, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.154, align 8
  %112 = alloca %"class.std::function", align 8
  %113 = alloca %class.anon.155, align 8
  %114 = alloca %"struct.(anonymous namespace)::State", align 4
  %115 = alloca i8, align 1
  %116 = alloca ptr, align 8
  %117 = alloca ptr, align 8
  %118 = alloca ptr, align 8
  %119 = alloca %"struct.MIR::LValue", align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca %"struct.std::pair", align 8
  %123 = alloca ptr, align 8
  %124 = alloca %"struct.std::pair", align 8
  %125 = alloca ptr, align 8
  %126 = alloca %"struct.std::pair", align 8
  %127 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %128 = alloca %"struct.std::pair", align 8
  %129 = alloca ptr, align 8
  %130 = alloca i64, align 8
  %131 = alloca %"struct.std::pair", align 8
  %132 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %133 = alloca ptr, align 8
  %134 = alloca i64, align 8
  %135 = alloca %"struct.std::pair", align 8
  %136 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %137 = alloca %"struct.std::pair", align 8
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca ptr, align 8
  %141 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %142 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %143 = alloca ptr, align 8
  %144 = alloca ptr, align 8
  %145 = alloca %"struct.std::pair", align 8
  %146 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %147 = alloca %"struct.std::pair", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #8
  %148 = load ptr, ptr %4, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.MIR::Function", ptr %148, i32 0, i32 2
  %150 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %149) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #8
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %150, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %151 unwind label %173

151:                                              ; preds = %2
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #8
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %"class.MIR::Function", ptr %152, i32 0, i32 2
  %154 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %153) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #8
  call void @_ZNSaIN12_GLOBAL__N_18StateSetEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %154, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %155 unwind label %177

155:                                              ; preds = %151
  call void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %11) #8
  %156 = load ptr, ptr %3, align 8, !tbaa !5
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z23MIR_Helper_GetLifetimesRN3MIR11TypeResolveERKNS_8FunctionEbPKSt6vectorIbSaIbEE(ptr dead_on_unwind writable sret(%"struct.MIR::ValueLifetimes") align 8 %11, ptr noundef nonnull align 8 dereferenceable(120) %156, ptr noundef nonnull align 8 dereferenceable(96) %157, i1 noundef zeroext true, ptr noundef null)
          to label %158 unwind label %181

158:                                              ; preds = %155
  br label %159

159:                                              ; preds = %158
  %160 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %161 unwind label %185

161:                                              ; preds = %159
  br i1 %160, label %162, label %189

162:                                              ; preds = %161
  %163 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %163, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %165 unwind label %185

165:                                              ; preds = %162
  %166 = getelementptr inbounds %"struct.MIR::ValueLifetimes", ptr %11, i32 0, i32 0
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsImERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(24) %166)
          to label %168 unwind label %185

168:                                              ; preds = %165
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef @_ZSt3decRSt8ios_base)
          to label %170 unwind label %185

170:                                              ; preds = %168
  %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %172 unwind label %185

172:                                              ; preds = %170
  br label %189

173:                                              ; preds = %2
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %7, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  br label %1789

177:                                              ; preds = %151
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %7, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  br label %1788

181:                                              ; preds = %155
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %7, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %8, align 4
  br label %1787

185:                                              ; preds = %170, %168, %165, %162, %159
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %7, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %8, align 4
  br label %1786

189:                                              ; preds = %172, %161
  br label %190

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 144, ptr %12) #8
  invoke void @_ZN12_GLOBAL__N_111ValueStatesC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %192 unwind label %223

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #8
  %193 = load ptr, ptr %3, align 8, !tbaa !5
  %194 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %193, i32 0, i32 6
  %195 = load ptr, ptr %194, align 8, !tbaa !11
  %196 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #8
  invoke void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %13, i64 noundef %196, i1 noundef zeroext true)
          to label %197 unwind label %227

197:                                              ; preds = %192
  %198 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %12, i32 0, i32 1
  %199 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %198, ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #8
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %"class.MIR::Function", ptr %200, i32 0, i32 0
  %202 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %201) #8
  invoke void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %14, i64 noundef %202, i1 noundef zeroext false)
          to label %203 unwind label %231

203:                                              ; preds = %197
  %204 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %12, i32 0, i32 2
  %205 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %204, ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %"class.MIR::Function", ptr %206, i32 0, i32 1
  %208 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %12, i32 0, i32 3
  %209 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIbSaIbEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(40) %208, ptr noundef nonnull align 8 dereferenceable(40) %207)
          to label %210 unwind label %235

210:                                              ; preds = %203
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #8
  store i32 1, ptr %211, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %"class.MIR::Function", ptr %212, i32 0, i32 2
  store ptr %213, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %214 = load ptr, ptr %15, align 8, !tbaa !5
  %215 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %214) #8
  %216 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.41", ptr %16, i32 0, i32 0
  store ptr %215, ptr %216, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %217 = load ptr, ptr %15, align 8, !tbaa !5
  %218 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #8
  %219 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.41", ptr %17, i32 0, i32 0
  store ptr %218, ptr %219, align 8
  br label %220

220:                                              ; preds = %245, %210
  %221 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %221, label %239, label %222

222:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %251

223:                                              ; preds = %191
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %7, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %8, align 4
  br label %1785

227:                                              ; preds = %192
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %7, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  br label %1784

231:                                              ; preds = %197
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %7, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  br label %1784

235:                                              ; preds = %203
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %7, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %8, align 4
  br label %1784

239:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %240 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  store ptr %240, ptr %18, align 8, !tbaa !5
  %241 = load ptr, ptr %18, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %241, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %243 = getelementptr inbounds %class.anon, ptr %20, i32 0, i32 0
  store ptr %5, ptr %243, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKjEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS5_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  invoke void @_ZN3MIR5visit23visit_terminator_targetERKNS_10TerminatorESt8functionIFvRKjEE(ptr noundef nonnull align 8 dereferenceable(168) %242, ptr noundef %19)
          to label %244 unwind label %247

244:                                              ; preds = %239
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %245

245:                                              ; preds = %244
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %220

247:                                              ; preds = %239
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %7, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %1784

251:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #8
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !9
  invoke void @_ZSt9make_pairIiN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind writable sret(%"struct.std::pair.85") align 8 %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 8 dereferenceable(144) %12)
          to label %252 unwind label %271

252:                                              ; preds = %251
  invoke void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEEC2IiS1_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS5_S6_EEclsr6_PCCFPIS5_S6_EE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS_IS5_S6_E(ptr noundef nonnull align 8 dereferenceable(152) %22, ptr noundef nonnull align 8 dereferenceable(152) %23)
          to label %253 unwind label %275

253:                                              ; preds = %252
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %22)
          to label %254 unwind label %279

254:                                              ; preds = %253
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %22) #8
  call void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %22) #8
  br label %255

255:                                              ; preds = %1779, %1777, %254
  %256 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %257 = xor i1 %256, true
  br i1 %257, label %258, label %1782

258:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %259 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %260 = getelementptr inbounds %"struct.std::pair", ptr %259, i32 0, i32 0
  %261 = load i32, ptr %260, align 8, !tbaa !16
  store i32 %261, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 144, ptr %26) #8
  %262 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %263 = getelementptr inbounds %"struct.std::pair", ptr %262, i32 0, i32 1
  call void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(144) %263) #8
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %341, %258
  %265 = load i32, ptr %27, align 4, !tbaa !9
  %266 = zext i32 %265 to i64
  %267 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 2
  %268 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %267) #8
  %269 = icmp ult i64 %266, %268
  br i1 %269, label %285, label %270

270:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %345

271:                                              ; preds = %251
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %7, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %8, align 4
  br label %284

275:                                              ; preds = %252
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %7, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %8, align 4
  br label %283

279:                                              ; preds = %253
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %7, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %22) #8
  br label %283

283:                                              ; preds = %279, %275
  call void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %23) #8
  br label %284

284:                                              ; preds = %283, %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %22) #8
  br label %1783

285:                                              ; preds = %264
  %286 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 2
  %287 = load i32, ptr %27, align 4, !tbaa !9
  %288 = zext i32 %287 to i64
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %288) #8
  %290 = invoke noundef zeroext i1 @_ZNK12_GLOBAL__N_15State8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %289)
          to label %291 unwind label %293

291:                                              ; preds = %285
  br i1 %290, label %297, label %292

292:                                              ; preds = %291
  br label %340

293:                                              ; preds = %324, %322, %320, %317, %315, %312, %310, %307, %304, %297, %285
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %7, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %8, align 4
  br label %344

297:                                              ; preds = %291
  %298 = load i32, ptr %27, align 4, !tbaa !9
  %299 = load i32, ptr %25, align 4, !tbaa !9
  %300 = invoke noundef zeroext i1 @_ZNK3MIR14ValueLifetimes10slot_validEjjj(ptr noundef nonnull align 8 dereferenceable(48) %11, i32 noundef %298, i32 noundef %299, i32 noundef 0)
          to label %301 unwind label %293

301:                                              ; preds = %297
  br i1 %300, label %302, label %303

302:                                              ; preds = %301
  br label %339

303:                                              ; preds = %301
  br label %304

304:                                              ; preds = %303
  %305 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %306 unwind label %293

306:                                              ; preds = %304
  br i1 %305, label %307, label %327

307:                                              ; preds = %306
  %308 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %308, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %310 unwind label %293

310:                                              ; preds = %307
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef @.str.6)
          to label %312 unwind label %293

312:                                              ; preds = %310
  %313 = load i32, ptr %25, align 4, !tbaa !9
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %311, i32 noundef %313)
          to label %315 unwind label %293

315:                                              ; preds = %312
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef @.str.7)
          to label %317 unwind label %293

317:                                              ; preds = %315
  %318 = load i32, ptr %27, align 4, !tbaa !9
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %316, i32 noundef %318)
          to label %320 unwind label %293

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef @.str.8)
          to label %322 unwind label %293

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef @_ZSt3decRSt8ios_base)
          to label %324 unwind label %293

324:                                              ; preds = %322
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %326 unwind label %293

326:                                              ; preds = %324
  br label %327

327:                                              ; preds = %326, %306
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  invoke void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4) %28, i1 noundef zeroext false)
          to label %330 unwind label %335

330:                                              ; preds = %329
  %331 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 2
  %332 = load i32, ptr %27, align 4, !tbaa !9
  %333 = zext i32 %332 to i64
  %334 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %331, i64 noundef %333) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %334, ptr align 4 %28, i64 4, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %339

335:                                              ; preds = %329
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %7, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %344

339:                                              ; preds = %330, %302
  br label %340

340:                                              ; preds = %339, %292
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %27, align 4, !tbaa !9
  %343 = add i32 %342, 1
  store i32 %343, ptr %27, align 4, !tbaa !9
  br label %264, !llvm.loop !39

344:                                              ; preds = %335, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %1781

345:                                              ; preds = %270
  %346 = load i32, ptr %25, align 4, !tbaa !9
  %347 = zext i32 %346 to i64
  %348 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %347) #8
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp ugt i32 %349, 1
  br i1 %350, label %351, label %383

351:                                              ; preds = %345
  %352 = load i32, ptr %25, align 4, !tbaa !9
  %353 = zext i32 %352 to i64
  %354 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %353) #8
  %355 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_18StateSet9add_stateERKNS_11ValueStatesE(ptr noundef nonnull align 8 dereferenceable(24) %354, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %356 unwind label %376

356:                                              ; preds = %351
  br i1 %355, label %383, label %357

357:                                              ; preds = %356
  br label %358

358:                                              ; preds = %357
  %359 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %360 unwind label %376

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

361:                                              ; preds = %360
  %362 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %362, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %364 unwind label %376

364:                                              ; preds = %361
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef @.str.6)
          to label %366 unwind label %376

366:                                              ; preds = %364
  %367 = load i32, ptr %25, align 4, !tbaa !9
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %365, i32 noundef %367)
          to label %369 unwind label %376

369:                                              ; preds = %366
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef @.str.9)
          to label %371 unwind label %376

371:                                              ; preds = %369
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef @_ZSt3decRSt8ios_base)
          to label %373 unwind label %376

373:                                              ; preds = %371
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %375 unwind label %376

375:                                              ; preds = %373
  br label %380

376:                                              ; preds = %406, %401, %399, %397, %395, %392, %390, %387, %384, %373, %371, %369, %366, %364, %361, %358, %351
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %7, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %8, align 4
  br label %1781

380:                                              ; preds = %375, %360
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381
  store i32 6, ptr %29, align 4
  br label %1777, !llvm.loop !41

383:                                              ; preds = %356, %345
  br label %384

384:                                              ; preds = %383
  %385 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %386 unwind label %376

386:                                              ; preds = %384
  br i1 %385, label %387, label %404

387:                                              ; preds = %386
  %388 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %388, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %390 unwind label %376

390:                                              ; preds = %387
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %389, ptr noundef @.str.6)
          to label %392 unwind label %376

392:                                              ; preds = %390
  %393 = load i32, ptr %25, align 4, !tbaa !9
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %391, i32 noundef %393)
          to label %395 unwind label %376

395:                                              ; preds = %392
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef @.str.10)
          to label %397 unwind label %376

397:                                              ; preds = %395
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %399 unwind label %376

399:                                              ; preds = %397
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef @_ZSt3decRSt8ios_base)
          to label %401 unwind label %376

401:                                              ; preds = %399
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %403 unwind label %376

403:                                              ; preds = %401
  br label %404

404:                                              ; preds = %403, %386
  br label %405

405:                                              ; preds = %404
  br label %406

406:                                              ; preds = %405
  %407 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 5
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %407, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %408 unwind label %376

408:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %"class.MIR::Function", ptr %409, i32 0, i32 2
  %411 = load i32, ptr %25, align 4, !tbaa !9
  %412 = zext i32 %411 to i64
  %413 = invoke noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %410, i64 noundef %412)
          to label %414 unwind label %422

414:                                              ; preds = %408
  store ptr %413, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store i64 0, ptr %31, align 8, !tbaa !42
  br label %415

415:                                              ; preds = %1369, %414
  %416 = load i64, ptr %31, align 8, !tbaa !42
  %417 = load ptr, ptr %30, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %417, i32 0, i32 0
  %419 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %418) #8
  %420 = icmp ult i64 %416, %419
  br i1 %420, label %426, label %421

421:                                              ; preds = %415
  store i32 17, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %1373

422:                                              ; preds = %1400, %1395, %1393, %1389, %1387, %1384, %1381, %1378, %1374, %1373, %408
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %7, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %8, align 4
  br label %1780

426:                                              ; preds = %415
  %427 = load ptr, ptr %3, align 8, !tbaa !5
  %428 = load i32, ptr %25, align 4, !tbaa !9
  %429 = load i64, ptr %31, align 8, !tbaa !42
  %430 = trunc i64 %429 to i32
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %427, i32 noundef %428, i32 noundef %430)
          to label %431 unwind label %456

431:                                              ; preds = %426
  br label %432

432:                                              ; preds = %431
  %433 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %434 unwind label %456

434:                                              ; preds = %432
  br i1 %433, label %435, label %460

435:                                              ; preds = %434
  %436 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %436, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %438 unwind label %456

438:                                              ; preds = %435
  %439 = load ptr, ptr %3, align 8, !tbaa !5
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %437, ptr noundef nonnull align 8 dereferenceable(120) %439)
          to label %441 unwind label %456

441:                                              ; preds = %438
  %442 = load ptr, ptr %30, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %442, i32 0, i32 0
  %444 = load i64, ptr %31, align 8, !tbaa !42
  %445 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %443, i64 noundef %444) #8
  %446 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull align 8 dereferenceable(152) %445)
          to label %447 unwind label %456

447:                                              ; preds = %441
  %448 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %446, ptr noundef @.str.11)
          to label %449 unwind label %456

449:                                              ; preds = %447
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8) %448, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %451 unwind label %456

451:                                              ; preds = %449
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef @_ZSt3decRSt8ios_base)
          to label %453 unwind label %456

453:                                              ; preds = %451
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %455 unwind label %456

455:                                              ; preds = %453
  br label %460

456:                                              ; preds = %453, %451, %449, %447, %441, %438, %435, %432, %426
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %7, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %8, align 4
  br label %1372

460:                                              ; preds = %455, %434
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  store i8 1, ptr %32, align 1, !tbaa !44
  br label %463

463:                                              ; preds = %1367, %462
  %464 = load i8, ptr %32, align 1, !tbaa !44, !range !46, !noundef !47
  %465 = trunc i8 %464 to i1
  br i1 %465, label %467, label %466

466:                                              ; preds = %463
  store i32 22, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %1368

467:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %468 = load ptr, ptr %30, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %468, i32 0, i32 0
  %470 = load i64, ptr %31, align 8, !tbaa !42
  %471 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %469, i64 noundef %470) #8
  store ptr %471, ptr %33, align 8, !tbaa !5
  br label %472

472:                                              ; preds = %1364, %467
  %473 = load i8, ptr %32, align 1, !tbaa !44, !range !46, !noundef !47
  %474 = trunc i8 %473 to i1
  br i1 %474, label %476, label %475

475:                                              ; preds = %472
  store i32 25, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %1366

476:                                              ; preds = %472
  %477 = load ptr, ptr %33, align 8, !tbaa !5
  %478 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %477)
          to label %479 unwind label %480

479:                                              ; preds = %476
  switch i32 %478, label %1363 [
    i32 0, label %484
    i32 1, label %485
    i32 2, label %852
    i32 3, label %924
    i32 4, label %1078
    i32 5, label %1169
    i32 6, label %1340
  ]

480:                                              ; preds = %476
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %7, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %8, align 4
  br label %1365

484:                                              ; preds = %479
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 785, ptr noundef @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #9
  unreachable

485:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  store i8 1, ptr %34, align 1, !tbaa !44
  br label %486

486:                                              ; preds = %850, %485
  %487 = load i8, ptr %34, align 1, !tbaa !44, !range !46, !noundef !47
  %488 = trunc i8 %487 to i1
  br i1 %488, label %490, label %489

489:                                              ; preds = %486
  store i32 29, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %851

490:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  %492 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %491)
          to label %493 unwind label %499

493:                                              ; preds = %490
  store ptr %492, ptr %35, align 8, !tbaa !5
  br label %494

494:                                              ; preds = %847, %493
  %495 = load ptr, ptr %35, align 8, !tbaa !5
  %496 = load i8, ptr %34, align 1, !tbaa !44, !range !46, !noundef !47
  %497 = trunc i8 %496 to i1
  br i1 %497, label %503, label %498

498:                                              ; preds = %494
  store i32 32, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %849

499:                                              ; preds = %842, %503, %490
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %7, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %8, align 4
  br label %848

503:                                              ; preds = %494
  %504 = load ptr, ptr %35, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %504, i32 0, i32 1
  %506 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %505)
          to label %507 unwind label %499

507:                                              ; preds = %503
  switch i32 %506, label %842 [
    i32 0, label %508
    i32 1, label %509
    i32 3, label %522
    i32 4, label %532
    i32 2, label %546
    i32 5, label %560
    i32 6, label %574
    i32 7, label %592
    i32 8, label %606
    i32 9, label %620
    i32 10, label %634
    i32 11, label %652
    i32 12, label %693
    i32 13, label %734
    i32 14, label %760
    i32 15, label %801
  ]

508:                                              ; preds = %507
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 857, ptr noundef @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #9
  unreachable

509:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %510 = load ptr, ptr %35, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %510, i32 0, i32 1
  %512 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %511)
          to label %513 unwind label %518

513:                                              ; preds = %509
  store ptr %512, ptr %36, align 8, !tbaa !5
  %514 = load ptr, ptr %36, align 8, !tbaa !5
  %515 = load ptr, ptr %3, align 8, !tbaa !5
  %516 = load ptr, ptr %36, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %515, ptr noundef nonnull align 8 dereferenceable(32) %516)
          to label %517 unwind label %518

517:                                              ; preds = %513
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %842

518:                                              ; preds = %513, %509
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %7, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %848

522:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %523 = load ptr, ptr %35, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %523, i32 0, i32 1
  %525 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %524)
          to label %526 unwind label %528

526:                                              ; preds = %522
  store ptr %525, ptr %37, align 8, !tbaa !5
  %527 = load ptr, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %842

528:                                              ; preds = %522
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %7, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %848

532:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %533 = load ptr, ptr %35, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %533, i32 0, i32 1
  %535 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %534)
          to label %536 unwind label %542

536:                                              ; preds = %532
  store ptr %535, ptr %38, align 8, !tbaa !5
  %537 = load ptr, ptr %38, align 8, !tbaa !5
  %538 = load ptr, ptr %3, align 8, !tbaa !5
  %539 = load ptr, ptr %38, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %539, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %538, ptr noundef nonnull align 8 dereferenceable(48) %540)
          to label %541 unwind label %542

541:                                              ; preds = %536
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %842

542:                                              ; preds = %536, %532
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %7, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %848

546:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %547 = load ptr, ptr %35, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %547, i32 0, i32 1
  %549 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %548)
          to label %550 unwind label %556

550:                                              ; preds = %546
  store ptr %549, ptr %39, align 8, !tbaa !5
  %551 = load ptr, ptr %39, align 8, !tbaa !5
  %552 = load ptr, ptr %3, align 8, !tbaa !5
  %553 = load ptr, ptr %39, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %553, i32 0, i32 1
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %552, ptr noundef nonnull align 8 dereferenceable(32) %554)
          to label %555 unwind label %556

555:                                              ; preds = %550
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %842

556:                                              ; preds = %550, %546
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %7, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %848

560:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %561 = load ptr, ptr %35, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %561, i32 0, i32 1
  %563 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %562)
          to label %564 unwind label %570

564:                                              ; preds = %560
  store ptr %563, ptr %40, align 8, !tbaa !5
  %565 = load ptr, ptr %40, align 8, !tbaa !5
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = load ptr, ptr %40, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %567, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %566, ptr noundef nonnull align 8 dereferenceable(32) %568)
          to label %569 unwind label %570

569:                                              ; preds = %564
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %842

570:                                              ; preds = %564, %560
  %571 = landingpad { ptr, i32 }
          cleanup
  %572 = extractvalue { ptr, i32 } %571, 0
  store ptr %572, ptr %7, align 8
  %573 = extractvalue { ptr, i32 } %571, 1
  store i32 %573, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %848

574:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %575 = load ptr, ptr %35, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %575, i32 0, i32 1
  %577 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %576)
          to label %578 unwind label %588

578:                                              ; preds = %574
  store ptr %577, ptr %41, align 8, !tbaa !5
  %579 = load ptr, ptr %41, align 8, !tbaa !5
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = load ptr, ptr %41, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %581, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %580, ptr noundef nonnull align 8 dereferenceable(48) %582)
          to label %583 unwind label %588

583:                                              ; preds = %578
  %584 = load ptr, ptr %3, align 8, !tbaa !5
  %585 = load ptr, ptr %41, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %585, i32 0, i32 2
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %584, ptr noundef nonnull align 8 dereferenceable(48) %586)
          to label %587 unwind label %588

587:                                              ; preds = %583
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %842

588:                                              ; preds = %583, %578, %574
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %7, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %848

592:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %593 = load ptr, ptr %35, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %593, i32 0, i32 1
  %595 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %594)
          to label %596 unwind label %602

596:                                              ; preds = %592
  store ptr %595, ptr %42, align 8, !tbaa !5
  %597 = load ptr, ptr %42, align 8, !tbaa !5
  %598 = load ptr, ptr %3, align 8, !tbaa !5
  %599 = load ptr, ptr %42, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %599, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %598, ptr noundef nonnull align 8 dereferenceable(32) %600)
          to label %601 unwind label %602

601:                                              ; preds = %596
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %842

602:                                              ; preds = %596, %592
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %7, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %848

606:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %607 = load ptr, ptr %35, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %607, i32 0, i32 1
  %609 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %608)
          to label %610 unwind label %616

610:                                              ; preds = %606
  store ptr %609, ptr %43, align 8, !tbaa !5
  %611 = load ptr, ptr %43, align 8, !tbaa !5
  %612 = load ptr, ptr %3, align 8, !tbaa !5
  %613 = load ptr, ptr %43, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %613, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %612, ptr noundef nonnull align 8 dereferenceable(32) %614)
          to label %615 unwind label %616

615:                                              ; preds = %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %842

616:                                              ; preds = %610, %606
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %7, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %848

620:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %621 = load ptr, ptr %35, align 8, !tbaa !5
  %622 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %621, i32 0, i32 1
  %623 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %622)
          to label %624 unwind label %630

624:                                              ; preds = %620
  store ptr %623, ptr %44, align 8, !tbaa !5
  %625 = load ptr, ptr %44, align 8, !tbaa !5
  %626 = load ptr, ptr %3, align 8, !tbaa !5
  %627 = load ptr, ptr %44, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %627, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %626, ptr noundef nonnull align 8 dereferenceable(32) %628)
          to label %629 unwind label %630

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

630:                                              ; preds = %624, %620
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %7, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %848

634:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %635 = load ptr, ptr %35, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %635, i32 0, i32 1
  %637 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %636)
          to label %638 unwind label %648

638:                                              ; preds = %634
  store ptr %637, ptr %45, align 8, !tbaa !5
  %639 = load ptr, ptr %45, align 8, !tbaa !5
  %640 = load ptr, ptr %3, align 8, !tbaa !5
  %641 = load ptr, ptr %45, align 8, !tbaa !5
  %642 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %641, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %640, ptr noundef nonnull align 8 dereferenceable(48) %642)
          to label %643 unwind label %648

643:                                              ; preds = %638
  %644 = load ptr, ptr %3, align 8, !tbaa !5
  %645 = load ptr, ptr %45, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %645, i32 0, i32 1
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %644, ptr noundef nonnull align 8 dereferenceable(48) %646)
          to label %647 unwind label %648

647:                                              ; preds = %643
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %842

648:                                              ; preds = %643, %638, %634
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %7, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %848

652:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %653 = load ptr, ptr %35, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %653, i32 0, i32 1
  %655 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %654)
          to label %656 unwind label %669

656:                                              ; preds = %652
  store ptr %655, ptr %46, align 8, !tbaa !5
  %657 = load ptr, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %658 = load ptr, ptr %46, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %658, i32 0, i32 0
  store ptr %659, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %660 = load ptr, ptr %47, align 8, !tbaa !5
  %661 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %660) #8
  %662 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %48, i32 0, i32 0
  store ptr %661, ptr %662, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %663 = load ptr, ptr %47, align 8, !tbaa !5
  %664 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %663) #8
  %665 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %49, i32 0, i32 0
  store ptr %664, ptr %665, align 8
  br label %666

666:                                              ; preds = %689, %656
  %667 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br i1 %667, label %673, label %668

668:                                              ; preds = %666
  store i32 36, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %691

669:                                              ; preds = %652
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %7, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %8, align 4
  br label %692

673:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %674 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  store ptr %674, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %675 = load ptr, ptr %50, align 8, !tbaa !5
  %676 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %675)
          to label %677 unwind label %684

677:                                              ; preds = %673
  store ptr %676, ptr %51, align 8, !tbaa !5
  %678 = load ptr, ptr %51, align 8, !tbaa !5
  %679 = icmp ne ptr %678, null
  br i1 %679, label %680, label %688

680:                                              ; preds = %677
  %681 = load ptr, ptr %3, align 8, !tbaa !5
  %682 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %681, ptr noundef nonnull align 8 dereferenceable(32) %682)
          to label %683 unwind label %684

683:                                              ; preds = %680
  br label %688

684:                                              ; preds = %680, %673
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %7, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %692

688:                                              ; preds = %683, %677
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %689

689:                                              ; preds = %688
  %690 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %666

691:                                              ; preds = %668
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %842

692:                                              ; preds = %684, %669
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %848

693:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %694 = load ptr, ptr %35, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %694, i32 0, i32 1
  %696 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %695)
          to label %697 unwind label %710

697:                                              ; preds = %693
  store ptr %696, ptr %52, align 8, !tbaa !5
  %698 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %699 = load ptr, ptr %52, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %699, i32 0, i32 0
  store ptr %700, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %701 = load ptr, ptr %53, align 8, !tbaa !5
  %702 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %701) #8
  %703 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %54, i32 0, i32 0
  store ptr %702, ptr %703, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %704 = load ptr, ptr %53, align 8, !tbaa !5
  %705 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %704) #8
  %706 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %55, i32 0, i32 0
  store ptr %705, ptr %706, align 8
  br label %707

707:                                              ; preds = %730, %697
  %708 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %708, label %714, label %709

709:                                              ; preds = %707
  store i32 38, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %732

710:                                              ; preds = %693
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %7, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %8, align 4
  br label %733

714:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %715 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  store ptr %715, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %716 = load ptr, ptr %56, align 8, !tbaa !5
  %717 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %716)
          to label %718 unwind label %725

718:                                              ; preds = %714
  store ptr %717, ptr %57, align 8, !tbaa !5
  %719 = load ptr, ptr %57, align 8, !tbaa !5
  %720 = icmp ne ptr %719, null
  br i1 %720, label %721, label %729

721:                                              ; preds = %718
  %722 = load ptr, ptr %3, align 8, !tbaa !5
  %723 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %722, ptr noundef nonnull align 8 dereferenceable(32) %723)
          to label %724 unwind label %725

724:                                              ; preds = %721
  br label %729

725:                                              ; preds = %721, %714
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %7, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %733

729:                                              ; preds = %724, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %730

730:                                              ; preds = %729
  %731 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %707

732:                                              ; preds = %709
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %842

733:                                              ; preds = %725, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %848

734:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %735 = load ptr, ptr %35, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %735, i32 0, i32 1
  %737 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %736)
          to label %738 unwind label %750

738:                                              ; preds = %734
  store ptr %737, ptr %58, align 8, !tbaa !5
  %739 = load ptr, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %740 = load ptr, ptr %58, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %740, i32 0, i32 2
  %742 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %741)
          to label %743 unwind label %754

743:                                              ; preds = %738
  store ptr %742, ptr %59, align 8, !tbaa !5
  %744 = load ptr, ptr %59, align 8, !tbaa !5
  %745 = icmp ne ptr %744, null
  br i1 %745, label %746, label %758

746:                                              ; preds = %743
  %747 = load ptr, ptr %3, align 8, !tbaa !5
  %748 = load ptr, ptr %59, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %747, ptr noundef nonnull align 8 dereferenceable(32) %748)
          to label %749 unwind label %754

749:                                              ; preds = %746
  br label %758

750:                                              ; preds = %734
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %7, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %8, align 4
  br label %759

754:                                              ; preds = %746, %738
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %7, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %759

758:                                              ; preds = %749, %743
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %842

759:                                              ; preds = %754, %750
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %848

760:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %761 = load ptr, ptr %35, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %761, i32 0, i32 1
  %763 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %762)
          to label %764 unwind label %777

764:                                              ; preds = %760
  store ptr %763, ptr %60, align 8, !tbaa !5
  %765 = load ptr, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %766 = load ptr, ptr %60, align 8, !tbaa !5
  %767 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %766, i32 0, i32 2
  store ptr %767, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %768 = load ptr, ptr %61, align 8, !tbaa !5
  %769 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %768) #8
  %770 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %62, i32 0, i32 0
  store ptr %769, ptr %770, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %771 = load ptr, ptr %61, align 8, !tbaa !5
  %772 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %771) #8
  %773 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %63, i32 0, i32 0
  store ptr %772, ptr %773, align 8
  br label %774

774:                                              ; preds = %797, %764
  %775 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br i1 %775, label %781, label %776

776:                                              ; preds = %774
  store i32 40, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %799

777:                                              ; preds = %760
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %7, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %8, align 4
  br label %800

781:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %782 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  store ptr %782, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %783 = load ptr, ptr %64, align 8, !tbaa !5
  %784 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %783)
          to label %785 unwind label %792

785:                                              ; preds = %781
  store ptr %784, ptr %65, align 8, !tbaa !5
  %786 = load ptr, ptr %65, align 8, !tbaa !5
  %787 = icmp ne ptr %786, null
  br i1 %787, label %788, label %796

788:                                              ; preds = %785
  %789 = load ptr, ptr %3, align 8, !tbaa !5
  %790 = load ptr, ptr %65, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %789, ptr noundef nonnull align 8 dereferenceable(32) %790)
          to label %791 unwind label %792

791:                                              ; preds = %788
  br label %796

792:                                              ; preds = %788, %781
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %7, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %800

796:                                              ; preds = %791, %785
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %797

797:                                              ; preds = %796
  %798 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  br label %774

799:                                              ; preds = %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %842

800:                                              ; preds = %792, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %848

801:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %802 = load ptr, ptr %35, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %802, i32 0, i32 1
  %804 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %803)
          to label %805 unwind label %818

805:                                              ; preds = %801
  store ptr %804, ptr %66, align 8, !tbaa !5
  %806 = load ptr, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %807 = load ptr, ptr %66, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %807, i32 0, i32 1
  store ptr %808, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  %809 = load ptr, ptr %67, align 8, !tbaa !5
  %810 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %809) #8
  %811 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %68, i32 0, i32 0
  store ptr %810, ptr %811, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %812 = load ptr, ptr %67, align 8, !tbaa !5
  %813 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %812) #8
  %814 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %69, i32 0, i32 0
  store ptr %813, ptr %814, align 8
  br label %815

815:                                              ; preds = %838, %805
  %816 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  br i1 %816, label %822, label %817

817:                                              ; preds = %815
  store i32 42, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %840

818:                                              ; preds = %801
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %7, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %8, align 4
  br label %841

822:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %823 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  store ptr %823, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %824 = load ptr, ptr %70, align 8, !tbaa !5
  %825 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %824)
          to label %826 unwind label %833

826:                                              ; preds = %822
  store ptr %825, ptr %71, align 8, !tbaa !5
  %827 = load ptr, ptr %71, align 8, !tbaa !5
  %828 = icmp ne ptr %827, null
  br i1 %828, label %829, label %837

829:                                              ; preds = %826
  %830 = load ptr, ptr %3, align 8, !tbaa !5
  %831 = load ptr, ptr %71, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %830, ptr noundef nonnull align 8 dereferenceable(32) %831)
          to label %832 unwind label %833

832:                                              ; preds = %829
  br label %837

833:                                              ; preds = %829, %822
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %7, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %841

837:                                              ; preds = %832, %826
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %838

838:                                              ; preds = %837
  %839 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  br label %815

840:                                              ; preds = %817
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %842

841:                                              ; preds = %833, %818
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %848

842:                                              ; preds = %840, %799, %758, %732, %691, %647, %629, %615, %601, %587, %569, %555, %541, %526, %517, %507
  %843 = load ptr, ptr %3, align 8, !tbaa !5
  %844 = load ptr, ptr %35, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %844, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %843, ptr noundef nonnull align 8 dereferenceable(32) %845)
          to label %846 unwind label %499

846:                                              ; preds = %842
  br label %847

847:                                              ; preds = %846
  store i8 0, ptr %34, align 1, !tbaa !44
  br label %494, !llvm.loop !48

848:                                              ; preds = %841, %800, %759, %733, %692, %648, %630, %616, %602, %588, %570, %556, %542, %528, %518, %499
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %1365

849:                                              ; preds = %498
  br label %850

850:                                              ; preds = %849
  store i8 0, ptr %34, align 1, !tbaa !44
  br label %486, !llvm.loop !49

851:                                              ; preds = %489
  br label %1363

852:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #8
  store i8 1, ptr %72, align 1, !tbaa !44
  br label %853

853:                                              ; preds = %922, %852
  %854 = load i8, ptr %72, align 1, !tbaa !44, !range !46, !noundef !47
  %855 = trunc i8 %854 to i1
  br i1 %855, label %857, label %856

856:                                              ; preds = %853
  store i32 44, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #8
  br label %923

857:                                              ; preds = %853
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %858 = load ptr, ptr %33, align 8, !tbaa !5
  %859 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %858)
          to label %860 unwind label %866

860:                                              ; preds = %857
  store ptr %859, ptr %73, align 8, !tbaa !5
  br label %861

861:                                              ; preds = %919, %860
  %862 = load ptr, ptr %73, align 8, !tbaa !5
  %863 = load i8, ptr %72, align 1, !tbaa !44, !range !46, !noundef !47
  %864 = trunc i8 %863 to i1
  br i1 %864, label %870, label %865

865:                                              ; preds = %861
  store i32 47, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %921

866:                                              ; preds = %857
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %7, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %8, align 4
  br label %920

870:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %871 = load ptr, ptr %73, align 8, !tbaa !5
  %872 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %871, i32 0, i32 2
  store ptr %872, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %873 = load ptr, ptr %74, align 8, !tbaa !5
  %874 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %873) #8
  %875 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.132", ptr %75, i32 0, i32 0
  store ptr %874, ptr %875, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %876 = load ptr, ptr %74, align 8, !tbaa !5
  %877 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %876) #8
  %878 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.132", ptr %76, i32 0, i32 0
  store ptr %877, ptr %878, align 8
  br label %879

879:                                              ; preds = %888, %870
  %880 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br i1 %880, label %882, label %881

881:                                              ; preds = %879
  store i32 50, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %894

882:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %883 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  store ptr %883, ptr %77, align 8, !tbaa !5
  %884 = load ptr, ptr %3, align 8, !tbaa !5
  %885 = load ptr, ptr %77, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.std::pair.133", ptr %885, i32 0, i32 1
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %884, ptr noundef nonnull align 8 dereferenceable(32) %886)
          to label %887 unwind label %890

887:                                              ; preds = %882
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  br label %888

888:                                              ; preds = %887
  %889 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  br label %879

890:                                              ; preds = %882
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %7, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %920

894:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %895 = load ptr, ptr %73, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %895, i32 0, i32 1
  store ptr %896, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %897 = load ptr, ptr %78, align 8, !tbaa !5
  %898 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %897) #8
  %899 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.132", ptr %79, i32 0, i32 0
  store ptr %898, ptr %899, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %900 = load ptr, ptr %78, align 8, !tbaa !5
  %901 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %900) #8
  %902 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.132", ptr %80, i32 0, i32 0
  store ptr %901, ptr %902, align 8
  br label %903

903:                                              ; preds = %912, %894
  %904 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br i1 %904, label %906, label %905

905:                                              ; preds = %903
  store i32 52, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %918

906:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %907 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  store ptr %907, ptr %81, align 8, !tbaa !5
  %908 = load ptr, ptr %3, align 8, !tbaa !5
  %909 = load ptr, ptr %81, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.std::pair.133", ptr %909, i32 0, i32 1
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %908, ptr noundef nonnull align 8 dereferenceable(32) %910)
          to label %911 unwind label %914

911:                                              ; preds = %906
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  br label %912

912:                                              ; preds = %911
  %913 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %903

914:                                              ; preds = %906
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %7, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %920

918:                                              ; preds = %905
  br label %919

919:                                              ; preds = %918
  store i8 0, ptr %72, align 1, !tbaa !44
  br label %861, !llvm.loop !50

920:                                              ; preds = %914, %890, %866
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #8
  br label %1365

921:                                              ; preds = %865
  br label %922

922:                                              ; preds = %921
  store i8 0, ptr %72, align 1, !tbaa !44
  br label %853, !llvm.loop !51

923:                                              ; preds = %856
  br label %1363

924:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #8
  store i8 1, ptr %82, align 1, !tbaa !44
  br label %925

925:                                              ; preds = %1076, %924
  %926 = load i8, ptr %82, align 1, !tbaa !44, !range !46, !noundef !47
  %927 = trunc i8 %926 to i1
  br i1 %927, label %929, label %928

928:                                              ; preds = %925
  store i32 54, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %1077

929:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %930 = load ptr, ptr %33, align 8, !tbaa !5
  %931 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %930)
          to label %932 unwind label %938

932:                                              ; preds = %929
  store ptr %931, ptr %83, align 8, !tbaa !5
  br label %933

933:                                              ; preds = %1073, %932
  %934 = load ptr, ptr %83, align 8, !tbaa !5
  %935 = load i8, ptr %82, align 1, !tbaa !44, !range !46, !noundef !47
  %936 = trunc i8 %935 to i1
  br i1 %936, label %942, label %937

937:                                              ; preds = %933
  store i32 57, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %1075

938:                                              ; preds = %929
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %7, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %8, align 4
  br label %1074

942:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %943 = load ptr, ptr %83, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm2", ptr %943, i32 0, i32 2
  store ptr %944, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %945 = load ptr, ptr %84, align 8, !tbaa !5
  %946 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %945) #8
  %947 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.135", ptr %85, i32 0, i32 0
  store ptr %946, ptr %947, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %948 = load ptr, ptr %84, align 8, !tbaa !5
  %949 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %948) #8
  %950 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.135", ptr %86, i32 0, i32 0
  store ptr %949, ptr %950, align 8
  br label %951

951:                                              ; preds = %1070, %942
  %952 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  br i1 %952, label %954, label %953

953:                                              ; preds = %951
  store i32 60, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1072

954:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %955 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  store ptr %955, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #8
  store i8 1, ptr %88, align 1, !tbaa !44
  br label %956

956:                                              ; preds = %1068, %954
  %957 = load i8, ptr %88, align 1, !tbaa !44, !range !46, !noundef !47
  %958 = trunc i8 %957 to i1
  br i1 %958, label %960, label %959

959:                                              ; preds = %956
  store i32 62, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %1069

960:                                              ; preds = %956
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %961 = load ptr, ptr %87, align 8, !tbaa !5
  store ptr %961, ptr %89, align 8, !tbaa !5
  br label %962

962:                                              ; preds = %1065, %960
  %963 = load i8, ptr %88, align 1, !tbaa !44, !range !46, !noundef !47
  %964 = trunc i8 %963 to i1
  br i1 %964, label %966, label %965

965:                                              ; preds = %962
  store i32 65, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  br label %1067

966:                                              ; preds = %962
  %967 = load ptr, ptr %89, align 8, !tbaa !5
  %968 = invoke noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %967)
          to label %969 unwind label %970

969:                                              ; preds = %966
  switch i32 %968, label %1064 [
    i32 0, label %974
    i32 1, label %975
    i32 2, label %998
    i32 3, label %1021
  ]

970:                                              ; preds = %966
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %7, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %8, align 4
  br label %1066

974:                                              ; preds = %969
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 869, ptr noundef @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #9
  unreachable

975:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #8
  store i8 1, ptr %90, align 1, !tbaa !44
  br label %976

976:                                              ; preds = %996, %975
  %977 = load i8, ptr %90, align 1, !tbaa !44, !range !46, !noundef !47
  %978 = trunc i8 %977 to i1
  br i1 %978, label %980, label %979

979:                                              ; preds = %976
  store i32 69, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  br label %997

980:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %981 = load ptr, ptr %89, align 8, !tbaa !5
  %982 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %981)
          to label %983 unwind label %989

983:                                              ; preds = %980
  store ptr %982, ptr %91, align 8, !tbaa !5
  br label %984

984:                                              ; preds = %994, %983
  %985 = load ptr, ptr %91, align 8, !tbaa !5
  %986 = load i8, ptr %90, align 1, !tbaa !44, !range !46, !noundef !47
  %987 = trunc i8 %986 to i1
  br i1 %987, label %993, label %988

988:                                              ; preds = %984
  store i32 72, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %995

989:                                              ; preds = %980
  %990 = landingpad { ptr, i32 }
          cleanup
  %991 = extractvalue { ptr, i32 } %990, 0
  store ptr %991, ptr %7, align 8
  %992 = extractvalue { ptr, i32 } %990, 1
  store i32 %992, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  br label %1066

993:                                              ; preds = %984
  br label %994

994:                                              ; preds = %993
  store i8 0, ptr %90, align 1, !tbaa !44
  br label %984, !llvm.loop !52

995:                                              ; preds = %988
  br label %996

996:                                              ; preds = %995
  store i8 0, ptr %90, align 1, !tbaa !44
  br label %976, !llvm.loop !53

997:                                              ; preds = %979
  br label %1064

998:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #8
  store i8 1, ptr %92, align 1, !tbaa !44
  br label %999

999:                                              ; preds = %1019, %998
  %1000 = load i8, ptr %92, align 1, !tbaa !44, !range !46, !noundef !47
  %1001 = trunc i8 %1000 to i1
  br i1 %1001, label %1003, label %1002

1002:                                             ; preds = %999
  store i32 75, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  br label %1020

1003:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %1004 = load ptr, ptr %89, align 8, !tbaa !5
  %1005 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %1004)
          to label %1006 unwind label %1012

1006:                                             ; preds = %1003
  store ptr %1005, ptr %93, align 8, !tbaa !5
  br label %1007

1007:                                             ; preds = %1017, %1006
  %1008 = load ptr, ptr %93, align 8, !tbaa !5
  %1009 = load i8, ptr %92, align 1, !tbaa !44, !range !46, !noundef !47
  %1010 = trunc i8 %1009 to i1
  br i1 %1010, label %1016, label %1011

1011:                                             ; preds = %1007
  store i32 78, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1018

1012:                                             ; preds = %1003
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %7, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #8
  br label %1066

1016:                                             ; preds = %1007
  br label %1017

1017:                                             ; preds = %1016
  store i8 0, ptr %92, align 1, !tbaa !44
  br label %1007, !llvm.loop !54

1018:                                             ; preds = %1011
  br label %1019

1019:                                             ; preds = %1018
  store i8 0, ptr %92, align 1, !tbaa !44
  br label %999, !llvm.loop !55

1020:                                             ; preds = %1002
  br label %1064

1021:                                             ; preds = %969
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #8
  store i8 1, ptr %94, align 1, !tbaa !44
  br label %1022

1022:                                             ; preds = %1062, %1021
  %1023 = load i8, ptr %94, align 1, !tbaa !44, !range !46, !noundef !47
  %1024 = trunc i8 %1023 to i1
  br i1 %1024, label %1026, label %1025

1025:                                             ; preds = %1022
  store i32 81, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  br label %1063

1026:                                             ; preds = %1022
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %1027 = load ptr, ptr %89, align 8, !tbaa !5
  %1028 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %1027)
          to label %1029 unwind label %1035

1029:                                             ; preds = %1026
  store ptr %1028, ptr %95, align 8, !tbaa !5
  br label %1030

1030:                                             ; preds = %1060, %1029
  %1031 = load ptr, ptr %95, align 8, !tbaa !5
  %1032 = load i8, ptr %94, align 1, !tbaa !44, !range !46, !noundef !47
  %1033 = trunc i8 %1032 to i1
  br i1 %1033, label %1039, label %1034

1034:                                             ; preds = %1030
  store i32 84, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1061

1035:                                             ; preds = %1053, %1043, %1026
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %7, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  br label %1066

1039:                                             ; preds = %1030
  %1040 = load ptr, ptr %95, align 8, !tbaa !5
  %1041 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %1040, i32 0, i32 2
  %1042 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1041) #8
  br i1 %1042, label %1043, label %1049

1043:                                             ; preds = %1039
  %1044 = load ptr, ptr %3, align 8, !tbaa !5
  %1045 = load ptr, ptr %95, align 8, !tbaa !5
  %1046 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %1045, i32 0, i32 2
  %1047 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1046) #8
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1044, ptr noundef nonnull align 8 dereferenceable(48) %1047)
          to label %1048 unwind label %1035

1048:                                             ; preds = %1043
  br label %1049

1049:                                             ; preds = %1048, %1039
  %1050 = load ptr, ptr %95, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %1050, i32 0, i32 3
  %1052 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1051) #8
  br i1 %1052, label %1053, label %1059

1053:                                             ; preds = %1049
  %1054 = load ptr, ptr %3, align 8, !tbaa !5
  %1055 = load ptr, ptr %95, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %1055, i32 0, i32 3
  %1057 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1056) #8
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1054, ptr noundef nonnull align 8 dereferenceable(32) %1057)
          to label %1058 unwind label %1035

1058:                                             ; preds = %1053
  br label %1059

1059:                                             ; preds = %1058, %1049
  br label %1060

1060:                                             ; preds = %1059
  store i8 0, ptr %94, align 1, !tbaa !44
  br label %1030, !llvm.loop !56

1061:                                             ; preds = %1034
  br label %1062

1062:                                             ; preds = %1061
  store i8 0, ptr %94, align 1, !tbaa !44
  br label %1022, !llvm.loop !57

1063:                                             ; preds = %1025
  br label %1064

1064:                                             ; preds = %1063, %1020, %997, %969
  br label %1065

1065:                                             ; preds = %1064
  store i8 0, ptr %88, align 1, !tbaa !44
  br label %962, !llvm.loop !58

1066:                                             ; preds = %1035, %1012, %989, %970
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %1074

1067:                                             ; preds = %965
  br label %1068

1068:                                             ; preds = %1067
  store i8 0, ptr %88, align 1, !tbaa !44
  br label %956, !llvm.loop !59

1069:                                             ; preds = %959
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  br label %1070

1070:                                             ; preds = %1069
  %1071 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %951

1072:                                             ; preds = %953
  br label %1073

1073:                                             ; preds = %1072
  store i8 0, ptr %82, align 1, !tbaa !44
  br label %933, !llvm.loop !60

1074:                                             ; preds = %1066, %938
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %1365

1075:                                             ; preds = %937
  br label %1076

1076:                                             ; preds = %1075
  store i8 0, ptr %82, align 1, !tbaa !44
  br label %925, !llvm.loop !61

1077:                                             ; preds = %928
  br label %1363

1078:                                             ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #8
  store i8 1, ptr %96, align 1, !tbaa !44
  br label %1079

1079:                                             ; preds = %1167, %1078
  %1080 = load i8, ptr %96, align 1, !tbaa !44, !range !46, !noundef !47
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1083, label %1082

1082:                                             ; preds = %1079
  store i32 87, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #8
  br label %1168

1083:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %1084 = load ptr, ptr %33, align 8, !tbaa !5
  %1085 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %1084)
          to label %1086 unwind label %1092

1086:                                             ; preds = %1083
  store ptr %1085, ptr %97, align 8, !tbaa !5
  br label %1087

1087:                                             ; preds = %1164, %1086
  %1088 = load ptr, ptr %97, align 8, !tbaa !5
  %1089 = load i8, ptr %96, align 1, !tbaa !44, !range !46, !noundef !47
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1096, label %1091

1091:                                             ; preds = %1087
  store i32 90, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1166

1092:                                             ; preds = %1083
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %7, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %8, align 4
  br label %1165

1096:                                             ; preds = %1087
  %1097 = load ptr, ptr %97, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1097, i32 0, i32 2
  %1099 = load i32, ptr %1098, align 4, !tbaa !62
  %1100 = icmp eq i32 %1099, -1
  br i1 %1100, label %1101, label %1122

1101:                                             ; preds = %1096
  %1102 = load ptr, ptr %97, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1102, i32 0, i32 1
  %1104 = load i8, ptr %1103, align 4, !tbaa !64, !range !46, !noundef !47
  %1105 = trunc i8 %1104 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #8
  %1106 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 3
  %1107 = load ptr, ptr %97, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1107, i32 0, i32 0
  %1109 = load i32, ptr %1108, align 4, !tbaa !65
  %1110 = zext i32 %1109 to i64
  %1111 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1106, i64 noundef %1110)
          to label %1112 unwind label %1118

1112:                                             ; preds = %1101
  %1113 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 0
  %1114 = extractvalue { ptr, i64 } %1111, 0
  store ptr %1114, ptr %1113, align 8
  %1115 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 1
  %1116 = extractvalue { ptr, i64 } %1111, 1
  store i64 %1116, ptr %1115, align 8
  %1117 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %98, i1 noundef zeroext %1105) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  br label %1163

1118:                                             ; preds = %1101
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %7, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  br label %1165

1122:                                             ; preds = %1096
  %1123 = load ptr, ptr %97, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1123, i32 0, i32 1
  %1125 = load i8, ptr %1124, align 4, !tbaa !64, !range !46, !noundef !47
  %1126 = trunc i8 %1125 to i1
  %1127 = zext i1 %1126 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #8
  %1128 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 3
  %1129 = load ptr, ptr %97, align 8, !tbaa !5
  %1130 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1129, i32 0, i32 2
  %1131 = load i32, ptr %1130, align 4, !tbaa !62
  %1132 = zext i32 %1131 to i64
  %1133 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1128, i64 noundef %1132)
          to label %1134 unwind label %1154

1134:                                             ; preds = %1122
  %1135 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 0
  %1136 = extractvalue { ptr, i64 } %1133, 0
  store ptr %1136, ptr %1135, align 8
  %1137 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 1
  %1138 = extractvalue { ptr, i64 } %1133, 1
  store i64 %1138, ptr %1137, align 8
  %1139 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %99) #8
  %1140 = zext i1 %1139 to i32
  %1141 = icmp ne i32 %1127, %1140
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #8
  %1142 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 3
  %1143 = load ptr, ptr %97, align 8, !tbaa !5
  %1144 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %1143, i32 0, i32 0
  %1145 = load i32, ptr %1144, align 4, !tbaa !65
  %1146 = zext i32 %1145 to i64
  %1147 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1142, i64 noundef %1146)
          to label %1148 unwind label %1158

1148:                                             ; preds = %1134
  %1149 = getelementptr inbounds { ptr, i64 }, ptr %100, i32 0, i32 0
  %1150 = extractvalue { ptr, i64 } %1147, 0
  store ptr %1150, ptr %1149, align 8
  %1151 = getelementptr inbounds { ptr, i64 }, ptr %100, i32 0, i32 1
  %1152 = extractvalue { ptr, i64 } %1147, 1
  store i64 %1152, ptr %1151, align 8
  %1153 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %100, i1 noundef zeroext %1141) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  br label %1163

1154:                                             ; preds = %1122
  %1155 = landingpad { ptr, i32 }
          cleanup
  %1156 = extractvalue { ptr, i32 } %1155, 0
  store ptr %1156, ptr %7, align 8
  %1157 = extractvalue { ptr, i32 } %1155, 1
  store i32 %1157, ptr %8, align 4
  br label %1162

1158:                                             ; preds = %1134
  %1159 = landingpad { ptr, i32 }
          cleanup
  %1160 = extractvalue { ptr, i32 } %1159, 0
  store ptr %1160, ptr %7, align 8
  %1161 = extractvalue { ptr, i32 } %1159, 1
  store i32 %1161, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  br label %1162

1162:                                             ; preds = %1158, %1154
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  br label %1165

1163:                                             ; preds = %1148, %1112
  br label %1164

1164:                                             ; preds = %1163
  store i8 0, ptr %96, align 1, !tbaa !44
  br label %1087, !llvm.loop !66

1165:                                             ; preds = %1162, %1118, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #8
  br label %1365

1166:                                             ; preds = %1091
  br label %1167

1167:                                             ; preds = %1166
  store i8 0, ptr %96, align 1, !tbaa !44
  br label %1079, !llvm.loop !67

1168:                                             ; preds = %1082
  br label %1363

1169:                                             ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #8
  store i8 1, ptr %101, align 1, !tbaa !44
  br label %1170

1170:                                             ; preds = %1338, %1169
  %1171 = load i8, ptr %101, align 1, !tbaa !44, !range !46, !noundef !47
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1174, label %1173

1173:                                             ; preds = %1170
  store i32 93, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #8
  br label %1339

1174:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %1175 = load ptr, ptr %33, align 8, !tbaa !5
  %1176 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %1175)
          to label %1177 unwind label %1183

1177:                                             ; preds = %1174
  store ptr %1176, ptr %102, align 8, !tbaa !5
  br label %1178

1178:                                             ; preds = %1335, %1177
  %1179 = load ptr, ptr %102, align 8, !tbaa !5
  %1180 = load i8, ptr %101, align 1, !tbaa !44, !range !46, !noundef !47
  %1181 = trunc i8 %1180 to i1
  br i1 %1181, label %1187, label %1182

1182:                                             ; preds = %1178
  store i32 96, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1337

1183:                                             ; preds = %1328, %1174
  %1184 = landingpad { ptr, i32 }
          cleanup
  %1185 = extractvalue { ptr, i32 } %1184, 0
  store ptr %1185, ptr %7, align 8
  %1186 = extractvalue { ptr, i32 } %1184, 1
  store i32 %1186, ptr %8, align 4
  br label %1336

1187:                                             ; preds = %1178
  %1188 = load ptr, ptr %102, align 8, !tbaa !5
  %1189 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1188, i32 0, i32 3
  %1190 = load i32, ptr %1189, align 8, !tbaa !68
  %1191 = icmp eq i32 %1190, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #8
  br i1 %1191, label %1205, label %1192

1192:                                             ; preds = %1187
  %1193 = getelementptr inbounds %"struct.(anonymous namespace)::ValueStates", ptr %26, i32 0, i32 3
  %1194 = load ptr, ptr %102, align 8, !tbaa !5
  %1195 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1194, i32 0, i32 3
  %1196 = load i32, ptr %1195, align 8, !tbaa !68
  %1197 = zext i32 %1196 to i64
  %1198 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %1193, i64 noundef %1197)
          to label %1199 unwind label %1228

1199:                                             ; preds = %1192
  %1200 = getelementptr inbounds { ptr, i64 }, ptr %103, i32 0, i32 0
  %1201 = extractvalue { ptr, i64 } %1198, 0
  store ptr %1201, ptr %1200, align 8
  %1202 = getelementptr inbounds { ptr, i64 }, ptr %103, i32 0, i32 1
  %1203 = extractvalue { ptr, i64 } %1198, 1
  store i64 %1203, ptr %1202, align 8
  %1204 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %103) #8
  br label %1205

1205:                                             ; preds = %1199, %1187
  %1206 = phi i1 [ true, %1187 ], [ %1204, %1199 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  br i1 %1206, label %1207, label %1334

1207:                                             ; preds = %1205
  %1208 = load ptr, ptr %102, align 8, !tbaa !5
  %1209 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1208, i32 0, i32 0
  %1210 = load i32, ptr %1209, align 8, !tbaa !77
  %1211 = icmp eq i32 %1210, 0
  br i1 %1211, label %1212, label %1328

1212:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  %1213 = load ptr, ptr %3, align 8, !tbaa !5
  %1214 = load ptr, ptr %102, align 8, !tbaa !5
  %1215 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1214, i32 0, i32 2
  %1216 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK12_GLOBAL__N_111ValueStates16get_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1213, ptr noundef nonnull align 8 dereferenceable(32) %1215)
          to label %1217 unwind label %1232

1217:                                             ; preds = %1212
  store ptr %1216, ptr %104, align 8, !tbaa !5
  br label %1218

1218:                                             ; preds = %1217
  %1219 = load ptr, ptr %104, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %1219, i32 0, i32 0
  %1221 = load i32, ptr %1220, align 4, !tbaa !78
  %1222 = icmp ne i32 %1221, -1
  br i1 %1222, label %1240, label %1223

1223:                                             ; preds = %1218
  %1224 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %1225 = getelementptr inbounds %class.anon.152, ptr %106, i32 0, i32 0
  %1226 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %1226, ptr %1225, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1224, ptr noundef %105)
          to label %1227 unwind label %1236

1227:                                             ; preds = %1223
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %1240

1228:                                             ; preds = %1192
  %1229 = landingpad { ptr, i32 }
          cleanup
  %1230 = extractvalue { ptr, i32 } %1229, 0
  store ptr %1230, ptr %7, align 8
  %1231 = extractvalue { ptr, i32 } %1229, 1
  store i32 %1231, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  br label %1336

1232:                                             ; preds = %1243, %1212
  %1233 = landingpad { ptr, i32 }
          cleanup
  %1234 = extractvalue { ptr, i32 } %1233, 0
  store ptr %1234, ptr %7, align 8
  %1235 = extractvalue { ptr, i32 } %1233, 1
  store i32 %1235, ptr %8, align 4
  br label %1327

1236:                                             ; preds = %1223
  %1237 = landingpad { ptr, i32 }
          cleanup
  %1238 = extractvalue { ptr, i32 } %1237, 0
  store ptr %1238, ptr %7, align 8
  %1239 = extractvalue { ptr, i32 } %1237, 1
  store i32 %1239, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %1327

1240:                                             ; preds = %1227, %1218
  br label %1241

1241:                                             ; preds = %1240
  br label %1242

1242:                                             ; preds = %1241
  br label %1243

1243:                                             ; preds = %1242
  %1244 = load ptr, ptr %104, align 8, !tbaa !5
  %1245 = invoke noundef zeroext i1 @_ZNK12_GLOBAL__N_15State12is_compositeEv(ptr noundef nonnull align 4 dereferenceable(4) %1244)
          to label %1246 unwind label %1232

1246:                                             ; preds = %1243
  br i1 %1245, label %1265, label %1247

1247:                                             ; preds = %1246
  %1248 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %108) #8
  %1249 = getelementptr inbounds %class.anon.153, ptr %108, i32 0, i32 0
  %1250 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %1250, ptr %1249, align 8, !tbaa !5
  %1251 = getelementptr inbounds %class.anon.153, ptr %108, i32 0, i32 1
  store ptr %26, ptr %1251, align 8, !tbaa !5
  %1252 = getelementptr inbounds %class.anon.153, ptr %108, i32 0, i32 2
  %1253 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %1253, ptr %1252, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(24) %108)
          to label %1254 unwind label %1256

1254:                                             ; preds = %1247
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1248, ptr noundef %107)
          to label %1255 unwind label %1260

1255:                                             ; preds = %1254
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  br label %1265

1256:                                             ; preds = %1247
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %7, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %8, align 4
  br label %1264

1260:                                             ; preds = %1254
  %1261 = landingpad { ptr, i32 }
          cleanup
  %1262 = extractvalue { ptr, i32 } %1261, 0
  store ptr %1262, ptr %7, align 8
  %1263 = extractvalue { ptr, i32 } %1261, 1
  store i32 %1263, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  br label %1264

1264:                                             ; preds = %1260, %1256
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  br label %1327

1265:                                             ; preds = %1255, %1246
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  %1268 = load ptr, ptr %3, align 8, !tbaa !5
  %1269 = load ptr, ptr %104, align 8, !tbaa !5
  %1270 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12_GLOBAL__N_111ValueStates13get_compositeERKN3MIR11TypeResolveERKNS_5StateE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1268, ptr noundef nonnull align 4 dereferenceable(4) %1269)
          to label %1271 unwind label %1282

1271:                                             ; preds = %1267
  store ptr %1270, ptr %109, align 8, !tbaa !5
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load ptr, ptr %109, align 8, !tbaa !5
  %1274 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1273) #8
  %1275 = icmp eq i64 %1274, 2
  br i1 %1275, label %1290, label %1276

1276:                                             ; preds = %1272
  %1277 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #8
  %1278 = getelementptr inbounds %class.anon.154, ptr %111, i32 0, i32 0
  store ptr %26, ptr %1278, align 8, !tbaa !5
  %1279 = getelementptr inbounds %class.anon.154, ptr %111, i32 0, i32 1
  %1280 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %1280, ptr %1279, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(16) %111) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1277, ptr noundef %110)
          to label %1281 unwind label %1286

1281:                                             ; preds = %1276
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #8
  br label %1290

1282:                                             ; preds = %1322, %1318, %1293, %1267
  %1283 = landingpad { ptr, i32 }
          cleanup
  %1284 = extractvalue { ptr, i32 } %1283, 0
  store ptr %1284, ptr %7, align 8
  %1285 = extractvalue { ptr, i32 } %1283, 1
  store i32 %1285, ptr %8, align 4
  br label %1326

1286:                                             ; preds = %1276
  %1287 = landingpad { ptr, i32 }
          cleanup
  %1288 = extractvalue { ptr, i32 } %1287, 0
  store ptr %1288, ptr %7, align 8
  %1289 = extractvalue { ptr, i32 } %1287, 1
  store i32 %1289, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #8
  br label %1326

1290:                                             ; preds = %1281, %1272
  br label %1291

1291:                                             ; preds = %1290
  br label %1292

1292:                                             ; preds = %1291
  br label %1293

1293:                                             ; preds = %1292
  %1294 = load ptr, ptr %109, align 8, !tbaa !5
  %1295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1294, i64 noundef 0) #8
  %1296 = invoke noundef zeroext i1 @_ZNK12_GLOBAL__N_15State8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %1295)
          to label %1297 unwind label %1282

1297:                                             ; preds = %1293
  br i1 %1296, label %1316, label %1298

1298:                                             ; preds = %1297
  %1299 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %113) #8
  %1300 = getelementptr inbounds %class.anon.155, ptr %113, i32 0, i32 0
  %1301 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %1301, ptr %1300, align 8, !tbaa !5
  %1302 = getelementptr inbounds %class.anon.155, ptr %113, i32 0, i32 1
  store ptr %26, ptr %1302, align 8, !tbaa !5
  %1303 = getelementptr inbounds %class.anon.155, ptr %113, i32 0, i32 2
  %1304 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %1304, ptr %1303, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(24) %113)
          to label %1305 unwind label %1307

1305:                                             ; preds = %1298
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1299, ptr noundef %112)
          to label %1306 unwind label %1311

1306:                                             ; preds = %1305
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  br label %1316

1307:                                             ; preds = %1298
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %7, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %8, align 4
  br label %1315

1311:                                             ; preds = %1305
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %7, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  br label %1315

1315:                                             ; preds = %1311, %1307
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  br label %1326

1316:                                             ; preds = %1306, %1297
  br label %1317

1317:                                             ; preds = %1316
  br label %1318

1318:                                             ; preds = %1317
  %1319 = load ptr, ptr %3, align 8, !tbaa !5
  %1320 = load ptr, ptr %102, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1320, i32 0, i32 2
  invoke void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4) %114, i1 noundef zeroext false)
          to label %1322 unwind label %1282

1322:                                             ; preds = %1318
  %1323 = getelementptr inbounds %"struct.(anonymous namespace)::State", ptr %114, i32 0, i32 0
  %1324 = load i32, ptr %1323, align 4
  invoke void @_ZN12_GLOBAL__N_111ValueStates16set_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueENS_5StateE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1319, ptr noundef nonnull align 8 dereferenceable(32) %1321, i32 %1324)
          to label %1325 unwind label %1282

1325:                                             ; preds = %1322
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %1333

1326:                                             ; preds = %1315, %1286, %1282
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  br label %1327

1327:                                             ; preds = %1326, %1264, %1236, %1232
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %1336

1328:                                             ; preds = %1207
  %1329 = load ptr, ptr %3, align 8, !tbaa !5
  %1330 = load ptr, ptr %102, align 8, !tbaa !5
  %1331 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %1330, i32 0, i32 2
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1329, ptr noundef nonnull align 8 dereferenceable(32) %1331)
          to label %1332 unwind label %1183

1332:                                             ; preds = %1328
  br label %1333

1333:                                             ; preds = %1332, %1325
  br label %1334

1334:                                             ; preds = %1333, %1205
  br label %1335

1335:                                             ; preds = %1334
  store i8 0, ptr %101, align 1, !tbaa !44
  br label %1178, !llvm.loop !79

1336:                                             ; preds = %1327, %1228, %1183
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #8
  br label %1365

1337:                                             ; preds = %1182
  br label %1338

1338:                                             ; preds = %1337
  store i8 0, ptr %101, align 1, !tbaa !44
  br label %1170, !llvm.loop !80

1339:                                             ; preds = %1173
  br label %1363

1340:                                             ; preds = %479
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #8
  store i8 1, ptr %115, align 1, !tbaa !44
  br label %1341

1341:                                             ; preds = %1361, %1340
  %1342 = load i8, ptr %115, align 1, !tbaa !44, !range !46, !noundef !47
  %1343 = trunc i8 %1342 to i1
  br i1 %1343, label %1345, label %1344

1344:                                             ; preds = %1341
  store i32 107, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #8
  br label %1362

1345:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %1346 = load ptr, ptr %33, align 8, !tbaa !5
  %1347 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %1346)
          to label %1348 unwind label %1354

1348:                                             ; preds = %1345
  store ptr %1347, ptr %116, align 8, !tbaa !5
  br label %1349

1349:                                             ; preds = %1359, %1348
  %1350 = load ptr, ptr %116, align 8, !tbaa !5
  %1351 = load i8, ptr %115, align 1, !tbaa !44, !range !46, !noundef !47
  %1352 = trunc i8 %1351 to i1
  br i1 %1352, label %1358, label %1353

1353:                                             ; preds = %1349
  store i32 110, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  br label %1360

1354:                                             ; preds = %1345
  %1355 = landingpad { ptr, i32 }
          cleanup
  %1356 = extractvalue { ptr, i32 } %1355, 0
  store ptr %1356, ptr %7, align 8
  %1357 = extractvalue { ptr, i32 } %1355, 1
  store i32 %1357, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #8
  br label %1365

1358:                                             ; preds = %1349
  br label %1359

1359:                                             ; preds = %1358
  store i8 0, ptr %115, align 1, !tbaa !44
  br label %1349, !llvm.loop !81

1360:                                             ; preds = %1353
  br label %1361

1361:                                             ; preds = %1360
  store i8 0, ptr %115, align 1, !tbaa !44
  br label %1341, !llvm.loop !82

1362:                                             ; preds = %1344
  br label %1363

1363:                                             ; preds = %1362, %1339, %1168, %1077, %923, %851, %479
  br label %1364

1364:                                             ; preds = %1363
  store i8 0, ptr %32, align 1, !tbaa !44
  br label %472, !llvm.loop !83

1365:                                             ; preds = %1354, %1336, %1165, %1074, %920, %848, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %1372

1366:                                             ; preds = %475
  br label %1367

1367:                                             ; preds = %1366
  store i8 0, ptr %32, align 1, !tbaa !44
  br label %463, !llvm.loop !84

1368:                                             ; preds = %466
  br label %1369

1369:                                             ; preds = %1368
  %1370 = load i64, ptr %31, align 8, !tbaa !42
  %1371 = add i64 %1370, 1
  store i64 %1371, ptr %31, align 8, !tbaa !42
  br label %415, !llvm.loop !85

1372:                                             ; preds = %1365, %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %1780

1373:                                             ; preds = %421
  invoke void @_ZN12_GLOBAL__N_111ValueStates15garbage_collectEv(ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1374 unwind label %422

1374:                                             ; preds = %1373
  %1375 = load ptr, ptr %3, align 8, !tbaa !5
  %1376 = load i32, ptr %25, align 4, !tbaa !9
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %1375, i32 noundef %1376)
          to label %1377 unwind label %422

1377:                                             ; preds = %1374
  br label %1378

1378:                                             ; preds = %1377
  %1379 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1380 unwind label %422

1380:                                             ; preds = %1378
  br i1 %1379, label %1381, label %1398

1381:                                             ; preds = %1380
  %1382 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1382, ptr noundef @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %1384 unwind label %422

1384:                                             ; preds = %1381
  %1385 = load ptr, ptr %3, align 8, !tbaa !5
  %1386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1383, ptr noundef nonnull align 8 dereferenceable(120) %1385)
          to label %1387 unwind label %422

1387:                                             ; preds = %1384
  %1388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1386, ptr noundef @.str.11)
          to label %1389 unwind label %422

1389:                                             ; preds = %1387
  %1390 = load ptr, ptr %30, align 8, !tbaa !5
  %1391 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1390, i32 0, i32 1
  %1392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1388, ptr noundef nonnull align 8 dereferenceable(168) %1391)
          to label %1393 unwind label %422

1393:                                             ; preds = %1389
  %1394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1392, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1395 unwind label %422

1395:                                             ; preds = %1393
  %1396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1394, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1397 unwind label %422

1397:                                             ; preds = %1395
  br label %1398

1398:                                             ; preds = %1397, %1380
  br label %1399

1399:                                             ; preds = %1398
  br label %1400

1400:                                             ; preds = %1399
  %1401 = load ptr, ptr %30, align 8, !tbaa !5
  %1402 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1401, i32 0, i32 1
  %1403 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1402)
          to label %1404 unwind label %422

1404:                                             ; preds = %1400
  switch i32 %1403, label %1776 [
    i32 0, label %1405
    i32 1, label %1406
    i32 2, label %1416
    i32 3, label %1439
    i32 4, label %1449
    i32 5, label %1472
    i32 6, label %1496
    i32 7, label %1543
    i32 8, label %1600
    i32 9, label %1661
  ]

1405:                                             ; preds = %1404
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.3, i32 noundef 1008, ptr noundef @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #9
  unreachable

1406:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1407 = load ptr, ptr %30, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1407, i32 0, i32 1
  %1409 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %1408)
          to label %1410 unwind label %1412

1410:                                             ; preds = %1406
  store ptr %1409, ptr %117, align 8, !tbaa !5
  %1411 = load ptr, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  br label %1776

1412:                                             ; preds = %1406
  %1413 = landingpad { ptr, i32 }
          cleanup
  %1414 = extractvalue { ptr, i32 } %1413, 0
  store ptr %1414, ptr %7, align 8
  %1415 = extractvalue { ptr, i32 } %1413, 1
  store i32 %1415, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  br label %1780

1416:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %1417 = load ptr, ptr %30, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1417, i32 0, i32 1
  %1419 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %1418)
          to label %1420 unwind label %1425

1420:                                             ; preds = %1416
  store ptr %1419, ptr %118, align 8, !tbaa !5
  %1421 = load ptr, ptr %118, align 8, !tbaa !5
  %1422 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #8
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %119)
          to label %1423 unwind label %1429

1423:                                             ; preds = %1420
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1422, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1424 unwind label %1433

1424:                                             ; preds = %1423
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %1776

1425:                                             ; preds = %1416
  %1426 = landingpad { ptr, i32 }
          cleanup
  %1427 = extractvalue { ptr, i32 } %1426, 0
  store ptr %1427, ptr %7, align 8
  %1428 = extractvalue { ptr, i32 } %1426, 1
  store i32 %1428, ptr %8, align 4
  br label %1438

1429:                                             ; preds = %1420
  %1430 = landingpad { ptr, i32 }
          cleanup
  %1431 = extractvalue { ptr, i32 } %1430, 0
  store ptr %1431, ptr %7, align 8
  %1432 = extractvalue { ptr, i32 } %1430, 1
  store i32 %1432, ptr %8, align 4
  br label %1437

1433:                                             ; preds = %1423
  %1434 = landingpad { ptr, i32 }
          cleanup
  %1435 = extractvalue { ptr, i32 } %1434, 0
  store ptr %1435, ptr %7, align 8
  %1436 = extractvalue { ptr, i32 } %1434, 1
  store i32 %1436, ptr %8, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #8
  br label %1437

1437:                                             ; preds = %1433, %1429
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #8
  br label %1438

1438:                                             ; preds = %1437, %1425
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %1780

1439:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %1440 = load ptr, ptr %30, align 8, !tbaa !5
  %1441 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1440, i32 0, i32 1
  %1442 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %1441)
          to label %1443 unwind label %1445

1443:                                             ; preds = %1439
  store ptr %1442, ptr %120, align 8, !tbaa !5
  %1444 = load ptr, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %1776

1445:                                             ; preds = %1439
  %1446 = landingpad { ptr, i32 }
          cleanup
  %1447 = extractvalue { ptr, i32 } %1446, 0
  store ptr %1447, ptr %7, align 8
  %1448 = extractvalue { ptr, i32 } %1446, 1
  store i32 %1448, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %1780

1449:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  %1450 = load ptr, ptr %30, align 8, !tbaa !5
  %1451 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1450, i32 0, i32 1
  %1452 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %1451)
          to label %1453 unwind label %1458

1453:                                             ; preds = %1449
  store ptr %1452, ptr %121, align 8, !tbaa !5
  %1454 = load ptr, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 152, ptr %122) #8
  %1455 = load ptr, ptr %121, align 8, !tbaa !5
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %122, ptr noundef nonnull align 4 dereferenceable(4) %1455, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1456 unwind label %1462

1456:                                             ; preds = %1453
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %122)
          to label %1457 unwind label %1466

1457:                                             ; preds = %1456
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %122) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1776

1458:                                             ; preds = %1449
  %1459 = landingpad { ptr, i32 }
          cleanup
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %7, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %8, align 4
  br label %1471

1462:                                             ; preds = %1453
  %1463 = landingpad { ptr, i32 }
          cleanup
  %1464 = extractvalue { ptr, i32 } %1463, 0
  store ptr %1464, ptr %7, align 8
  %1465 = extractvalue { ptr, i32 } %1463, 1
  store i32 %1465, ptr %8, align 4
  br label %1470

1466:                                             ; preds = %1456
  %1467 = landingpad { ptr, i32 }
          cleanup
  %1468 = extractvalue { ptr, i32 } %1467, 0
  store ptr %1468, ptr %7, align 8
  %1469 = extractvalue { ptr, i32 } %1467, 1
  store i32 %1469, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %122) #8
  br label %1470

1470:                                             ; preds = %1466, %1462
  call void @llvm.lifetime.end.p0(i64 152, ptr %122) #8
  br label %1471

1471:                                             ; preds = %1470, %1458
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1780

1472:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  %1473 = load ptr, ptr %30, align 8, !tbaa !5
  %1474 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1473, i32 0, i32 1
  %1475 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %1474)
          to label %1476 unwind label %1482

1476:                                             ; preds = %1472
  store ptr %1475, ptr %123, align 8, !tbaa !5
  %1477 = load ptr, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 152, ptr %124) #8
  %1478 = load ptr, ptr %123, align 8, !tbaa !5
  %1479 = getelementptr inbounds %"struct.MIR::Terminator::Data_Panic", ptr %1478, i32 0, i32 0
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %124, ptr noundef nonnull align 4 dereferenceable(4) %1479, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1480 unwind label %1486

1480:                                             ; preds = %1476
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %124)
          to label %1481 unwind label %1490

1481:                                             ; preds = %1480
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %124) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  br label %1776

1482:                                             ; preds = %1472
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %7, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %8, align 4
  br label %1495

1486:                                             ; preds = %1476
  %1487 = landingpad { ptr, i32 }
          cleanup
  %1488 = extractvalue { ptr, i32 } %1487, 0
  store ptr %1488, ptr %7, align 8
  %1489 = extractvalue { ptr, i32 } %1487, 1
  store i32 %1489, ptr %8, align 4
  br label %1494

1490:                                             ; preds = %1480
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %7, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %124) #8
  br label %1494

1494:                                             ; preds = %1490, %1486
  call void @llvm.lifetime.end.p0(i64 152, ptr %124) #8
  br label %1495

1495:                                             ; preds = %1494, %1482
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  br label %1780

1496:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  %1497 = load ptr, ptr %30, align 8, !tbaa !5
  %1498 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1497, i32 0, i32 1
  %1499 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %1498)
          to label %1500 unwind label %1515

1500:                                             ; preds = %1496
  store ptr %1499, ptr %125, align 8, !tbaa !5
  %1501 = load ptr, ptr %125, align 8, !tbaa !5
  %1502 = load ptr, ptr %3, align 8, !tbaa !5
  %1503 = load ptr, ptr %125, align 8, !tbaa !5
  %1504 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1503, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1502, ptr noundef nonnull align 8 dereferenceable(32) %1504)
          to label %1505 unwind label %1515

1505:                                             ; preds = %1500
  call void @llvm.lifetime.start.p0(i64 152, ptr %126) #8
  %1506 = load ptr, ptr %125, align 8, !tbaa !5
  %1507 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1506, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 144, ptr %127) #8
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %127, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1508 unwind label %1519

1508:                                             ; preds = %1505
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %126, ptr noundef nonnull align 4 dereferenceable(4) %1507, ptr noundef nonnull align 8 dereferenceable(144) %127)
          to label %1509 unwind label %1523

1509:                                             ; preds = %1508
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %126)
          to label %1510 unwind label %1527

1510:                                             ; preds = %1509
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %126) #8
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %127) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %126) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr %128) #8
  %1511 = load ptr, ptr %125, align 8, !tbaa !5
  %1512 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1511, i32 0, i32 2
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %128, ptr noundef nonnull align 4 dereferenceable(4) %1512, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1513 unwind label %1533

1513:                                             ; preds = %1510
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %128)
          to label %1514 unwind label %1537

1514:                                             ; preds = %1513
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %128) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  br label %1776

1515:                                             ; preds = %1500, %1496
  %1516 = landingpad { ptr, i32 }
          cleanup
  %1517 = extractvalue { ptr, i32 } %1516, 0
  store ptr %1517, ptr %7, align 8
  %1518 = extractvalue { ptr, i32 } %1516, 1
  store i32 %1518, ptr %8, align 4
  br label %1542

1519:                                             ; preds = %1505
  %1520 = landingpad { ptr, i32 }
          cleanup
  %1521 = extractvalue { ptr, i32 } %1520, 0
  store ptr %1521, ptr %7, align 8
  %1522 = extractvalue { ptr, i32 } %1520, 1
  store i32 %1522, ptr %8, align 4
  br label %1532

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

1527:                                             ; preds = %1509
  %1528 = landingpad { ptr, i32 }
          cleanup
  %1529 = extractvalue { ptr, i32 } %1528, 0
  store ptr %1529, ptr %7, align 8
  %1530 = extractvalue { ptr, i32 } %1528, 1
  store i32 %1530, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %126) #8
  br label %1531

1531:                                             ; preds = %1527, %1523
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %127) #8
  br label %1532

1532:                                             ; preds = %1531, %1519
  call void @llvm.lifetime.end.p0(i64 144, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %126) #8
  br label %1542

1533:                                             ; preds = %1510
  %1534 = landingpad { ptr, i32 }
          cleanup
  %1535 = extractvalue { ptr, i32 } %1534, 0
  store ptr %1535, ptr %7, align 8
  %1536 = extractvalue { ptr, i32 } %1534, 1
  store i32 %1536, ptr %8, align 4
  br label %1541

1537:                                             ; preds = %1513
  %1538 = landingpad { ptr, i32 }
          cleanup
  %1539 = extractvalue { ptr, i32 } %1538, 0
  store ptr %1539, ptr %7, align 8
  %1540 = extractvalue { ptr, i32 } %1538, 1
  store i32 %1540, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %128) #8
  br label %1541

1541:                                             ; preds = %1537, %1533
  call void @llvm.lifetime.end.p0(i64 152, ptr %128) #8
  br label %1542

1542:                                             ; preds = %1541, %1532, %1515
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  br label %1780

1543:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1544 = load ptr, ptr %30, align 8, !tbaa !5
  %1545 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1544, i32 0, i32 1
  %1546 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %1545)
          to label %1547 unwind label %1560

1547:                                             ; preds = %1543
  store ptr %1546, ptr %129, align 8, !tbaa !5
  %1548 = load ptr, ptr %129, align 8, !tbaa !5
  %1549 = load ptr, ptr %3, align 8, !tbaa !5
  %1550 = load ptr, ptr %129, align 8, !tbaa !5
  %1551 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1550, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1549, ptr noundef nonnull align 8 dereferenceable(32) %1551)
          to label %1552 unwind label %1560

1552:                                             ; preds = %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  store i64 0, ptr %130, align 8, !tbaa !42
  br label %1553

1553:                                             ; preds = %1581, %1552
  %1554 = load i64, ptr %130, align 8, !tbaa !42
  %1555 = load ptr, ptr %129, align 8, !tbaa !5
  %1556 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1555, i32 0, i32 1
  %1557 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1556) #8
  %1558 = icmp ult i64 %1554, %1557
  br i1 %1558, label %1564, label %1559

1559:                                             ; preds = %1553
  store i32 116, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1598

1560:                                             ; preds = %1547, %1543
  %1561 = landingpad { ptr, i32 }
          cleanup
  %1562 = extractvalue { ptr, i32 } %1561, 0
  store ptr %1562, ptr %7, align 8
  %1563 = extractvalue { ptr, i32 } %1561, 1
  store i32 %1563, ptr %8, align 4
  br label %1599

1564:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 152, ptr %131) #8
  %1565 = load ptr, ptr %129, align 8, !tbaa !5
  %1566 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1565, i32 0, i32 1
  %1567 = load i64, ptr %130, align 8, !tbaa !42
  %1568 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1566, i64 noundef %1567) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %132) #8
  %1569 = load i64, ptr %130, align 8, !tbaa !42
  %1570 = load ptr, ptr %129, align 8, !tbaa !5
  %1571 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1570, i32 0, i32 1
  %1572 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1571) #8
  %1573 = sub i64 %1572, 1
  %1574 = icmp eq i64 %1569, %1573
  br i1 %1574, label %1575, label %1576

1575:                                             ; preds = %1564
  call void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %132, ptr noundef nonnull align 8 dereferenceable(144) %26) #8
  br label %1578

1576:                                             ; preds = %1564
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %132, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1577 unwind label %1584

1577:                                             ; preds = %1576
  br label %1578

1578:                                             ; preds = %1577, %1575
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %131, ptr noundef nonnull align 4 dereferenceable(4) %1568, ptr noundef nonnull align 8 dereferenceable(144) %132)
          to label %1579 unwind label %1588

1579:                                             ; preds = %1578
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %131)
          to label %1580 unwind label %1592

1580:                                             ; preds = %1579
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %131) #8
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %132) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %131) #8
  br label %1581

1581:                                             ; preds = %1580
  %1582 = load i64, ptr %130, align 8, !tbaa !42
  %1583 = add i64 %1582, 1
  store i64 %1583, ptr %130, align 8, !tbaa !42
  br label %1553, !llvm.loop !86

1584:                                             ; preds = %1576
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %7, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %8, align 4
  br label %1597

1588:                                             ; preds = %1578
  %1589 = landingpad { ptr, i32 }
          cleanup
  %1590 = extractvalue { ptr, i32 } %1589, 0
  store ptr %1590, ptr %7, align 8
  %1591 = extractvalue { ptr, i32 } %1589, 1
  store i32 %1591, ptr %8, align 4
  br label %1596

1592:                                             ; preds = %1579
  %1593 = landingpad { ptr, i32 }
          cleanup
  %1594 = extractvalue { ptr, i32 } %1593, 0
  store ptr %1594, ptr %7, align 8
  %1595 = extractvalue { ptr, i32 } %1593, 1
  store i32 %1595, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %131) #8
  br label %1596

1596:                                             ; preds = %1592, %1588
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %132) #8
  br label %1597

1597:                                             ; preds = %1596, %1584
  call void @llvm.lifetime.end.p0(i64 144, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %131) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1599

1598:                                             ; preds = %1559
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %1776

1599:                                             ; preds = %1597, %1560
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %1780

1600:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #8
  %1601 = load ptr, ptr %30, align 8, !tbaa !5
  %1602 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1601, i32 0, i32 1
  %1603 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1602)
          to label %1604 unwind label %1617

1604:                                             ; preds = %1600
  store ptr %1603, ptr %133, align 8, !tbaa !5
  %1605 = load ptr, ptr %133, align 8, !tbaa !5
  %1606 = load ptr, ptr %3, align 8, !tbaa !5
  %1607 = load ptr, ptr %133, align 8, !tbaa !5
  %1608 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1607, i32 0, i32 0
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1606, ptr noundef nonnull align 8 dereferenceable(32) %1608)
          to label %1609 unwind label %1617

1609:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  store i64 0, ptr %134, align 8, !tbaa !42
  br label %1610

1610:                                             ; preds = %1629, %1609
  %1611 = load i64, ptr %134, align 8, !tbaa !42
  %1612 = load ptr, ptr %133, align 8, !tbaa !5
  %1613 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1612, i32 0, i32 2
  %1614 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1613) #8
  %1615 = icmp ult i64 %1611, %1614
  br i1 %1615, label %1621, label %1616

1616:                                             ; preds = %1610
  store i32 119, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  br label %1646

1617:                                             ; preds = %1604, %1600
  %1618 = landingpad { ptr, i32 }
          cleanup
  %1619 = extractvalue { ptr, i32 } %1618, 0
  store ptr %1619, ptr %7, align 8
  %1620 = extractvalue { ptr, i32 } %1618, 1
  store i32 %1620, ptr %8, align 4
  br label %1660

1621:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 152, ptr %135) #8
  %1622 = load ptr, ptr %133, align 8, !tbaa !5
  %1623 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1622, i32 0, i32 2
  %1624 = load i64, ptr %134, align 8, !tbaa !42
  %1625 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1623, i64 noundef %1624) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %136) #8
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %136, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1626 unwind label %1632

1626:                                             ; preds = %1621
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %135, ptr noundef nonnull align 4 dereferenceable(4) %1625, ptr noundef nonnull align 8 dereferenceable(144) %136)
          to label %1627 unwind label %1636

1627:                                             ; preds = %1626
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %135)
          to label %1628 unwind label %1640

1628:                                             ; preds = %1627
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %135) #8
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %136) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %135) #8
  br label %1629

1629:                                             ; preds = %1628
  %1630 = load i64, ptr %134, align 8, !tbaa !42
  %1631 = add i64 %1630, 1
  store i64 %1631, ptr %134, align 8, !tbaa !42
  br label %1610, !llvm.loop !87

1632:                                             ; preds = %1621
  %1633 = landingpad { ptr, i32 }
          cleanup
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %7, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %8, align 4
  br label %1645

1636:                                             ; preds = %1626
  %1637 = landingpad { ptr, i32 }
          cleanup
  %1638 = extractvalue { ptr, i32 } %1637, 0
  store ptr %1638, ptr %7, align 8
  %1639 = extractvalue { ptr, i32 } %1637, 1
  store i32 %1639, ptr %8, align 4
  br label %1644

1640:                                             ; preds = %1627
  %1641 = landingpad { ptr, i32 }
          cleanup
  %1642 = extractvalue { ptr, i32 } %1641, 0
  store ptr %1642, ptr %7, align 8
  %1643 = extractvalue { ptr, i32 } %1641, 1
  store i32 %1643, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %135) #8
  br label %1644

1644:                                             ; preds = %1640, %1636
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %136) #8
  br label %1645

1645:                                             ; preds = %1644, %1632
  call void @llvm.lifetime.end.p0(i64 144, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  br label %1660

1646:                                             ; preds = %1616
  call void @llvm.lifetime.start.p0(i64 152, ptr %137) #8
  %1647 = load ptr, ptr %133, align 8, !tbaa !5
  %1648 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1647, i32 0, i32 1
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %137, ptr noundef nonnull align 4 dereferenceable(4) %1648, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1649 unwind label %1651

1649:                                             ; preds = %1646
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %137)
          to label %1650 unwind label %1655

1650:                                             ; preds = %1649
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %137) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #8
  br label %1776

1651:                                             ; preds = %1646
  %1652 = landingpad { ptr, i32 }
          cleanup
  %1653 = extractvalue { ptr, i32 } %1652, 0
  store ptr %1653, ptr %7, align 8
  %1654 = extractvalue { ptr, i32 } %1652, 1
  store i32 %1654, ptr %8, align 4
  br label %1659

1655:                                             ; preds = %1649
  %1656 = landingpad { ptr, i32 }
          cleanup
  %1657 = extractvalue { ptr, i32 } %1656, 0
  store ptr %1657, ptr %7, align 8
  %1658 = extractvalue { ptr, i32 } %1656, 1
  store i32 %1658, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %137) #8
  br label %1659

1659:                                             ; preds = %1655, %1651
  call void @llvm.lifetime.end.p0(i64 152, ptr %137) #8
  br label %1660

1660:                                             ; preds = %1659, %1645, %1617
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #8
  br label %1780

1661:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #8
  %1662 = load ptr, ptr %30, align 8, !tbaa !5
  %1663 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1662, i32 0, i32 1
  %1664 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1663)
          to label %1665 unwind label %1677

1665:                                             ; preds = %1661
  store ptr %1664, ptr %138, align 8, !tbaa !5
  %1666 = load ptr, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  %1667 = load ptr, ptr %138, align 8, !tbaa !5
  %1668 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1667, i32 0, i32 3
  %1669 = invoke noundef ptr @_ZNK3MIR10CallTarget9opt_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1668)
          to label %1670 unwind label %1681

1670:                                             ; preds = %1665
  store ptr %1669, ptr %139, align 8, !tbaa !5
  %1671 = load ptr, ptr %139, align 8, !tbaa !5
  %1672 = icmp ne ptr %1671, null
  br i1 %1672, label %1673, label %1685

1673:                                             ; preds = %1670
  %1674 = load ptr, ptr %3, align 8, !tbaa !5
  %1675 = load ptr, ptr %139, align 8, !tbaa !5
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1674, ptr noundef nonnull align 8 dereferenceable(32) %1675)
          to label %1676 unwind label %1681

1676:                                             ; preds = %1673
  br label %1685

1677:                                             ; preds = %1757, %1725, %1661
  %1678 = landingpad { ptr, i32 }
          cleanup
  %1679 = extractvalue { ptr, i32 } %1678, 0
  store ptr %1679, ptr %7, align 8
  %1680 = extractvalue { ptr, i32 } %1678, 1
  store i32 %1680, ptr %8, align 4
  br label %1775

1681:                                             ; preds = %1673, %1665
  %1682 = landingpad { ptr, i32 }
          cleanup
  %1683 = extractvalue { ptr, i32 } %1682, 0
  store ptr %1683, ptr %7, align 8
  %1684 = extractvalue { ptr, i32 } %1682, 1
  store i32 %1684, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1775

1685:                                             ; preds = %1676, %1670
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #8
  %1686 = load ptr, ptr %138, align 8, !tbaa !5
  %1687 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1686, i32 0, i32 4
  store ptr %1687, ptr %140, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #8
  %1688 = load ptr, ptr %140, align 8, !tbaa !5
  %1689 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1688) #8
  %1690 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %141, i32 0, i32 0
  store ptr %1689, ptr %1690, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #8
  %1691 = load ptr, ptr %140, align 8, !tbaa !5
  %1692 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1691) #8
  %1693 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.131", ptr %142, i32 0, i32 0
  store ptr %1692, ptr %1693, align 8
  br label %1694

1694:                                             ; preds = %1713, %1685
  %1695 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(8) %142) #8
  br i1 %1695, label %1697, label %1696

1696:                                             ; preds = %1694
  store i32 122, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  br label %1715

1697:                                             ; preds = %1694
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #8
  %1698 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  store ptr %1698, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #8
  %1699 = load ptr, ptr %143, align 8, !tbaa !5
  %1700 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %1699)
          to label %1701 unwind label %1708

1701:                                             ; preds = %1697
  store ptr %1700, ptr %144, align 8, !tbaa !5
  %1702 = load ptr, ptr %144, align 8, !tbaa !5
  %1703 = icmp ne ptr %1702, null
  br i1 %1703, label %1704, label %1712

1704:                                             ; preds = %1701
  %1705 = load ptr, ptr %3, align 8, !tbaa !5
  %1706 = load ptr, ptr %144, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1705, ptr noundef nonnull align 8 dereferenceable(32) %1706)
          to label %1707 unwind label %1708

1707:                                             ; preds = %1704
  br label %1712

1708:                                             ; preds = %1704, %1697
  %1709 = landingpad { ptr, i32 }
          cleanup
  %1710 = extractvalue { ptr, i32 } %1709, 0
  store ptr %1710, ptr %7, align 8
  %1711 = extractvalue { ptr, i32 } %1709, 1
  store i32 %1711, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  br label %1775

1712:                                             ; preds = %1707, %1701
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #8
  br label %1713

1713:                                             ; preds = %1712
  %1714 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  br label %1694

1715:                                             ; preds = %1696
  %1716 = load ptr, ptr %4, align 8, !tbaa !5
  %1717 = getelementptr inbounds %"class.MIR::Function", ptr %1716, i32 0, i32 2
  %1718 = load ptr, ptr %138, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1718, i32 0, i32 1
  %1720 = load i32, ptr %1719, align 4, !tbaa !88
  %1721 = zext i32 %1720 to i64
  %1722 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1717, i64 noundef %1721) #8
  %1723 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1722, i32 0, i32 0
  %1724 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1723) #8
  br i1 %1724, label %1725, label %1737

1725:                                             ; preds = %1715
  %1726 = load ptr, ptr %4, align 8, !tbaa !5
  %1727 = getelementptr inbounds %"class.MIR::Function", ptr %1726, i32 0, i32 2
  %1728 = load ptr, ptr %138, align 8, !tbaa !5
  %1729 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1728, i32 0, i32 1
  %1730 = load i32, ptr %1729, align 4, !tbaa !88
  %1731 = zext i32 %1730 to i64
  %1732 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1727, i64 noundef %1731) #8
  %1733 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1732, i32 0, i32 1
  %1734 = invoke noundef zeroext i1 @_ZNK3MIR10Terminator10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %1733)
          to label %1735 unwind label %1677

1735:                                             ; preds = %1725
  br i1 %1734, label %1736, label %1737

1736:                                             ; preds = %1735
  br label %1757

1737:                                             ; preds = %1735, %1715
  call void @llvm.lifetime.start.p0(i64 152, ptr %145) #8
  %1738 = load ptr, ptr %138, align 8, !tbaa !5
  %1739 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1738, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 144, ptr %146) #8
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %146, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1740 unwind label %1743

1740:                                             ; preds = %1737
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %145, ptr noundef nonnull align 4 dereferenceable(4) %1739, ptr noundef nonnull align 8 dereferenceable(144) %146)
          to label %1741 unwind label %1747

1741:                                             ; preds = %1740
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %145)
          to label %1742 unwind label %1751

1742:                                             ; preds = %1741
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %145) #8
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %146) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %146) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %145) #8
  br label %1757

1743:                                             ; preds = %1737
  %1744 = landingpad { ptr, i32 }
          cleanup
  %1745 = extractvalue { ptr, i32 } %1744, 0
  store ptr %1745, ptr %7, align 8
  %1746 = extractvalue { ptr, i32 } %1744, 1
  store i32 %1746, ptr %8, align 4
  br label %1756

1747:                                             ; preds = %1740
  %1748 = landingpad { ptr, i32 }
          cleanup
  %1749 = extractvalue { ptr, i32 } %1748, 0
  store ptr %1749, ptr %7, align 8
  %1750 = extractvalue { ptr, i32 } %1748, 1
  store i32 %1750, ptr %8, align 4
  br label %1755

1751:                                             ; preds = %1741
  %1752 = landingpad { ptr, i32 }
          cleanup
  %1753 = extractvalue { ptr, i32 } %1752, 0
  store ptr %1753, ptr %7, align 8
  %1754 = extractvalue { ptr, i32 } %1752, 1
  store i32 %1754, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %145) #8
  br label %1755

1755:                                             ; preds = %1751, %1747
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %146) #8
  br label %1756

1756:                                             ; preds = %1755, %1743
  call void @llvm.lifetime.end.p0(i64 144, ptr %146) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %145) #8
  br label %1775

1757:                                             ; preds = %1742, %1736
  %1758 = load ptr, ptr %3, align 8, !tbaa !5
  %1759 = load ptr, ptr %138, align 8, !tbaa !5
  %1760 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1759, i32 0, i32 2
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull align 8 dereferenceable(120) %1758, ptr noundef nonnull align 8 dereferenceable(32) %1760)
          to label %1761 unwind label %1677

1761:                                             ; preds = %1757
  call void @llvm.lifetime.start.p0(i64 152, ptr %147) #8
  %1762 = load ptr, ptr %138, align 8, !tbaa !5
  %1763 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1762, i32 0, i32 0
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair") align 8 %147, ptr noundef nonnull align 4 dereferenceable(4) %1763, ptr noundef nonnull align 8 dereferenceable(144) %26)
          to label %1764 unwind label %1766

1764:                                             ; preds = %1761
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(152) %147)
          to label %1765 unwind label %1770

1765:                                             ; preds = %1764
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %147) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  br label %1776

1766:                                             ; preds = %1761
  %1767 = landingpad { ptr, i32 }
          cleanup
  %1768 = extractvalue { ptr, i32 } %1767, 0
  store ptr %1768, ptr %7, align 8
  %1769 = extractvalue { ptr, i32 } %1767, 1
  store i32 %1769, ptr %8, align 4
  br label %1774

1770:                                             ; preds = %1764
  %1771 = landingpad { ptr, i32 }
          cleanup
  %1772 = extractvalue { ptr, i32 } %1771, 0
  store ptr %1772, ptr %7, align 8
  %1773 = extractvalue { ptr, i32 } %1771, 1
  store i32 %1773, ptr %8, align 4
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %147) #8
  br label %1774

1774:                                             ; preds = %1770, %1766
  call void @llvm.lifetime.end.p0(i64 152, ptr %147) #8
  br label %1775

1775:                                             ; preds = %1774, %1756, %1708, %1681, %1677
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  br label %1780

1776:                                             ; preds = %1765, %1650, %1598, %1514, %1481, %1457, %1443, %1424, %1410, %1404
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  store i32 0, ptr %29, align 4
  br label %1777

1777:                                             ; preds = %1776, %382
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %26) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  %1778 = load i32, ptr %29, align 4
  switch i32 %1778, label %1795 [
    i32 0, label %1779
    i32 6, label %255
  ]

1779:                                             ; preds = %1777
  br label %255, !llvm.loop !41

1780:                                             ; preds = %1775, %1660, %1599, %1542, %1495, %1471, %1445, %1438, %1412, %1372, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %1781

1781:                                             ; preds = %1780, %376, %344
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %26) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %1783

1782:                                             ; preds = %255
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #8
  call void @_ZN3MIR14ValueLifetimesD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #8
  call void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  ret void

1783:                                             ; preds = %1781, %284
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  br label %1784

1784:                                             ; preds = %1783, %247, %235, %231, %227
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %12) #8
  br label %1785

1785:                                             ; preds = %1784, %223
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #8
  br label %1786

1786:                                             ; preds = %1785, %185
  call void @_ZN3MIR14ValueLifetimesD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #8
  br label %1787

1787:                                             ; preds = %1786, %181
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #8
  call void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %1788

1788:                                             ; preds = %1787, %177
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  br label %1789

1789:                                             ; preds = %1788, %173
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  br label %1790

1790:                                             ; preds = %1789
  %1791 = load ptr, ptr %7, align 8
  %1792 = load i32, ptr %8, align 4
  %1793 = insertvalue { ptr, i32 } poison, ptr %1791, 0
  %1794 = insertvalue { ptr, i32 } %1793, i32 %1792, 1
  resume { ptr, i32 } %1794

1795:                                             ; preds = %1777
  unreachable
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSaIN12_GLOBAL__N_18StateSetEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

declare void @_Z23MIR_Helper_GetLifetimesRN3MIR11TypeResolveERKNS_8FunctionEbPKSt6vectorIbSaIbEE(ptr dead_on_unwind writable sret(%"struct.MIR::ValueLifetimes") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext, ptr noundef) #5

declare noundef zeroext i1 @_Z13debug_enabledv() #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, i64 noundef, i1 noundef zeroext) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

declare void @_ZN3MIR5visit23visit_terminator_targetERKNS_10TerminatorESt8functionIFvRKjEE(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152)) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZSt9make_pairIiN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.85") align 8, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(144)) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNKSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR14ValueLifetimes10slot_validEjjj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i32 noundef, i32 noundef) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4), i1 noundef zeroext) unnamed_addr #4 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) #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_18StateSet9add_stateERKNS_11ValueStatesE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) #4 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)) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNK12_GLOBAL__N_111ValueStates16get_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZN12_GLOBAL__N_111ValueStates13get_compositeERKN3MIR11TypeResolveERKNS_5StateE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates16set_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueENS_5StateE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), i32) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates15garbage_collectEv(ptr noundef nonnull align 8 dereferenceable(144)) #3 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair") align 8, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(144)) #3

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.(anonymous namespace)::ValueStates") align 8, ptr noundef nonnull align 8 dereferenceable(144)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 72}
!12 = !{!"_ZTSN3MIR11TypeResolveE", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116}
!13 = !{!"_ZTS9FmtLambda", !14, i64 0}
!14 = !{!"_ZTSSt8functionIFvRSoEE", !15, i64 0, !6, i64 24}
!15 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!16 = !{!17, !10, i64 0}
!17 = !{!"_ZTSSt4pairIjN12_GLOBAL__N_111ValueStatesEE", !10, i64 0, !18, i64 8}
!18 = !{!"_ZTSN12_GLOBAL__N_111ValueStatesE", !19, i64 0, !20, i64 8, !20, i64 32, !24, i64 56, !30, i64 96, !34, i64 120}
!19 = !{!"_ZTSN12_GLOBAL__N_15StateE", !10, i64 0}
!20 = !{!"_ZTSSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIbSaIbEE", !25, i64 0}
!25 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !26, i64 0}
!26 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !28, i64 0, !28, i64 16, !6, i64 32}
!28 = !{!"_ZTSSt13_Bit_iterator", !29, i64 0}
!29 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !10, i64 8}
!30 = !{!"_ZTSSt6vectorIS_IN12_GLOBAL__N_15StateESaIS1_EESaIS3_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIjSaIjEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{i64 0, i64 4, !9}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = distinct !{!41, !40}
!42 = !{!43, !43, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = !{!45, !45, i64 0}
!45 = !{!"bool", !7, i64 0}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = distinct !{!48, !40}
!49 = distinct !{!49, !40}
!50 = distinct !{!50, !40}
!51 = distinct !{!51, !40}
!52 = distinct !{!52, !40}
!53 = distinct !{!53, !40}
!54 = distinct !{!54, !40}
!55 = distinct !{!55, !40}
!56 = distinct !{!56, !40}
!57 = distinct !{!57, !40}
!58 = distinct !{!58, !40}
!59 = distinct !{!59, !40}
!60 = distinct !{!60, !40}
!61 = distinct !{!61, !40}
!62 = !{!63, !10, i64 8}
!63 = !{!"_ZTSN3MIR9Statement16Data_SetDropFlagE", !10, i64 0, !45, i64 4, !10, i64 8}
!64 = !{!63, !45, i64 4}
!65 = !{!63, !10, i64 0}
!66 = distinct !{!66, !40}
!67 = distinct !{!67, !40}
!68 = !{!69, !10, i64 40}
!69 = !{!"_ZTSN3MIR9Statement9Data_DropE", !70, i64 0, !71, i64 8, !10, i64 40}
!70 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!71 = !{!"_ZTSN3MIR6LValueE", !72, i64 0, !73, i64 8}
!72 = !{!"_ZTSN3MIR6LValue7StorageE", !43, i64 0}
!73 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!69, !70, i64 0}
!78 = !{!19, !10, i64 0}
!79 = distinct !{!79, !40}
!80 = distinct !{!80, !40}
!81 = distinct !{!81, !40}
!82 = distinct !{!82, !40}
!83 = distinct !{!83, !40}
!84 = distinct !{!84, !40}
!85 = distinct !{!85, !40}
!86 = distinct !{!86, !40}
!87 = distinct !{!87, !40}
!88 = !{!89, !10, i64 4}
!89 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !10, i64 0, !10, i64 4, !71, i64 8, !90, i64 40, !92, i64 136}
!90 = !{!"_ZTSN3MIR10CallTargetE", !91, i64 0, !7, i64 8}
!91 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!92 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 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.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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 }
%"class.std::allocator.11" = type { i8 }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::StateSet, std::allocator<(anonymous namespace)::StateSet>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.26" = type { i8 }
%"struct.MIR::ValueLifetimes" = type { %"class.std::vector.29", %"class.std::vector.31" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::ValueLifetime, std::allocator<MIR::ValueLifetime>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.(anonymous namespace)::ValueStates" = type { %"struct.(anonymous namespace)::State", %"class.std::vector", %"class.std::vector", %"class.std::vector.0", %"class.std::vector.4", %"class.std::vector.9" }
%"struct.(anonymous namespace)::State" = type { i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::State, std::allocator<(anonymous namespace)::State>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = 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.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<(anonymous namespace)::State>, std::allocator<std::vector<(anonymous namespace)::State>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.41" = type { ptr }
%"class.std::function.77" = 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 = type { ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, (anonymous namespace)::ValueStates>, std::allocator<std::pair<unsigned int, (anonymous namespace)::ValueStates>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, %"struct.(anonymous namespace)::ValueStates" }
%"struct.std::pair.85" = type { i32, %"struct.(anonymous namespace)::ValueStates" }
%"class.__gnu_cxx::__normal_iterator.131" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.132" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.135" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.152 = type { ptr }
%class.anon.153 = type { ptr, ptr, ptr }
%class.anon.154 = type { ptr, ptr }
%class.anon.155 = type { ptr, ptr, ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.47" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = 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 }

@.str.3 = external hidden unnamed_addr constant [77 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [26 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [78 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.9", align 8
  %4 = alloca %"class.std::allocator.11", align 1
  %5 = alloca %"class.std::vector.24", align 8
  %6 = alloca %"class.std::allocator.26", align 1
  %7 = alloca %"struct.MIR::ValueLifetimes", align 8
  %8 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.41", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.41", align 8
  %13 = alloca %"class.std::function.77", align 8
  %14 = alloca %class.anon, align 8
  %15 = alloca %"class.std::vector.80", align 8
  %16 = alloca %"struct.std::pair", align 8
  %17 = alloca %"struct.std::pair.85", align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %21 = alloca %"struct.(anonymous namespace)::State", align 4
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.132", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.135", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.135", align 8
  %36 = alloca %"struct.std::_Bit_reference", align 8
  %37 = alloca %"struct.std::_Bit_reference", align 8
  %38 = alloca %"struct.std::_Bit_reference", align 8
  %39 = alloca %"struct.std::_Bit_reference", align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.152, align 8
  %42 = alloca %"class.std::function", align 8
  %43 = alloca %class.anon.153, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.154, align 8
  %46 = alloca %"class.std::function", align 8
  %47 = alloca %class.anon.155, align 8
  %48 = alloca %"struct.(anonymous namespace)::State", align 4
  %49 = alloca %"struct.MIR::LValue", align 8
  %50 = alloca %"struct.std::pair", align 8
  %51 = alloca %"struct.std::pair", align 8
  %52 = alloca %"struct.std::pair", align 8
  %53 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %54 = alloca %"struct.std::pair", align 8
  %55 = alloca %"struct.std::pair", align 8
  %56 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %57 = alloca %"struct.std::pair", align 8
  %58 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %59 = alloca %"struct.std::pair", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.131", align 8
  %62 = alloca %"struct.std::pair", align 8
  %63 = alloca %"struct.(anonymous namespace)::ValueStates", align 8
  %64 = alloca %"struct.std::pair", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  %65 = getelementptr inbounds i8, ptr %1, i64 64
  %66 = tail call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %66, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %67 unwind label %82

67:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  %68 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIN12_GLOBAL__N_18StateSetEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %68, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %69 unwind label %84

69:                                               ; preds = %67
  call void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #7
  invoke void @_Z23MIR_Helper_GetLifetimesRN3MIR11TypeResolveERKNS_8FunctionEbPKSt6vectorIbSaIbEE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::ValueLifetimes") align 8 %7, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, i1 noundef zeroext true, ptr noundef null)
          to label %70 unwind label %86

70:                                               ; preds = %69
  %71 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %72 unwind label %88

72:                                               ; preds = %70
  br i1 %71, label %73, label %90

73:                                               ; preds = %72
  %74 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %74, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %76 unwind label %88

76:                                               ; preds = %73
  %77 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsImERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %78 unwind label %88

78:                                               ; preds = %76
  %79 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %80 unwind label %88

80:                                               ; preds = %78
  %81 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %90 unwind label %88

82:                                               ; preds = %2
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  br label %724

84:                                               ; preds = %67
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  br label %723

86:                                               ; preds = %69
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %722

88:                                               ; preds = %80, %78, %76, %73, %70
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %721

90:                                               ; preds = %80, %72
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #7
  invoke void @_ZN12_GLOBAL__N_111ValueStatesC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8)
          to label %91 unwind label %110

91:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  %92 = getelementptr inbounds i8, ptr %0, i64 72
  %93 = load ptr, ptr %92, align 8, !tbaa !9
  %94 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %93) #7
  invoke void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %9, i64 noundef %94, i1 noundef zeroext true)
          to label %95 unwind label %112

95:                                               ; preds = %91
  %96 = getelementptr inbounds i8, ptr %8, i64 8
  %97 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  %98 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  invoke void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %10, i64 noundef %98, i1 noundef zeroext false)
          to label %99 unwind label %114

99:                                               ; preds = %95
  %100 = getelementptr inbounds i8, ptr %8, i64 32
  %101 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  %102 = getelementptr inbounds i8, ptr %1, i64 24
  %103 = getelementptr inbounds i8, ptr %8, i64 56
  %104 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIbSaIbEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(40) %103, ptr noundef nonnull align 8 dereferenceable(40) %102)
          to label %105 unwind label %116

105:                                              ; preds = %99
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #7
  store i32 1, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %107 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  store ptr %107, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %108 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  store ptr %108, ptr %12, align 8
  %109 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br i1 %109, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %120, %105
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  store i32 0, ptr %18, align 4, !tbaa !5
  invoke void @_ZSt9make_pairIiN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.85") align 8 %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 8 dereferenceable(144) %8)
          to label %125 unwind label %151

110:                                              ; preds = %90
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %720

112:                                              ; preds = %91
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  br label %719

114:                                              ; preds = %95
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %719

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

.lr.ph:                                           ; preds = %105, %120
  %118 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  %119 = getelementptr inbounds i8, ptr %118, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  store ptr %3, ptr %14, align 8, !tbaa !15
  call void @"_ZNSt8functionIFvRKjEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS5_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  invoke void @_ZN3MIR5visit23visit_terminator_targetERKNS_10TerminatorESt8functionIFvRKjEE(ptr noundef nonnull align 8 dereferenceable(168) %119, ptr noundef nonnull %13)
          to label %120 unwind label %123

120:                                              ; preds = %.lr.ph
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  %122 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br i1 %122, label %.lr.ph, label %._crit_edge

123:                                              ; preds = %.lr.ph
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %719

125:                                              ; preds = %._crit_edge
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEEC2IiS1_TnNSt9enable_ifIXaaclsr6_PCCFPIT_T0_EE22_MoveConstructiblePairIS5_S6_EEclsr6_PCCFPIS5_S6_EE30_ImplicitlyMoveConvertiblePairIS5_S6_EEEbE4typeELb1EEEOS_IS5_S6_E(ptr noundef nonnull align 8 dereferenceable(152) %16, ptr noundef nonnull align 8 dereferenceable(152) %17)
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %16)
          to label %126 unwind label %153

126:                                              ; preds = %125
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %16) #7
  call void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %16) #7
  %127 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  br i1 %127, label %._crit_edge709, label %.lr.ph708

.lr.ph708:                                        ; preds = %126
  %128 = getelementptr inbounds i8, ptr %20, i64 32
  %129 = getelementptr inbounds i8, ptr %20, i64 120
  %130 = getelementptr inbounds i8, ptr %20, i64 56
  %131 = getelementptr inbounds i8, ptr %39, i64 8
  %132 = getelementptr inbounds i8, ptr %43, i64 8
  %133 = getelementptr inbounds i8, ptr %43, i64 16
  %134 = getelementptr inbounds i8, ptr %45, i64 8
  %135 = getelementptr inbounds i8, ptr %47, i64 8
  %136 = getelementptr inbounds i8, ptr %47, i64 16
  %137 = getelementptr inbounds i8, ptr %37, i64 8
  %138 = getelementptr inbounds i8, ptr %38, i64 8
  %139 = getelementptr inbounds i8, ptr %36, i64 8
  br label %140

140:                                              ; preds = %.lr.ph708, %.loopexit442
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %141 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  %142 = load i32, ptr %141, align 8, !tbaa !16
  store i32 %142, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %20) #7
  %143 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  %144 = getelementptr inbounds i8, ptr %143, i64 8
  call void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(144) %144) #7
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  %145 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #7
  %.not710 = icmp eq i64 %145, 0
  br i1 %.not710, label %._crit_edge449, label %.lr.ph448

._crit_edge449:                                   ; preds = %189, %140
  %146 = load i32, ptr %19, align 4, !tbaa !5
  %147 = zext i32 %146 to i64
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %147) #7
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = icmp ugt i32 %149, 1
  br i1 %150, label %194, label %219

151:                                              ; preds = %._crit_edge
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %155

153:                                              ; preds = %125
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %16) #7
  call void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %17) #7
  br label %155

155:                                              ; preds = %153, %151
  %.pn = phi { ptr, i32 } [ %154, %153 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %16) #7
  br label %718

.lr.ph448:                                        ; preds = %140, %189
  %156 = phi i64 [ %191, %189 ], [ 0, %140 ]
  %.0313445 = phi i32 [ %190, %189 ], [ 0, %140 ]
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %156) #7
  %158 = call noundef zeroext i1 @_ZNK12_GLOBAL__N_15State8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %157)
  br i1 %158, label %161, label %189

159:                                              ; preds = %184, %182, %180, %178, %176, %173, %171, %168, %165, %161
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %717

161:                                              ; preds = %.lr.ph448
  %162 = load i32, ptr %19, align 4, !tbaa !5
  %163 = invoke noundef zeroext i1 @_ZNK3MIR14ValueLifetimes10slot_validEjjj(ptr noundef nonnull align 8 dereferenceable(48) %7, i32 noundef %.0313445, i32 noundef %162, i32 noundef 0)
          to label %164 unwind label %159

164:                                              ; preds = %161
  br i1 %163, label %189, label %165

165:                                              ; preds = %164
  %166 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %167 unwind label %159

167:                                              ; preds = %165
  br i1 %166, label %168, label %186

168:                                              ; preds = %167
  %169 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %169, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %171 unwind label %159

171:                                              ; preds = %168
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull @.str.6)
          to label %173 unwind label %159

173:                                              ; preds = %171
  %174 = load i32, ptr %19, align 4, !tbaa !5
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %172, i32 noundef %174)
          to label %176 unwind label %159

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

178:                                              ; preds = %176
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %177, i32 noundef %.0313445)
          to label %180 unwind label %159

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @.str.8)
          to label %182 unwind label %159

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

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %186 unwind label %159

186:                                              ; preds = %184, %167
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  call void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext false)
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %156) #7
  %188 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %188, ptr %187, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  br label %189

189:                                              ; preds = %.lr.ph448, %164, %186
  %190 = add i32 %.0313445, 1
  %191 = zext i32 %190 to i64
  %192 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #7
  %193 = icmp ugt i64 %192, %191
  br i1 %193, label %.lr.ph448, label %._crit_edge449, !llvm.loop !38

194:                                              ; preds = %._crit_edge449
  %195 = load i32, ptr %19, align 4, !tbaa !5
  %196 = zext i32 %195 to i64
  %197 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %196) #7
  %198 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_18StateSet9add_stateERKNS_11ValueStatesE(ptr noundef nonnull align 8 dereferenceable(24) %197, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %199 unwind label %217

199:                                              ; preds = %194
  br i1 %198, label %219, label %200

200:                                              ; preds = %199
  %201 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %202 unwind label %217

202:                                              ; preds = %200
  br i1 %201, label %203, label %.loopexit442, !llvm.loop !40

203:                                              ; preds = %202
  %204 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %204, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %206 unwind label %217

206:                                              ; preds = %203
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull @.str.6)
          to label %208 unwind label %217

208:                                              ; preds = %206
  %209 = load i32, ptr %19, align 4, !tbaa !5
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %207, i32 noundef %209)
          to label %211 unwind label %217

211:                                              ; preds = %208
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @.str.9)
          to label %213 unwind label %217

213:                                              ; preds = %211
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %215 unwind label %217

215:                                              ; preds = %213
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit442 unwind label %217, !llvm.loop !40

217:                                              ; preds = %238, %236, %234, %232, %230, %227, %225, %222, %219, %215, %213, %211, %208, %206, %203, %200, %194
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %717

219:                                              ; preds = %._crit_edge449, %199
  %220 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %221 unwind label %217

221:                                              ; preds = %219
  br i1 %220, label %222, label %238

222:                                              ; preds = %221
  %223 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %223, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %225 unwind label %217

225:                                              ; preds = %222
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull @.str.6)
          to label %227 unwind label %217

227:                                              ; preds = %225
  %228 = load i32, ptr %19, align 4, !tbaa !5
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %226, i32 noundef %228)
          to label %230 unwind label %217

230:                                              ; preds = %227
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull @.str.10)
          to label %232 unwind label %217

232:                                              ; preds = %230
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %234 unwind label %217

234:                                              ; preds = %232
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %236 unwind label %217

236:                                              ; preds = %234
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %238 unwind label %217

238:                                              ; preds = %236, %221
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %129, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %239 unwind label %217

239:                                              ; preds = %238
  %240 = load i32, ptr %19, align 4, !tbaa !5
  %241 = zext i32 %240 to i64
  %242 = invoke noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %241)
          to label %.preheader444 unwind label %244

.preheader444:                                    ; preds = %239
  %243 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #7
  %.not711 = icmp eq i64 %243, 0
  br i1 %.not711, label %._crit_edge698, label %.lr.ph697

._crit_edge698:                                   ; preds = %.loopexit440, %.preheader444
  invoke void @_ZN12_GLOBAL__N_111ValueStates15garbage_collectEv(ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %528 unwind label %244

244:                                              ; preds = %544, %542, %539, %537, %535, %532, %528, %._crit_edge698, %239
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %717

.lr.ph697:                                        ; preds = %.preheader444, %.loopexit440
  %.0314696 = phi i64 [ %268, %.loopexit440 ], [ 0, %.preheader444 ]
  %246 = load i32, ptr %19, align 4, !tbaa !5
  %247 = trunc i64 %.0314696 to i32
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %246, i32 noundef %247)
  %248 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %249 unwind label %266

249:                                              ; preds = %.lr.ph697
  br i1 %248, label %250, label %.lr.ph694

250:                                              ; preds = %249
  %251 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %251, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %253 unwind label %266

253:                                              ; preds = %250
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %255 unwind label %266

255:                                              ; preds = %253
  %256 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %242, i64 noundef %.0314696) #7
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef nonnull align 8 dereferenceable(152) %256)
          to label %258 unwind label %266

258:                                              ; preds = %255
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @.str.11)
          to label %260 unwind label %266

260:                                              ; preds = %258
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %262 unwind label %266

262:                                              ; preds = %260
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %264 unwind label %266

264:                                              ; preds = %262
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph694 unwind label %266

266:                                              ; preds = %264, %262, %260, %258, %255, %253, %250, %.lr.ph697
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %717

.loopexit440:                                     ; preds = %391, %.preheader438.split, %.lr.ph694, %439, %455, %..loopexit423_crit_edge, %..loopexit424_crit_edge, %527, %474, %525
  %268 = add nuw i64 %.0314696, 1
  %269 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #7
  %270 = icmp ult i64 %268, %269
  br i1 %270, label %.lr.ph697, label %._crit_edge698, !llvm.loop !41

.lr.ph694:                                        ; preds = %264, %249
  %271 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %242, i64 noundef %.0314696) #7
  %272 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  switch i32 %272, label %.loopexit440 [
    i32 0, label %280
    i32 1, label %.preheader428
    i32 2, label %.lr.ph666
    i32 3, label %.split655.lr.ph
    i32 4, label %.preheader434.split.split
    i32 5, label %.lr.ph486
    i32 6, label %.preheader438.split
  ]

.preheader438.split:                              ; preds = %.lr.ph694
  %273 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  br label %.loopexit440

.preheader434.split.split:                        ; preds = %.lr.ph694
  %274 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %275 = getelementptr inbounds i8, ptr %274, i64 8
  %276 = load i32, ptr %275, align 4, !tbaa !42
  %277 = icmp eq i32 %276, -1
  %278 = getelementptr inbounds i8, ptr %274, i64 4
  %279 = load i8, ptr %278, align 4, !tbaa !45, !range !46, !noundef !47
  br i1 %277, label %435, label %445

280:                                              ; preds = %.lr.ph694
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.3, i32 noundef 785, ptr noundef nonnull @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #8
  unreachable

.preheader428:                                    ; preds = %.lr.ph694
  %281 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %282 = getelementptr inbounds i8, ptr %281, i64 32
  %283 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  switch i32 %283, label %391 [
    i32 0, label %286
    i32 1, label %287
    i32 3, label %291
    i32 4, label %293
    i32 2, label %297
    i32 5, label %302
    i32 6, label %306
    i32 7, label %312
    i32 8, label %316
    i32 9, label %320
    i32 10, label %324
    i32 11, label %330
    i32 12, label %343
    i32 13, label %356
    i32 14, label %363
    i32 15, label %377
  ]

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

286:                                              ; preds = %.preheader428
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.3, i32 noundef 857, ptr noundef nonnull @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #8
  unreachable

287:                                              ; preds = %.preheader428
  %288 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %288)
          to label %391 unwind label %289

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

291:                                              ; preds = %.preheader428
  %292 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  br label %391

293:                                              ; preds = %.preheader428
  %294 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %294)
          to label %391 unwind label %295

295:                                              ; preds = %293
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %717

297:                                              ; preds = %.preheader428
  %298 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  %299 = getelementptr inbounds i8, ptr %298, i64 8
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %299)
          to label %391 unwind label %300

300:                                              ; preds = %297
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %717

302:                                              ; preds = %.preheader428
  %303 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %391 unwind label %304

304:                                              ; preds = %302
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %717

306:                                              ; preds = %.preheader428
  %307 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %307)
          to label %308 unwind label %310

308:                                              ; preds = %306
  %309 = getelementptr inbounds i8, ptr %307, i64 56
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %309)
          to label %391 unwind label %310

310:                                              ; preds = %308, %306
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %717

312:                                              ; preds = %.preheader428
  %313 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %313)
          to label %391 unwind label %314

314:                                              ; preds = %312
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %717

316:                                              ; preds = %.preheader428
  %317 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %317)
          to label %391 unwind label %318

318:                                              ; preds = %316
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %717

320:                                              ; preds = %.preheader428
  %321 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %321)
          to label %391 unwind label %322

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

324:                                              ; preds = %.preheader428
  %325 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %325)
          to label %326 unwind label %328

326:                                              ; preds = %324
  %327 = getelementptr inbounds i8, ptr %325, i64 48
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %327)
          to label %391 unwind label %328

328:                                              ; preds = %326, %324
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %717

330:                                              ; preds = %.preheader428
  %331 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %332 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %331) #7
  store ptr %332, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %333 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %331) #7
  store ptr %333, ptr %23, align 8
  %334 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br i1 %334, label %.lr.ph690, label %._crit_edge691

._crit_edge691:                                   ; preds = %340, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %391

.lr.ph690:                                        ; preds = %330, %340
  %335 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %336 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %335)
  %.not397 = icmp eq ptr %336, null
  br i1 %.not397, label %340, label %337

337:                                              ; preds = %.lr.ph690
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %336)
          to label %340 unwind label %338

338:                                              ; preds = %337
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %717

340:                                              ; preds = %337, %.lr.ph690
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  %342 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br i1 %342, label %.lr.ph690, label %._crit_edge691

343:                                              ; preds = %.preheader428
  %344 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %345 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #7
  store ptr %345, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %346 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #7
  store ptr %346, ptr %25, align 8
  %347 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %347, label %.lr.ph687, label %._crit_edge688

._crit_edge688:                                   ; preds = %353, %343
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %391

.lr.ph687:                                        ; preds = %343, %353
  %348 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  %349 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %348)
  %.not396 = icmp eq ptr %349, null
  br i1 %.not396, label %353, label %350

350:                                              ; preds = %.lr.ph687
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %349)
          to label %353 unwind label %351

351:                                              ; preds = %350
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %717

353:                                              ; preds = %350, %.lr.ph687
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  %355 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %355, label %.lr.ph687, label %._crit_edge688

356:                                              ; preds = %.preheader428
  %357 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  %358 = getelementptr inbounds i8, ptr %357, i64 40
  %359 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %358)
  %.not395 = icmp eq ptr %359, null
  br i1 %.not395, label %391, label %360

360:                                              ; preds = %356
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %391 unwind label %361

361:                                              ; preds = %360
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %717

363:                                              ; preds = %.preheader428
  %364 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  %365 = getelementptr inbounds i8, ptr %364, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  %366 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #7
  store ptr %366, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %367 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #7
  store ptr %367, ptr %27, align 8
  %368 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br i1 %368, label %.lr.ph684, label %._crit_edge685

._crit_edge685:                                   ; preds = %374, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %391

.lr.ph684:                                        ; preds = %363, %374
  %369 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  %370 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %369)
  %.not394 = icmp eq ptr %370, null
  br i1 %.not394, label %374, label %371

371:                                              ; preds = %.lr.ph684
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %370)
          to label %374 unwind label %372

372:                                              ; preds = %371
  %373 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %717

374:                                              ; preds = %371, %.lr.ph684
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  %376 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br i1 %376, label %.lr.ph684, label %._crit_edge685

377:                                              ; preds = %.preheader428
  %378 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %282)
  %379 = getelementptr inbounds i8, ptr %378, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  %380 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %379) #7
  store ptr %380, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %381 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %379) #7
  store ptr %381, ptr %29, align 8
  %382 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %382, label %.lr.ph681, label %._crit_edge682

._crit_edge682:                                   ; preds = %388, %377
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  br label %391

.lr.ph681:                                        ; preds = %377, %388
  %383 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  %384 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %383)
  %.not393 = icmp eq ptr %384, null
  br i1 %.not393, label %388, label %385

385:                                              ; preds = %.lr.ph681
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %384)
          to label %388 unwind label %386

386:                                              ; preds = %385
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  br label %717

388:                                              ; preds = %385, %.lr.ph681
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  %390 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br i1 %390, label %.lr.ph681, label %._crit_edge682

391:                                              ; preds = %356, %360, %326, %320, %316, %312, %308, %302, %297, %293, %287, %._crit_edge682, %._crit_edge685, %._crit_edge688, %._crit_edge691, %291, %.preheader428
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %281)
          to label %.loopexit440 unwind label %284, !llvm.loop !48

.lr.ph666:                                        ; preds = %.lr.ph694
  %392 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %393 = getelementptr inbounds i8, ptr %392, i64 56
  %394 = getelementptr inbounds i8, ptr %392, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %395 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %393) #7
  store ptr %395, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  %396 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %393) #7
  store ptr %396, ptr %31, align 8
  %397 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br i1 %397, label %.lr.ph660, label %._crit_edge661

._crit_edge661:                                   ; preds = %403, %.lr.ph666
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %398 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #7
  store ptr %398, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %399 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #7
  store ptr %399, ptr %33, align 8
  %400 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br i1 %400, label %.lr.ph663, label %..loopexit423_crit_edge

.lr.ph660:                                        ; preds = %.lr.ph666, %403
  %401 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  %402 = getelementptr inbounds i8, ptr %401, i64 32
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %402)
          to label %403 unwind label %.split671

403:                                              ; preds = %.lr.ph660
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  %405 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br i1 %405, label %.lr.ph660, label %._crit_edge661

.split671:                                        ; preds = %.lr.ph660
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  br label %717

..loopexit423_crit_edge:                          ; preds = %409, %._crit_edge661
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  br label %.loopexit440

.lr.ph663:                                        ; preds = %._crit_edge661, %409
  %407 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %408 = getelementptr inbounds i8, ptr %407, i64 32
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %408)
          to label %409 unwind label %.split668

409:                                              ; preds = %.lr.ph663
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %411 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br i1 %411, label %.lr.ph663, label %..loopexit423_crit_edge

.split668:                                        ; preds = %.lr.ph663
  %412 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  br label %717

.split655.lr.ph:                                  ; preds = %.lr.ph694
  %413 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %414 = getelementptr inbounds i8, ptr %413, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  %415 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %414) #7
  store ptr %415, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %416 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %414) #7
  store ptr %416, ptr %35, align 8
  %417 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br i1 %417, label %.split636, label %..loopexit424_crit_edge

..loopexit424_crit_edge:                          ; preds = %..loopexit421_crit_edge, %.split655.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %.loopexit440

.split636:                                        ; preds = %.split655.lr.ph, %..loopexit421_crit_edge
  %418 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %419 = call noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %418)
  switch i32 %419, label %..loopexit421_crit_edge [
    i32 0, label %.split627
    i32 1, label %.preheader
    i32 2, label %.preheader416
    i32 3, label %.preheader418
  ]

.preheader418:                                    ; preds = %.split636
  %420 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %418)
  %421 = getelementptr inbounds i8, ptr %420, i64 48
  %422 = getelementptr inbounds i8, ptr %420, i64 56
  %423 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %421) #7
  br i1 %423, label %427, label %429

.preheader416:                                    ; preds = %.split636
  %424 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %418)
  br label %..loopexit421_crit_edge

.preheader:                                       ; preds = %.split636
  %425 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %418)
  br label %..loopexit421_crit_edge

.split627:                                        ; preds = %.split636
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.3, i32 noundef 869, ptr noundef nonnull @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #8
  unreachable

.split595.split.split.split:                      ; preds = %431, %427
  %426 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %717

427:                                              ; preds = %.preheader418
  %428 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %421) #7
  invoke void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %428)
          to label %429 unwind label %.split595.split.split.split

429:                                              ; preds = %427, %.preheader418
  %430 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %422) #7
  br i1 %430, label %431, label %..loopexit421_crit_edge

431:                                              ; preds = %429
  %432 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %422) #7
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %432)
          to label %..loopexit421_crit_edge unwind label %.split595.split.split.split

..loopexit421_crit_edge:                          ; preds = %.preheader416, %.preheader, %431, %429, %.split636
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %434 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br i1 %434, label %.split636, label %..loopexit424_crit_edge

435:                                              ; preds = %.preheader434.split.split
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  %436 = load i32, ptr %274, align 4, !tbaa !49
  %437 = zext i32 %436 to i64
  %438 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %130, i64 noundef %437)
          to label %439 unwind label %.split494.split

439:                                              ; preds = %435
  %440 = trunc nuw i8 %279 to i1
  %441 = extractvalue { ptr, i64 } %438, 0
  store ptr %441, ptr %36, align 8
  %442 = extractvalue { ptr, i64 } %438, 1
  store i64 %442, ptr %139, align 8
  %443 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %36, i1 noundef zeroext %440) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  br label %.loopexit440

.split494.split:                                  ; preds = %435
  %444 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  br label %717

445:                                              ; preds = %.preheader434.split.split
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #7
  %446 = zext i32 %276 to i64
  %447 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %130, i64 noundef %446)
          to label %448 unwind label %.split.split

448:                                              ; preds = %445
  %449 = extractvalue { ptr, i64 } %447, 0
  store ptr %449, ptr %37, align 8
  %450 = extractvalue { ptr, i64 } %447, 1
  store i64 %450, ptr %137, align 8
  %451 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #7
  %452 = load i32, ptr %274, align 4, !tbaa !49
  %453 = zext i32 %452 to i64
  %454 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %130, i64 noundef %453)
          to label %455 unwind label %.split491.split

455:                                              ; preds = %448
  %456 = zext i1 %451 to i8
  %457 = icmp ne i8 %279, %456
  %458 = extractvalue { ptr, i64 } %454, 0
  store ptr %458, ptr %38, align 8
  %459 = extractvalue { ptr, i64 } %454, 1
  store i64 %459, ptr %138, align 8
  %460 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %38, i1 noundef zeroext %457) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %.loopexit440

.split.split:                                     ; preds = %445
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %463

.split491.split:                                  ; preds = %448
  %462 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %463

463:                                              ; preds = %.split491.split, %.split.split
  %.pn387 = phi { ptr, i32 } [ %462, %.split491.split ], [ %461, %.split.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %717

.lr.ph486:                                        ; preds = %.lr.ph694
  %464 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %465 = getelementptr inbounds i8, ptr %464, i64 40
  %466 = getelementptr inbounds i8, ptr %464, i64 8
  %467 = load i32, ptr %465, align 8, !tbaa !50
  %468 = icmp eq i32 %467, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #7
  br i1 %468, label %.critedge, label %471

469:                                              ; preds = %527
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %717

471:                                              ; preds = %.lr.ph486
  %472 = zext i32 %467 to i64
  %473 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %130, i64 noundef %472)
          to label %474 unwind label %487

474:                                              ; preds = %471
  %475 = extractvalue { ptr, i64 } %473, 0
  store ptr %475, ptr %39, align 8
  %476 = extractvalue { ptr, i64 } %473, 1
  store i64 %476, ptr %131, align 8
  %477 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br i1 %477, label %478, label %.loopexit440

.critedge:                                        ; preds = %.lr.ph486
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br label %478

478:                                              ; preds = %.critedge, %474
  %479 = load i32, ptr %464, align 8, !tbaa !60
  %480 = icmp eq i32 %479, 0
  br i1 %480, label %481, label %527

481:                                              ; preds = %478
  %482 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK12_GLOBAL__N_111ValueStates16get_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %466)
          to label %483 unwind label %489

483:                                              ; preds = %481
  %484 = load i32, ptr %482, align 4, !tbaa !61
  %.not378 = icmp eq i32 %484, -1
  br i1 %.not378, label %485, label %493

485:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  store ptr %464, ptr %41, align 8, !tbaa !15
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %40)
          to label %486 unwind label %491

486:                                              ; preds = %485
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %493

487:                                              ; preds = %471
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  br label %717

489:                                              ; preds = %481
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %717

491:                                              ; preds = %485
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %717

493:                                              ; preds = %483, %486
  %494 = call noundef zeroext i1 @_ZNK12_GLOBAL__N_15State12is_compositeEv(ptr noundef nonnull align 4 dereferenceable(4) %482)
  br i1 %494, label %503, label %495

495:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #7
  store ptr %464, ptr %43, align 8, !tbaa !15
  store ptr %20, ptr %132, align 8, !tbaa !15
  store ptr %482, ptr %133, align 8, !tbaa !15
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(24) %43)
          to label %496 unwind label %498

496:                                              ; preds = %495
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %42)
          to label %497 unwind label %500

497:                                              ; preds = %496
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  br label %503

498:                                              ; preds = %495
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %502

500:                                              ; preds = %496
  %501 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %502

502:                                              ; preds = %500, %498
  %.pn379 = phi { ptr, i32 } [ %501, %500 ], [ %499, %498 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  br label %717

503:                                              ; preds = %497, %493
  %504 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12_GLOBAL__N_111ValueStates13get_compositeERKN3MIR11TypeResolveERKNS_5StateE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 4 dereferenceable(4) %482)
          to label %505 unwind label %510

505:                                              ; preds = %503
  %506 = call noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %504) #7
  %507 = icmp eq i64 %506, 2
  br i1 %507, label %514, label %508

508:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #7
  store ptr %20, ptr %45, align 8, !tbaa !15
  store ptr %482, ptr %134, align 8, !tbaa !15
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(16) %45) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %44)
          to label %509 unwind label %512

509:                                              ; preds = %508
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  br label %514

510:                                              ; preds = %525, %503
  %511 = landingpad { ptr, i32 }
          cleanup
  br label %717

512:                                              ; preds = %508
  %513 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  br label %717

514:                                              ; preds = %505, %509
  %515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %504, i64 noundef 0) #7
  %516 = call noundef zeroext i1 @_ZNK12_GLOBAL__N_15State8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %515)
  br i1 %516, label %525, label %517

517:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %47) #7
  store ptr %464, ptr %47, align 8, !tbaa !15
  store ptr %20, ptr %135, align 8, !tbaa !15
  store ptr %482, ptr %136, align 8, !tbaa !15
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %518 unwind label %520

518:                                              ; preds = %517
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %46)
          to label %519 unwind label %522

519:                                              ; preds = %518
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #7
  br label %525

520:                                              ; preds = %517
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %524

522:                                              ; preds = %518
  %523 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %524

524:                                              ; preds = %522, %520
  %.pn381 = phi { ptr, i32 } [ %523, %522 ], [ %521, %520 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #7
  br label %717

525:                                              ; preds = %519, %514
  call void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4) %48, i1 noundef zeroext false)
  %526 = load i32, ptr %48, align 4
  invoke void @_ZN12_GLOBAL__N_111ValueStates16set_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueENS_5StateE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %466, i32 %526)
          to label %.loopexit440 unwind label %510

527:                                              ; preds = %478
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %466)
          to label %.loopexit440 unwind label %469

528:                                              ; preds = %._crit_edge698
  %529 = load i32, ptr %19, align 4, !tbaa !5
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %529)
  %530 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %531 unwind label %244

531:                                              ; preds = %528
  br i1 %530, label %532, label %546

532:                                              ; preds = %531
  %533 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %533, ptr noundef nonnull @__FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %535 unwind label %244

535:                                              ; preds = %532
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %537 unwind label %244

537:                                              ; preds = %535
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %536, ptr noundef nonnull @.str.11)
          to label %539 unwind label %244

539:                                              ; preds = %537
  %540 = getelementptr inbounds i8, ptr %242, i64 24
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef nonnull align 8 dereferenceable(168) %540)
          to label %542 unwind label %244

542:                                              ; preds = %539
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %544 unwind label %244

544:                                              ; preds = %542
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %546 unwind label %244

546:                                              ; preds = %544, %531
  %547 = getelementptr inbounds i8, ptr %242, i64 24
  %548 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  switch i32 %548, label %.loopexit442 [
    i32 0, label %549
    i32 1, label %550
    i32 2, label %552
    i32 3, label %561
    i32 4, label %563
    i32 5, label %572
    i32 6, label %581
    i32 7, label %606
    i32 8, label %632
    i32 9, label %661
  ]

549:                                              ; preds = %546
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.3, i32 noundef 1008, ptr noundef nonnull @__PRETTY_FUNCTION__._Z25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionE) #8
  unreachable

550:                                              ; preds = %546
  %551 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  br label %.loopexit442

552:                                              ; preds = %546
  %553 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #7
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %49)
          to label %554 unwind label %556

554:                                              ; preds = %552
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %555 unwind label %558

555:                                              ; preds = %554
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  br label %.loopexit442

556:                                              ; preds = %552
  %557 = landingpad { ptr, i32 }
          cleanup
  br label %560

558:                                              ; preds = %554
  %559 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %560

560:                                              ; preds = %558, %556
  %.pn376 = phi { ptr, i32 } [ %559, %558 ], [ %557, %556 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #7
  br label %717

561:                                              ; preds = %546
  %562 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  br label %.loopexit442

563:                                              ; preds = %546
  %564 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %50) #7
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %50, ptr noundef nonnull align 4 dereferenceable(4) %564, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %565 unwind label %567

565:                                              ; preds = %563
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %50)
          to label %566 unwind label %569

566:                                              ; preds = %565
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %50) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %50) #7
  br label %.loopexit442

567:                                              ; preds = %563
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %571

569:                                              ; preds = %565
  %570 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %50) #7
  br label %571

571:                                              ; preds = %569, %567
  %.pn374 = phi { ptr, i32 } [ %570, %569 ], [ %568, %567 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %50) #7
  br label %717

572:                                              ; preds = %546
  %573 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %51) #7
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %51, ptr noundef nonnull align 4 dereferenceable(4) %573, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %574 unwind label %576

574:                                              ; preds = %572
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %51)
          to label %575 unwind label %578

575:                                              ; preds = %574
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %51) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %51) #7
  br label %.loopexit442

576:                                              ; preds = %572
  %577 = landingpad { ptr, i32 }
          cleanup
  br label %580

578:                                              ; preds = %574
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %51) #7
  br label %580

580:                                              ; preds = %578, %576
  %.pn372 = phi { ptr, i32 } [ %579, %578 ], [ %577, %576 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %51) #7
  br label %717

581:                                              ; preds = %546
  %582 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %582)
          to label %583 unwind label %591

583:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %53) #7
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %53, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %584 unwind label %593

584:                                              ; preds = %583
  %585 = getelementptr inbounds i8, ptr %582, i64 32
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %52, ptr noundef nonnull align 4 dereferenceable(4) %585, ptr noundef nonnull align 8 dereferenceable(144) %53)
          to label %586 unwind label %595

586:                                              ; preds = %584
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %52)
          to label %587 unwind label %597

587:                                              ; preds = %586
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #7
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %53) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %54) #7
  %588 = getelementptr inbounds i8, ptr %582, i64 36
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %54, ptr noundef nonnull align 4 dereferenceable(4) %588, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %589 unwind label %601

589:                                              ; preds = %587
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %54)
          to label %590 unwind label %603

590:                                              ; preds = %589
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %54) #7
  br label %.loopexit442

591:                                              ; preds = %581
  %592 = landingpad { ptr, i32 }
          cleanup
  br label %717

593:                                              ; preds = %583
  %594 = landingpad { ptr, i32 }
          cleanup
  br label %600

595:                                              ; preds = %584
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %599

597:                                              ; preds = %586
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #7
  br label %599

599:                                              ; preds = %597, %595
  %.pn366 = phi { ptr, i32 } [ %598, %597 ], [ %596, %595 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %53) #7
  br label %600

600:                                              ; preds = %599, %593
  %.pn366.pn = phi { ptr, i32 } [ %.pn366, %599 ], [ %594, %593 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %52) #7
  br label %717

601:                                              ; preds = %587
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %605

603:                                              ; preds = %589
  %604 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #7
  br label %605

605:                                              ; preds = %603, %601
  %.pn369 = phi { ptr, i32 } [ %604, %603 ], [ %602, %601 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %54) #7
  br label %717

606:                                              ; preds = %546
  %607 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %607)
          to label %.preheader441 unwind label %610

.preheader441:                                    ; preds = %606
  %608 = getelementptr inbounds i8, ptr %607, i64 32
  %609 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %608) #7
  %.not713 = icmp eq i64 %609, 0
  br i1 %.not713, label %.loopexit442, label %.lr.ph706

610:                                              ; preds = %606
  %611 = landingpad { ptr, i32 }
          cleanup
  br label %717

.lr.ph706:                                        ; preds = %.preheader441, %620
  %.0318705 = phi i64 [ %621, %620 ], [ 0, %.preheader441 ]
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %55) #7
  %612 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %608, i64 noundef %.0318705) #7
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %56) #7
  %613 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %608) #7
  %614 = add i64 %613, -1
  %615 = icmp eq i64 %.0318705, %614
  br i1 %615, label %616, label %617

616:                                              ; preds = %.lr.ph706
  call void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144) %56, ptr noundef nonnull align 8 dereferenceable(144) %20) #7
  br label %618

617:                                              ; preds = %.lr.ph706
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %56, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %618 unwind label %624

618:                                              ; preds = %617, %616
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %55, ptr noundef nonnull align 4 dereferenceable(4) %612, ptr noundef nonnull align 8 dereferenceable(144) %56)
          to label %619 unwind label %626

619:                                              ; preds = %618
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %55)
          to label %620 unwind label %628

620:                                              ; preds = %619
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %55) #7
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %56) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %55) #7
  %621 = add nuw i64 %.0318705, 1
  %622 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %608) #7
  %623 = icmp ult i64 %621, %622
  br i1 %623, label %.lr.ph706, label %.loopexit442, !llvm.loop !62

624:                                              ; preds = %617
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %631

626:                                              ; preds = %618
  %627 = landingpad { ptr, i32 }
          cleanup
  br label %630

628:                                              ; preds = %619
  %629 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %55) #7
  br label %630

630:                                              ; preds = %628, %626
  %.pn362 = phi { ptr, i32 } [ %629, %628 ], [ %627, %626 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %56) #7
  br label %631

631:                                              ; preds = %630, %624
  %.pn362.pn = phi { ptr, i32 } [ %.pn362, %630 ], [ %625, %624 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %55) #7
  br label %717

632:                                              ; preds = %546
  %633 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %633)
          to label %.preheader443 unwind label %637

.preheader443:                                    ; preds = %632
  %634 = getelementptr inbounds i8, ptr %633, i64 40
  %635 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %634) #7
  %.not712 = icmp eq i64 %635, 0
  br i1 %.not712, label %._crit_edge704, label %.lr.ph703

._crit_edge704:                                   ; preds = %642, %.preheader443
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %59) #7
  %636 = getelementptr inbounds i8, ptr %633, i64 32
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %59, ptr noundef nonnull align 4 dereferenceable(4) %636, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %654 unwind label %656

637:                                              ; preds = %632
  %638 = landingpad { ptr, i32 }
          cleanup
  br label %717

.lr.ph703:                                        ; preds = %.preheader443, %642
  %.0315702 = phi i64 [ %643, %642 ], [ 0, %.preheader443 ]
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %57) #7
  %639 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %634, i64 noundef %.0315702) #7
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %58) #7
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %58, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %640 unwind label %646

640:                                              ; preds = %.lr.ph703
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %57, ptr noundef nonnull align 4 dereferenceable(4) %639, ptr noundef nonnull align 8 dereferenceable(144) %58)
          to label %641 unwind label %648

641:                                              ; preds = %640
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %57)
          to label %642 unwind label %650

642:                                              ; preds = %641
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %57) #7
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %58) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %57) #7
  %643 = add nuw i64 %.0315702, 1
  %644 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %634) #7
  %645 = icmp ult i64 %643, %644
  br i1 %645, label %.lr.ph703, label %._crit_edge704, !llvm.loop !63

646:                                              ; preds = %.lr.ph703
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %653

648:                                              ; preds = %640
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %652

650:                                              ; preds = %641
  %651 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %57) #7
  br label %652

652:                                              ; preds = %650, %648
  %.pn358 = phi { ptr, i32 } [ %651, %650 ], [ %649, %648 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %58) #7
  br label %653

653:                                              ; preds = %652, %646
  %.pn358.pn = phi { ptr, i32 } [ %.pn358, %652 ], [ %647, %646 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %57) #7
  br label %717

654:                                              ; preds = %._crit_edge704
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %59)
          to label %655 unwind label %658

655:                                              ; preds = %654
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %59) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %59) #7
  br label %.loopexit442

656:                                              ; preds = %._crit_edge704
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %660

658:                                              ; preds = %654
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %59) #7
  br label %660

660:                                              ; preds = %658, %656
  %.pn356 = phi { ptr, i32 } [ %659, %658 ], [ %657, %656 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %59) #7
  br label %717

661:                                              ; preds = %546
  %662 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %547)
  %663 = getelementptr inbounds i8, ptr %662, i64 40
  %664 = call noundef ptr @_ZNK3MIR10CallTarget9opt_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %663)
  %.not = icmp eq ptr %664, null
  br i1 %.not, label %670, label %665

665:                                              ; preds = %661
  invoke void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %664)
          to label %670 unwind label %668

666:                                              ; preds = %706
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %717

668:                                              ; preds = %665
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %717

670:                                              ; preds = %665, %661
  %671 = getelementptr inbounds i8, ptr %662, i64 136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  %672 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %671) #7
  store ptr %672, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  %673 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %671) #7
  store ptr %673, ptr %61, align 8
  %674 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br i1 %674, label %.lr.ph700, label %._crit_edge701

._crit_edge701:                                   ; preds = %685, %670
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  %675 = getelementptr inbounds i8, ptr %662, i64 4
  %676 = load i32, ptr %675, align 4, !tbaa !64
  %677 = zext i32 %676 to i64
  %678 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %677) #7
  %679 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %678) #7
  br i1 %679, label %688, label %694

.lr.ph700:                                        ; preds = %670, %685
  %680 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  %681 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %680)
  %.not353 = icmp eq ptr %681, null
  br i1 %.not353, label %685, label %682

682:                                              ; preds = %.lr.ph700
  invoke void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %681)
          to label %685 unwind label %683

683:                                              ; preds = %682
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  br label %717

685:                                              ; preds = %682, %.lr.ph700
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  %687 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br i1 %687, label %.lr.ph700, label %._crit_edge701

688:                                              ; preds = %._crit_edge701
  %689 = load i32, ptr %675, align 4, !tbaa !64
  %690 = zext i32 %689 to i64
  %691 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %690) #7
  %692 = getelementptr inbounds i8, ptr %691, i64 24
  %693 = call noundef zeroext i1 @_ZNK3MIR10Terminator10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %692)
  br i1 %693, label %706, label %694

694:                                              ; preds = %688, %._crit_edge701
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %63) #7
  invoke void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.(anonymous namespace)::ValueStates") align 8 %63, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %695 unwind label %698

695:                                              ; preds = %694
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %62, ptr noundef nonnull align 4 dereferenceable(4) %675, ptr noundef nonnull align 8 dereferenceable(144) %63)
          to label %696 unwind label %700

696:                                              ; preds = %695
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %62)
          to label %697 unwind label %702

697:                                              ; preds = %696
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %62) #7
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %62) #7
  br label %706

698:                                              ; preds = %694
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %705

700:                                              ; preds = %695
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %704

702:                                              ; preds = %696
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %62) #7
  br label %704

704:                                              ; preds = %702, %700
  %.pn348 = phi { ptr, i32 } [ %703, %702 ], [ %701, %700 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #7
  br label %705

705:                                              ; preds = %704, %698
  %.pn348.pn = phi { ptr, i32 } [ %.pn348, %704 ], [ %699, %698 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %62) #7
  br label %717

706:                                              ; preds = %688, %697
  %707 = getelementptr inbounds i8, ptr %662, i64 8
  invoke void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144) %20, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %707)
          to label %708 unwind label %666

708:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %64) #7
  invoke void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair") align 8 %64, ptr noundef nonnull align 4 dereferenceable(4) %662, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %709 unwind label %711

709:                                              ; preds = %708
  invoke void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(152) %64)
          to label %710 unwind label %713

710:                                              ; preds = %709
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %64) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %64) #7
  br label %.loopexit442

711:                                              ; preds = %708
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %715

713:                                              ; preds = %709
  %714 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152) %64) #7
  br label %715

715:                                              ; preds = %713, %711
  %.pn351 = phi { ptr, i32 } [ %714, %713 ], [ %712, %711 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %64) #7
  br label %717

.loopexit442:                                     ; preds = %620, %.preheader441, %546, %550, %555, %561, %566, %575, %590, %655, %710, %202, %215
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %20) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  %716 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  br i1 %716, label %._crit_edge709, label %140

717:                                              ; preds = %244, %560, %571, %580, %.split595.split.split.split, %386, %372, %361, %351, %338, %328, %322, %318, %314, %310, %304, %300, %295, %289, %284, %.split668, %.split671, %463, %.split494.split, %489, %491, %502, %524, %512, %510, %487, %469, %266, %605, %600, %591, %631, %610, %660, %653, %637, %715, %705, %683, %668, %666, %217, %159
  %.pn403 = phi { ptr, i32 } [ %160, %159 ], [ %218, %217 ], [ %.pn372, %580 ], [ %.pn374, %571 ], [ %.pn376, %560 ], [ %245, %244 ], [ %267, %266 ], [ %426, %.split595.split.split.split ], [ %285, %284 ], [ %387, %386 ], [ %373, %372 ], [ %362, %361 ], [ %352, %351 ], [ %339, %338 ], [ %329, %328 ], [ %323, %322 ], [ %319, %318 ], [ %315, %314 ], [ %311, %310 ], [ %305, %304 ], [ %301, %300 ], [ %296, %295 ], [ %290, %289 ], [ %406, %.split671 ], [ %412, %.split668 ], [ %444, %.split494.split ], [ %.pn387, %463 ], [ %470, %469 ], [ %488, %487 ], [ %.pn379, %502 ], [ %492, %491 ], [ %490, %489 ], [ %511, %510 ], [ %.pn381, %524 ], [ %513, %512 ], [ %.pn369, %605 ], [ %.pn366.pn, %600 ], [ %592, %591 ], [ %.pn362.pn, %631 ], [ %611, %610 ], [ %.pn358.pn, %653 ], [ %.pn356, %660 ], [ %638, %637 ], [ %684, %683 ], [ %.pn351, %715 ], [ %667, %666 ], [ %.pn348.pn, %705 ], [ %669, %668 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %20) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  br label %718

._crit_edge709:                                   ; preds = %.loopexit442, %126
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #7
  call void @_ZN3MIR14ValueLifetimesD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  call void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  ret void

718:                                              ; preds = %717, %155
  %.pn403.pn = phi { ptr, i32 } [ %.pn403, %717 ], [ %.pn, %155 ]
  call void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  br label %719

719:                                              ; preds = %718, %123, %116, %114, %112
  %.pn406 = phi { ptr, i32 } [ %124, %123 ], [ %.pn403.pn, %718 ], [ %117, %116 ], [ %115, %114 ], [ %113, %112 ]
  call void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8) #7
  br label %720

720:                                              ; preds = %719, %110
  %.pn406.pn = phi { ptr, i32 } [ %.pn406, %719 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #7
  br label %721

721:                                              ; preds = %720, %88
  %.pn406.pn.pn = phi { ptr, i32 } [ %.pn406.pn, %720 ], [ %89, %88 ]
  call void @_ZN3MIR14ValueLifetimesD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #7
  br label %722

722:                                              ; preds = %721, %86
  %.pn406.pn.pn.pn = phi { ptr, i32 } [ %.pn406.pn.pn, %721 ], [ %87, %86 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  call void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  br label %723

723:                                              ; preds = %722, %84
  %.pn406.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn406.pn.pn.pn, %722 ], [ %85, %84 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  br label %724

724:                                              ; preds = %723, %82
  %.pn406.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn406.pn.pn.pn.pn, %723 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn406.pn.pn.pn.pn.pn
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSaIN12_GLOBAL__N_18StateSetEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

declare void @_Z23MIR_Helper_GetLifetimesRN3MIR11TypeResolveERKNS_8FunctionEbPKSt6vectorIbSaIbEE(ptr dead_on_unwind writable sret(%"struct.MIR::ValueLifetimes") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext, ptr noundef) local_unnamed_addr #5

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsImERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS_8FunctionEEN1H9make_listEmb(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, i64 noundef, i1 noundef zeroext) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIbSaIbEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

declare void @_ZN3MIR5visit23visit_terminator_targetERKNS_10TerminatorESt8functionIFvRKjEE(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZSt9make_pairIiN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.85") align 8, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZNSt4pairIjN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZNSt4pairIiN12_GLOBAL__N_111ValueStatesEED2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNKSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStatesC2EOS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorISt4pairIjN12_GLOBAL__N_111ValueStatesEESaIS3_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNK12_GLOBAL__N_15State8is_validEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR14ValueLifetimes10slot_validEjjj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_15StateC2Eb(ptr noundef nonnull align 4 dereferenceable(4), i1 noundef zeroext) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN12_GLOBAL__N_18StateSetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_18StateSet9add_stateERKNS_11ValueStatesE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsRSoRKN12_GLOBAL__N_111ValueStatesE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) local_unnamed_addr #4 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 #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates11move_lvalueERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates18ensure_param_validERKN3MIR11TypeResolveERKNS1_5ParamE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates19ensure_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates17mark_lvalue_validERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNK12_GLOBAL__N_111ValueStates16get_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNK12_GLOBAL__N_15State12is_compositeEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(24) ptr @_ZN12_GLOBAL__N_111ValueStates13get_compositeERKN3MIR11TypeResolveERKNS_5StateE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN12_GLOBAL__N_15StateESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Validate_FullValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates16set_lvalue_stateERKN3MIR11TypeResolveERKNS1_6LValueENS_5StateE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), i32) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStates15garbage_collectEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZSt9make_pairIRKjN12_GLOBAL__N_111ValueStatesEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair") align 8, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNK12_GLOBAL__N_111ValueStates5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.(anonymous namespace)::ValueStates") align 8, ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111ValueStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR10Terminator10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt15__new_allocatorIN12_GLOBAL__N_18StateSetEED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 72}
!10 = !{!"_ZTSN3MIR11TypeResolveE", !6, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !12, i64 32, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !6, i64 112, !6, i64 116}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"_ZTS9FmtLambda", !13, i64 0}
!13 = !{!"_ZTSSt8functionIFvRSoEE", !14, i64 0, !11, i64 24}
!14 = !{!"_ZTSSt14_Function_base", !7, i64 0, !11, i64 16}
!15 = !{!11, !11, i64 0}
!16 = !{!17, !6, i64 0}
!17 = !{!"_ZTSSt4pairIjN12_GLOBAL__N_111ValueStatesEE", !6, i64 0, !18, i64 8}
!18 = !{!"_ZTSN12_GLOBAL__N_111ValueStatesE", !19, i64 0, !20, i64 8, !20, i64 32, !24, i64 56, !30, i64 96, !34, i64 120}
!19 = !{!"_ZTSN12_GLOBAL__N_15StateE", !6, i64 0}
!20 = !{!"_ZTSSt6vectorIN12_GLOBAL__N_15StateESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN12_GLOBAL__N_15StateESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!24 = !{!"_ZTSSt6vectorIbSaIbEE", !25, i64 0}
!25 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !26, i64 0}
!26 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !28, i64 0, !28, i64 16, !11, i64 32}
!28 = !{!"_ZTSSt13_Bit_iterator", !29, i64 0}
!29 = !{!"_ZTSSt18_Bit_iterator_base", !11, i64 0, !6, i64 8}
!30 = !{!"_ZTSSt6vectorIS_IN12_GLOBAL__N_15StateESaIS1_EESaIS3_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN12_GLOBAL__N_15StateESaIS2_EESaIS4_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!34 = !{!"_ZTSSt6vectorIjSaIjEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = distinct !{!40, !39}
!41 = distinct !{!41, !39}
!42 = !{!43, !6, i64 8}
!43 = !{!"_ZTSN3MIR9Statement16Data_SetDropFlagE", !6, i64 0, !44, i64 4, !6, i64 8}
!44 = !{!"bool", !7, i64 0}
!45 = !{!43, !44, i64 4}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = distinct !{!48, !39}
!49 = !{!43, !6, i64 0}
!50 = !{!51, !6, i64 40}
!51 = !{!"_ZTSN3MIR9Statement9Data_DropE", !52, i64 0, !53, i64 8, !6, i64 40}
!52 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!53 = !{!"_ZTSN3MIR6LValueE", !54, i64 0, !56, i64 8}
!54 = !{!"_ZTSN3MIR6LValue7StorageE", !55, i64 0}
!55 = !{!"long", !7, i64 0}
!56 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!60 = !{!51, !52, i64 0}
!61 = !{!19, !6, i64 0}
!62 = distinct !{!62, !39}
!63 = distinct !{!63, !39}
!64 = !{!65, !6, i64 4}
!65 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !6, i64 0, !6, i64 4, !53, i64 8, !66, i64 40, !68, i64 136}
!66 = !{!"_ZTSN3MIR10CallTargetE", !67, i64 0, !7, i64 8}
!67 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!68 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass