; LLVM IR from thepowersgang/mrustc :: src/mir/check.ll (Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl" }
%"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl" = type { %"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl" }
%"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl" = type { %"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { ptr, ptr }
%class.anon.19 = type { ptr }
%class.anon.20 = type { ptr }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ValStates = type { %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec", %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec" }
%"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State" = type { i8 }
%"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec" = type { %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.36 = type { ptr }
%struct.Span = type { ptr }
%class.anon.37 = type { i8 }
%class.anon.38 = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.111" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.128" = type { ptr }
%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference" = type <{ ptr, i8, %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", [6 x i8] }>
%class.anon.129 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.130" = type { ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.44" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = 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.__gnu_cxx::__normal_iterator.150" = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.9", %"class.MIR::EnumCachePtr" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.5" = 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.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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.ToVisit = type { i32, %"class.std::vector.21", %struct.ValStates }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.39", %"class.MIR::Terminator" }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = 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.71" }
%"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.66, %class.ThinVector.67, %class.ThinVector.68 }
%class.ThinVector.66 = type { ptr }
%class.ThinVector.67 = type { ptr }
%class.ThinVector.68 = 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.70" }
%"struct.std::_Head_base.70" = type { ptr }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = 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_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::Statement::Data_Asm" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.96", %"class.std::vector.96", %"class.std::vector.56", %"class.std::vector.56" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.79 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.79 = type { i64, [8 x i8] }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = 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.56" = type { %"struct.std::_Vector_base.57" }
%"struct.std::_Vector_base.57" = 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" = type { %"class.std::__cxx11::basic_string", %"struct.MIR::LValue" }
%"struct.MIR::Statement::Data_Asm2" = type { %"struct.AsmCommon::Options", %"class.std::vector.101", %"class.std::vector.106" }
%"struct.AsmCommon::Options" = type { i8, [3 x i8] }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = 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.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = 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.112", %"class.std::unique_ptr.120" }
%"class.AsmCommon::RegisterSpec" = type { i32, %"union.AsmCommon::RegisterSpec::DataUnion" }
%"union.AsmCommon::RegisterSpec::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::unique_ptr.112" = type { %"struct.std::__uniq_ptr_data.113" }
%"struct.std::__uniq_ptr_data.113" = type { %"class.std::__uniq_ptr_impl.114" }
%"class.std::__uniq_ptr_impl.114" = type { %"class.std::tuple.115" }
%"class.std::tuple.115" = type { %"struct.std::_Tuple_impl.116" }
%"struct.std::_Tuple_impl.116" = type { %"struct.std::_Head_base.119" }
%"struct.std::_Head_base.119" = type { ptr }
%"class.std::unique_ptr.120" = type { %"struct.std::__uniq_ptr_data.121" }
%"struct.std::__uniq_ptr_data.121" = type { %"class.std::__uniq_ptr_impl.122" }
%"class.std::__uniq_ptr_impl.122" = type { %"class.std::tuple.123" }
%"class.std::tuple.123" = type { %"struct.std::_Tuple_impl.124" }
%"struct.std::_Tuple_impl.124" = type { %"struct.std::_Head_base.127" }
%"struct.std::_Head_base.127" = type { 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.88", [8 x i8] }
%"class.std::unique_ptr.88" = type { %"struct.std::__uniq_ptr_data.89" }
%"struct.std::__uniq_ptr_data.89" = type { %"class.std::__uniq_ptr_impl.90" }
%"class.std::__uniq_ptr_impl.90" = type { %"class.std::tuple.91" }
%"class.std::tuple.91" = type { %"struct.std::_Tuple_impl.92" }
%"struct.std::_Tuple_impl.92" = type { %"struct.std::_Head_base.95" }
%"struct.std::_Head_base.95" = 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.71" }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.71" }
%"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.71" }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.71" }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.21" }
%"struct.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.21", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.49" }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = 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 }

@__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [22 x i8], align 1
@.str = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1

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

149:                                              ; preds = %2
  call void @_ZNSt15__new_allocatorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #9
  %150 = getelementptr inbounds %class.anon, ptr %11, i32 0, i32 0
  store ptr %10, ptr %150, align 8, !tbaa !5
  %151 = getelementptr inbounds %class.anon, ptr %11, i32 0, i32 1
  store ptr %6, ptr %151, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %152 = getelementptr inbounds %class.anon.19, ptr %12, i32 0, i32 0
  store ptr %11, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %153 = getelementptr inbounds %class.anon.20, ptr %13, i32 0, i32 0
  store ptr %11, ptr %153, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %154 = load ptr, ptr %3, align 8, !tbaa !5
  %155 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %154, i32 0, i32 6
  %156 = load ptr, ptr %155, align 8, !tbaa !9
  %157 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #9
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds %"class.MIR::Function", ptr %158, i32 0, i32 0
  %160 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2Emm(ptr noundef nonnull align 8 dereferenceable(56) %15, i64 noundef %157, i64 noundef %160)
          to label %161 unwind label %186

161:                                              ; preds = %149
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef 0, ptr noundef %14, ptr noundef %15)
          to label %162 unwind label %190

162:                                              ; preds = %161
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  br label %163

163:                                              ; preds = %1540, %1538, %162
  %164 = call noundef i64 @_ZNKSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %165 = icmp ugt i64 %164, 0
  br i1 %165, label %166, label %1543

166:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %167 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %168 = getelementptr inbounds %struct.ToVisit, ptr %167, i32 0, i32 0
  %169 = load i32, ptr %168, align 8, !tbaa !15
  store i32 %169, ptr %16, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #9
  %170 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %171 = getelementptr inbounds %struct.ToVisit, ptr %170, i32 0, i32 1
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %171) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr %18) #9
  %172 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %173 = getelementptr inbounds %struct.ToVisit, ptr %172, i32 0, i32 2
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(56) %173) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %174 = load i32, ptr %16, align 4, !tbaa !28
  %175 = zext i32 %174 to i64
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = getelementptr inbounds %"class.MIR::Function", ptr %176, i32 0, i32 2
  %178 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %177) #9
  %179 = icmp ult i64 %175, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %166
  br label %196

181:                                              ; preds = %166
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 405, ptr noundef @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

182:                                              ; preds = %2
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %8, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %9, align 4
  call void @_ZNSt15__new_allocatorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  br label %1545

186:                                              ; preds = %149
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %8, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %9, align 4
  br label %194

190:                                              ; preds = %161
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %8, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #9
  br label %194

194:                                              ; preds = %190, %186
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  br label %1544

195:                                              ; No predecessors!
  br label %196

196:                                              ; preds = %195, %180
  %197 = load i32, ptr %16, align 4, !tbaa !28
  %198 = zext i32 %197 to i64
  %199 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %198)
          to label %200 unwind label %231

200:                                              ; preds = %196
  %201 = load i32, ptr %16, align 4, !tbaa !28
  %202 = invoke noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5mergeEjRS5_(ptr noundef nonnull align 8 dereferenceable(56) %199, i32 noundef %201, ptr noundef nonnull align 8 dereferenceable(56) %18)
          to label %203 unwind label %231

203:                                              ; preds = %200
  br i1 %202, label %247, label %204

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204
  %206 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %207 unwind label %231

207:                                              ; preds = %205
  br i1 %206, label %208, label %244

208:                                              ; preds = %207
  %209 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !28
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %209, ptr noundef @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %211 unwind label %231

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 @.str.2)
          to label %213 unwind label %231

213:                                              ; preds = %211
  %214 = load i32, ptr %16, align 4, !tbaa !28
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %212, i32 noundef %214)
          to label %216 unwind label %231

216:                                              ; preds = %213
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef @.str.3)
          to label %218 unwind label %231

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %220 unwind label %231

220:                                              ; preds = %218
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef @.str.4)
          to label %222 unwind label %231

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %223 = getelementptr inbounds %class.anon.36, ptr %21, i32 0, i32 0
  store ptr %18, ptr %223, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %20)
          to label %224 unwind label %235

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %226 unwind label %239

226:                                              ; preds = %224
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef @_ZSt3decRSt8ios_base)
          to label %228 unwind label %239

228:                                              ; preds = %226
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %230 unwind label %239

230:                                              ; preds = %228
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %244

231:                                              ; preds = %292, %290, %288, %285, %283, %280, %277, %260, %248, %220, %218, %216, %213, %211, %208, %205, %200, %196
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %8, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %9, align 4
  br label %1542

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

239:                                              ; preds = %228, %226, %224
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %8, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %9, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %243

243:                                              ; preds = %239, %235
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %1542

244:                                              ; preds = %230, %207
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245
  store i32 2, ptr %22, align 4
  br label %1538, !llvm.loop !29

247:                                              ; preds = %203
  br label %248

248:                                              ; preds = %247
  %249 = getelementptr inbounds %struct.ValStates, ptr %18, i32 0, i32 2
  %250 = invoke noundef i64 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %249)
          to label %251 unwind label %231

251:                                              ; preds = %248
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = getelementptr inbounds %"class.MIR::Function", ptr %252, i32 0, i32 0
  %254 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #9
  %255 = icmp eq i64 %250, %254
  br i1 %255, label %274, label %256

256:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %257 unwind label %261

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %24)
          to label %258 unwind label %265

258:                                              ; preds = %257
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  %259 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %259, ptr noundef @.str.5)
          to label %260 unwind label %270

260:                                              ; preds = %258
  invoke void @__cxa_throw(ptr %259, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1551 unwind label %231

261:                                              ; preds = %256
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %8, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %9, align 4
  br label %269

265:                                              ; preds = %257
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %8, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  br label %269

269:                                              ; preds = %265, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %1542

270:                                              ; preds = %258
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %8, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %9, align 4
  call void @__cxa_free_exception(ptr %259) #9
  br label %1542

274:                                              ; preds = %251
  br label %275

275:                                              ; preds = %274
  br label %276

276:                                              ; preds = %275
  br label %277

277:                                              ; preds = %276
  %278 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %279 unwind label %231

279:                                              ; preds = %277
  br i1 %278, label %280, label %312

280:                                              ; preds = %279
  %281 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !28
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %281, ptr noundef @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %283 unwind label %231

283:                                              ; preds = %280
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef @.str.2)
          to label %285 unwind label %231

285:                                              ; preds = %283
  %286 = load i32, ptr %16, align 4, !tbaa !28
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %284, i32 noundef %286)
          to label %288 unwind label %231

288:                                              ; preds = %285
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef @.str.3)
          to label %290 unwind label %231

290:                                              ; preds = %288
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %292 unwind label %231

292:                                              ; preds = %290
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef @.str.6)
          to label %294 unwind label %231

294:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %295 = getelementptr inbounds %class.anon.38, ptr %28, i32 0, i32 0
  store ptr %18, ptr %295, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %27)
          to label %296 unwind label %303

296:                                              ; preds = %294
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %298 unwind label %307

298:                                              ; preds = %296
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef @_ZSt3decRSt8ios_base)
          to label %300 unwind label %307

300:                                              ; preds = %298
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %302 unwind label %307

302:                                              ; preds = %300
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  br label %312

303:                                              ; preds = %294
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %8, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %9, align 4
  br label %311

307:                                              ; preds = %300, %298, %296
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %8, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %9, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  br label %1542

312:                                              ; preds = %302, %279
  br label %313

313:                                              ; preds = %312
  br label %314

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %"class.MIR::Function", ptr %315, i32 0, i32 2
  %317 = load i32, ptr %16, align 4, !tbaa !28
  %318 = zext i32 %317 to i64
  %319 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef %318) #9
  store ptr %319, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  store i32 0, ptr %30, align 4, !tbaa !28
  br label %320

320:                                              ; preds = %1035, %314
  %321 = load i32, ptr %30, align 4, !tbaa !28
  %322 = zext i32 %321 to i64
  %323 = load ptr, ptr %29, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %323, i32 0, i32 0
  %325 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %324) #9
  %326 = icmp ult i64 %322, %325
  br i1 %326, label %328, label %327

327:                                              ; preds = %320
  store i32 10, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %1039

328:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %329 = load ptr, ptr %29, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %329, i32 0, i32 0
  %331 = load i32, ptr %30, align 4, !tbaa !28
  %332 = zext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #9
  store ptr %333, ptr %31, align 8, !tbaa !5
  %334 = load ptr, ptr %3, align 8, !tbaa !5
  %335 = load i32, ptr %16, align 4, !tbaa !28
  %336 = load i32, ptr %30, align 4, !tbaa !28
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %334, i32 noundef %335, i32 noundef %336)
          to label %337 unwind label %355

337:                                              ; preds = %328
  br label %338

338:                                              ; preds = %337
  %339 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %340 unwind label %355

340:                                              ; preds = %338
  br i1 %339, label %341, label %359

341:                                              ; preds = %340
  %342 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !28
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %342, ptr noundef @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %344 unwind label %355

344:                                              ; preds = %341
  %345 = load ptr, ptr %3, align 8, !tbaa !5
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull align 8 dereferenceable(120) %345)
          to label %347 unwind label %355

347:                                              ; preds = %344
  %348 = load ptr, ptr %31, align 8, !tbaa !5
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(152) %348)
          to label %350 unwind label %355

350:                                              ; preds = %347
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef @_ZSt3decRSt8ios_base)
          to label %352 unwind label %355

352:                                              ; preds = %350
  %353 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %354 unwind label %355

354:                                              ; preds = %352
  br label %359

355:                                              ; preds = %1031, %1027, %687, %684, %385, %381, %378, %374, %367, %365, %361, %352, %350, %347, %344, %341, %338, %328
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %8, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %9, align 4
  br label %1038

359:                                              ; preds = %354, %340
  br label %360

360:                                              ; preds = %359
  br label %361

361:                                              ; preds = %360
  %362 = load ptr, ptr %31, align 8, !tbaa !5
  %363 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %362)
          to label %364 unwind label %355

364:                                              ; preds = %361
  switch i32 %363, label %1034 [
    i32 0, label %365
    i32 4, label %1034
    i32 5, label %367
    i32 2, label %388
    i32 3, label %451
    i32 1, label %605
    i32 6, label %1034
  ]

365:                                              ; preds = %364
  %366 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.7, ptr %366, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %366, ptr @_ZTIPKc, ptr null) #11
          to label %1551 unwind label %355

367:                                              ; preds = %364
  %368 = load ptr, ptr %31, align 8, !tbaa !5
  %369 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %368)
          to label %370 unwind label %355

370:                                              ; preds = %367
  %371 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %369, i32 0, i32 3
  %372 = load i32, ptr %371, align 8, !tbaa !31
  %373 = icmp eq i32 %372, -1
  br i1 %373, label %374, label %381

374:                                              ; preds = %370
  %375 = load ptr, ptr %3, align 8, !tbaa !5
  %376 = load ptr, ptr %31, align 8, !tbaa !5
  %377 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %376)
          to label %378 unwind label %355

378:                                              ; preds = %374
  %379 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %377, i32 0, i32 2
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %375, ptr noundef nonnull align 8 dereferenceable(32) %379)
          to label %380 unwind label %355

380:                                              ; preds = %378
  br label %381

381:                                              ; preds = %380, %370
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = load ptr, ptr %31, align 8, !tbaa !5
  %384 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %383)
          to label %385 unwind label %355

385:                                              ; preds = %381
  %386 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %384, i32 0, i32 2
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %382, ptr noundef nonnull align 8 dereferenceable(32) %386, i1 noundef zeroext false)
          to label %387 unwind label %355

387:                                              ; preds = %385
  br label %1034

388:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %389 = load ptr, ptr %31, align 8, !tbaa !5
  %390 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %389)
          to label %391 unwind label %402

391:                                              ; preds = %388
  %392 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %390, i32 0, i32 2
  store ptr %392, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %393 = load ptr, ptr %32, align 8, !tbaa !5
  %394 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %393) #9
  %395 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %33, i32 0, i32 0
  store ptr %394, ptr %395, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %396 = load ptr, ptr %32, align 8, !tbaa !5
  %397 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %396) #9
  %398 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %34, i32 0, i32 0
  store ptr %397, ptr %398, align 8
  br label %399

399:                                              ; preds = %412, %391
  %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) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br i1 %400, label %406, label %401

401:                                              ; preds = %399
  store i32 16, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %419

402:                                              ; preds = %388
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %8, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %9, align 4
  br label %418

406:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %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) %33) #9
  store ptr %407, ptr %35, align 8, !tbaa !5
  %408 = load ptr, ptr %3, align 8, !tbaa !5
  %409 = load ptr, ptr %35, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.std::pair", ptr %409, i32 0, i32 1
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %408, ptr noundef nonnull align 8 dereferenceable(32) %410)
          to label %411 unwind label %414

411:                                              ; preds = %406
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %412

412:                                              ; preds = %411
  %413 = 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) %33) #9
  br label %399

414:                                              ; preds = %406
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %8, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %418

418:                                              ; preds = %414, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %1038

419:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %420 = load ptr, ptr %31, align 8, !tbaa !5
  %421 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %420)
          to label %422 unwind label %433

422:                                              ; preds = %419
  %423 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %421, i32 0, i32 1
  store ptr %423, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %424 = load ptr, ptr %36, align 8, !tbaa !5
  %425 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %424) #9
  %426 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %425, ptr %426, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %427 = load ptr, ptr %36, align 8, !tbaa !5
  %428 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %427) #9
  %429 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %38, i32 0, i32 0
  store ptr %428, ptr %429, align 8
  br label %430

430:                                              ; preds = %443, %422
  %431 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br i1 %431, label %437, label %432

432:                                              ; preds = %430
  store i32 18, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %450

433:                                              ; preds = %419
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %8, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %9, align 4
  br label %449

437:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %438 = 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) %37) #9
  store ptr %438, ptr %39, align 8, !tbaa !5
  %439 = load ptr, ptr %3, align 8, !tbaa !5
  %440 = load ptr, ptr %39, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.std::pair", ptr %440, i32 0, i32 1
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %439, ptr noundef nonnull align 8 dereferenceable(32) %441, i1 noundef zeroext true)
          to label %442 unwind label %445

442:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %443

443:                                              ; preds = %442
  %444 = 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) %37) #9
  br label %430

445:                                              ; preds = %437
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %8, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %449

449:                                              ; preds = %445, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %1038

450:                                              ; preds = %432
  br label %1034

451:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  store i8 1, ptr %40, align 1, !tbaa !41
  br label %452

452:                                              ; preds = %603, %451
  %453 = load i8, ptr %40, align 1, !tbaa !41, !range !43, !noundef !44
  %454 = trunc i8 %453 to i1
  br i1 %454, label %456, label %455

455:                                              ; preds = %452
  store i32 20, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %604

456:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %457 = load ptr, ptr %31, align 8, !tbaa !5
  %458 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %457)
          to label %459 unwind label %465

459:                                              ; preds = %456
  store ptr %458, ptr %41, align 8, !tbaa !5
  br label %460

460:                                              ; preds = %600, %459
  %461 = load ptr, ptr %41, align 8, !tbaa !5
  %462 = load i8, ptr %40, align 1, !tbaa !41, !range !43, !noundef !44
  %463 = trunc i8 %462 to i1
  br i1 %463, label %469, label %464

464:                                              ; preds = %460
  store i32 23, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  br label %602

465:                                              ; preds = %456
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %8, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %9, align 4
  br label %601

469:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %470 = load ptr, ptr %41, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm2", ptr %470, i32 0, i32 2
  store ptr %471, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %472 = load ptr, ptr %42, align 8, !tbaa !5
  %473 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %472) #9
  %474 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.111", ptr %43, i32 0, i32 0
  store ptr %473, ptr %474, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %475 = load ptr, ptr %42, align 8, !tbaa !5
  %476 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %475) #9
  %477 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.111", ptr %44, i32 0, i32 0
  store ptr %476, ptr %477, align 8
  br label %478

478:                                              ; preds = %597, %469
  %479 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  br i1 %479, label %481, label %480

480:                                              ; preds = %478
  store i32 26, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %599

481:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %482 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  store ptr %482, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #9
  store i8 1, ptr %46, align 1, !tbaa !41
  br label %483

483:                                              ; preds = %595, %481
  %484 = load i8, ptr %46, align 1, !tbaa !41, !range !43, !noundef !44
  %485 = trunc i8 %484 to i1
  br i1 %485, label %487, label %486

486:                                              ; preds = %483
  store i32 28, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  br label %596

487:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %488 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %488, ptr %47, align 8, !tbaa !5
  br label %489

489:                                              ; preds = %592, %487
  %490 = load i8, ptr %46, align 1, !tbaa !41, !range !43, !noundef !44
  %491 = trunc i8 %490 to i1
  br i1 %491, label %493, label %492

492:                                              ; preds = %489
  store i32 31, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %594

493:                                              ; preds = %489
  %494 = load ptr, ptr %47, align 8, !tbaa !5
  %495 = invoke noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %494)
          to label %496 unwind label %497

496:                                              ; preds = %493
  switch i32 %495, label %591 [
    i32 0, label %501
    i32 1, label %502
    i32 2, label %525
    i32 3, label %548
  ]

497:                                              ; preds = %493
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %8, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %9, align 4
  br label %593

501:                                              ; preds = %496
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 447, ptr noundef @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

502:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  store i8 1, ptr %48, align 1, !tbaa !41
  br label %503

503:                                              ; preds = %523, %502
  %504 = load i8, ptr %48, align 1, !tbaa !41, !range !43, !noundef !44
  %505 = trunc i8 %504 to i1
  br i1 %505, label %507, label %506

506:                                              ; preds = %503
  store i32 35, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %524

507:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %508 = load ptr, ptr %47, align 8, !tbaa !5
  %509 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %508)
          to label %510 unwind label %516

510:                                              ; preds = %507
  store ptr %509, ptr %49, align 8, !tbaa !5
  br label %511

511:                                              ; preds = %521, %510
  %512 = load ptr, ptr %49, align 8, !tbaa !5
  %513 = load i8, ptr %48, align 1, !tbaa !41, !range !43, !noundef !44
  %514 = trunc i8 %513 to i1
  br i1 %514, label %520, label %515

515:                                              ; preds = %511
  store i32 38, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %522

516:                                              ; preds = %507
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %8, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %593

520:                                              ; preds = %511
  br label %521

521:                                              ; preds = %520
  store i8 0, ptr %48, align 1, !tbaa !41
  br label %511, !llvm.loop !45

522:                                              ; preds = %515
  br label %523

523:                                              ; preds = %522
  store i8 0, ptr %48, align 1, !tbaa !41
  br label %503, !llvm.loop !46

524:                                              ; preds = %506
  br label %591

525:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #9
  store i8 1, ptr %50, align 1, !tbaa !41
  br label %526

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

529:                                              ; preds = %526
  store i32 41, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  br label %547

530:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %531 = load ptr, ptr %47, align 8, !tbaa !5
  %532 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %531)
          to label %533 unwind label %539

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

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

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

539:                                              ; preds = %530
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %8, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  br label %593

543:                                              ; preds = %534
  br label %544

544:                                              ; preds = %543
  store i8 0, ptr %50, align 1, !tbaa !41
  br label %534, !llvm.loop !47

545:                                              ; preds = %538
  br label %546

546:                                              ; preds = %545
  store i8 0, ptr %50, align 1, !tbaa !41
  br label %526, !llvm.loop !48

547:                                              ; preds = %529
  br label %591

548:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #9
  store i8 1, ptr %52, align 1, !tbaa !41
  br label %549

549:                                              ; preds = %589, %548
  %550 = load i8, ptr %52, align 1, !tbaa !41, !range !43, !noundef !44
  %551 = trunc i8 %550 to i1
  br i1 %551, label %553, label %552

552:                                              ; preds = %549
  store i32 47, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  br label %590

553:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %554 = load ptr, ptr %47, align 8, !tbaa !5
  %555 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %554)
          to label %556 unwind label %562

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

557:                                              ; preds = %587, %556
  %558 = load ptr, ptr %53, align 8, !tbaa !5
  %559 = load i8, ptr %52, align 1, !tbaa !41, !range !43, !noundef !44
  %560 = trunc i8 %559 to i1
  br i1 %560, label %566, label %561

561:                                              ; preds = %557
  store i32 50, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %588

562:                                              ; preds = %580, %570, %553
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %8, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  br label %593

566:                                              ; preds = %557
  %567 = load ptr, ptr %53, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %567, i32 0, i32 2
  %569 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %568) #9
  br i1 %569, label %570, label %576

570:                                              ; preds = %566
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = load ptr, ptr %53, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %572, i32 0, i32 2
  %574 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %573) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %571, ptr noundef nonnull align 8 dereferenceable(48) %574)
          to label %575 unwind label %562

575:                                              ; preds = %570
  br label %576

576:                                              ; preds = %575, %566
  %577 = load ptr, ptr %53, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %577, i32 0, i32 3
  %579 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %578) #9
  br i1 %579, label %580, label %586

580:                                              ; preds = %576
  %581 = load ptr, ptr %3, align 8, !tbaa !5
  %582 = load ptr, ptr %53, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %582, i32 0, i32 3
  %584 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %583) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %581, ptr noundef nonnull align 8 dereferenceable(32) %584, i1 noundef zeroext true)
          to label %585 unwind label %562

585:                                              ; preds = %580
  br label %586

586:                                              ; preds = %585, %576
  br label %587

587:                                              ; preds = %586
  store i8 0, ptr %52, align 1, !tbaa !41
  br label %557, !llvm.loop !49

588:                                              ; preds = %561
  br label %589

589:                                              ; preds = %588
  store i8 0, ptr %52, align 1, !tbaa !41
  br label %549, !llvm.loop !50

590:                                              ; preds = %552
  br label %591

591:                                              ; preds = %590, %547, %524, %496
  br label %592

592:                                              ; preds = %591
  store i8 0, ptr %46, align 1, !tbaa !41
  br label %489, !llvm.loop !51

593:                                              ; preds = %562, %539, %516, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %601

594:                                              ; preds = %492
  br label %595

595:                                              ; preds = %594
  store i8 0, ptr %46, align 1, !tbaa !41
  br label %483, !llvm.loop !52

596:                                              ; preds = %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %597

597:                                              ; preds = %596
  %598 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br label %478

599:                                              ; preds = %480
  br label %600

600:                                              ; preds = %599
  store i8 0, ptr %40, align 1, !tbaa !41
  br label %460, !llvm.loop !53

601:                                              ; preds = %593, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %1038

602:                                              ; preds = %464
  br label %603

603:                                              ; preds = %602
  store i8 0, ptr %40, align 1, !tbaa !41
  br label %452, !llvm.loop !54

604:                                              ; preds = %455
  br label %1034

605:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %606 = load ptr, ptr %31, align 8, !tbaa !5
  %607 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %606)
          to label %608 unwind label %620

608:                                              ; preds = %605
  %609 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %607, i32 0, i32 0
  %610 = getelementptr inbounds %"struct.MIR::LValue", ptr %609, i32 0, i32 1
  store ptr %610, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %611 = load ptr, ptr %54, align 8, !tbaa !5
  %612 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %611) #9
  %613 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.128", ptr %55, i32 0, i32 0
  store ptr %612, ptr %613, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %614 = load ptr, ptr %54, align 8, !tbaa !5
  %615 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %614) #9
  %616 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.128", ptr %56, i32 0, i32 0
  store ptr %615, ptr %616, align 8
  br label %617

617:                                              ; preds = %680, %608
  %618 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %618, label %624, label %619

619:                                              ; preds = %617
  store i32 53, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %684

620:                                              ; preds = %605
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %8, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %9, align 4
  br label %683

624:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %625 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  store ptr %625, ptr %57, align 8, !tbaa !5
  %626 = load ptr, ptr %57, align 8, !tbaa !5
  %627 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %626)
          to label %628 unwind label %630

628:                                              ; preds = %624
  br i1 %627, label %629, label %634

629:                                              ; preds = %628
  br label %634

630:                                              ; preds = %634, %624
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %8, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %9, align 4
  br label %682

634:                                              ; preds = %629, %628
  %635 = load ptr, ptr %57, align 8, !tbaa !5
  %636 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %635)
          to label %637 unwind label %630

637:                                              ; preds = %634
  br i1 %636, label %638, label %679

638:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #9
  %639 = getelementptr inbounds %struct.ValStates, ptr %18, i32 0, i32 2
  %640 = load ptr, ptr %57, align 8, !tbaa !5
  %641 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %640)
          to label %642 unwind label %658

642:                                              ; preds = %638
  %643 = zext i32 %641 to i64
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8 %58, ptr noundef nonnull align 8 dereferenceable(24) %639, i64 noundef %643)
          to label %644 unwind label %658

644:                                              ; preds = %642
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1) %59, i8 noundef zeroext 2)
          to label %645 unwind label %662

645:                                              ; preds = %644
  %646 = getelementptr inbounds %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", ptr %59, i32 0, i32 0
  %647 = load i8, ptr %646, align 1
  %648 = invoke noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceneEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10) %58, i8 %647)
          to label %649 unwind label %662

649:                                              ; preds = %645
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %58) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #9
  br i1 %648, label %650, label %678

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  store ptr @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE, ptr %60, align 8, !tbaa !5
  %652 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #9
  %653 = getelementptr inbounds %class.anon.129, ptr %62, i32 0, i32 0
  store ptr %60, ptr %653, align 8, !tbaa !5
  %654 = getelementptr inbounds %class.anon.129, ptr %62, i32 0, i32 1
  %655 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %655, ptr %654, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %652, ptr noundef %61)
          to label %656 unwind label %667

656:                                              ; preds = %651
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  %657 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.7, ptr %657, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %657, ptr @_ZTIPKc, ptr null) #11
          to label %1551 unwind label %671

658:                                              ; preds = %642, %638
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %8, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %9, align 4
  br label %666

662:                                              ; preds = %645, %644
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %8, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %58) #9
  br label %666

666:                                              ; preds = %662, %658
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #9
  br label %682

667:                                              ; preds = %651
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %8, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  br label %675

671:                                              ; preds = %656
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %8, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %9, align 4
  br label %675

675:                                              ; preds = %671, %667
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  br label %682

676:                                              ; No predecessors!
  br label %677

677:                                              ; preds = %676
  br label %678

678:                                              ; preds = %677, %649
  br label %679

679:                                              ; preds = %678, %637
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %680

680:                                              ; preds = %679
  %681 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  br label %617

682:                                              ; preds = %675, %666, %630
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %683

683:                                              ; preds = %682, %620
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %1038

684:                                              ; preds = %619
  %685 = load ptr, ptr %31, align 8, !tbaa !5
  %686 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %685)
          to label %687 unwind label %355

687:                                              ; preds = %684
  %688 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %686, i32 0, i32 1
  %689 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %688)
          to label %690 unwind label %355

690:                                              ; preds = %687
  switch i32 %689, label %1027 [
    i32 0, label %691
    i32 1, label %692
    i32 3, label %707
    i32 4, label %719
    i32 2, label %735
    i32 5, label %751
    i32 6, label %767
    i32 7, label %787
    i32 8, label %803
    i32 9, label %819
    i32 10, label %835
    i32 11, label %867
    i32 12, label %903
    i32 13, label %939
    i32 14, label %955
    i32 15, label %991
  ]

691:                                              ; preds = %690
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 529, ptr noundef @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

692:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %693 = load ptr, ptr %31, align 8, !tbaa !5
  %694 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %693)
          to label %695 unwind label %703

695:                                              ; preds = %692
  %696 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %694, i32 0, i32 1
  %697 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %696)
          to label %698 unwind label %703

698:                                              ; preds = %695
  store ptr %697, ptr %63, align 8, !tbaa !5
  %699 = load ptr, ptr %63, align 8, !tbaa !5
  %700 = load ptr, ptr %3, align 8, !tbaa !5
  %701 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %700, ptr noundef nonnull align 8 dereferenceable(32) %701)
          to label %702 unwind label %703

702:                                              ; preds = %698
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1027

703:                                              ; preds = %698, %695, %692
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %8, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1038

707:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %708 = load ptr, ptr %31, align 8, !tbaa !5
  %709 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %708)
          to label %710 unwind label %715

710:                                              ; preds = %707
  %711 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %709, i32 0, i32 1
  %712 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %711)
          to label %713 unwind label %715

713:                                              ; preds = %710
  store ptr %712, ptr %64, align 8, !tbaa !5
  %714 = load ptr, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %1027

715:                                              ; preds = %710, %707
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %8, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %1038

719:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %720 = load ptr, ptr %31, align 8, !tbaa !5
  %721 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %720)
          to label %722 unwind label %731

722:                                              ; preds = %719
  %723 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %721, i32 0, i32 1
  %724 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %723)
          to label %725 unwind label %731

725:                                              ; preds = %722
  store ptr %724, ptr %65, align 8, !tbaa !5
  %726 = load ptr, ptr %65, align 8, !tbaa !5
  %727 = load ptr, ptr %3, align 8, !tbaa !5
  %728 = load ptr, ptr %65, align 8, !tbaa !5
  %729 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %728, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %727, ptr noundef nonnull align 8 dereferenceable(48) %729)
          to label %730 unwind label %731

730:                                              ; preds = %725
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1027

731:                                              ; preds = %725, %722, %719
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %8, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1038

735:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %736 = load ptr, ptr %31, align 8, !tbaa !5
  %737 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %736)
          to label %738 unwind label %747

738:                                              ; preds = %735
  %739 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %737, i32 0, i32 1
  %740 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %739)
          to label %741 unwind label %747

741:                                              ; preds = %738
  store ptr %740, ptr %66, align 8, !tbaa !5
  %742 = load ptr, ptr %66, align 8, !tbaa !5
  %743 = load ptr, ptr %3, align 8, !tbaa !5
  %744 = load ptr, ptr %66, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %744, i32 0, i32 1
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %743, ptr noundef nonnull align 8 dereferenceable(32) %745)
          to label %746 unwind label %747

746:                                              ; preds = %741
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1027

747:                                              ; preds = %741, %738, %735
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %8, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1038

751:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %752 = load ptr, ptr %31, align 8, !tbaa !5
  %753 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %752)
          to label %754 unwind label %763

754:                                              ; preds = %751
  %755 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %753, i32 0, i32 1
  %756 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %755)
          to label %757 unwind label %763

757:                                              ; preds = %754
  store ptr %756, ptr %67, align 8, !tbaa !5
  %758 = load ptr, ptr %67, align 8, !tbaa !5
  %759 = load ptr, ptr %3, align 8, !tbaa !5
  %760 = load ptr, ptr %67, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %760, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %759, ptr noundef nonnull align 8 dereferenceable(32) %761)
          to label %762 unwind label %763

762:                                              ; preds = %757
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %1027

763:                                              ; preds = %757, %754, %751
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %8, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %1038

767:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %768 = load ptr, ptr %31, align 8, !tbaa !5
  %769 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %768)
          to label %770 unwind label %783

770:                                              ; preds = %767
  %771 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %769, i32 0, i32 1
  %772 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %771)
          to label %773 unwind label %783

773:                                              ; preds = %770
  store ptr %772, ptr %68, align 8, !tbaa !5
  %774 = load ptr, ptr %68, align 8, !tbaa !5
  %775 = load ptr, ptr %3, align 8, !tbaa !5
  %776 = load ptr, ptr %68, align 8, !tbaa !5
  %777 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %776, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %775, ptr noundef nonnull align 8 dereferenceable(48) %777)
          to label %778 unwind label %783

778:                                              ; preds = %773
  %779 = load ptr, ptr %3, align 8, !tbaa !5
  %780 = load ptr, ptr %68, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %780, i32 0, i32 2
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %779, ptr noundef nonnull align 8 dereferenceable(48) %781)
          to label %782 unwind label %783

782:                                              ; preds = %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %1027

783:                                              ; preds = %778, %773, %770, %767
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %8, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %1038

787:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %788 = load ptr, ptr %31, align 8, !tbaa !5
  %789 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %788)
          to label %790 unwind label %799

790:                                              ; preds = %787
  %791 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %789, i32 0, i32 1
  %792 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %791)
          to label %793 unwind label %799

793:                                              ; preds = %790
  store ptr %792, ptr %69, align 8, !tbaa !5
  %794 = load ptr, ptr %69, align 8, !tbaa !5
  %795 = load ptr, ptr %3, align 8, !tbaa !5
  %796 = load ptr, ptr %69, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %796, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %795, ptr noundef nonnull align 8 dereferenceable(32) %797)
          to label %798 unwind label %799

798:                                              ; preds = %793
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1027

799:                                              ; preds = %793, %790, %787
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %8, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1038

803:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %804 = load ptr, ptr %31, align 8, !tbaa !5
  %805 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %804)
          to label %806 unwind label %815

806:                                              ; preds = %803
  %807 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %805, i32 0, i32 1
  %808 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %807)
          to label %809 unwind label %815

809:                                              ; preds = %806
  store ptr %808, ptr %70, align 8, !tbaa !5
  %810 = load ptr, ptr %70, align 8, !tbaa !5
  %811 = load ptr, ptr %3, align 8, !tbaa !5
  %812 = load ptr, ptr %70, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %812, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %811, ptr noundef nonnull align 8 dereferenceable(32) %813)
          to label %814 unwind label %815

814:                                              ; preds = %809
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %1027

815:                                              ; preds = %809, %806, %803
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %8, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %1038

819:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %820)
          to label %822 unwind label %831

822:                                              ; preds = %819
  %823 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %821, i32 0, i32 1
  %824 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %823)
          to label %825 unwind label %831

825:                                              ; preds = %822
  store ptr %824, ptr %71, align 8, !tbaa !5
  %826 = load ptr, ptr %71, align 8, !tbaa !5
  %827 = load ptr, ptr %3, align 8, !tbaa !5
  %828 = load ptr, ptr %71, align 8, !tbaa !5
  %829 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %828, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %827, ptr noundef nonnull align 8 dereferenceable(32) %829)
          to label %830 unwind label %831

830:                                              ; preds = %825
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %1027

831:                                              ; preds = %825, %822, %819
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %8, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %1038

835:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #9
  %836 = load ptr, ptr %31, align 8, !tbaa !5
  %837 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %836)
          to label %838 unwind label %853

838:                                              ; preds = %835
  %839 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %837, i32 0, i32 1
  %840 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %839)
          to label %841 unwind label %853

841:                                              ; preds = %838
  store ptr %840, ptr %72, align 8, !tbaa !5
  %842 = load ptr, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  %843 = load ptr, ptr %72, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %843, i32 0, i32 0
  %845 = invoke noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %844)
          to label %846 unwind label %857

846:                                              ; preds = %841
  store ptr %845, ptr %73, align 8, !tbaa !5
  %847 = load ptr, ptr %73, align 8, !tbaa !5
  %848 = icmp ne ptr %847, null
  br i1 %848, label %849, label %861

849:                                              ; preds = %846
  %850 = load ptr, ptr %3, align 8, !tbaa !5
  %851 = load ptr, ptr %73, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %850, ptr noundef nonnull align 8 dereferenceable(32) %851)
          to label %852 unwind label %857

852:                                              ; preds = %849
  br label %861

853:                                              ; preds = %861, %838, %835
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %8, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %9, align 4
  br label %866

857:                                              ; preds = %849, %841
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %8, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %866

861:                                              ; preds = %852, %846
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  %862 = load ptr, ptr %3, align 8, !tbaa !5
  %863 = load ptr, ptr %72, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %863, i32 0, i32 1
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %862, ptr noundef nonnull align 8 dereferenceable(48) %864)
          to label %865 unwind label %853

865:                                              ; preds = %861
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  br label %1027

866:                                              ; preds = %857, %853
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  br label %1038

867:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %868 = load ptr, ptr %31, align 8, !tbaa !5
  %869 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %868)
          to label %870 unwind label %886

870:                                              ; preds = %867
  %871 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %869, i32 0, i32 1
  %872 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %871)
          to label %873 unwind label %886

873:                                              ; preds = %870
  store ptr %872, ptr %74, align 8, !tbaa !5
  %874 = load ptr, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %875 = load ptr, ptr %74, align 8, !tbaa !5
  %876 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %875, i32 0, i32 0
  store ptr %876, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #9
  %877 = load ptr, ptr %75, align 8, !tbaa !5
  %878 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %877) #9
  %879 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %76, i32 0, i32 0
  store ptr %878, ptr %879, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  %880 = load ptr, ptr %75, align 8, !tbaa !5
  %881 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %880) #9
  %882 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %77, i32 0, i32 0
  store ptr %881, ptr %882, align 8
  br label %883

883:                                              ; preds = %895, %873
  %884 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #9
  br i1 %884, label %890, label %885

885:                                              ; preds = %883
  store i32 58, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %901

886:                                              ; preds = %870, %867
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %8, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %9, align 4
  br label %902

890:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  %891 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  store ptr %891, ptr %78, align 8, !tbaa !5
  %892 = load ptr, ptr %3, align 8, !tbaa !5
  %893 = load ptr, ptr %78, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %892, ptr noundef nonnull align 8 dereferenceable(48) %893)
          to label %894 unwind label %897

894:                                              ; preds = %890
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  br label %895

895:                                              ; preds = %894
  %896 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  br label %883

897:                                              ; preds = %890
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %8, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %902

901:                                              ; preds = %885
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %1027

902:                                              ; preds = %897, %886
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %1038

903:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %904 = load ptr, ptr %31, align 8, !tbaa !5
  %905 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %904)
          to label %906 unwind label %922

906:                                              ; preds = %903
  %907 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %905, i32 0, i32 1
  %908 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %907)
          to label %909 unwind label %922

909:                                              ; preds = %906
  store ptr %908, ptr %79, align 8, !tbaa !5
  %910 = load ptr, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %911 = load ptr, ptr %79, align 8, !tbaa !5
  %912 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %911, i32 0, i32 0
  store ptr %912, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %913 = load ptr, ptr %80, align 8, !tbaa !5
  %914 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %913) #9
  %915 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %81, i32 0, i32 0
  store ptr %914, ptr %915, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #9
  %916 = load ptr, ptr %80, align 8, !tbaa !5
  %917 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %916) #9
  %918 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %82, i32 0, i32 0
  store ptr %917, ptr %918, align 8
  br label %919

919:                                              ; preds = %931, %909
  %920 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  br i1 %920, label %926, label %921

921:                                              ; preds = %919
  store i32 60, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %937

922:                                              ; preds = %906, %903
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %8, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %9, align 4
  br label %938

926:                                              ; preds = %919
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %927 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  store ptr %927, ptr %83, align 8, !tbaa !5
  %928 = load ptr, ptr %3, align 8, !tbaa !5
  %929 = load ptr, ptr %83, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %928, ptr noundef nonnull align 8 dereferenceable(48) %929)
          to label %930 unwind label %933

930:                                              ; preds = %926
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  br label %931

931:                                              ; preds = %930
  %932 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br label %919

933:                                              ; preds = %926
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %8, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %938

937:                                              ; preds = %921
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %1027

938:                                              ; preds = %933, %922
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %1038

939:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %940 = load ptr, ptr %31, align 8, !tbaa !5
  %941 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %940)
          to label %942 unwind label %951

942:                                              ; preds = %939
  %943 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %941, i32 0, i32 1
  %944 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %943)
          to label %945 unwind label %951

945:                                              ; preds = %942
  store ptr %944, ptr %84, align 8, !tbaa !5
  %946 = load ptr, ptr %84, align 8, !tbaa !5
  %947 = load ptr, ptr %3, align 8, !tbaa !5
  %948 = load ptr, ptr %84, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %948, i32 0, i32 2
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %947, ptr noundef nonnull align 8 dereferenceable(48) %949)
          to label %950 unwind label %951

950:                                              ; preds = %945
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %1027

951:                                              ; preds = %945, %942, %939
  %952 = landingpad { ptr, i32 }
          cleanup
  %953 = extractvalue { ptr, i32 } %952, 0
  store ptr %953, ptr %8, align 8
  %954 = extractvalue { ptr, i32 } %952, 1
  store i32 %954, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %1038

955:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #9
  %956 = load ptr, ptr %31, align 8, !tbaa !5
  %957 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %956)
          to label %958 unwind label %974

958:                                              ; preds = %955
  %959 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %957, i32 0, i32 1
  %960 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %959)
          to label %961 unwind label %974

961:                                              ; preds = %958
  store ptr %960, ptr %85, align 8, !tbaa !5
  %962 = load ptr, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  %963 = load ptr, ptr %85, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %963, i32 0, i32 2
  store ptr %964, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %965 = load ptr, ptr %86, align 8, !tbaa !5
  %966 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %965) #9
  %967 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %87, i32 0, i32 0
  store ptr %966, ptr %967, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %968 = load ptr, ptr %86, align 8, !tbaa !5
  %969 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %968) #9
  %970 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %88, i32 0, i32 0
  store ptr %969, ptr %970, align 8
  br label %971

971:                                              ; preds = %983, %961
  %972 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88) #9
  br i1 %972, label %978, label %973

973:                                              ; preds = %971
  store i32 62, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  br label %989

974:                                              ; preds = %958, %955
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %8, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %9, align 4
  br label %990

978:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %979 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #9
  store ptr %979, ptr %89, align 8, !tbaa !5
  %980 = load ptr, ptr %3, align 8, !tbaa !5
  %981 = load ptr, ptr %89, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %980, ptr noundef nonnull align 8 dereferenceable(48) %981)
          to label %982 unwind label %985

982:                                              ; preds = %978
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %983

983:                                              ; preds = %982
  %984 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #9
  br label %971

985:                                              ; preds = %978
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %8, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  br label %990

989:                                              ; preds = %973
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  br label %1027

990:                                              ; preds = %985, %974
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  br label %1038

991:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %992 = load ptr, ptr %31, align 8, !tbaa !5
  %993 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %992)
          to label %994 unwind label %1010

994:                                              ; preds = %991
  %995 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %993, i32 0, i32 1
  %996 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %995)
          to label %997 unwind label %1010

997:                                              ; preds = %994
  store ptr %996, ptr %90, align 8, !tbaa !5
  %998 = load ptr, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %999 = load ptr, ptr %90, align 8, !tbaa !5
  %1000 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %999, i32 0, i32 1
  store ptr %1000, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %1001 = load ptr, ptr %91, align 8, !tbaa !5
  %1002 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1001) #9
  %1003 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %92, i32 0, i32 0
  store ptr %1002, ptr %1003, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %1004 = load ptr, ptr %91, align 8, !tbaa !5
  %1005 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1004) #9
  %1006 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %93, i32 0, i32 0
  store ptr %1005, ptr %1006, align 8
  br label %1007

1007:                                             ; preds = %1019, %997
  %1008 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  br i1 %1008, label %1014, label %1009

1009:                                             ; preds = %1007
  store i32 64, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1025

1010:                                             ; preds = %994, %991
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %8, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %9, align 4
  br label %1026

1014:                                             ; preds = %1007
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %1015 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  store ptr %1015, ptr %94, align 8, !tbaa !5
  %1016 = load ptr, ptr %3, align 8, !tbaa !5
  %1017 = load ptr, ptr %94, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1016, ptr noundef nonnull align 8 dereferenceable(48) %1017)
          to label %1018 unwind label %1021

1018:                                             ; preds = %1014
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %1019

1019:                                             ; preds = %1018
  %1020 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  br label %1007

1021:                                             ; preds = %1014
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %8, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1026

1025:                                             ; preds = %1009
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %1027

1026:                                             ; preds = %1021, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %1038

1027:                                             ; preds = %1025, %989, %950, %937, %901, %865, %830, %814, %798, %782, %762, %746, %730, %713, %702, %690
  %1028 = load ptr, ptr %3, align 8, !tbaa !5
  %1029 = load ptr, ptr %31, align 8, !tbaa !5
  %1030 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %1029)
          to label %1031 unwind label %355

1031:                                             ; preds = %1027
  %1032 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1030, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1028, ptr noundef nonnull align 8 dereferenceable(32) %1032, i1 noundef zeroext true)
          to label %1033 unwind label %355

1033:                                             ; preds = %1031
  br label %1034

1034:                                             ; preds = %1033, %604, %450, %387, %364, %364, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %1035

1035:                                             ; preds = %1034
  %1036 = load i32, ptr %30, align 4, !tbaa !28
  %1037 = add i32 %1036, 1
  store i32 %1037, ptr %30, align 4, !tbaa !28
  br label %320, !llvm.loop !55

1038:                                             ; preds = %1026, %990, %951, %938, %902, %866, %831, %815, %799, %783, %763, %747, %731, %715, %703, %683, %601, %449, %418, %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %1541

1039:                                             ; preds = %327
  %1040 = load ptr, ptr %3, align 8, !tbaa !5
  %1041 = load i32, ptr %16, align 4, !tbaa !28
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %1040, i32 noundef %1041)
          to label %1042 unwind label %1061

1042:                                             ; preds = %1039
  br label %1043

1043:                                             ; preds = %1042
  %1044 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1045 unwind label %1061

1045:                                             ; preds = %1043
  br i1 %1044, label %1046, label %1065

1046:                                             ; preds = %1045
  %1047 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !28
  %1048 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1047, ptr noundef @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %1049 unwind label %1061

1049:                                             ; preds = %1046
  %1050 = load ptr, ptr %3, align 8, !tbaa !5
  %1051 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1048, ptr noundef nonnull align 8 dereferenceable(120) %1050)
          to label %1052 unwind label %1061

1052:                                             ; preds = %1049
  %1053 = load ptr, ptr %29, align 8, !tbaa !5
  %1054 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1053, i32 0, i32 1
  %1055 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1051, ptr noundef nonnull align 8 dereferenceable(168) %1054)
          to label %1056 unwind label %1061

1056:                                             ; preds = %1052
  %1057 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1055, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1058 unwind label %1061

1058:                                             ; preds = %1056
  %1059 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1057, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1060 unwind label %1061

1060:                                             ; preds = %1058
  br label %1065

1061:                                             ; preds = %1058, %1056, %1052, %1049, %1046, %1043, %1039
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %8, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %9, align 4
  br label %1541

1065:                                             ; preds = %1060, %1045
  br label %1066

1066:                                             ; preds = %1065
  br label %1067

1067:                                             ; preds = %1066
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #9
  store i8 1, ptr %95, align 1, !tbaa !41
  br label %1068

1068:                                             ; preds = %1536, %1067
  %1069 = load i8, ptr %95, align 1, !tbaa !41, !range !43, !noundef !44
  %1070 = trunc i8 %1069 to i1
  br i1 %1070, label %1072, label %1071

1071:                                             ; preds = %1068
  store i32 68, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #9
  br label %1537

1072:                                             ; preds = %1068
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  %1073 = load ptr, ptr %29, align 8, !tbaa !5
  %1074 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1073, i32 0, i32 1
  store ptr %1074, ptr %96, align 8, !tbaa !5
  br label %1075

1075:                                             ; preds = %1533, %1072
  %1076 = load i8, ptr %95, align 1, !tbaa !41, !range !43, !noundef !44
  %1077 = trunc i8 %1076 to i1
  br i1 %1077, label %1079, label %1078

1078:                                             ; preds = %1075
  store i32 71, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  br label %1535

1079:                                             ; preds = %1075
  %1080 = load ptr, ptr %96, align 8, !tbaa !5
  %1081 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1080)
          to label %1082 unwind label %1083

1082:                                             ; preds = %1079
  switch i32 %1081, label %1532 [
    i32 0, label %1087
    i32 1, label %1088
    i32 2, label %1111
    i32 3, label %1202
    i32 4, label %1225
    i32 5, label %1256
    i32 6, label %1279
    i32 7, label %1324
    i32 8, label %1386
    i32 9, label %1452
  ]

1083:                                             ; preds = %1079
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %8, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %9, align 4
  br label %1534

1087:                                             ; preds = %1082
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 545, ptr noundef @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

1088:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #9
  store i8 1, ptr %97, align 1, !tbaa !41
  br label %1089

1089:                                             ; preds = %1109, %1088
  %1090 = load i8, ptr %97, align 1, !tbaa !41, !range !43, !noundef !44
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1093, label %1092

1092:                                             ; preds = %1089
  store i32 75, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #9
  br label %1110

1093:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %1094 = load ptr, ptr %96, align 8, !tbaa !5
  %1095 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %1094)
          to label %1096 unwind label %1102

1096:                                             ; preds = %1093
  store ptr %1095, ptr %98, align 8, !tbaa !5
  br label %1097

1097:                                             ; preds = %1107, %1096
  %1098 = load ptr, ptr %98, align 8, !tbaa !5
  %1099 = load i8, ptr %97, align 1, !tbaa !41, !range !43, !noundef !44
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1106, label %1101

1101:                                             ; preds = %1097
  store i32 78, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1108

1102:                                             ; preds = %1093
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %8, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #9
  br label %1534

1106:                                             ; preds = %1097
  br label %1107

1107:                                             ; preds = %1106
  store i8 0, ptr %97, align 1, !tbaa !41
  br label %1097, !llvm.loop !56

1108:                                             ; preds = %1101
  br label %1109

1109:                                             ; preds = %1108
  store i8 0, ptr %97, align 1, !tbaa !41
  br label %1089, !llvm.loop !57

1110:                                             ; preds = %1092
  br label %1532

1111:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #9
  store i8 1, ptr %99, align 1, !tbaa !41
  br label %1112

1112:                                             ; preds = %1200, %1111
  %1113 = load i8, ptr %99, align 1, !tbaa !41, !range !43, !noundef !44
  %1114 = trunc i8 %1113 to i1
  br i1 %1114, label %1116, label %1115

1115:                                             ; preds = %1112
  store i32 81, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #9
  br label %1201

1116:                                             ; preds = %1112
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %1117 = load ptr, ptr %96, align 8, !tbaa !5
  %1118 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %1117)
          to label %1119 unwind label %1125

1119:                                             ; preds = %1116
  store ptr %1118, ptr %100, align 8, !tbaa !5
  br label %1120

1120:                                             ; preds = %1197, %1119
  %1121 = load ptr, ptr %100, align 8, !tbaa !5
  %1122 = load i8, ptr %99, align 1, !tbaa !41, !range !43, !noundef !44
  %1123 = trunc i8 %1122 to i1
  br i1 %1123, label %1129, label %1124

1124:                                             ; preds = %1120
  store i32 84, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  br label %1199

1125:                                             ; preds = %1116
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %8, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %9, align 4
  br label %1198

1129:                                             ; preds = %1120
  %1130 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #9
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %101)
          to label %1131 unwind label %1141

1131:                                             ; preds = %1129
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1130, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %1132 unwind label %1145

1132:                                             ; preds = %1131
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #9
  store i32 0, ptr %102, align 4, !tbaa !28
  br label %1133

1133:                                             ; preds = %1192, %1132
  %1134 = load i32, ptr %102, align 4, !tbaa !28
  %1135 = zext i32 %1134 to i64
  %1136 = getelementptr inbounds %struct.ValStates, ptr %18, i32 0, i32 2
  %1137 = invoke noundef i64 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1136)
          to label %1138 unwind label %1150

1138:                                             ; preds = %1133
  %1139 = icmp ult i64 %1135, %1137
  br i1 %1139, label %1154, label %1140

1140:                                             ; preds = %1138
  store i32 87, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %1196

1141:                                             ; preds = %1129
  %1142 = landingpad { ptr, i32 }
          cleanup
  %1143 = extractvalue { ptr, i32 } %1142, 0
  store ptr %1143, ptr %8, align 8
  %1144 = extractvalue { ptr, i32 } %1142, 1
  store i32 %1144, ptr %9, align 4
  br label %1149

1145:                                             ; preds = %1131
  %1146 = landingpad { ptr, i32 }
          cleanup
  %1147 = extractvalue { ptr, i32 } %1146, 0
  store ptr %1147, ptr %8, align 8
  %1148 = extractvalue { ptr, i32 } %1146, 1
  store i32 %1148, ptr %9, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  br label %1149

1149:                                             ; preds = %1145, %1141
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #9
  br label %1198

1150:                                             ; preds = %1174, %1133
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %8, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %9, align 4
  br label %1195

1154:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #9
  %1155 = getelementptr inbounds %struct.ValStates, ptr %18, i32 0, i32 2
  %1156 = load i32, ptr %102, align 4, !tbaa !28
  %1157 = zext i32 %1156 to i64
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8 %103, ptr noundef nonnull align 8 dereferenceable(24) %1155, i64 noundef %1157)
          to label %1158 unwind label %1165

1158:                                             ; preds = %1154
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1) %104, i8 noundef zeroext 0)
          to label %1159 unwind label %1169

1159:                                             ; preds = %1158
  %1160 = getelementptr inbounds %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", ptr %104, i32 0, i32 0
  %1161 = load i8, ptr %1160, align 1
  %1162 = invoke noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceeqEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10) %103, i8 %1161)
          to label %1163 unwind label %1169

1163:                                             ; preds = %1159
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %103) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #9
  br i1 %1162, label %1164, label %1174

1164:                                             ; preds = %1163
  br label %1191

1165:                                             ; preds = %1154
  %1166 = landingpad { ptr, i32 }
          cleanup
  %1167 = extractvalue { ptr, i32 } %1166, 0
  store ptr %1167, ptr %8, align 8
  %1168 = extractvalue { ptr, i32 } %1166, 1
  store i32 %1168, ptr %9, align 4
  br label %1173

1169:                                             ; preds = %1159, %1158
  %1170 = landingpad { ptr, i32 }
          cleanup
  %1171 = extractvalue { ptr, i32 } %1170, 0
  store ptr %1171, ptr %8, align 8
  %1172 = extractvalue { ptr, i32 } %1170, 1
  store i32 %1172, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %103) #9
  br label %1173

1173:                                             ; preds = %1169, %1165
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #9
  br label %1195

1174:                                             ; preds = %1163
  %1175 = load ptr, ptr %3, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1175, i32 0, i32 2
  %1177 = load ptr, ptr %1176, align 8, !tbaa !58
  %1178 = load ptr, ptr %3, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %1178, i32 0, i32 1
  %1180 = load ptr, ptr %1179, align 8, !tbaa !59
  %1181 = load ptr, ptr %4, align 8, !tbaa !5
  %1182 = getelementptr inbounds %"class.MIR::Function", ptr %1181, i32 0, i32 0
  %1183 = load i32, ptr %102, align 4, !tbaa !28
  %1184 = zext i32 %1183 to i64
  %1185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1182, i64 noundef %1184) #9
  %1186 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %1177, ptr noundef nonnull align 8 dereferenceable(8) %1180, ptr noundef nonnull align 8 dereferenceable(8) %1185)
          to label %1187 unwind label %1150

1187:                                             ; preds = %1174
  br i1 %1186, label %1188, label %1189

1188:                                             ; preds = %1187
  br label %1190

1189:                                             ; preds = %1187
  br label %1190

1190:                                             ; preds = %1189, %1188
  br label %1191

1191:                                             ; preds = %1190, %1164
  br label %1192

1192:                                             ; preds = %1191
  %1193 = load i32, ptr %102, align 4, !tbaa !28
  %1194 = add i32 %1193, 1
  store i32 %1194, ptr %102, align 4, !tbaa !28
  br label %1133, !llvm.loop !60

1195:                                             ; preds = %1173, %1150
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %1198

1196:                                             ; preds = %1140
  br label %1197

1197:                                             ; preds = %1196
  store i8 0, ptr %99, align 1, !tbaa !41
  br label %1120, !llvm.loop !61

1198:                                             ; preds = %1195, %1149, %1125
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #9
  br label %1534

1199:                                             ; preds = %1124
  br label %1200

1200:                                             ; preds = %1199
  store i8 0, ptr %99, align 1, !tbaa !41
  br label %1112, !llvm.loop !62

1201:                                             ; preds = %1115
  br label %1532

1202:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  store i8 1, ptr %105, align 1, !tbaa !41
  br label %1203

1203:                                             ; preds = %1223, %1202
  %1204 = load i8, ptr %105, align 1, !tbaa !41, !range !43, !noundef !44
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1207, label %1206

1206:                                             ; preds = %1203
  store i32 90, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  br label %1224

1207:                                             ; preds = %1203
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  %1208 = load ptr, ptr %96, align 8, !tbaa !5
  %1209 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %1208)
          to label %1210 unwind label %1216

1210:                                             ; preds = %1207
  store ptr %1209, ptr %106, align 8, !tbaa !5
  br label %1211

1211:                                             ; preds = %1221, %1210
  %1212 = load ptr, ptr %106, align 8, !tbaa !5
  %1213 = load i8, ptr %105, align 1, !tbaa !41, !range !43, !noundef !44
  %1214 = trunc i8 %1213 to i1
  br i1 %1214, label %1220, label %1215

1215:                                             ; preds = %1211
  store i32 93, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br label %1222

1216:                                             ; preds = %1207
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %8, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  br label %1534

1220:                                             ; preds = %1211
  br label %1221

1221:                                             ; preds = %1220
  store i8 0, ptr %105, align 1, !tbaa !41
  br label %1211, !llvm.loop !63

1222:                                             ; preds = %1215
  br label %1223

1223:                                             ; preds = %1222
  store i8 0, ptr %105, align 1, !tbaa !41
  br label %1203, !llvm.loop !64

1224:                                             ; preds = %1206
  br label %1532

1225:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #9
  store i8 1, ptr %107, align 1, !tbaa !41
  br label %1226

1226:                                             ; preds = %1254, %1225
  %1227 = load i8, ptr %107, align 1, !tbaa !41, !range !43, !noundef !44
  %1228 = trunc i8 %1227 to i1
  br i1 %1228, label %1230, label %1229

1229:                                             ; preds = %1226
  store i32 96, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  br label %1255

1230:                                             ; preds = %1226
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #9
  %1231 = load ptr, ptr %96, align 8, !tbaa !5
  %1232 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %1231)
          to label %1233 unwind label %1239

1233:                                             ; preds = %1230
  store ptr %1232, ptr %108, align 8, !tbaa !5
  br label %1234

1234:                                             ; preds = %1247, %1233
  %1235 = load ptr, ptr %108, align 8, !tbaa !5
  %1236 = load i8, ptr %107, align 1, !tbaa !41, !range !43, !noundef !44
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1243, label %1238

1238:                                             ; preds = %1234
  store i32 99, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %1253

1239:                                             ; preds = %1230
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %8, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %9, align 4
  br label %1252

1243:                                             ; preds = %1234
  %1244 = load ptr, ptr %108, align 8, !tbaa !5
  %1245 = load i32, ptr %1244, align 4, !tbaa !28
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %110, ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %1245, ptr noundef %109, ptr noundef %110)
          to label %1246 unwind label %1248

1246:                                             ; preds = %1243
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %110) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #9
  br label %1247

1247:                                             ; preds = %1246
  store i8 0, ptr %107, align 1, !tbaa !41
  br label %1234, !llvm.loop !65

1248:                                             ; preds = %1243
  %1249 = landingpad { ptr, i32 }
          cleanup
  %1250 = extractvalue { ptr, i32 } %1249, 0
  store ptr %1250, ptr %8, align 8
  %1251 = extractvalue { ptr, i32 } %1249, 1
  store i32 %1251, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %110) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #9
  br label %1252

1252:                                             ; preds = %1248, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  br label %1534

1253:                                             ; preds = %1238
  br label %1254

1254:                                             ; preds = %1253
  store i8 0, ptr %107, align 1, !tbaa !41
  br label %1226, !llvm.loop !66

1255:                                             ; preds = %1229
  br label %1532

1256:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #9
  store i8 1, ptr %111, align 1, !tbaa !41
  br label %1257

1257:                                             ; preds = %1277, %1256
  %1258 = load i8, ptr %111, align 1, !tbaa !41, !range !43, !noundef !44
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1261, label %1260

1260:                                             ; preds = %1257
  store i32 102, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #9
  br label %1278

1261:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %1262 = load ptr, ptr %96, align 8, !tbaa !5
  %1263 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %1262)
          to label %1264 unwind label %1270

1264:                                             ; preds = %1261
  store ptr %1263, ptr %112, align 8, !tbaa !5
  br label %1265

1265:                                             ; preds = %1275, %1264
  %1266 = load ptr, ptr %112, align 8, !tbaa !5
  %1267 = load i8, ptr %111, align 1, !tbaa !41, !range !43, !noundef !44
  %1268 = trunc i8 %1267 to i1
  br i1 %1268, label %1274, label %1269

1269:                                             ; preds = %1265
  store i32 105, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %1276

1270:                                             ; preds = %1261
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %8, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #9
  br label %1534

1274:                                             ; preds = %1265
  br label %1275

1275:                                             ; preds = %1274
  store i8 0, ptr %111, align 1, !tbaa !41
  br label %1265, !llvm.loop !67

1276:                                             ; preds = %1269
  br label %1277

1277:                                             ; preds = %1276
  store i8 0, ptr %111, align 1, !tbaa !41
  br label %1257, !llvm.loop !68

1278:                                             ; preds = %1260
  br label %1532

1279:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #9
  store i8 1, ptr %113, align 1, !tbaa !41
  br label %1280

1280:                                             ; preds = %1322, %1279
  %1281 = load i8, ptr %113, align 1, !tbaa !41, !range !43, !noundef !44
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1284, label %1283

1283:                                             ; preds = %1280
  store i32 108, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %1323

1284:                                             ; preds = %1280
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1285 = load ptr, ptr %96, align 8, !tbaa !5
  %1286 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %1285)
          to label %1287 unwind label %1293

1287:                                             ; preds = %1284
  store ptr %1286, ptr %114, align 8, !tbaa !5
  br label %1288

1288:                                             ; preds = %1311, %1287
  %1289 = load ptr, ptr %114, align 8, !tbaa !5
  %1290 = load i8, ptr %113, align 1, !tbaa !41, !range !43, !noundef !44
  %1291 = trunc i8 %1290 to i1
  br i1 %1291, label %1297, label %1292

1292:                                             ; preds = %1288
  store i32 111, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  br label %1321

1293:                                             ; preds = %1301, %1297, %1284
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %8, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %9, align 4
  br label %1320

1297:                                             ; preds = %1288
  %1298 = load ptr, ptr %3, align 8, !tbaa !5
  %1299 = load ptr, ptr %114, align 8, !tbaa !5
  %1300 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1299, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1298, ptr noundef nonnull align 8 dereferenceable(32) %1300)
          to label %1301 unwind label %1293

1301:                                             ; preds = %1297
  %1302 = load ptr, ptr %114, align 8, !tbaa !5
  %1303 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1302, i32 0, i32 1
  %1304 = load i32, ptr %1303, align 8, !tbaa !69
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %1305 unwind label %1293

1305:                                             ; preds = %1301
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %1304, ptr noundef %115, ptr noundef nonnull align 8 dereferenceable(56) %18)
          to label %1306 unwind label %1312

1306:                                             ; preds = %1305
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #9
  %1307 = load ptr, ptr %114, align 8, !tbaa !5
  %1308 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1307, i32 0, i32 2
  %1309 = load i32, ptr %1308, align 4, !tbaa !71
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %116, ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %117, ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %1309, ptr noundef %116, ptr noundef %117)
          to label %1310 unwind label %1316

1310:                                             ; preds = %1306
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %117) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #9
  br label %1311

1311:                                             ; preds = %1310
  store i8 0, ptr %113, align 1, !tbaa !41
  br label %1288, !llvm.loop !72

1312:                                             ; preds = %1305
  %1313 = landingpad { ptr, i32 }
          cleanup
  %1314 = extractvalue { ptr, i32 } %1313, 0
  store ptr %1314, ptr %8, align 8
  %1315 = extractvalue { ptr, i32 } %1313, 1
  store i32 %1315, ptr %9, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #9
  br label %1320

1316:                                             ; preds = %1306
  %1317 = landingpad { ptr, i32 }
          cleanup
  %1318 = extractvalue { ptr, i32 } %1317, 0
  store ptr %1318, ptr %8, align 8
  %1319 = extractvalue { ptr, i32 } %1317, 1
  store i32 %1319, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %117) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #9
  br label %1320

1320:                                             ; preds = %1316, %1312, %1293
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %1534

1321:                                             ; preds = %1292
  br label %1322

1322:                                             ; preds = %1321
  store i8 0, ptr %113, align 1, !tbaa !41
  br label %1280, !llvm.loop !73

1323:                                             ; preds = %1283
  br label %1532

1324:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #9
  store i8 1, ptr %118, align 1, !tbaa !41
  br label %1325

1325:                                             ; preds = %1384, %1324
  %1326 = load i8, ptr %118, align 1, !tbaa !41, !range !43, !noundef !44
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1329, label %1328

1328:                                             ; preds = %1325
  store i32 114, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  br label %1385

1329:                                             ; preds = %1325
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %1330 = load ptr, ptr %96, align 8, !tbaa !5
  %1331 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %1330)
          to label %1332 unwind label %1338

1332:                                             ; preds = %1329
  store ptr %1331, ptr %119, align 8, !tbaa !5
  br label %1333

1333:                                             ; preds = %1381, %1332
  %1334 = load ptr, ptr %119, align 8, !tbaa !5
  %1335 = load i8, ptr %118, align 1, !tbaa !41, !range !43, !noundef !44
  %1336 = trunc i8 %1335 to i1
  br i1 %1336, label %1342, label %1337

1337:                                             ; preds = %1333
  store i32 117, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  br label %1383

1338:                                             ; preds = %1342, %1329
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %8, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %9, align 4
  br label %1382

1342:                                             ; preds = %1333
  %1343 = load ptr, ptr %3, align 8, !tbaa !5
  %1344 = load ptr, ptr %119, align 8, !tbaa !5
  %1345 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1344, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1343, ptr noundef nonnull align 8 dereferenceable(32) %1345)
          to label %1346 unwind label %1338

1346:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #9
  %1347 = load ptr, ptr %119, align 8, !tbaa !5
  %1348 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1347, i32 0, i32 1
  store ptr %1348, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  %1349 = load ptr, ptr %120, align 8, !tbaa !5
  %1350 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1349) #9
  %1351 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.150", ptr %121, i32 0, i32 0
  store ptr %1350, ptr %1351, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  %1352 = load ptr, ptr %120, align 8, !tbaa !5
  %1353 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1352) #9
  %1354 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.150", ptr %122, i32 0, i32 0
  store ptr %1353, ptr %1354, align 8
  br label %1355

1355:                                             ; preds = %1369, %1346
  %1356 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  br i1 %1356, label %1358, label %1357

1357:                                             ; preds = %1355
  store i32 120, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #9
  br label %1380

1358:                                             ; preds = %1355
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1359 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #9
  store ptr %1359, ptr %123, align 8, !tbaa !5
  %1360 = load ptr, ptr %123, align 8, !tbaa !5
  %1361 = load i32, ptr %1360, align 4, !tbaa !28
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %1362 unwind label %1371

1362:                                             ; preds = %1358
  %1363 = load ptr, ptr %123, align 8, !tbaa !5
  %1364 = load ptr, ptr %119, align 8, !tbaa !5
  %1365 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1364, i32 0, i32 1
  %1366 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1365) #9
  %1367 = icmp eq ptr %1363, %1366
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_4clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStatesb"(ptr noundef nonnull align 8 dereferenceable(16) %11, i32 noundef %1361, ptr noundef %124, ptr noundef nonnull align 8 dereferenceable(56) %18, i1 noundef zeroext %1367)
          to label %1368 unwind label %1375

1368:                                             ; preds = %1362
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %1369

1369:                                             ; preds = %1368
  %1370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #9
  br label %1355

1371:                                             ; preds = %1358
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %8, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %9, align 4
  br label %1379

1375:                                             ; preds = %1362
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %8, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %9, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  br label %1379

1379:                                             ; preds = %1375, %1371
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #9
  br label %1382

1380:                                             ; preds = %1357
  br label %1381

1381:                                             ; preds = %1380
  store i8 0, ptr %118, align 1, !tbaa !41
  br label %1333, !llvm.loop !74

1382:                                             ; preds = %1379, %1338
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  br label %1534

1383:                                             ; preds = %1337
  br label %1384

1384:                                             ; preds = %1383
  store i8 0, ptr %118, align 1, !tbaa !41
  br label %1325, !llvm.loop !75

1385:                                             ; preds = %1328
  br label %1532

1386:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #9
  store i8 1, ptr %125, align 1, !tbaa !41
  br label %1387

1387:                                             ; preds = %1450, %1386
  %1388 = load i8, ptr %125, align 1, !tbaa !41, !range !43, !noundef !44
  %1389 = trunc i8 %1388 to i1
  br i1 %1389, label %1391, label %1390

1390:                                             ; preds = %1387
  store i32 122, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #9
  br label %1451

1391:                                             ; preds = %1387
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #9
  %1392 = load ptr, ptr %96, align 8, !tbaa !5
  %1393 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1392)
          to label %1394 unwind label %1400

1394:                                             ; preds = %1391
  store ptr %1393, ptr %126, align 8, !tbaa !5
  br label %1395

1395:                                             ; preds = %1443, %1394
  %1396 = load ptr, ptr %126, align 8, !tbaa !5
  %1397 = load i8, ptr %125, align 1, !tbaa !41, !range !43, !noundef !44
  %1398 = trunc i8 %1397 to i1
  br i1 %1398, label %1404, label %1399

1399:                                             ; preds = %1395
  store i32 125, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  br label %1449

1400:                                             ; preds = %1437, %1404, %1391
  %1401 = landingpad { ptr, i32 }
          cleanup
  %1402 = extractvalue { ptr, i32 } %1401, 0
  store ptr %1402, ptr %8, align 8
  %1403 = extractvalue { ptr, i32 } %1401, 1
  store i32 %1403, ptr %9, align 4
  br label %1448

1404:                                             ; preds = %1395
  %1405 = load ptr, ptr %3, align 8, !tbaa !5
  %1406 = load ptr, ptr %126, align 8, !tbaa !5
  %1407 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1406, i32 0, i32 0
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1405, ptr noundef nonnull align 8 dereferenceable(32) %1407)
          to label %1408 unwind label %1400

1408:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #9
  %1409 = load ptr, ptr %126, align 8, !tbaa !5
  %1410 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1409, i32 0, i32 2
  store ptr %1410, ptr %127, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #9
  %1411 = load ptr, ptr %127, align 8, !tbaa !5
  %1412 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1411) #9
  %1413 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.150", ptr %128, i32 0, i32 0
  store ptr %1412, ptr %1413, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #9
  %1414 = load ptr, ptr %127, align 8, !tbaa !5
  %1415 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1414) #9
  %1416 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.150", ptr %129, i32 0, i32 0
  store ptr %1415, ptr %1416, align 8
  br label %1417

1417:                                             ; preds = %1426, %1408
  %1418 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %129) #9
  br i1 %1418, label %1420, label %1419

1419:                                             ; preds = %1417
  store i32 128, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  br label %1437

1420:                                             ; preds = %1417
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #9
  %1421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %128) #9
  store ptr %1421, ptr %130, align 8, !tbaa !5
  %1422 = load ptr, ptr %130, align 8, !tbaa !5
  %1423 = load i32, ptr %1422, align 4, !tbaa !28
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %1424 unwind label %1428

1424:                                             ; preds = %1420
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %1423, ptr noundef %131, ptr noundef nonnull align 8 dereferenceable(56) %18)
          to label %1425 unwind label %1432

1425:                                             ; preds = %1424
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #9
  br label %1426

1426:                                             ; preds = %1425
  %1427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %128) #9
  br label %1417

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

1432:                                             ; preds = %1424
  %1433 = landingpad { ptr, i32 }
          cleanup
  %1434 = extractvalue { ptr, i32 } %1433, 0
  store ptr %1434, ptr %8, align 8
  %1435 = extractvalue { ptr, i32 } %1433, 1
  store i32 %1435, ptr %9, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #9
  br label %1436

1436:                                             ; preds = %1432, %1428
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  br label %1448

1437:                                             ; preds = %1419
  %1438 = load ptr, ptr %126, align 8, !tbaa !5
  %1439 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1438, i32 0, i32 1
  %1440 = load i32, ptr %1439, align 8, !tbaa !76
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %1441 unwind label %1400

1441:                                             ; preds = %1437
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %133, ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %1440, ptr noundef %132, ptr noundef %133)
          to label %1442 unwind label %1444

1442:                                             ; preds = %1441
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %133) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #9
  br label %1443

1443:                                             ; preds = %1442
  store i8 0, ptr %125, align 1, !tbaa !41
  br label %1395, !llvm.loop !80

1444:                                             ; preds = %1441
  %1445 = landingpad { ptr, i32 }
          cleanup
  %1446 = extractvalue { ptr, i32 } %1445, 0
  store ptr %1446, ptr %8, align 8
  %1447 = extractvalue { ptr, i32 } %1445, 1
  store i32 %1447, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %133) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #9
  br label %1448

1448:                                             ; preds = %1444, %1436, %1400
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #9
  br label %1534

1449:                                             ; preds = %1399
  br label %1450

1450:                                             ; preds = %1449
  store i8 0, ptr %125, align 1, !tbaa !41
  br label %1387, !llvm.loop !81

1451:                                             ; preds = %1390
  br label %1532

1452:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #9
  store i8 1, ptr %134, align 1, !tbaa !41
  br label %1453

1453:                                             ; preds = %1530, %1452
  %1454 = load i8, ptr %134, align 1, !tbaa !41, !range !43, !noundef !44
  %1455 = trunc i8 %1454 to i1
  br i1 %1455, label %1457, label %1456

1456:                                             ; preds = %1453
  store i32 130, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #9
  br label %1531

1457:                                             ; preds = %1453
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #9
  %1458 = load ptr, ptr %96, align 8, !tbaa !5
  %1459 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1458)
          to label %1460 unwind label %1466

1460:                                             ; preds = %1457
  store ptr %1459, ptr %135, align 8, !tbaa !5
  br label %1461

1461:                                             ; preds = %1519, %1460
  %1462 = load ptr, ptr %135, align 8, !tbaa !5
  %1463 = load i8, ptr %134, align 1, !tbaa !41, !range !43, !noundef !44
  %1464 = trunc i8 %1463 to i1
  br i1 %1464, label %1470, label %1465

1465:                                             ; preds = %1461
  store i32 133, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  br label %1529

1466:                                             ; preds = %1510, %1505, %1480, %1475, %1470, %1457
  %1467 = landingpad { ptr, i32 }
          cleanup
  %1468 = extractvalue { ptr, i32 } %1467, 0
  store ptr %1468, ptr %8, align 8
  %1469 = extractvalue { ptr, i32 } %1467, 1
  store i32 %1469, ptr %9, align 4
  br label %1528

1470:                                             ; preds = %1461
  %1471 = load ptr, ptr %135, align 8, !tbaa !5
  %1472 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1471, i32 0, i32 3
  %1473 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1472)
          to label %1474 unwind label %1466

1474:                                             ; preds = %1470
  br i1 %1473, label %1475, label %1482

1475:                                             ; preds = %1474
  %1476 = load ptr, ptr %3, align 8, !tbaa !5
  %1477 = load ptr, ptr %135, align 8, !tbaa !5
  %1478 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1477, i32 0, i32 3
  %1479 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1478)
          to label %1480 unwind label %1466

1480:                                             ; preds = %1475
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1476, ptr noundef nonnull align 8 dereferenceable(32) %1479)
          to label %1481 unwind label %1466

1481:                                             ; preds = %1480
  br label %1482

1482:                                             ; preds = %1481, %1474
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #9
  %1483 = load ptr, ptr %135, align 8, !tbaa !5
  %1484 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1483, i32 0, i32 4
  store ptr %1484, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #9
  %1485 = load ptr, ptr %136, align 8, !tbaa !5
  %1486 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1485) #9
  %1487 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %137, i32 0, i32 0
  store ptr %1486, ptr %1487, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #9
  %1488 = load ptr, ptr %136, align 8, !tbaa !5
  %1489 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1488) #9
  %1490 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %138, i32 0, i32 0
  store ptr %1489, ptr %1490, align 8
  br label %1491

1491:                                             ; preds = %1499, %1482
  %1492 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  br i1 %1492, label %1494, label %1493

1493:                                             ; preds = %1491
  store i32 136, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  br label %1505

1494:                                             ; preds = %1491
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #9
  %1495 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  store ptr %1495, ptr %139, align 8, !tbaa !5
  %1496 = load ptr, ptr %3, align 8, !tbaa !5
  %1497 = load ptr, ptr %139, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1496, ptr noundef nonnull align 8 dereferenceable(48) %1497)
          to label %1498 unwind label %1501

1498:                                             ; preds = %1494
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #9
  br label %1499

1499:                                             ; preds = %1498
  %1500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  br label %1491

1501:                                             ; preds = %1494
  %1502 = landingpad { ptr, i32 }
          cleanup
  %1503 = extractvalue { ptr, i32 } %1502, 0
  store ptr %1503, ptr %8, align 8
  %1504 = extractvalue { ptr, i32 } %1502, 1
  store i32 %1504, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  br label %1528

1505:                                             ; preds = %1493
  %1506 = load ptr, ptr %135, align 8, !tbaa !5
  %1507 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1506, i32 0, i32 1
  %1508 = load i32, ptr %1507, align 4, !tbaa !82
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %1509 unwind label %1466

1509:                                             ; preds = %1505
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %1508, ptr noundef %140, ptr noundef nonnull align 8 dereferenceable(56) %18)
          to label %1510 unwind label %1520

1510:                                             ; preds = %1509
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  %1511 = load ptr, ptr %3, align 8, !tbaa !5
  %1512 = load ptr, ptr %135, align 8, !tbaa !5
  %1513 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1512, i32 0, i32 2
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(120) %1511, ptr noundef nonnull align 8 dereferenceable(32) %1513, i1 noundef zeroext true)
          to label %1514 unwind label %1466

1514:                                             ; preds = %1510
  %1515 = load ptr, ptr %135, align 8, !tbaa !5
  %1516 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1515, i32 0, i32 0
  %1517 = load i32, ptr %1516, align 8, !tbaa !90
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %141, ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %142, ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %1517, ptr noundef %141, ptr noundef %142)
          to label %1518 unwind label %1524

1518:                                             ; preds = %1514
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %142) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #9
  br label %1519

1519:                                             ; preds = %1518
  store i8 0, ptr %134, align 1, !tbaa !41
  br label %1461, !llvm.loop !91

1520:                                             ; preds = %1509
  %1521 = landingpad { ptr, i32 }
          cleanup
  %1522 = extractvalue { ptr, i32 } %1521, 0
  store ptr %1522, ptr %8, align 8
  %1523 = extractvalue { ptr, i32 } %1521, 1
  store i32 %1523, ptr %9, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #9
  br label %1528

1524:                                             ; preds = %1514
  %1525 = landingpad { ptr, i32 }
          cleanup
  %1526 = extractvalue { ptr, i32 } %1525, 0
  store ptr %1526, ptr %8, align 8
  %1527 = extractvalue { ptr, i32 } %1525, 1
  store i32 %1527, ptr %9, align 4
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %142) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #9
  br label %1528

1528:                                             ; preds = %1524, %1520, %1501, %1466
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #9
  br label %1534

1529:                                             ; preds = %1465
  br label %1530

1530:                                             ; preds = %1529
  store i8 0, ptr %134, align 1, !tbaa !41
  br label %1453, !llvm.loop !92

1531:                                             ; preds = %1456
  br label %1532

1532:                                             ; preds = %1531, %1451, %1385, %1323, %1278, %1255, %1224, %1201, %1110, %1082
  br label %1533

1533:                                             ; preds = %1532
  store i8 0, ptr %95, align 1, !tbaa !41
  br label %1075, !llvm.loop !93

1534:                                             ; preds = %1528, %1448, %1382, %1320, %1270, %1252, %1216, %1198, %1102, %1083
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #9
  br label %1541

1535:                                             ; preds = %1078
  br label %1536

1536:                                             ; preds = %1535
  store i8 0, ptr %95, align 1, !tbaa !41
  br label %1068, !llvm.loop !94

1537:                                             ; preds = %1071
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  store i32 0, ptr %22, align 4
  br label %1538

1538:                                             ; preds = %1537, %246
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %18) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  %1539 = load i32, ptr %22, align 4
  switch i32 %1539, label %1551 [
    i32 0, label %1540
    i32 2, label %163
  ]

1540:                                             ; preds = %1538
  br label %163, !llvm.loop !29

1541:                                             ; preds = %1534, %1061, %1038
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %1542

1542:                                             ; preds = %1541, %311, %270, %269, %243, %231
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %18) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %1544

1543:                                             ; preds = %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #9
  ret void

1544:                                             ; preds = %1542, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  br label %1545

1545:                                             ; preds = %1544, %182
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #9
  br label %1546

1546:                                             ; preds = %1545
  %1547 = load ptr, ptr %8, align 8
  %1548 = load i32, ptr %9, align 4
  %1549 = insertvalue { ptr, i32 } poison, ptr %1547, 0
  %1550 = insertvalue { ptr, i32 } %1549, i32 %1548, 1
  resume { ptr, i32 } %1550

1551:                                             ; preds = %1538, %656, %365, %260
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2Emm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i64 noundef) unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5mergeEjRS5_(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, ptr noundef nonnull align 8 dereferenceable(56)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 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) #3 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) #3 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)) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #0 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)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96)) #3 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)) #3 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)) #3 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)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(48)) #0 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)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind noalias writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceneEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10), i8) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1), i8 noundef zeroext) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) #3 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)) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #0 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)) #3 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)) #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)) #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)) #3 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)) #3 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)) #3 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)) #3 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)) #3 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)) #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 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)) #3 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)) #3 align 2

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

declare noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 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)) #3 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)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56)) #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_4clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStatesb"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), i1 noundef zeroext) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96)) #3 align 2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 72}
!10 = !{!"_ZTSN3MIR11TypeResolveE", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !11, i64 112, !11, i64 116}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS9FmtLambda", !13, i64 0}
!13 = !{!"_ZTSSt8functionIFvRSoEE", !14, i64 0, !6, i64 24}
!14 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!15 = !{!16, !11, i64 0}
!16 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEE7ToVisit", !11, i64 0, !17, i64 8, !21, i64 32}
!17 = !{!"_ZTSSt6vectorIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEE9ValStates", !22, i64 0, !23, i64 8, !23, i64 32}
!22 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateE", !7, i64 0}
!23 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecE", !24, i64 0}
!24 = !{!"_ZTSSt6vectorIhSaIhEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!11, !11, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!32, !11, i64 40}
!32 = !{!"_ZTSN3MIR9Statement9Data_DropE", !33, i64 0, !34, i64 8, !11, i64 40}
!33 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!34 = !{!"_ZTSN3MIR6LValueE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSN3MIR6LValue7StorageE", !36, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!42, !42, i64 0}
!42 = !{!"bool", !7, i64 0}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = distinct !{!45, !30}
!46 = distinct !{!46, !30}
!47 = distinct !{!47, !30}
!48 = distinct !{!48, !30}
!49 = distinct !{!49, !30}
!50 = distinct !{!50, !30}
!51 = distinct !{!51, !30}
!52 = distinct !{!52, !30}
!53 = distinct !{!53, !30}
!54 = distinct !{!54, !30}
!55 = distinct !{!55, !30}
!56 = distinct !{!56, !30}
!57 = distinct !{!57, !30}
!58 = !{!10, !6, i64 16}
!59 = !{!10, !6, i64 8}
!60 = distinct !{!60, !30}
!61 = distinct !{!61, !30}
!62 = distinct !{!62, !30}
!63 = distinct !{!63, !30}
!64 = distinct !{!64, !30}
!65 = distinct !{!65, !30}
!66 = distinct !{!66, !30}
!67 = distinct !{!67, !30}
!68 = distinct !{!68, !30}
!69 = !{!70, !11, i64 32}
!70 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !34, i64 0, !11, i64 32, !11, i64 36}
!71 = !{!70, !11, i64 36}
!72 = distinct !{!72, !30}
!73 = distinct !{!73, !30}
!74 = distinct !{!74, !30}
!75 = distinct !{!75, !30}
!76 = !{!77, !11, i64 32}
!77 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !34, i64 0, !11, i64 32, !17, i64 40, !78, i64 64}
!78 = !{!"_ZTSN3MIR12SwitchValuesE", !79, i64 0, !7, i64 8}
!79 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!80 = distinct !{!80, !30}
!81 = distinct !{!81, !30}
!82 = !{!83, !11, i64 4}
!83 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !11, i64 0, !11, i64 4, !34, i64 8, !84, i64 40, !86, i64 136}
!84 = !{!"_ZTSN3MIR10CallTargetE", !85, i64 0, !7, i64 8}
!85 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!86 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !87, i64 0}
!87 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!90 = !{!83, !11, i64 0}
!91 = distinct !{!91, !30}
!92 = distinct !{!92, !30}
!93 = distinct !{!93, !30}
!94 = distinct !{!94, !30}


; 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl" }
%"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl" = type { %"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ValStates, std::allocator<ValStates>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl" }
%"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl" = type { %"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ToVisit, std::allocator<ToVisit>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon = type { ptr, ptr }
%class.anon.19 = type { ptr }
%class.anon.20 = type { ptr }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ValStates = type { %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec", %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec" }
%"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State" = type { i8 }
%"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec" = type { %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.FmtLambda = type { %"class.std::function" }
%class.anon.36 = type { ptr }
%struct.Span = type { ptr }
%class.anon.37 = type { i8 }
%class.anon.38 = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.111" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.128" = type { ptr }
%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference" = type <{ ptr, i8, %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", [6 x i8] }>
%class.anon.129 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.130" = type { ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.44" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = 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.__gnu_cxx::__normal_iterator.150" = type { ptr }

@__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [22 x i8], align 1
@.str = external hidden unnamed_addr constant [26 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.TraceLog, align 8
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::vector.14", align 8
  %7 = alloca %class.anon, align 8
  %8 = alloca %class.anon.19, align 8
  %9 = alloca %class.anon.20, align 8
  %10 = alloca %"class.std::vector.21", align 8
  %11 = alloca %struct.ValStates, align 8
  %12 = alloca %"class.std::vector.21", align 8
  %13 = alloca %struct.ValStates, align 8
  %14 = alloca %struct.FmtLambda, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.36, align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.37, align 1
  %20 = alloca %struct.FmtLambda, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.38, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.111", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.111", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.128", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.128", align 8
  %31 = alloca %"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference", align 8
  %32 = alloca %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", align 1
  %33 = alloca ptr, align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.129, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %44 = alloca %"struct.MIR::LValue", align 8
  %45 = alloca %"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference", align 8
  %46 = alloca %"struct.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::State", align 1
  %47 = alloca %"class.std::vector.21", align 8
  %48 = alloca %struct.ValStates, align 8
  %49 = alloca %"class.std::vector.21", align 8
  %50 = alloca %"class.std::vector.21", align 8
  %51 = alloca %struct.ValStates, align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.150", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.150", align 8
  %54 = alloca %"class.std::vector.21", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.150", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.150", align 8
  %57 = alloca %"class.std::vector.21", align 8
  %58 = alloca %"class.std::vector.21", align 8
  %59 = alloca %struct.ValStates, align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %62 = alloca %"class.std::vector.21", align 8
  %63 = alloca %"class.std::vector.21", align 8
  %64 = alloca %struct.ValStates, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #9
  %65 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %66 = select i1 %65, ptr @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef %66)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #9
  %67 = getelementptr inbounds i8, ptr %1, i64 64
  %68 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @_ZNSaIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEE9ValStatesEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EEC2EmRKS7_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %68, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %69 unwind label %91

69:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #9
  store ptr %6, ptr %7, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %4, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  store ptr %7, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  store ptr %7, ptr %9, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %71 = getelementptr inbounds i8, ptr %0, i64 72
  %72 = load ptr, ptr %71, align 8, !tbaa !9
  %73 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #9
  %74 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2Emm(ptr noundef nonnull align 8 dereferenceable(56) %11, i64 noundef %73, i64 noundef %74)
          to label %75 unwind label %93

75:                                               ; preds = %69
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef 0, ptr noundef nonnull %10, ptr noundef nonnull %11)
          to label %.split904 unwind label %95

.split904:                                        ; preds = %75
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %76 = call noundef i64 @_ZNKSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %.not905 = icmp eq i64 %76, 0
  br i1 %.not905, label %._crit_edge907, label %.lr.ph906

.lr.ph906:                                        ; preds = %.split904
  %77 = getelementptr inbounds i8, ptr %13, i64 32
  %78 = getelementptr inbounds i8, ptr %0, i64 16
  %79 = getelementptr inbounds i8, ptr %0, i64 8
  br label %80

80:                                               ; preds = %.lr.ph906, %.loopexit373
  %81 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %82 = load i32, ptr %81, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #9
  %83 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %84 = getelementptr inbounds i8, ptr %83, i64 8
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %84) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) #9
  %85 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %86 = getelementptr inbounds i8, ptr %85, i64 32
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(56) %86) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %87 = zext i32 %82 to i64
  %88 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  %89 = icmp ugt i64 %88, %87
  br i1 %89, label %98, label %90

90:                                               ; preds = %80
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 405, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

91:                                               ; preds = %2
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  br label %559

93:                                               ; preds = %69
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %97

95:                                               ; preds = %75
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #9
  br label %97

97:                                               ; preds = %95, %93
  %.pn = phi { ptr, i32 } [ %96, %95 ], [ %94, %93 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  br label %558

98:                                               ; preds = %80
  %99 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %87)
          to label %100 unwind label %.loopexit375

100:                                              ; preds = %98
  %101 = invoke noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5mergeEjRS5_(ptr noundef nonnull align 8 dereferenceable(56) %99, i32 noundef %82, ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %102 unwind label %.loopexit375

102:                                              ; preds = %100
  br i1 %101, label %132, label %103

103:                                              ; preds = %102
  %104 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %105 unwind label %.loopexit375

105:                                              ; preds = %103
  br i1 %104, label %106, label %.loopexit373, !llvm.loop !28

106:                                              ; preds = %105
  %107 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !30
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %107, ptr noundef nonnull @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %109 unwind label %.loopexit375

109:                                              ; preds = %106
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @.str.2)
          to label %111 unwind label %.loopexit375

111:                                              ; preds = %109
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %110, i32 noundef %82)
          to label %113 unwind label %.loopexit375

113:                                              ; preds = %111
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull @.str.3)
          to label %115 unwind label %.loopexit375

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %117 unwind label %.loopexit375

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull @.str.4)
          to label %119 unwind label %.loopexit375

119:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  store ptr %13, ptr %16, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %15)
          to label %120 unwind label %127

120:                                              ; preds = %119
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %122 unwind label %129

122:                                              ; preds = %120
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %124 unwind label %129

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %126 unwind label %129

126:                                              ; preds = %124
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %.loopexit373, !llvm.loop !28

.loopexit375:                                     ; preds = %98, %100, %103, %106, %109, %111, %113, %115, %117, %144, %147, %150, %152, %154, %156, %158
  %lpad.loopexit377 = landingpad { ptr, i32 }
          cleanup
  br label %557

.loopexit.split-lp376:                            ; preds = %139
  %lpad.loopexit.split-lp378 = landingpad { ptr, i32 }
          cleanup
  br label %557

127:                                              ; preds = %119
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %131

129:                                              ; preds = %124, %122, %120
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %131

131:                                              ; preds = %129, %127
  %.pn298 = phi { ptr, i32 } [ %130, %129 ], [ %128, %127 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %557

132:                                              ; preds = %102
  %133 = call noundef i64 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77)
  %134 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #9
  %135 = icmp eq i64 %133, %134
  br i1 %135, label %144, label %136

136:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %137 unwind label %140

137:                                              ; preds = %136
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  %138 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %138, ptr noundef nonnull @.str.5)
          to label %139 unwind label %142

139:                                              ; preds = %137
  invoke void @__cxa_throw(ptr nonnull %138, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %560 unwind label %.loopexit.split-lp376

140:                                              ; preds = %136
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %557

142:                                              ; preds = %137
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %138) #9
  br label %557

144:                                              ; preds = %132
  %145 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %146 unwind label %.loopexit375

146:                                              ; preds = %144
  br i1 %145, label %147, label %.split460

147:                                              ; preds = %146
  %148 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !30
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %148, ptr noundef nonnull @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %150 unwind label %.loopexit375

150:                                              ; preds = %147
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull @.str.2)
          to label %152 unwind label %.loopexit375

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %151, i32 noundef %82)
          to label %154 unwind label %.loopexit375

154:                                              ; preds = %152
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @.str.3)
          to label %156 unwind label %.loopexit375

156:                                              ; preds = %154
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %158 unwind label %.loopexit375

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.6)
          to label %160 unwind label %.loopexit375

160:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  store ptr %13, ptr %22, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull %21)
          to label %161 unwind label %168

161:                                              ; preds = %160
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %163 unwind label %170

163:                                              ; preds = %161
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %165 unwind label %170

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %167 unwind label %170

167:                                              ; preds = %165
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %.split460

168:                                              ; preds = %160
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %165, %163, %161
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %172

172:                                              ; preds = %170, %168
  %.pn300 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %557

.split460:                                        ; preds = %167, %146
  %173 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %87) #9
  %174 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  %.not908 = icmp eq i64 %174, 0
  br i1 %.not908, label %._crit_edge463, label %.lr.ph462

._crit_edge463:                                   ; preds = %.loopexit372, %.split460
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %82)
  %175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %427 unwind label %440

.lr.ph462:                                        ; preds = %.split460, %.loopexit372
  %176 = phi i64 [ %424, %.loopexit372 ], [ 0, %.split460 ]
  %.0263461 = phi i32 [ %423, %.loopexit372 ], [ 0, %.split460 ]
  %177 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #9
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %82, i32 noundef %.0263461)
  %178 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %179 unwind label %.loopexit374

179:                                              ; preds = %.lr.ph462
  br i1 %178, label %180, label %191

180:                                              ; preds = %179
  %181 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !30
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %181, ptr noundef nonnull @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %183 unwind label %.loopexit374

183:                                              ; preds = %180
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %185 unwind label %.loopexit374

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull align 8 dereferenceable(152) %177)
          to label %187 unwind label %.loopexit374

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %189 unwind label %.loopexit374

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %.loopexit374

.loopexit374:                                     ; preds = %.invoke, %.lr.ph462, %180, %183, %185, %187, %189, %200
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %557

.loopexit.split-lp:                               ; preds = %193
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %557

191:                                              ; preds = %189, %179
  %192 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  switch i32 %192, label %.loopexit372 [
    i32 0, label %193
    i32 1, label %255
    i32 5, label %195
    i32 2, label %208
    i32 3, label %.split437.lr.ph
  ]

193:                                              ; preds = %191
  %194 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.7, ptr %194, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %194, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %560 unwind label %.loopexit.split-lp

195:                                              ; preds = %191
  %196 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %197 = getelementptr inbounds i8, ptr %196, i64 40
  %198 = load i32, ptr %197, align 8, !tbaa !31
  %199 = icmp eq i32 %198, -1
  br i1 %199, label %200, label %203

200:                                              ; preds = %195
  %201 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %202 = getelementptr inbounds i8, ptr %201, i64 8
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %203 unwind label %.loopexit374

203:                                              ; preds = %200, %195
  %204 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  br label %.invoke

.invoke:                                          ; preds = %421, %203
  %206 = phi ptr [ %205, %203 ], [ %422, %421 ]
  %207 = phi i1 [ false, %203 ], [ true, %421 ]
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %206, i1 noundef zeroext %207)
          to label %.loopexit372 unwind label %.loopexit374

208:                                              ; preds = %191
  %209 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %210 = getelementptr inbounds i8, ptr %209, i64 56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %211 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  store ptr %211, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %212 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  store ptr %212, ptr %24, align 8
  %213 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br i1 %213, label %.lr.ph, label %._crit_edge441

._crit_edge441:                                   ; preds = %221, %208
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  %214 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %215 = getelementptr inbounds i8, ptr %214, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %216 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %215) #9
  store ptr %216, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %217 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %215) #9
  store ptr %217, ptr %26, align 8
  %218 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br i1 %218, label %.lr.ph443, label %._crit_edge444

.lr.ph:                                           ; preds = %208, %221
  %219 = 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) %23) #9
  %220 = getelementptr inbounds i8, ptr %219, i64 32
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %220)
          to label %221 unwind label %224

221:                                              ; preds = %.lr.ph
  %222 = 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) %23) #9
  %223 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br i1 %223, label %.lr.ph, label %._crit_edge441

224:                                              ; preds = %.lr.ph
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %557

._crit_edge444:                                   ; preds = %228, %._crit_edge441
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %.loopexit372

.lr.ph443:                                        ; preds = %._crit_edge441, %228
  %226 = 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) %25) #9
  %227 = getelementptr inbounds i8, ptr %226, i64 32
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %227, i1 noundef zeroext true)
          to label %228 unwind label %231

228:                                              ; preds = %.lr.ph443
  %229 = 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) %25) #9
  %230 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br i1 %230, label %.lr.ph443, label %._crit_edge444

231:                                              ; preds = %.lr.ph443
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %557

.split437.lr.ph:                                  ; preds = %191
  %233 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %234 = getelementptr inbounds i8, ptr %233, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %235 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #9
  store ptr %235, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %236 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #9
  store ptr %236, ptr %28, align 8
  %237 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br i1 %237, label %.split418, label %..loopexit369_crit_edge

..loopexit369_crit_edge:                          ; preds = %..loopexit340_crit_edge, %.split437.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %.loopexit372

.split418:                                        ; preds = %.split437.lr.ph, %..loopexit340_crit_edge
  %238 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  %239 = call noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %238)
  switch i32 %239, label %..loopexit340_crit_edge [
    i32 0, label %.split410
    i32 1, label %.preheader
    i32 2, label %.preheader335
    i32 3, label %.preheader337
  ]

.preheader337:                                    ; preds = %.split418
  %240 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %238)
  %241 = getelementptr inbounds i8, ptr %240, i64 48
  %242 = getelementptr inbounds i8, ptr %240, i64 56
  %243 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  br i1 %243, label %247, label %249

.preheader335:                                    ; preds = %.split418
  %244 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %238)
  br label %..loopexit340_crit_edge

.preheader:                                       ; preds = %.split418
  %245 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %238)
  br label %..loopexit340_crit_edge

.split410:                                        ; preds = %.split418
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 447, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

.split.split.split.split:                         ; preds = %251, %247
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %557

247:                                              ; preds = %.preheader337
  %248 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %248)
          to label %249 unwind label %.split.split.split.split

249:                                              ; preds = %247, %.preheader337
  %250 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  br i1 %250, label %251, label %..loopexit340_crit_edge

251:                                              ; preds = %249
  %252 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %252, i1 noundef zeroext true)
          to label %..loopexit340_crit_edge unwind label %.split.split.split.split

..loopexit340_crit_edge:                          ; preds = %.preheader335, %.preheader, %251, %249, %.split418
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  %254 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br i1 %254, label %.split418, label %..loopexit369_crit_edge

255:                                              ; preds = %191
  %256 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %257 = getelementptr inbounds i8, ptr %256, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %258 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #9
  store ptr %258, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  %259 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #9
  store ptr %259, ptr %30, align 8
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br i1 %260, label %.lr.ph446, label %._crit_edge447

._crit_edge447:                                   ; preds = %288, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  %261 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %262 = getelementptr inbounds i8, ptr %261, i64 32
  %263 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %262)
  switch i32 %263, label %421 [
    i32 0, label %292
    i32 1, label %293
    i32 3, label %299
    i32 4, label %303
    i32 2, label %309
    i32 5, label %316
    i32 6, label %322
    i32 7, label %330
    i32 8, label %336
    i32 9, label %342
    i32 10, label %348
    i32 11, label %360
    i32 12, label %373
    i32 13, label %386
    i32 14, label %393
    i32 15, label %407
  ]

.lr.ph446:                                        ; preds = %255, %288
  %264 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  %265 = call noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %264)
  %266 = call noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %264)
  br i1 %266, label %267, label %288

267:                                              ; preds = %.lr.ph446
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #9
  %268 = call noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %264)
  %269 = zext i32 %268 to i64
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8 %31, ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef %269)
          to label %270 unwind label %278

270:                                              ; preds = %267
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1) %32, i8 noundef zeroext 2)
  %271 = load i8, ptr %32, align 1
  %272 = invoke noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceneEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10) %31, i8 %271)
          to label %273 unwind label %280

273:                                              ; preds = %270
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #9
  br i1 %272, label %274, label %288

274:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  store ptr @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #9
  store ptr %33, ptr %35, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %264, ptr %275, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %34)
          to label %276 unwind label %283

276:                                              ; preds = %274
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  %277 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.7, ptr %277, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %277, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %560 unwind label %285

278:                                              ; preds = %267
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %282

280:                                              ; preds = %270
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %31) #9
  br label %282

282:                                              ; preds = %280, %278
  %.pn321 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #9
  br label %291

283:                                              ; preds = %274
  %284 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  br label %287

285:                                              ; preds = %276
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %287

287:                                              ; preds = %285, %283
  %.pn323 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %291

288:                                              ; preds = %273, %.lr.ph446
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  %290 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br i1 %290, label %.lr.ph446, label %._crit_edge447

291:                                              ; preds = %287, %282
  %.pn323.pn = phi { ptr, i32 } [ %.pn323, %287 ], [ %.pn321, %282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %557

292:                                              ; preds = %._crit_edge447
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 529, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

293:                                              ; preds = %._crit_edge447
  %294 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %295 = getelementptr inbounds i8, ptr %294, i64 32
  %296 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %295)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %421 unwind label %297

297:                                              ; preds = %293
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %557

299:                                              ; preds = %._crit_edge447
  %300 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %301 = getelementptr inbounds i8, ptr %300, i64 32
  %302 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %301)
  br label %421

303:                                              ; preds = %._crit_edge447
  %304 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %305 = getelementptr inbounds i8, ptr %304, i64 32
  %306 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %305)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %306)
          to label %421 unwind label %307

307:                                              ; preds = %303
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %557

309:                                              ; preds = %._crit_edge447
  %310 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %311 = getelementptr inbounds i8, ptr %310, i64 32
  %312 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %311)
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %313)
          to label %421 unwind label %314

314:                                              ; preds = %309
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %557

316:                                              ; preds = %._crit_edge447
  %317 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %318 = getelementptr inbounds i8, ptr %317, i64 32
  %319 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %318)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %319)
          to label %421 unwind label %320

320:                                              ; preds = %316
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %557

322:                                              ; preds = %._crit_edge447
  %323 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %324 = getelementptr inbounds i8, ptr %323, i64 32
  %325 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %324)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %325)
          to label %326 unwind label %328

326:                                              ; preds = %322
  %327 = getelementptr inbounds i8, ptr %325, i64 56
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %327)
          to label %421 unwind label %328

328:                                              ; preds = %326, %322
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %557

330:                                              ; preds = %._crit_edge447
  %331 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %332 = getelementptr inbounds i8, ptr %331, i64 32
  %333 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %332)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %333)
          to label %421 unwind label %334

334:                                              ; preds = %330
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %557

336:                                              ; preds = %._crit_edge447
  %337 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %338 = getelementptr inbounds i8, ptr %337, i64 32
  %339 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %338)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %339)
          to label %421 unwind label %340

340:                                              ; preds = %336
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %557

342:                                              ; preds = %._crit_edge447
  %343 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %344 = getelementptr inbounds i8, ptr %343, i64 32
  %345 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %344)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %345)
          to label %421 unwind label %346

346:                                              ; preds = %342
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %557

348:                                              ; preds = %._crit_edge447
  %349 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %350 = getelementptr inbounds i8, ptr %349, i64 32
  %351 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %350)
  %352 = call noundef ptr @_ZNK3MIR5Param10opt_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %351)
  %.not318 = icmp eq ptr %352, null
  br i1 %.not318, label %358, label %353

353:                                              ; preds = %348
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %352)
          to label %358 unwind label %356

354:                                              ; preds = %358
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %557

356:                                              ; preds = %353
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %557

358:                                              ; preds = %353, %348
  %359 = getelementptr inbounds i8, ptr %351, i64 48
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %359)
          to label %421 unwind label %354

360:                                              ; preds = %._crit_edge447
  %361 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %362 = getelementptr inbounds i8, ptr %361, i64 32
  %363 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %362)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  %364 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %363) #9
  store ptr %364, ptr %36, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  %365 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %363) #9
  store ptr %365, ptr %37, align 8
  %366 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %366, label %.lr.ph458, label %._crit_edge459

._crit_edge459:                                   ; preds = %368, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %421

.lr.ph458:                                        ; preds = %360, %368
  %367 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %367)
          to label %368 unwind label %371

368:                                              ; preds = %.lr.ph458
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  %370 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %370, label %.lr.ph458, label %._crit_edge459

371:                                              ; preds = %.lr.ph458
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %557

373:                                              ; preds = %._crit_edge447
  %374 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %375 = getelementptr inbounds i8, ptr %374, i64 32
  %376 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %375)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  %377 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %376) #9
  store ptr %377, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #9
  %378 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %376) #9
  store ptr %378, ptr %39, align 8
  %379 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br i1 %379, label %.lr.ph455, label %._crit_edge456

._crit_edge456:                                   ; preds = %381, %373
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %421

.lr.ph455:                                        ; preds = %373, %381
  %380 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %380)
          to label %381 unwind label %384

381:                                              ; preds = %.lr.ph455
  %382 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  %383 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br i1 %383, label %.lr.ph455, label %._crit_edge456

384:                                              ; preds = %.lr.ph455
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %557

386:                                              ; preds = %._crit_edge447
  %387 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %388 = getelementptr inbounds i8, ptr %387, i64 32
  %389 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %388)
  %390 = getelementptr inbounds i8, ptr %389, i64 40
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %390)
          to label %421 unwind label %391

391:                                              ; preds = %386
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %557

393:                                              ; preds = %._crit_edge447
  %394 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %395 = getelementptr inbounds i8, ptr %394, i64 32
  %396 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %395)
  %397 = getelementptr inbounds i8, ptr %396, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %398 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %397) #9
  store ptr %398, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  %399 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %397) #9
  store ptr %399, ptr %41, align 8
  %400 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br i1 %400, label %.lr.ph452, label %._crit_edge453

._crit_edge453:                                   ; preds = %402, %393
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %421

.lr.ph452:                                        ; preds = %393, %402
  %401 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %401)
          to label %402 unwind label %405

402:                                              ; preds = %.lr.ph452
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  %404 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br i1 %404, label %.lr.ph452, label %._crit_edge453

405:                                              ; preds = %.lr.ph452
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %557

407:                                              ; preds = %._crit_edge447
  %408 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  %409 = getelementptr inbounds i8, ptr %408, i64 32
  %410 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %409)
  %411 = getelementptr inbounds i8, ptr %410, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #9
  %412 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %411) #9
  store ptr %412, ptr %42, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  %413 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %411) #9
  store ptr %413, ptr %43, align 8
  %414 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br i1 %414, label %.lr.ph449, label %._crit_edge450

._crit_edge450:                                   ; preds = %416, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %421

.lr.ph449:                                        ; preds = %407, %416
  %415 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %415)
          to label %416 unwind label %419

416:                                              ; preds = %.lr.ph449
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  %418 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br i1 %418, label %.lr.ph449, label %._crit_edge450

419:                                              ; preds = %.lr.ph449
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %557

421:                                              ; preds = %386, %358, %342, %336, %330, %326, %316, %309, %303, %293, %._crit_edge450, %._crit_edge453, %._crit_edge456, %._crit_edge459, %299, %._crit_edge447
  %422 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %177)
  br label %.invoke

.loopexit372:                                     ; preds = %.invoke, %..loopexit369_crit_edge, %._crit_edge444, %191
  %423 = add i32 %.0263461, 1
  %424 = zext i32 %423 to i64
  %425 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  %426 = icmp ugt i64 %425, %424
  br i1 %426, label %.lr.ph462, label %._crit_edge463, !llvm.loop !41

427:                                              ; preds = %._crit_edge463
  br i1 %175, label %428, label %.lr.ph901

428:                                              ; preds = %427
  %429 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !30
  %430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %429, ptr noundef nonnull @__func__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE)
          to label %431 unwind label %440

431:                                              ; preds = %428
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %433 unwind label %440

433:                                              ; preds = %431
  %434 = getelementptr inbounds i8, ptr %173, i64 24
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %432, ptr noundef nonnull align 8 dereferenceable(168) %434)
          to label %436 unwind label %440

436:                                              ; preds = %433
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %438 unwind label %440

438:                                              ; preds = %436
  %439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %437, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph901 unwind label %440

440:                                              ; preds = %438, %436, %433, %431, %428, %._crit_edge463
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %557

.lr.ph901:                                        ; preds = %427, %438
  %442 = getelementptr inbounds i8, ptr %173, i64 24
  %443 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  switch i32 %443, label %.loopexit373 [
    i32 0, label %454
    i32 1, label %.preheader351
    i32 2, label %.preheader353
    i32 3, label %.preheader355
    i32 4, label %.preheader357
    i32 5, label %.preheader359
    i32 6, label %.preheader361
    i32 7, label %.preheader363
    i32 8, label %.lr.ph474
    i32 9, label %.lr.ph468
  ]

.preheader363:                                    ; preds = %.lr.ph901
  %444 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  %445 = getelementptr inbounds i8, ptr %444, i64 32
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %444)
          to label %488 unwind label %.split482.split

.preheader361:                                    ; preds = %.lr.ph901
  %446 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  %447 = getelementptr inbounds i8, ptr %446, i64 36
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %446)
          to label %479 unwind label %.split527.split

.preheader359:                                    ; preds = %.lr.ph901
  %448 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  br label %.loopexit373

.preheader357:                                    ; preds = %.lr.ph901
  %449 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  %450 = load i32, ptr %449, align 4, !tbaa !30
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %450, ptr noundef nonnull %47, ptr noundef nonnull %48)
          to label %..loopexit345_crit_edge unwind label %.split604.split

.preheader355:                                    ; preds = %.lr.ph901
  %451 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  br label %.loopexit373

.preheader353:                                    ; preds = %.lr.ph901
  %452 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  invoke void @_ZN3MIR6LValue10new_ReturnEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %44)
          to label %455 unwind label %.split672.split

.preheader351:                                    ; preds = %.lr.ph901
  %453 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  br label %.loopexit373

454:                                              ; preds = %.lr.ph901
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 545, ptr noundef nonnull @__PRETTY_FUNCTION__._Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE) #10
  unreachable

455:                                              ; preds = %.preheader353
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %456 unwind label %.split675.split

456:                                              ; preds = %455
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  %457 = call noundef i64 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77)
  %.not909 = icmp eq i64 %457, 0
  br i1 %.not909, label %.loopexit373, label %.lr.ph668

.split672.split:                                  ; preds = %.preheader353
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %460

.split675.split:                                  ; preds = %455
  %459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %460

460:                                              ; preds = %.split675.split, %.split672.split
  %.pn312 = phi { ptr, i32 } [ %459, %.split675.split ], [ %458, %.split672.split ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %557

.split681.split:                                  ; preds = %467
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %557

.lr.ph668:                                        ; preds = %456, %472
  %462 = phi i64 [ %474, %472 ], [ 0, %456 ]
  %.0290666 = phi i32 [ %473, %472 ], [ 0, %456 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind nonnull writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8 %45, ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef %462)
          to label %463 unwind label %.split678.split

463:                                              ; preds = %.lr.ph668
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1) %46, i8 noundef zeroext 0)
  %464 = load i8, ptr %46, align 1
  %465 = call noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceeqEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10) %45, i8 %464)
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10) %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  br i1 %465, label %472, label %467

.split678.split:                                  ; preds = %.lr.ph668
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  br label %557

467:                                              ; preds = %463
  %468 = load ptr, ptr %78, align 8, !tbaa !42
  %469 = load ptr, ptr %79, align 8, !tbaa !43
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %462) #9
  %471 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %468, ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef nonnull align 8 dereferenceable(8) %470)
          to label %472 unwind label %.split681.split

472:                                              ; preds = %463, %467
  %473 = add i32 %.0290666, 1
  %474 = zext i32 %473 to i64
  %475 = call noundef i64 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77)
  %476 = icmp ugt i64 %475, %474
  br i1 %476, label %.lr.ph668, label %.loopexit373, !llvm.loop !44

..loopexit345_crit_edge:                          ; preds = %.preheader357
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %48) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  br label %.loopexit373

.split604.split:                                  ; preds = %.preheader357
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %48) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  br label %557

.split527.split:                                  ; preds = %479, %.preheader361
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %557

479:                                              ; preds = %.preheader361
  %480 = getelementptr inbounds i8, ptr %446, i64 32
  %481 = load i32, ptr %480, align 8, !tbaa !45
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %482 unwind label %.split527.split

482:                                              ; preds = %479
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %481, ptr noundef nonnull %49, ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %483 unwind label %.split530.split

483:                                              ; preds = %482
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  %484 = load i32, ptr %447, align 4, !tbaa !47
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %51, ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %484, ptr noundef nonnull %50, ptr noundef nonnull %51)
          to label %..loopexit347_crit_edge unwind label %.split533.split

..loopexit347_crit_edge:                          ; preds = %483
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %51) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  br label %.loopexit373

.split530.split:                                  ; preds = %482
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  br label %557

.split533.split:                                  ; preds = %483
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %51) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #9
  br label %557

.split482.split:                                  ; preds = %.preheader363
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %557

488:                                              ; preds = %.preheader363
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  %489 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %445) #9
  store ptr %489, ptr %52, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #9
  %490 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %445) #9
  store ptr %490, ptr %53, align 8
  %491 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br i1 %491, label %.lr.ph477, label %..loopexit348_crit_edge

..loopexit348_crit_edge:                          ; preds = %497, %488
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %.loopexit373

.lr.ph477:                                        ; preds = %488, %497
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  %493 = load i32, ptr %492, align 4, !tbaa !30
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %494 unwind label %.split485.split

494:                                              ; preds = %.lr.ph477
  %495 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %445) #9
  %496 = icmp eq ptr %492, %495
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_4clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStatesb"(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %493, ptr noundef nonnull %54, ptr noundef nonnull align 8 dereferenceable(56) %13, i1 noundef zeroext %496)
          to label %497 unwind label %.split488.split

497:                                              ; preds = %494
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  %499 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br i1 %499, label %.lr.ph477, label %..loopexit348_crit_edge

.split485.split:                                  ; preds = %.lr.ph477
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %502

.split488.split:                                  ; preds = %494
  %501 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  br label %502

502:                                              ; preds = %.split488.split, %.split485.split
  %.pn307 = phi { ptr, i32 } [ %501, %.split488.split ], [ %500, %.split485.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %557

.lr.ph474:                                        ; preds = %.lr.ph901
  %503 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  %504 = getelementptr inbounds i8, ptr %503, i64 32
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %503)
          to label %507 unwind label %505

505:                                              ; preds = %._crit_edge472, %.lr.ph474
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %557

507:                                              ; preds = %.lr.ph474
  %508 = getelementptr inbounds i8, ptr %503, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #9
  %509 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %508) #9
  store ptr %509, ptr %55, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  %510 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %508) #9
  store ptr %510, ptr %56, align 8
  %511 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %511, label %.lr.ph471, label %._crit_edge472

._crit_edge472:                                   ; preds = %516, %507
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  %512 = load i32, ptr %504, align 8, !tbaa !48
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %524 unwind label %505

.lr.ph471:                                        ; preds = %507, %516
  %513 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %514 = load i32, ptr %513, align 4, !tbaa !30
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %515 unwind label %519

515:                                              ; preds = %.lr.ph471
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %514, ptr noundef nonnull %57, ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %516 unwind label %521

516:                                              ; preds = %515
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %518 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %518, label %.lr.ph471, label %._crit_edge472

519:                                              ; preds = %.lr.ph471
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %523

521:                                              ; preds = %515
  %522 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  br label %523

523:                                              ; preds = %521, %519
  %.pn304 = phi { ptr, i32 } [ %522, %521 ], [ %520, %519 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  br label %557

524:                                              ; preds = %._crit_edge472
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %59, ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %512, ptr noundef nonnull %58, ptr noundef nonnull %59)
          to label %..loopexit349_crit_edge unwind label %525

..loopexit349_crit_edge:                          ; preds = %524
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %59) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  br label %.loopexit373

525:                                              ; preds = %524
  %526 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %59) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  br label %557

.lr.ph468:                                        ; preds = %.lr.ph901
  %527 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %442)
  %528 = getelementptr inbounds i8, ptr %527, i64 40
  %529 = getelementptr inbounds i8, ptr %527, i64 136
  %530 = getelementptr inbounds i8, ptr %527, i64 4
  %531 = getelementptr inbounds i8, ptr %527, i64 8
  %532 = call noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %528)
  br i1 %532, label %535, label %537

533:                                              ; preds = %549, %._crit_edge466, %535
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %557

535:                                              ; preds = %.lr.ph468
  %536 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %528)
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %536)
          to label %537 unwind label %533

537:                                              ; preds = %535, %.lr.ph468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #9
  %538 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %529) #9
  store ptr %538, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #9
  %539 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %529) #9
  store ptr %539, ptr %61, align 8
  %540 = 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) #9
  br i1 %540, label %.lr.ph465, label %._crit_edge466

._crit_edge466:                                   ; preds = %543, %537
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  %541 = load i32, ptr %530, align 4, !tbaa !52
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %548 unwind label %533

.lr.ph465:                                        ; preds = %537, %543
  %542 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(48) %542)
          to label %543 unwind label %546

543:                                              ; preds = %.lr.ph465
  %544 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  %545 = 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) #9
  br i1 %545, label %.lr.ph465, label %._crit_edge466

546:                                              ; preds = %.lr.ph465
  %547 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %557

548:                                              ; preds = %._crit_edge466
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %541, ptr noundef nonnull %62, ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %549 unwind label %552

549:                                              ; preds = %548
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  invoke void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %531, i1 noundef zeroext true)
          to label %550 unwind label %533

550:                                              ; preds = %549
  %551 = load i32, ptr %527, align 8, !tbaa !60
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56) %64, ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  invoke void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %551, ptr noundef nonnull %63, ptr noundef nonnull %64)
          to label %..loopexit350_crit_edge unwind label %554

..loopexit350_crit_edge:                          ; preds = %550
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %64) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  br label %.loopexit373

552:                                              ; preds = %548
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  br label %557

554:                                              ; preds = %550
  %555 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %64) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  br label %557

.loopexit373:                                     ; preds = %472, %.preheader359, %.preheader355, %.preheader351, %..loopexit350_crit_edge, %..loopexit349_crit_edge, %456, %..loopexit348_crit_edge, %..loopexit347_crit_edge, %..loopexit345_crit_edge, %.lr.ph901, %105, %126
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #9
  %556 = call noundef i64 @_ZNKSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %.not = icmp eq i64 %556, 0
  br i1 %.not, label %._crit_edge907, label %80

557:                                              ; preds = %.loopexit374, %.loopexit.split-lp, %.loopexit375, %.loopexit.split-lp376, %440, %354, %356, %419, %405, %391, %384, %371, %346, %340, %334, %328, %320, %314, %307, %297, %291, %.split.split.split.split, %231, %224, %533, %546, %552, %554, %505, %523, %525, %.split482.split, %502, %.split527.split, %.split530.split, %.split533.split, %460, %.split678.split, %.split681.split, %.split604.split, %172, %142, %140, %131
  %.pn326.pn.pn = phi { ptr, i32 } [ %.pn300, %172 ], [ %143, %142 ], [ %141, %140 ], [ %.pn298, %131 ], [ %441, %440 ], [ %246, %.split.split.split.split ], [ %225, %224 ], [ %232, %231 ], [ %.pn323.pn, %291 ], [ %420, %419 ], [ %406, %405 ], [ %392, %391 ], [ %385, %384 ], [ %372, %371 ], [ %347, %346 ], [ %341, %340 ], [ %335, %334 ], [ %329, %328 ], [ %321, %320 ], [ %315, %314 ], [ %308, %307 ], [ %298, %297 ], [ %355, %354 ], [ %357, %356 ], [ %477, %.split604.split ], [ %.pn312, %460 ], [ %461, %.split681.split ], [ %466, %.split678.split ], [ %486, %.split533.split ], [ %485, %.split530.split ], [ %478, %.split527.split ], [ %.pn307, %502 ], [ %487, %.split482.split ], [ %.pn304, %523 ], [ %526, %525 ], [ %506, %505 ], [ %547, %546 ], [ %555, %554 ], [ %534, %533 ], [ %553, %552 ], [ %lpad.loopexit377, %.loopexit375 ], [ %lpad.loopexit.split-lp378, %.loopexit.split-lp376 ], [ %lpad.loopexit, %.loopexit374 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #9
  br label %558

._crit_edge907:                                   ; preds = %.loopexit373, %.split904
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #9
  ret void

558:                                              ; preds = %557, %97
  %.pn326.pn.pn.pn = phi { ptr, i32 } [ %.pn326.pn.pn, %557 ], [ %.pn, %97 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  br label %559

559:                                              ; preds = %558, %91
  %.pn326.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn326.pn.pn.pn, %558 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #9
  resume { ptr, i32 } %.pn326.pn.pn.pn.pn

560:                                              ; preds = %276, %193, %139
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_5clEjSt6vectorIjSaIjEEZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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 #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2Emm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i64 noundef) unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE7ToVisitSaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStatesC2EOS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS0_8FunctionEE9ValStatesSaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5mergeEjRS5_(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #0 align 2

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

; 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 #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS4_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 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 #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 #3 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates12ensure_validERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates13mark_validityERKS0_RKNS_6LValueEb(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #0 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 #3 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 #3 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 #3 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 #3 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 #3 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 #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 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 #3 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 #3 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 #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 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 #3 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 #3 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 #3 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 #3 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 #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecixEm(ptr dead_on_unwind noalias writable sret(%"class.MIR_Validate_ValState(::MIR::TypeResolve &, const ::MIR::Function &)::ValStates::StateVec::reference") align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceneEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10), i8) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateC2Eh(ptr noundef nonnull align 1 dereferenceable(1), i8 noundef zeroext) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVec9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(10)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8move_valERKS0_RKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 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 #3 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 #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 #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 #3 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 #3 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 #3 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 #3 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 #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3MIR5Param10opt_LValueEv(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(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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 #3 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 #3 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 #3 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 #3 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 #3 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 #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 #3 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 #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 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 #3 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 #3 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 #0 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 hidden noundef zeroext i1 @_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK9ValStates8StateVec9referenceeqEZ21MIR_Validate_ValStateS1_S4_ENS5_5StateE(ptr noundef nonnull align 8 dereferenceable(10), i8) local_unnamed_addr #3 align 2

declare noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 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 #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_6clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStates"(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEENK3$_4clEjSt6vectorIjSaIjEERZ21MIR_Validate_ValStateS1_S4_E9ValStatesb"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 72}
!10 = !{!"_ZTSN3MIR11TypeResolveE", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !11, i64 112, !11, i64 116}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS9FmtLambda", !13, i64 0}
!13 = !{!"_ZTSSt8functionIFvRSoEE", !14, i64 0, !6, i64 24}
!14 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!15 = !{!16, !11, i64 0}
!16 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEE7ToVisit", !11, i64 0, !17, i64 8, !21, i64 32}
!17 = !{!"_ZTSSt6vectorIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEE9ValStates", !22, i64 0, !23, i64 8, !23, i64 32}
!22 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates5StateE", !7, i64 0}
!23 = !{!"_ZTSZ21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionEEN9ValStates8StateVecE", !24, i64 0}
!24 = !{!"_ZTSSt6vectorIhSaIhEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!11, !11, i64 0}
!31 = !{!32, !11, i64 40}
!32 = !{!"_ZTSN3MIR9Statement9Data_DropE", !33, i64 0, !34, i64 8, !11, i64 40}
!33 = !{!"_ZTSN3MIR9eDropKindE", !7, i64 0}
!34 = !{!"_ZTSN3MIR6LValueE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSN3MIR6LValue7StorageE", !36, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = distinct !{!41, !29}
!42 = !{!10, !6, i64 16}
!43 = !{!10, !6, i64 8}
!44 = distinct !{!44, !29}
!45 = !{!46, !11, i64 32}
!46 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !34, i64 0, !11, i64 32, !11, i64 36}
!47 = !{!46, !11, i64 36}
!48 = !{!49, !11, i64 32}
!49 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !34, i64 0, !11, i64 32, !17, i64 40, !50, i64 64}
!50 = !{!"_ZTSN3MIR12SwitchValuesE", !51, i64 0, !7, i64 8}
!51 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!52 = !{!53, !11, i64 4}
!53 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !11, i64 0, !11, i64 4, !34, i64 8, !54, i64 40, !56, i64 136}
!54 = !{!"_ZTSN3MIR10CallTargetE", !55, i64 0, !7, i64 8}
!55 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!56 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!53, !11, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass