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

; 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"

%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.216 = type { i8 }
%class.anon.218 = type { ptr }
%"class.std::vector.219" = type { %"struct.std::_Vector_base.220" }
%"struct.std::_Vector_base.220" = type { %"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl" }
%"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl" = type { %"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.221" = type { i8 }
%class.anon.224 = type { ptr }
%class.anon.225 = type { ptr, ptr }
%"class.std::function.226" = type { %"class.std::_Function_base", ptr }
%"struct.(anonymous namespace)::StmtRef" = type { i32, i32 }
%"class.std::function.228" = type { %"class.std::_Function_base", ptr }
%class.anon.234 = type { ptr }
%"class.std::function.231" = type { %"class.std::_Function_base", ptr }
%class.anon.235 = type { ptr }
%class.anon.236 = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"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" }
%"class.__gnu_cxx::__normal_iterator.237" = type { ptr }
%class.anon.254 = type { ptr, ptr }
%class.anon.255 = type { ptr, ptr }
%class.anon.256 = type { i8 }
%class.anon.258 = type { ptr, ptr }
%class.anon.259 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.260" = type { ptr }
%class.anon.261 = type { i8 }
%class.anon.263 = type { ptr, ptr, ptr }
%class.anon.264 = type { ptr }
%class.anon.265 = type { ptr, ptr }
%class.anon.266 = type { ptr, ptr, ptr }
%"class.std::function.267" = type { %"class.std::_Function_base", ptr }
%"class.MIR::Function" = type { %"class.std::vector.20", %"class.std::vector.25", %"class.std::vector.29", %"class.MIR::EnumCachePtr" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.25" = 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.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::EnumCachePtr" = type { ptr }
%struct.LocalUsage = type { i32, i32, i32, %"struct.(anonymous namespace)::StmtRef", %"struct.(anonymous namespace)::StmtRef" }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.101", %"class.MIR::Terminator" }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = 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.138" }
%"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.133, %class.ThinVector.134, %class.ThinVector.135 }
%class.ThinVector.133 = type { ptr }
%class.ThinVector.134 = type { ptr }
%class.ThinVector.135 = 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.137" }
%"struct.std::_Head_base.137" = type { ptr }
%"class.std::vector.138" = type { %"struct.std::_Vector_base.139" }
%"struct.std::_Vector_base.139" = 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_Asm2" = type { %"struct.AsmCommon::Options", %"class.std::vector.178", %"class.std::vector.183" }
%"struct.AsmCommon::Options" = type { i8, [3 x i8] }
%"class.std::vector.178" = type { %"struct.std::_Vector_base.179" }
%"struct.std::_Vector_base.179" = 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.183" = type { %"struct.std::_Vector_base.184" }
%"struct.std::_Vector_base.184" = 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.238", %"class.std::unique_ptr.246" }
%"class.AsmCommon::RegisterSpec" = type { i32, %"union.AsmCommon::RegisterSpec::DataUnion" }
%"union.AsmCommon::RegisterSpec::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr.238" = type { %"struct.std::__uniq_ptr_data.239" }
%"struct.std::__uniq_ptr_data.239" = type { %"class.std::__uniq_ptr_impl.240" }
%"class.std::__uniq_ptr_impl.240" = type { %"class.std::tuple.241" }
%"class.std::tuple.241" = type { %"struct.std::_Tuple_impl.242" }
%"struct.std::_Tuple_impl.242" = type { %"struct.std::_Head_base.245" }
%"struct.std::_Head_base.245" = type { ptr }
%"class.std::unique_ptr.246" = type { %"struct.std::__uniq_ptr_data.247" }
%"struct.std::__uniq_ptr_data.247" = type { %"class.std::__uniq_ptr_impl.248" }
%"class.std::__uniq_ptr_impl.248" = type { %"class.std::tuple.249" }
%"class.std::tuple.249" = type { %"struct.std::_Tuple_impl.250" }
%"struct.std::_Tuple_impl.250" = type { %"struct.std::_Head_base.253" }
%"struct.std::_Head_base.253" = type { ptr }

@g_debug_indent_level = external global i32, align 4
@.str.8 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [41 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [87 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [6 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

declare noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.216, align 1
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.218, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector.219", align 8
  %14 = alloca %"class.std::allocator.221", align 1
  %15 = alloca %class.anon.224, align 8
  %16 = alloca %class.anon.225, align 8
  %17 = alloca %"class.std::function.226", align 8
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"struct.MIR::LValue", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %25 = alloca ptr, align 8
  %26 = alloca i8, align 1
  %27 = alloca %"class.std::function.228", align 8
  %28 = alloca %class.anon.234, align 8
  %29 = alloca %"class.std::function.231", align 8
  %30 = alloca %class.anon.235, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca %"struct.MIR::LValue", align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.236, align 8
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.MIR::Statement", align 8
  %41 = alloca i8, align 1
  %42 = alloca ptr, align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.237", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.237", align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"struct.MIR::LValue", align 8
  %51 = alloca %"struct.MIR::LValue", align 8
  %52 = alloca %"class.MIR::Statement", align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.std::function", align 8
  %55 = alloca %class.anon.254, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::function", align 8
  %58 = alloca %class.anon.255, align 8
  %59 = alloca ptr, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.256, align 1
  %62 = alloca ptr, align 8
  %63 = alloca %"struct.MIR::LValue", align 8
  %64 = alloca %"class.MIR::Statement", align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca i8, align 1
  %68 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %69 = alloca i8, align 1
  %70 = alloca %"class.std::function.228", align 8
  %71 = alloca %class.anon.258, align 8
  %72 = alloca %"class.std::function.231", align 8
  %73 = alloca %class.anon.259, align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.260", align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator.260", align 8
  %76 = alloca %class.anon.261, align 1
  %77 = alloca i8, align 1
  %78 = alloca %class.anon.263, align 8
  %79 = alloca %"class.std::function.228", align 8
  %80 = alloca %class.anon.264, align 8
  %81 = alloca %"class.std::function.231", align 8
  %82 = alloca %class.anon.265, align 8
  %83 = alloca %class.anon.266, align 8
  %84 = alloca ptr, align 8
  %85 = alloca i8, align 1
  %86 = alloca %"class.std::function.267", align 8
  %87 = alloca %"class.MIR::Statement", align 8
  %88 = alloca ptr, align 8
  %89 = alloca i8, align 1
  %90 = alloca %"class.std::function.267", align 8
  %91 = alloca %"class.MIR::Statement", 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 1, ptr %5) #9
  store i8 0, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %6) #9
  %92 = call noundef zeroext i1 @_Z13debug_enabledv()
  %93 = zext i1 %92 to i64
  %94 = select i1 %92, ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %95 = getelementptr inbounds %class.anon.218, ptr %10, i32 0, i32 0
  store ptr %5, ptr %95, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %94, ptr noundef %7, ptr noundef %9)
          to label %96 unwind label %115

96:                                               ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #9
  %97 = load ptr, ptr %4, align 8, !tbaa !5
  %98 = getelementptr inbounds %"class.MIR::Function", ptr %97, i32 0, i32 0
  %99 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #9
  call void @_ZNSaIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionEE10LocalUsageEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %99, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %100 unwind label %119

100:                                              ; preds = %96
  call void @_ZNSt15__new_allocatorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %101 = getelementptr inbounds %class.anon.224, ptr %15, i32 0, i32 0
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %102, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #9
  %103 = getelementptr inbounds %class.anon.225, ptr %16, i32 0, i32 0
  store ptr %13, ptr %103, align 8, !tbaa !5
  %104 = getelementptr inbounds %class.anon.225, ptr %16, i32 0, i32 1
  store ptr %15, ptr %104, align 8, !tbaa !5
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  invoke void @_ZN12_GLOBAL__N_117visit_mir_lvaluesERN3MIR11TypeResolveERKNS0_8FunctionESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(120) %105, ptr noundef nonnull align 8 dereferenceable(96) %106, ptr noundef %17)
          to label %107 unwind label %123

107:                                              ; preds = %100
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  store i64 0, ptr %18, align 8, !tbaa !11
  br label %108

108:                                              ; preds = %1426, %107
  %109 = load i64, ptr %18, align 8, !tbaa !11
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %"class.MIR::Function", ptr %110, i32 0, i32 0
  %112 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #9
  %113 = icmp ult i64 %109, %112
  br i1 %113, label %127, label %114

114:                                              ; preds = %108
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %1431

115:                                              ; preds = %2
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %11, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  br label %1436

119:                                              ; preds = %96
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %11, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #9
  br label %1435

123:                                              ; preds = %100
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %11, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %1434

127:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %128 = load i64, ptr %18, align 8, !tbaa !11
  %129 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %128) #9
  store ptr %129, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #9
  %130 = load i64, ptr %18, align 8, !tbaa !11
  %131 = trunc i64 %130 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %21, i32 noundef %131)
          to label %132 unwind label %170

132:                                              ; preds = %127
  br label %133

133:                                              ; preds = %132
  %134 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %135 unwind label %174

135:                                              ; preds = %133
  br i1 %134, label %136, label %178

136:                                              ; preds = %135
  %137 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %137, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %139 unwind label %174

139:                                              ; preds = %136
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef @.str.22)
          to label %141 unwind label %174

141:                                              ; preds = %139
  %142 = load i64, ptr %18, align 8, !tbaa !11
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %140, i64 noundef %142)
          to label %144 unwind label %174

144:                                              ; preds = %141
  %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef @.str.23)
          to label %146 unwind label %174

146:                                              ; preds = %144
  %147 = load ptr, ptr %20, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.LocalUsage, ptr %147, i32 0, i32 0
  %149 = load i32, ptr %148, align 4, !tbaa !15
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %145, i32 noundef %149)
          to label %151 unwind label %174

151:                                              ; preds = %146
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef @.str.24)
          to label %153 unwind label %174

153:                                              ; preds = %151
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.LocalUsage, ptr %154, i32 0, i32 1
  %156 = load i32, ptr %155, align 4, !tbaa !18
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %152, i32 noundef %156)
          to label %158 unwind label %174

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

160:                                              ; preds = %158
  %161 = load ptr, ptr %20, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.LocalUsage, ptr %161, i32 0, i32 2
  %163 = load i32, ptr %162, align 4, !tbaa !19
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %159, i32 noundef %163)
          to label %165 unwind label %174

165:                                              ; preds = %160
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef @_ZSt3decRSt8ios_base)
          to label %167 unwind label %174

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

169:                                              ; preds = %167
  br label %178

170:                                              ; preds = %127
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %11, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %12, align 4
  br label %1430

174:                                              ; preds = %221, %219, %215, %213, %209, %207, %204, %202, %199, %196, %167, %165, %160, %158, %153, %151, %146, %144, %141, %139, %136, %133
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %11, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %12, align 4
  br label %1429

178:                                              ; preds = %169, %135
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.LocalUsage, ptr %181, i32 0, i32 0
  %183 = load i32, ptr %182, align 4, !tbaa !15
  %184 = icmp eq i32 %183, 1
  br i1 %184, label %185, label %1422

185:                                              ; preds = %180
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.LocalUsage, ptr %186, i32 0, i32 1
  %188 = load i32, ptr %187, align 4, !tbaa !18
  %189 = icmp eq i32 %188, 1
  br i1 %189, label %190, label %1422

190:                                              ; preds = %185
  %191 = load ptr, ptr %20, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.LocalUsage, ptr %191, i32 0, i32 2
  %193 = load i32, ptr %192, align 4, !tbaa !19
  %194 = icmp eq i32 %193, 0
  br i1 %194, label %195, label %1422

195:                                              ; preds = %190
  br label %196

196:                                              ; preds = %195
  %197 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %198 unwind label %174

198:                                              ; preds = %196
  br i1 %197, label %199, label %224

199:                                              ; preds = %198
  %200 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %200, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %202 unwind label %174

202:                                              ; preds = %199
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef @.str.25)
          to label %204 unwind label %174

204:                                              ; preds = %202
  %205 = load i64, ptr %18, align 8, !tbaa !11
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %203, i64 noundef %205)
          to label %207 unwind label %174

207:                                              ; preds = %204
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef @.str.26)
          to label %209 unwind label %174

209:                                              ; preds = %207
  %210 = load ptr, ptr %20, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.LocalUsage, ptr %210, i32 0, i32 3
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_1lsERSoRKNS_7StmtRefE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 4 dereferenceable(8) %211)
          to label %213 unwind label %174

213:                                              ; preds = %209
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef @.str.27)
          to label %215 unwind label %174

215:                                              ; preds = %213
  %216 = load ptr, ptr %20, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.LocalUsage, ptr %216, i32 0, i32 4
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_1lsERSoRKNS_7StmtRefE(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull align 4 dereferenceable(8) %217)
          to label %219 unwind label %174

219:                                              ; preds = %215
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef @_ZSt3decRSt8ios_base)
          to label %221 unwind label %174

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %223 unwind label %174

223:                                              ; preds = %221
  br label %224

224:                                              ; preds = %223, %198
  br label %225

225:                                              ; preds = %224
  br label %226

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %"class.MIR::Function", ptr %227, i32 0, i32 2
  %229 = load ptr, ptr %20, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.LocalUsage, ptr %229, i32 0, i32 4
  %231 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %230, i32 0, i32 0
  %232 = load i32, ptr %231, align 4, !tbaa !20
  %233 = zext i32 %232 to i64
  %234 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %228, i64 noundef %233) #9
  store ptr %234, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %"class.MIR::Function", ptr %235, i32 0, i32 2
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.LocalUsage, ptr %237, i32 0, i32 3
  %239 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %238, i32 0, i32 0
  %240 = load i32, ptr %239, align 4, !tbaa !21
  %241 = zext i32 %240 to i64
  %242 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef %241) #9
  store ptr %242, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %243 = load ptr, ptr %20, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.LocalUsage, ptr %243, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %24, ptr align 4 %244, i64 8, i1 false), !tbaa.struct !22
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.LocalUsage, ptr %245, i32 0, i32 3
  %247 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %246, i32 0, i32 1
  %248 = load i32, ptr %247, align 4, !tbaa !23
  %249 = zext i32 %248 to i64
  %250 = load ptr, ptr %23, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %250, i32 0, i32 0
  %252 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #9
  %253 = icmp ult i64 %249, %252
  br i1 %253, label %254, label %258

254:                                              ; preds = %226
  %255 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %24, i32 0, i32 1
  %256 = load i32, ptr %255, align 4, !tbaa !24
  %257 = add i32 %256, 1
  store i32 %257, ptr %255, align 4, !tbaa !24
  br label %271

258:                                              ; preds = %226
  %259 = load ptr, ptr %23, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %259, i32 0, i32 1
  %261 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %260)
          to label %262 unwind label %267

262:                                              ; preds = %258
  %263 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %261, i32 0, i32 0
  %264 = load i32, ptr %263, align 8, !tbaa !25
  %265 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %24, i32 0, i32 0
  store i32 %264, ptr %265, align 4, !tbaa !39
  %266 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %24, i32 0, i32 1
  store i32 0, ptr %266, align 4, !tbaa !24
  br label %271

267:                                              ; preds = %1411, %1409, %1405, %1403, %1400, %1397, %1390, %1388, %1378, %1376, %1373, %1370, %1353, %1351, %1347, %1345, %1342, %1339, %1332, %1330, %1320, %1318, %1315, %1312, %1296, %1294, %1292, %1289, %1286, %899, %889, %878, %319, %316, %306, %302, %292, %281, %258
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %11, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %12, align 4
  br label %1421

271:                                              ; preds = %262, %254
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.LocalUsage, ptr %272, i32 0, i32 4
  %274 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %273, i32 0, i32 1
  %275 = load i32, ptr %274, align 4, !tbaa !40
  %276 = zext i32 %275 to i64
  %277 = load ptr, ptr %22, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %277, i32 0, i32 0
  %279 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %278) #9
  %280 = icmp ult i64 %276, %279
  br i1 %280, label %281, label %868

281:                                              ; preds = %271
  %282 = load ptr, ptr %22, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %282, i32 0, i32 0
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.LocalUsage, ptr %284, i32 0, i32 4
  %286 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %285, i32 0, i32 1
  %287 = load i32, ptr %286, align 4, !tbaa !40
  %288 = zext i32 %287 to i64
  %289 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef %288) #9
  %290 = invoke noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %289)
          to label %291 unwind label %267

291:                                              ; preds = %281
  br i1 %290, label %292, label %868

292:                                              ; preds = %291
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %293, i32 0, i32 0
  %295 = load ptr, ptr %20, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.LocalUsage, ptr %295, i32 0, i32 4
  %297 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %296, i32 0, i32 1
  %298 = load i32, ptr %297, align 4, !tbaa !40
  %299 = zext i32 %298 to i64
  %300 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %294, i64 noundef %299) #9
  %301 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %300)
          to label %302 unwind label %267

302:                                              ; preds = %292
  %303 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %301, i32 0, i32 1
  %304 = invoke noundef zeroext i1 @_ZNK3MIR6RValue6is_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %303)
          to label %305 unwind label %267

305:                                              ; preds = %302
  br i1 %304, label %306, label %868

306:                                              ; preds = %305
  %307 = load ptr, ptr %22, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %307, i32 0, i32 0
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.LocalUsage, ptr %309, i32 0, i32 4
  %311 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %310, i32 0, i32 1
  %312 = load i32, ptr %311, align 4, !tbaa !40
  %313 = zext i32 %312 to i64
  %314 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %313) #9
  %315 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %314)
          to label %316 unwind label %267

316:                                              ; preds = %306
  %317 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %315, i32 0, i32 1
  %318 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %317)
          to label %319 unwind label %267

319:                                              ; preds = %316
  %320 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %321 unwind label %267

321:                                              ; preds = %319
  br i1 %320, label %322, label %868

322:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %323, i32 0, i32 0
  %325 = load ptr, ptr %20, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.LocalUsage, ptr %325, i32 0, i32 4
  %327 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %326, i32 0, i32 1
  %328 = load i32, ptr %327, align 4, !tbaa !40
  %329 = zext i32 %328 to i64
  %330 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef %329) #9
  %331 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %330)
          to label %332 unwind label %370

332:                                              ; preds = %322
  %333 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %331, i32 0, i32 0
  store ptr %333, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.LocalUsage, ptr %335, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %337 = getelementptr inbounds %class.anon.234, ptr %28, i32 0, i32 0
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %338, ptr %337, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %339 = getelementptr inbounds %class.anon.235, ptr %30, i32 0, i32 0
  %340 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %340, ptr %339, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %341 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %334, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %336, ptr noundef %27, ptr noundef %29)
          to label %342 unwind label %374

342:                                              ; preds = %332
  %343 = icmp ne i32 2, %341
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #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
  %344 = zext i1 %343 to i8
  store i8 %344, ptr %26, align 1, !tbaa !9
  %345 = load i8, ptr %26, align 1, !tbaa !9, !range !41, !noundef !42
  %346 = trunc i8 %345 to i1
  br i1 %346, label %844, label %347

347:                                              ; preds = %342
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.LocalUsage, ptr %348, i32 0, i32 3
  %350 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %349, i32 0, i32 1
  %351 = load i32, ptr %350, align 4, !tbaa !23
  %352 = zext i32 %351 to i64
  %353 = load ptr, ptr %23, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %353, i32 0, i32 0
  %355 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %354) #9
  %356 = icmp ult i64 %352, %355
  br i1 %356, label %357, label %742

357:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %358 = load ptr, ptr %23, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %358, i32 0, i32 0
  %360 = load ptr, ptr %20, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.LocalUsage, ptr %360, i32 0, i32 3
  %362 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %361, i32 0, i32 1
  %363 = load i32, ptr %362, align 4, !tbaa !23
  %364 = zext i32 %363 to i64
  %365 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %364) #9
  store ptr %365, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  store i8 1, ptr %32, align 1, !tbaa !9
  br label %366

366:                                              ; preds = %740, %357
  %367 = load i8, ptr %32, align 1, !tbaa !9, !range !41, !noundef !42
  %368 = trunc i8 %367 to i1
  br i1 %368, label %378, label %369

369:                                              ; preds = %366
  store i32 9, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  br label %741

370:                                              ; preds = %322
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %11, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %12, align 4
  br label %867

374:                                              ; preds = %332
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %11, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #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
  br label %866

378:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %379 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %379, ptr %33, align 8, !tbaa !5
  br label %380

380:                                              ; preds = %737, %378
  %381 = load i8, ptr %32, align 1, !tbaa !9, !range !41, !noundef !42
  %382 = trunc i8 %381 to i1
  br i1 %382, label %384, label %383

383:                                              ; preds = %380
  store i32 12, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %739

384:                                              ; preds = %380
  %385 = load ptr, ptr %33, align 8, !tbaa !5
  %386 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %385)
          to label %387 unwind label %388

387:                                              ; preds = %384
  switch i32 %386, label %717 [
    i32 0, label %392
    i32 1, label %393
    i32 2, label %518
    i32 3, label %541
  ]

388:                                              ; preds = %384
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %11, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %12, align 4
  br label %738

392:                                              ; preds = %387
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.8, i32 noundef 2133, ptr noundef @__PRETTY_FUNCTION__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE) #10
  unreachable

393:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #9
  store i8 1, ptr %34, align 1, !tbaa !9
  br label %394

394:                                              ; preds = %516, %393
  %395 = load i8, ptr %34, align 1, !tbaa !9, !range !41, !noundef !42
  %396 = trunc i8 %395 to i1
  br i1 %396, label %398, label %397

397:                                              ; preds = %394
  store i32 16, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  br label %517

398:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %399 = load ptr, ptr %33, align 8, !tbaa !5
  %400 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %399)
          to label %401 unwind label %407

401:                                              ; preds = %398
  store ptr %400, ptr %35, align 8, !tbaa !5
  br label %402

402:                                              ; preds = %495, %401
  %403 = load ptr, ptr %35, align 8, !tbaa !5
  %404 = load i8, ptr %34, align 1, !tbaa !9, !range !41, !noundef !42
  %405 = trunc i8 %404 to i1
  br i1 %405, label %411, label %406

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

407:                                              ; preds = %472, %470, %467, %465, %455, %453, %450, %448, %445, %442, %398
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %11, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %12, align 4
  br label %514

411:                                              ; preds = %402
  br label %412

412:                                              ; preds = %411
  %413 = load ptr, ptr %35, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %413, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #9
  %415 = load i64, ptr %18, align 8, !tbaa !11
  %416 = trunc i64 %415 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %36, i32 noundef %416)
          to label %417 unwind label %426

417:                                              ; preds = %412
  %418 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %414, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %419 unwind label %430

419:                                              ; preds = %417
  %420 = xor i1 %418, true
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  br i1 %420, label %421, label %439

421:                                              ; preds = %419
  %422 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %423 = getelementptr inbounds %class.anon.236, ptr %38, i32 0, i32 0
  %424 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %424, ptr %423, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %422, ptr noundef %37)
          to label %425 unwind label %435

425:                                              ; preds = %421
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %439

426:                                              ; preds = %412
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %11, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %12, align 4
  br label %434

430:                                              ; preds = %417
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %11, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %434

434:                                              ; preds = %430, %426
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  br label %514

435:                                              ; preds = %421
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %11, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %514

439:                                              ; preds = %425, %419
  br label %440

440:                                              ; preds = %439
  br label %441

441:                                              ; preds = %440
  br label %442

442:                                              ; preds = %441
  %443 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %444 unwind label %407

444:                                              ; preds = %442
  br i1 %443, label %445, label %475

445:                                              ; preds = %444
  %446 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %446, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %448 unwind label %407

448:                                              ; preds = %445
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef @.str.29)
          to label %450 unwind label %407

450:                                              ; preds = %448
  %451 = load ptr, ptr %25, align 8, !tbaa !5
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull align 8 dereferenceable(32) %451)
          to label %453 unwind label %407

453:                                              ; preds = %450
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef @.str.30)
          to label %455 unwind label %407

455:                                              ; preds = %453
  %456 = load ptr, ptr %22, align 8, !tbaa !5
  %457 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %456, i32 0, i32 0
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.LocalUsage, ptr %458, i32 0, i32 4
  %460 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %459, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !40
  %462 = zext i32 %461 to i64
  %463 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %457, i64 noundef %462) #9
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(152) %463)
          to label %465 unwind label %407

465:                                              ; preds = %455
  %466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef @.str.31)
          to label %467 unwind label %407

467:                                              ; preds = %465
  %468 = load ptr, ptr %31, align 8, !tbaa !5
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(152) %468)
          to label %470 unwind label %407

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

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

474:                                              ; preds = %472
  br label %475

475:                                              ; preds = %474, %444
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #9
  %478 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %478)
          to label %479 unwind label %496

479:                                              ; preds = %477
  %480 = load ptr, ptr %35, align 8, !tbaa !5
  %481 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %480, i32 0, i32 0
  %482 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %481, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %483 unwind label %500

483:                                              ; preds = %479
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr %40) #9
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40)
          to label %484 unwind label %505

484:                                              ; preds = %483
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %485, i32 0, i32 0
  %487 = load ptr, ptr %20, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.LocalUsage, ptr %487, i32 0, i32 4
  %489 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %488, i32 0, i32 1
  %490 = load i32, ptr %489, align 4, !tbaa !40
  %491 = zext i32 %490 to i64
  %492 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %486, i64 noundef %491) #9
  %493 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %492, ptr noundef nonnull align 8 dereferenceable(152) %40)
          to label %494 unwind label %509

494:                                              ; preds = %484
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %40) #9
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %495

495:                                              ; preds = %494
  store i8 0, ptr %34, align 1, !tbaa !9
  br label %402, !llvm.loop !43

496:                                              ; preds = %477
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %11, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %12, align 4
  br label %504

500:                                              ; preds = %479
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %11, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %504

504:                                              ; preds = %500, %496
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  br label %514

505:                                              ; preds = %483
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %11, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %12, align 4
  br label %513

509:                                              ; preds = %484
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %11, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40) #9
  br label %513

513:                                              ; preds = %509, %505
  call void @llvm.lifetime.end.p0(i64 152, ptr %40) #9
  br label %514

514:                                              ; preds = %513, %504, %435, %434, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  br label %738

515:                                              ; preds = %406
  br label %516

516:                                              ; preds = %515
  store i8 0, ptr %34, align 1, !tbaa !9
  br label %394, !llvm.loop !45

517:                                              ; preds = %397
  br label %736

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

519:                                              ; preds = %539, %518
  %520 = load i8, ptr %41, align 1, !tbaa !9, !range !41, !noundef !42
  %521 = trunc i8 %520 to i1
  br i1 %521, label %523, label %522

522:                                              ; preds = %519
  store i32 26, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  br label %540

523:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %524)
          to label %526 unwind label %532

526:                                              ; preds = %523
  store ptr %525, ptr %42, align 8, !tbaa !5
  br label %527

527:                                              ; preds = %537, %526
  %528 = load ptr, ptr %42, align 8, !tbaa !5
  %529 = load i8, ptr %41, align 1, !tbaa !9, !range !41, !noundef !42
  %530 = trunc i8 %529 to i1
  br i1 %530, label %536, label %531

531:                                              ; preds = %527
  store i32 29, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %538

532:                                              ; preds = %523
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %11, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  br label %738

536:                                              ; preds = %527
  br label %537

537:                                              ; preds = %536
  store i8 0, ptr %41, align 1, !tbaa !9
  br label %527, !llvm.loop !46

538:                                              ; preds = %531
  br label %539

539:                                              ; preds = %538
  store i8 0, ptr %41, align 1, !tbaa !9
  br label %519, !llvm.loop !47

540:                                              ; preds = %522
  br label %736

541:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #9
  store i8 1, ptr %43, align 1, !tbaa !9
  br label %542

542:                                              ; preds = %715, %541
  %543 = load i8, ptr %43, align 1, !tbaa !9, !range !41, !noundef !42
  %544 = trunc i8 %543 to i1
  br i1 %544, label %546, label %545

545:                                              ; preds = %542
  store i32 32, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #9
  br label %716

546:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %547 = load ptr, ptr %33, align 8, !tbaa !5
  %548 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %547)
          to label %549 unwind label %555

549:                                              ; preds = %546
  store ptr %548, ptr %44, align 8, !tbaa !5
  br label %550

550:                                              ; preds = %712, %549
  %551 = load ptr, ptr %44, align 8, !tbaa !5
  %552 = load i8, ptr %43, align 1, !tbaa !9, !range !41, !noundef !42
  %553 = trunc i8 %552 to i1
  br i1 %553, label %559, label %554

554:                                              ; preds = %550
  store i32 35, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %714

555:                                              ; preds = %546
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %11, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %12, align 4
  br label %713

559:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %560 = load ptr, ptr %44, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm2", ptr %560, i32 0, i32 2
  store ptr %561, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %562 = load ptr, ptr %45, align 8, !tbaa !5
  %563 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %562) #9
  %564 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.237", ptr %46, i32 0, i32 0
  store ptr %563, ptr %564, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %565 = load ptr, ptr %45, align 8, !tbaa !5
  %566 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %565) #9
  %567 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.237", ptr %47, i32 0, i32 0
  store ptr %566, ptr %567, align 8
  br label %568

568:                                              ; preds = %686, %559
  %569 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br i1 %569, label %571, label %570

570:                                              ; preds = %568
  store i32 38, ptr %19, align 4
  br label %689

571:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %572 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  store ptr %572, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %573 = load ptr, ptr %48, align 8, !tbaa !5
  %574 = invoke noundef ptr @_ZN3MIR8AsmParam7opt_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %573)
          to label %575 unwind label %625

575:                                              ; preds = %571
  store ptr %574, ptr %49, align 8, !tbaa !5
  %576 = load ptr, ptr %49, align 8, !tbaa !5
  %577 = icmp ne ptr %576, null
  br i1 %577, label %578, label %679

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

582:                                              ; preds = %578
  %583 = load ptr, ptr %49, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %583, i32 0, i32 3
  %585 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %584) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  %586 = load i64, ptr %18, align 8, !tbaa !11
  %587 = trunc i64 %586 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %50, i32 noundef %587)
          to label %588 unwind label %629

588:                                              ; preds = %582
  %589 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %585, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %590 unwind label %633

590:                                              ; preds = %588
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  br i1 %589, label %591, label %677

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  %593 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %594 unwind label %625

594:                                              ; preds = %592
  br i1 %593, label %595, label %638

595:                                              ; preds = %594
  %596 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %596, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %598 unwind label %625

598:                                              ; preds = %595
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %597, ptr noundef @.str.29)
          to label %600 unwind label %625

600:                                              ; preds = %598
  %601 = load ptr, ptr %25, align 8, !tbaa !5
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %599, ptr noundef nonnull align 8 dereferenceable(32) %601)
          to label %603 unwind label %625

603:                                              ; preds = %600
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %602, ptr noundef @.str.30)
          to label %605 unwind label %625

605:                                              ; preds = %603
  %606 = load ptr, ptr %22, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %606, i32 0, i32 0
  %608 = load ptr, ptr %20, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.LocalUsage, ptr %608, i32 0, i32 4
  %610 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %609, i32 0, i32 1
  %611 = load i32, ptr %610, align 4, !tbaa !40
  %612 = zext i32 %611 to i64
  %613 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %607, i64 noundef %612) #9
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef nonnull align 8 dereferenceable(152) %613)
          to label %615 unwind label %625

615:                                              ; preds = %605
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef @.str.31)
          to label %617 unwind label %625

617:                                              ; preds = %615
  %618 = load ptr, ptr %31, align 8, !tbaa !5
  %619 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 8 dereferenceable(152) %618)
          to label %620 unwind label %625

620:                                              ; preds = %617
  %621 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef @_ZSt3decRSt8ios_base)
          to label %622 unwind label %625

622:                                              ; preds = %620
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %621, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %624 unwind label %625

624:                                              ; preds = %622
  br label %638

625:                                              ; preds = %622, %620, %617, %615, %605, %603, %600, %598, %595, %592, %571
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %11, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %12, align 4
  br label %688

629:                                              ; preds = %582
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %11, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %12, align 4
  br label %637

633:                                              ; preds = %588
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %11, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %637

637:                                              ; preds = %633, %629
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  br label %688

638:                                              ; preds = %624, %594
  br label %639

639:                                              ; preds = %638
  br label %640

640:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #9
  %641 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %641)
          to label %642 unwind label %659

642:                                              ; preds = %640
  %643 = load ptr, ptr %49, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %643, i32 0, i32 3
  %645 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %644) #9
  %646 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %645, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %647 unwind label %663

647:                                              ; preds = %642
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr %52) #9
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52)
          to label %648 unwind label %668

648:                                              ; preds = %647
  %649 = load ptr, ptr %22, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %649, i32 0, i32 0
  %651 = load ptr, ptr %20, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.LocalUsage, ptr %651, i32 0, i32 4
  %653 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %652, i32 0, i32 1
  %654 = load i32, ptr %653, align 4, !tbaa !40
  %655 = zext i32 %654 to i64
  %656 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %650, i64 noundef %655) #9
  %657 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %656, ptr noundef nonnull align 8 dereferenceable(152) %52)
          to label %658 unwind label %672

658:                                              ; preds = %648
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %52) #9
  store i8 1, ptr %5, align 1, !tbaa !9
  store i32 38, ptr %19, align 4
  br label %680

659:                                              ; preds = %640
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %11, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %12, align 4
  br label %667

663:                                              ; preds = %642
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %11, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %667

667:                                              ; preds = %663, %659
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #9
  br label %688

668:                                              ; preds = %647
  %669 = landingpad { ptr, i32 }
          cleanup
  %670 = extractvalue { ptr, i32 } %669, 0
  store ptr %670, ptr %11, align 8
  %671 = extractvalue { ptr, i32 } %669, 1
  store i32 %671, ptr %12, align 4
  br label %676

672:                                              ; preds = %648
  %673 = landingpad { ptr, i32 }
          cleanup
  %674 = extractvalue { ptr, i32 } %673, 0
  store ptr %674, ptr %11, align 8
  %675 = extractvalue { ptr, i32 } %673, 1
  store i32 %675, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #9
  br label %676

676:                                              ; preds = %672, %668
  call void @llvm.lifetime.end.p0(i64 152, ptr %52) #9
  br label %688

677:                                              ; preds = %590
  br label %678

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

679:                                              ; preds = %678, %575
  store i32 0, ptr %19, align 4
  br label %680

680:                                              ; preds = %679, %658
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  %681 = load i32, ptr %19, align 4
  switch i32 %681, label %683 [
    i32 0, label %682
  ]

682:                                              ; preds = %680
  store i32 0, ptr %19, align 4
  br label %683

683:                                              ; preds = %682, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  %684 = load i32, ptr %19, align 4
  switch i32 %684, label %689 [
    i32 0, label %685
  ]

685:                                              ; preds = %683
  br label %686

686:                                              ; preds = %685
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %568

688:                                              ; preds = %676, %667, %637, %625
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %713

689:                                              ; preds = %683, %570
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %690

690:                                              ; preds = %689
  %691 = load i8, ptr %5, align 1, !tbaa !9, !range !41, !noundef !42
  %692 = trunc i8 %691 to i1
  br i1 %692, label %711, label %693

693:                                              ; preds = %690
  br label %694

694:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  store ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr %53, align 8, !tbaa !5
  %695 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #9
  %696 = getelementptr inbounds %class.anon.254, ptr %55, i32 0, i32 0
  store ptr %53, ptr %696, align 8, !tbaa !5
  %697 = getelementptr inbounds %class.anon.254, ptr %55, i32 0, i32 1
  store ptr %18, ptr %697, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %695, ptr noundef %54)
          to label %698 unwind label %700

698:                                              ; preds = %694
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #9
  %699 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.11, ptr %699, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %699, ptr @_ZTIPKc, ptr null) #11
          to label %1442 unwind label %704

700:                                              ; preds = %694
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %11, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #9
  br label %708

704:                                              ; preds = %698
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %11, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %12, align 4
  br label %708

708:                                              ; preds = %704, %700
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %713

709:                                              ; No predecessors!
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710, %690
  br label %712

712:                                              ; preds = %711
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %550, !llvm.loop !48

713:                                              ; preds = %708, %688, %555
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #9
  br label %738

714:                                              ; preds = %554
  br label %715

715:                                              ; preds = %714
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %542, !llvm.loop !49

716:                                              ; preds = %545
  br label %736

717:                                              ; preds = %387
  br label %718

718:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  store ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr %56, align 8, !tbaa !5
  %719 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #9
  %720 = getelementptr inbounds %class.anon.255, ptr %58, i32 0, i32 0
  store ptr %56, ptr %720, align 8, !tbaa !5
  %721 = getelementptr inbounds %class.anon.255, ptr %58, i32 0, i32 1
  %722 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %722, ptr %721, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(16) %58) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %719, ptr noundef %57)
          to label %723 unwind label %725

723:                                              ; preds = %718
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #9
  %724 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.11, ptr %724, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %724, ptr @_ZTIPKc, ptr null) #11
          to label %1442 unwind label %729

725:                                              ; preds = %718
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %11, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #9
  br label %733

729:                                              ; preds = %723
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %11, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %12, align 4
  br label %733

733:                                              ; preds = %729, %725
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %738

734:                                              ; No predecessors!
  br label %735

735:                                              ; preds = %734
  br label %736

736:                                              ; preds = %735, %716, %540, %517
  br label %737

737:                                              ; preds = %736
  store i8 0, ptr %32, align 1, !tbaa !9
  br label %380, !llvm.loop !50

738:                                              ; preds = %733, %713, %532, %514, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %866

739:                                              ; preds = %383
  br label %740

740:                                              ; preds = %739
  store i8 0, ptr %32, align 1, !tbaa !9
  br label %366, !llvm.loop !51

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

742:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %743 = load ptr, ptr %23, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %743, i32 0, i32 1
  store ptr %744, ptr %59, align 8, !tbaa !5
  br label %745

745:                                              ; preds = %742
  %746 = load ptr, ptr %59, align 8, !tbaa !5
  %747 = invoke noundef zeroext i1 @_ZNK3MIR10Terminator7is_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %746)
          to label %748 unwind label %752

748:                                              ; preds = %745
  br i1 %747, label %760, label %749

749:                                              ; preds = %748
  %750 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(1) %61) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %750, ptr noundef %60)
          to label %751 unwind label %756

751:                                              ; preds = %749
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  br label %760

752:                                              ; preds = %745
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %11, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %12, align 4
  br label %842

756:                                              ; preds = %749
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %11, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  br label %842

760:                                              ; preds = %751, %748
  br label %761

761:                                              ; preds = %760
  br label %762

762:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %763 = load ptr, ptr %59, align 8, !tbaa !5
  %764 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %763)
          to label %765 unwind label %799

765:                                              ; preds = %762
  store ptr %764, ptr %62, align 8, !tbaa !5
  br label %766

766:                                              ; preds = %765
  %767 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %768 unwind label %799

768:                                              ; preds = %766
  br i1 %767, label %769, label %803

769:                                              ; preds = %768
  %770 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %770, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %772 unwind label %799

772:                                              ; preds = %769
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %771, ptr noundef @.str.29)
          to label %774 unwind label %799

774:                                              ; preds = %772
  %775 = load ptr, ptr %25, align 8, !tbaa !5
  %776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef nonnull align 8 dereferenceable(32) %775)
          to label %777 unwind label %799

777:                                              ; preds = %774
  %778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %776, ptr noundef @.str.30)
          to label %779 unwind label %799

779:                                              ; preds = %777
  %780 = load ptr, ptr %22, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %780, i32 0, i32 0
  %782 = load ptr, ptr %20, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.LocalUsage, ptr %782, i32 0, i32 4
  %784 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %783, i32 0, i32 1
  %785 = load i32, ptr %784, align 4, !tbaa !40
  %786 = zext i32 %785 to i64
  %787 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %781, i64 noundef %786) #9
  %788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %778, ptr noundef nonnull align 8 dereferenceable(152) %787)
          to label %789 unwind label %799

789:                                              ; preds = %779
  %790 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %788, ptr noundef @.str.31)
          to label %791 unwind label %799

791:                                              ; preds = %789
  %792 = load ptr, ptr %59, align 8, !tbaa !5
  %793 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %790, ptr noundef nonnull align 8 dereferenceable(168) %792)
          to label %794 unwind label %799

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

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

798:                                              ; preds = %796
  br label %803

799:                                              ; preds = %796, %794, %791, %789, %779, %777, %774, %772, %769, %766, %762
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %11, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %12, align 4
  br label %841

803:                                              ; preds = %798, %768
  br label %804

804:                                              ; preds = %803
  br label %805

805:                                              ; preds = %804
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #9
  %806 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %63, ptr noundef nonnull align 8 dereferenceable(32) %806)
          to label %807 unwind label %823

807:                                              ; preds = %805
  %808 = load ptr, ptr %62, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %808, i32 0, i32 2
  %810 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %809, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %811 unwind label %827

811:                                              ; preds = %807
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr %64) #9
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %64)
          to label %812 unwind label %832

812:                                              ; preds = %811
  %813 = load ptr, ptr %22, align 8, !tbaa !5
  %814 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %813, i32 0, i32 0
  %815 = load ptr, ptr %20, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.LocalUsage, ptr %815, i32 0, i32 4
  %817 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %816, i32 0, i32 1
  %818 = load i32, ptr %817, align 4, !tbaa !40
  %819 = zext i32 %818 to i64
  %820 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %814, i64 noundef %819) #9
  %821 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %820, ptr noundef nonnull align 8 dereferenceable(152) %64)
          to label %822 unwind label %836

822:                                              ; preds = %812
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %64) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %64) #9
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %843

823:                                              ; preds = %805
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %11, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %12, align 4
  br label %831

827:                                              ; preds = %807
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %11, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %12, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  br label %831

831:                                              ; preds = %827, %823
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #9
  br label %841

832:                                              ; preds = %811
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %11, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %12, align 4
  br label %840

836:                                              ; preds = %812
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %11, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %64) #9
  br label %840

840:                                              ; preds = %836, %832
  call void @llvm.lifetime.end.p0(i64 152, ptr %64) #9
  br label %841

841:                                              ; preds = %840, %831, %799
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  br label %842

842:                                              ; preds = %841, %756, %752
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %866

843:                                              ; preds = %822, %741
  br label %865

844:                                              ; preds = %342
  br label %845

845:                                              ; preds = %844
  %846 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %847 unwind label %858

847:                                              ; preds = %845
  br i1 %846, label %848, label %862

848:                                              ; preds = %847
  %849 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %849, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %851 unwind label %858

851:                                              ; preds = %848
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %850, ptr noundef @.str.32)
          to label %853 unwind label %858

853:                                              ; preds = %851
  %854 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef @_ZSt3decRSt8ios_base)
          to label %855 unwind label %858

855:                                              ; preds = %853
  %856 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %854, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %857 unwind label %858

857:                                              ; preds = %855
  br label %862

858:                                              ; preds = %855, %853, %851, %848, %845
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %11, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %12, align 4
  br label %866

862:                                              ; preds = %857, %847
  br label %863

863:                                              ; preds = %862
  br label %864

864:                                              ; preds = %863
  br label %865

865:                                              ; preds = %864, %843
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %1418

866:                                              ; preds = %858, %842, %738, %374
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %867

867:                                              ; preds = %866, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %1421

868:                                              ; preds = %321, %305, %291, %271
  %869 = load ptr, ptr %20, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.LocalUsage, ptr %869, i32 0, i32 3
  %871 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %870, i32 0, i32 1
  %872 = load i32, ptr %871, align 4, !tbaa !23
  %873 = zext i32 %872 to i64
  %874 = load ptr, ptr %23, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %874, i32 0, i32 0
  %876 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %875) #9
  %877 = icmp ult i64 %873, %876
  br i1 %877, label %878, label %1285

878:                                              ; preds = %868
  %879 = load ptr, ptr %23, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %879, i32 0, i32 0
  %881 = load ptr, ptr %20, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.LocalUsage, ptr %881, i32 0, i32 3
  %883 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %882, i32 0, i32 1
  %884 = load i32, ptr %883, align 4, !tbaa !23
  %885 = zext i32 %884 to i64
  %886 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %880, i64 noundef %885) #9
  %887 = invoke noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %886)
          to label %888 unwind label %267

888:                                              ; preds = %878
  br i1 %887, label %889, label %1285

889:                                              ; preds = %888
  %890 = load ptr, ptr %23, align 8, !tbaa !5
  %891 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %890, i32 0, i32 0
  %892 = load ptr, ptr %20, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.LocalUsage, ptr %892, i32 0, i32 3
  %894 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %893, i32 0, i32 1
  %895 = load i32, ptr %894, align 4, !tbaa !23
  %896 = zext i32 %895 to i64
  %897 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %891, i64 noundef %896) #9
  %898 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %897)
          to label %899 unwind label %267

899:                                              ; preds = %889
  %900 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %898, i32 0, i32 1
  %901 = invoke noundef zeroext i1 @_ZNK3MIR6RValue6is_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %900)
          to label %902 unwind label %267

902:                                              ; preds = %899
  br i1 %901, label %903, label %1285

903:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %904 = load ptr, ptr %23, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %904, i32 0, i32 0
  %906 = load ptr, ptr %20, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.LocalUsage, ptr %906, i32 0, i32 3
  %908 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %907, i32 0, i32 1
  %909 = load i32, ptr %908, align 4, !tbaa !23
  %910 = zext i32 %909 to i64
  %911 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %905, i64 noundef %910) #9
  store ptr %911, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %912 = load ptr, ptr %65, align 8, !tbaa !5
  %913 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %912)
          to label %914 unwind label %962

914:                                              ; preds = %903
  %915 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %913, i32 0, i32 1
  %916 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %915)
          to label %917 unwind label %962

917:                                              ; preds = %914
  store ptr %916, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #9
  %918 = load ptr, ptr %66, align 8, !tbaa !5
  %919 = getelementptr inbounds %"struct.MIR::LValue", ptr %918, i32 0, i32 1
  %920 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %919) #9
  br i1 %920, label %921, label %926

921:                                              ; preds = %917
  %922 = load ptr, ptr %3, align 8, !tbaa !5
  %923 = load ptr, ptr %66, align 8, !tbaa !5
  %924 = invoke noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %922, ptr noundef nonnull align 8 dereferenceable(32) %923)
          to label %925 unwind label %966

925:                                              ; preds = %921
  br label %926

926:                                              ; preds = %925, %917
  %927 = phi i1 [ false, %917 ], [ %924, %925 ]
  %928 = zext i1 %927 to i8
  store i8 %928, ptr %67, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.LocalUsage, ptr %929, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %930, i64 8, i1 false), !tbaa.struct !22
  %931 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %68, i32 0, i32 1
  %932 = load i32, ptr %931, align 4, !tbaa !24
  %933 = add i32 %932, 1
  store i32 %933, ptr %931, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #9
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #9
  %935 = getelementptr inbounds %class.anon.258, ptr %71, i32 0, i32 0
  %936 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %936, ptr %935, align 8, !tbaa !5
  %937 = getelementptr inbounds %class.anon.258, ptr %71, i32 0, i32 1
  store ptr %67, ptr %937, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %71) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #9
  %938 = getelementptr inbounds %class.anon.259, ptr %73, i32 0, i32 0
  %939 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %939, ptr %938, align 8, !tbaa !5
  %940 = getelementptr inbounds %class.anon.259, ptr %73, i32 0, i32 1
  store ptr %67, ptr %940, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  %941 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %934, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %68, ptr noundef %70, ptr noundef %72)
          to label %942 unwind label %970

942:                                              ; preds = %926
  %943 = icmp ne i32 2, %941
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  %944 = zext i1 %943 to i8
  store i8 %944, ptr %69, align 1, !tbaa !9
  br label %945

945:                                              ; preds = %942
  %946 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %947 unwind label %974

947:                                              ; preds = %945
  br i1 %946, label %948, label %978

948:                                              ; preds = %947
  %949 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %949, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %951 unwind label %974

951:                                              ; preds = %948
  %952 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %950, ptr noundef @.str.33)
          to label %953 unwind label %974

953:                                              ; preds = %951
  %954 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %955 = trunc i8 %954 to i1
  %956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %952, i1 noundef zeroext %955)
          to label %957 unwind label %974

957:                                              ; preds = %953
  %958 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %956, ptr noundef @_ZSt3decRSt8ios_base)
          to label %959 unwind label %974

959:                                              ; preds = %957
  %960 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %958, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %961 unwind label %974

961:                                              ; preds = %959
  br label %978

962:                                              ; preds = %914, %903
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %11, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %12, align 4
  br label %1284

966:                                              ; preds = %921
  %967 = landingpad { ptr, i32 }
          cleanup
  %968 = extractvalue { ptr, i32 } %967, 0
  store ptr %968, ptr %11, align 8
  %969 = extractvalue { ptr, i32 } %967, 1
  store i32 %969, ptr %12, align 4
  br label %1283

970:                                              ; preds = %926
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %11, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  br label %1282

974:                                              ; preds = %1275, %1273, %1271, %1268, %1265, %983, %959, %957, %953, %951, %948, %945
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %11, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %12, align 4
  br label %1282

978:                                              ; preds = %961, %947
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979
  %981 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %982 = trunc i8 %981 to i1
  br i1 %982, label %1040, label %983

983:                                              ; preds = %980
  %984 = load ptr, ptr %66, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.MIR::LValue", ptr %984, i32 0, i32 1
  %986 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %985) #9
  %987 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.260", ptr %74, i32 0, i32 0
  store ptr %986, ptr %987, align 8
  %988 = load ptr, ptr %66, align 8, !tbaa !5
  %989 = getelementptr inbounds %"struct.MIR::LValue", ptr %988, i32 0, i32 1
  %990 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %989) #9
  %991 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.260", ptr %75, i32 0, i32 0
  store ptr %990, ptr %991, align 8
  %992 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.260", ptr %74, i32 0, i32 0
  %993 = load ptr, ptr %992, align 8
  %994 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.260", ptr %75, i32 0, i32 0
  %995 = load ptr, ptr %994, align 8
  %996 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS4_SaIS4_EEEEZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_15EbT_SG_T0_"(ptr %993, ptr %995)
          to label %997 unwind label %974

997:                                              ; preds = %983
  br i1 %996, label %998, label %1040

998:                                              ; preds = %997
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #9
  store i8 0, ptr %77, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #9
  %999 = getelementptr inbounds %class.anon.263, ptr %78, i32 0, i32 0
  store ptr %21, ptr %999, align 8, !tbaa !5
  %1000 = getelementptr inbounds %class.anon.263, ptr %78, i32 0, i32 1
  store ptr %77, ptr %1000, align 8, !tbaa !5
  %1001 = getelementptr inbounds %class.anon.263, ptr %78, i32 0, i32 2
  %1002 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1002, ptr %1001, align 8, !tbaa !5
  %1003 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %1004 = getelementptr inbounds %class.anon.264, ptr %80, i32 0, i32 0
  store ptr %78, ptr %1004, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #9
  %1005 = getelementptr inbounds %class.anon.265, ptr %82, i32 0, i32 0
  store ptr %21, ptr %1005, align 8, !tbaa !5
  %1006 = getelementptr inbounds %class.anon.265, ptr %82, i32 0, i32 1
  store ptr %78, ptr %1006, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(16) %82) #9
  %1007 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %1003, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %68, ptr noundef %79, ptr noundef %81)
          to label %1008 unwind label %1028

1008:                                             ; preds = %998
  %1009 = icmp ne i32 2, %1007
  %1010 = zext i1 %1009 to i8
  store i8 %1010, ptr %69, align 1, !tbaa !9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %1011

1011:                                             ; preds = %1008
  %1012 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1013 unwind label %1032

1013:                                             ; preds = %1011
  br i1 %1012, label %1014, label %1036

1014:                                             ; preds = %1013
  %1015 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1016 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1015, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1017 unwind label %1032

1017:                                             ; preds = %1014
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1016, ptr noundef @.str.33)
          to label %1019 unwind label %1032

1019:                                             ; preds = %1017
  %1020 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %1021 = trunc i8 %1020 to i1
  %1022 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %1018, i1 noundef zeroext %1021)
          to label %1023 unwind label %1032

1023:                                             ; preds = %1019
  %1024 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1022, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1025 unwind label %1032

1025:                                             ; preds = %1023
  %1026 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1024, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1027 unwind label %1032

1027:                                             ; preds = %1025
  br label %1036

1028:                                             ; preds = %998
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %11, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %1039

1032:                                             ; preds = %1025, %1023, %1019, %1017, %1014, %1011
  %1033 = landingpad { ptr, i32 }
          cleanup
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %11, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %12, align 4
  br label %1039

1036:                                             ; preds = %1027, %1013
  br label %1037

1037:                                             ; preds = %1036
  br label %1038

1038:                                             ; preds = %1037
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #9
  br label %1040

1039:                                             ; preds = %1032, %1028
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #9
  br label %1282

1040:                                             ; preds = %1038, %997, %980
  %1041 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1264, label %1043

1043:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #9
  %1044 = getelementptr inbounds %class.anon.266, ptr %83, i32 0, i32 0
  store ptr %21, ptr %1044, align 8, !tbaa !5
  %1045 = getelementptr inbounds %class.anon.266, ptr %83, i32 0, i32 1
  %1046 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %1046, ptr %1045, align 8, !tbaa !5
  %1047 = getelementptr inbounds %class.anon.266, ptr %83, i32 0, i32 2
  %1048 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1048, ptr %1047, align 8, !tbaa !5
  %1049 = load ptr, ptr %20, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.LocalUsage, ptr %1049, i32 0, i32 4
  %1051 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1050, i32 0, i32 1
  %1052 = load i32, ptr %1051, align 4, !tbaa !40
  %1053 = zext i32 %1052 to i64
  %1054 = load ptr, ptr %22, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1054, i32 0, i32 0
  %1056 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1055) #9
  %1057 = icmp ult i64 %1053, %1056
  br i1 %1057, label %1058, label %1171

1058:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %1059 = load ptr, ptr %22, align 8, !tbaa !5
  %1060 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1059, i32 0, i32 0
  %1061 = load ptr, ptr %20, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.LocalUsage, ptr %1061, i32 0, i32 4
  %1063 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1062, i32 0, i32 1
  %1064 = load i32, ptr %1063, align 4, !tbaa !40
  %1065 = zext i32 %1064 to i64
  %1066 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1060, i64 noundef %1065) #9
  store ptr %1066, ptr %84, align 8, !tbaa !5
  br label %1067

1067:                                             ; preds = %1058
  %1068 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1069 unwind label %1108

1069:                                             ; preds = %1067
  br i1 %1068, label %1070, label %1112

1070:                                             ; preds = %1069
  %1071 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1072 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1071, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1073 unwind label %1108

1073:                                             ; preds = %1070
  %1074 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1072, ptr noundef @.str.34)
          to label %1075 unwind label %1108

1075:                                             ; preds = %1073
  %1076 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1074, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %1077 unwind label %1108

1077:                                             ; preds = %1075
  %1078 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1076, ptr noundef @.str.35)
          to label %1079 unwind label %1108

1079:                                             ; preds = %1077
  %1080 = load ptr, ptr %66, align 8, !tbaa !5
  %1081 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1078, ptr noundef nonnull align 8 dereferenceable(32) %1080)
          to label %1082 unwind label %1108

1082:                                             ; preds = %1079
  %1083 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1081, ptr noundef @.str.36)
          to label %1084 unwind label %1108

1084:                                             ; preds = %1082
  %1085 = load ptr, ptr %20, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.LocalUsage, ptr %1085, i32 0, i32 4
  %1087 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1086, i32 0, i32 0
  %1088 = load i32, ptr %1087, align 4, !tbaa !20
  %1089 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1083, i32 noundef %1088)
          to label %1090 unwind label %1108

1090:                                             ; preds = %1084
  %1091 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1089, ptr noundef @.str.37)
          to label %1092 unwind label %1108

1092:                                             ; preds = %1090
  %1093 = load ptr, ptr %20, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.LocalUsage, ptr %1093, i32 0, i32 4
  %1095 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1094, i32 0, i32 1
  %1096 = load i32, ptr %1095, align 4, !tbaa !40
  %1097 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1091, i32 noundef %1096)
          to label %1098 unwind label %1108

1098:                                             ; preds = %1092
  %1099 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1097, ptr noundef @.str.38)
          to label %1100 unwind label %1108

1100:                                             ; preds = %1098
  %1101 = load ptr, ptr %84, align 8, !tbaa !5
  %1102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %1099, ptr noundef nonnull align 8 dereferenceable(152) %1101)
          to label %1103 unwind label %1108

1103:                                             ; preds = %1100
  %1104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1102, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1105 unwind label %1108

1105:                                             ; preds = %1103
  %1106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1104, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1107 unwind label %1108

1107:                                             ; preds = %1105
  br label %1112

1108:                                             ; preds = %1105, %1103, %1100, %1098, %1092, %1090, %1084, %1082, %1079, %1077, %1075, %1073, %1070, %1067
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %11, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %12, align 4
  br label %1170

1112:                                             ; preds = %1107, %1069
  br label %1113

1113:                                             ; preds = %1112
  br label %1114

1114:                                             ; preds = %1113
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #9
  %1115 = load ptr, ptr %84, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %1116 unwind label %1143

1116:                                             ; preds = %1114
  %1117 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %1115, ptr noundef %86)
          to label %1118 unwind label %1147

1118:                                             ; preds = %1116
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  %1119 = zext i1 %1117 to i8
  store i8 %1119, ptr %85, align 1, !tbaa !9
  %1120 = load i8, ptr %85, align 1, !tbaa !9, !range !41, !noundef !42
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1154, label %1122

1122:                                             ; preds = %1118
  br label %1123

1123:                                             ; preds = %1122
  %1124 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1125 unwind label %1143

1125:                                             ; preds = %1123
  br i1 %1124, label %1126, label %1151

1126:                                             ; preds = %1125
  %1127 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1127, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1129 unwind label %1143

1129:                                             ; preds = %1126
  %1130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1128, ptr noundef @.str.39)
          to label %1131 unwind label %1143

1131:                                             ; preds = %1129
  %1132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1130, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %1133 unwind label %1143

1133:                                             ; preds = %1131
  %1134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1132, ptr noundef @.str.40)
          to label %1135 unwind label %1143

1135:                                             ; preds = %1133
  %1136 = load ptr, ptr %84, align 8, !tbaa !5
  %1137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %1134, ptr noundef nonnull align 8 dereferenceable(152) %1136)
          to label %1138 unwind label %1143

1138:                                             ; preds = %1135
  %1139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1137, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1140 unwind label %1143

1140:                                             ; preds = %1138
  %1141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1139, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1142 unwind label %1143

1142:                                             ; preds = %1140
  br label %1151

1143:                                             ; preds = %1140, %1138, %1135, %1133, %1131, %1129, %1126, %1123, %1114
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %11, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %12, align 4
  br label %1169

1147:                                             ; preds = %1116
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %11, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #9
  br label %1169

1151:                                             ; preds = %1142, %1125
  br label %1152

1152:                                             ; preds = %1151
  br label %1153

1153:                                             ; preds = %1152
  br label %1168

1154:                                             ; preds = %1118
  call void @llvm.lifetime.start.p0(i64 152, ptr %87) #9
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %87)
          to label %1155 unwind label %1159

1155:                                             ; preds = %1154
  %1156 = load ptr, ptr %65, align 8, !tbaa !5
  %1157 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %1156, ptr noundef nonnull align 8 dereferenceable(152) %87)
          to label %1158 unwind label %1163

1158:                                             ; preds = %1155
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %87) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %87) #9
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %1168

1159:                                             ; preds = %1154
  %1160 = landingpad { ptr, i32 }
          cleanup
  %1161 = extractvalue { ptr, i32 } %1160, 0
  store ptr %1161, ptr %11, align 8
  %1162 = extractvalue { ptr, i32 } %1160, 1
  store i32 %1162, ptr %12, align 4
  br label %1167

1163:                                             ; preds = %1155
  %1164 = landingpad { ptr, i32 }
          cleanup
  %1165 = extractvalue { ptr, i32 } %1164, 0
  store ptr %1165, ptr %11, align 8
  %1166 = extractvalue { ptr, i32 } %1164, 1
  store i32 %1166, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %87) #9
  br label %1167

1167:                                             ; preds = %1163, %1159
  call void @llvm.lifetime.end.p0(i64 152, ptr %87) #9
  br label %1169

1168:                                             ; preds = %1158, %1153
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %1262

1169:                                             ; preds = %1167, %1147, %1143
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #9
  br label %1170

1170:                                             ; preds = %1169, %1108
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %1263

1171:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %1172 = load ptr, ptr %22, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1172, i32 0, i32 1
  store ptr %1173, ptr %88, align 8, !tbaa !5
  br label %1174

1174:                                             ; preds = %1171
  %1175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1176 unwind label %1199

1176:                                             ; preds = %1174
  br i1 %1175, label %1177, label %1203

1177:                                             ; preds = %1176
  %1178 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1178, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1180 unwind label %1199

1180:                                             ; preds = %1177
  %1181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1179, ptr noundef @.str.34)
          to label %1182 unwind label %1199

1182:                                             ; preds = %1180
  %1183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1181, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %1184 unwind label %1199

1184:                                             ; preds = %1182
  %1185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1183, ptr noundef @.str.35)
          to label %1186 unwind label %1199

1186:                                             ; preds = %1184
  %1187 = load ptr, ptr %66, align 8, !tbaa !5
  %1188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1185, ptr noundef nonnull align 8 dereferenceable(32) %1187)
          to label %1189 unwind label %1199

1189:                                             ; preds = %1186
  %1190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1188, ptr noundef @.str.40)
          to label %1191 unwind label %1199

1191:                                             ; preds = %1189
  %1192 = load ptr, ptr %88, align 8, !tbaa !5
  %1193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1190, ptr noundef nonnull align 8 dereferenceable(168) %1192)
          to label %1194 unwind label %1199

1194:                                             ; preds = %1191
  %1195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1193, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1196 unwind label %1199

1196:                                             ; preds = %1194
  %1197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1195, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1198 unwind label %1199

1198:                                             ; preds = %1196
  br label %1203

1199:                                             ; preds = %1196, %1194, %1191, %1189, %1186, %1184, %1182, %1180, %1177, %1174
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %11, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %12, align 4
  br label %1261

1203:                                             ; preds = %1198, %1176
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #9
  %1206 = load ptr, ptr %88, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %1207 unwind label %1234

1207:                                             ; preds = %1205
  %1208 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %1206, ptr noundef %90)
          to label %1209 unwind label %1238

1209:                                             ; preds = %1207
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  %1210 = zext i1 %1208 to i8
  store i8 %1210, ptr %89, align 1, !tbaa !9
  %1211 = load i8, ptr %89, align 1, !tbaa !9, !range !41, !noundef !42
  %1212 = trunc i8 %1211 to i1
  br i1 %1212, label %1245, label %1213

1213:                                             ; preds = %1209
  br label %1214

1214:                                             ; preds = %1213
  %1215 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1216 unwind label %1234

1216:                                             ; preds = %1214
  br i1 %1215, label %1217, label %1242

1217:                                             ; preds = %1216
  %1218 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1218, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1220 unwind label %1234

1220:                                             ; preds = %1217
  %1221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1219, ptr noundef @.str.39)
          to label %1222 unwind label %1234

1222:                                             ; preds = %1220
  %1223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1221, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %1224 unwind label %1234

1224:                                             ; preds = %1222
  %1225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1223, ptr noundef @.str.40)
          to label %1226 unwind label %1234

1226:                                             ; preds = %1224
  %1227 = load ptr, ptr %88, align 8, !tbaa !5
  %1228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1225, ptr noundef nonnull align 8 dereferenceable(168) %1227)
          to label %1229 unwind label %1234

1229:                                             ; preds = %1226
  %1230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1228, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1231 unwind label %1234

1231:                                             ; preds = %1229
  %1232 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1230, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1233 unwind label %1234

1233:                                             ; preds = %1231
  br label %1242

1234:                                             ; preds = %1231, %1229, %1226, %1224, %1222, %1220, %1217, %1214, %1205
  %1235 = landingpad { ptr, i32 }
          cleanup
  %1236 = extractvalue { ptr, i32 } %1235, 0
  store ptr %1236, ptr %11, align 8
  %1237 = extractvalue { ptr, i32 } %1235, 1
  store i32 %1237, ptr %12, align 4
  br label %1260

1238:                                             ; preds = %1207
  %1239 = landingpad { ptr, i32 }
          cleanup
  %1240 = extractvalue { ptr, i32 } %1239, 0
  store ptr %1240, ptr %11, align 8
  %1241 = extractvalue { ptr, i32 } %1239, 1
  store i32 %1241, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  br label %1260

1242:                                             ; preds = %1233, %1216
  br label %1243

1243:                                             ; preds = %1242
  br label %1244

1244:                                             ; preds = %1243
  br label %1259

1245:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 152, ptr %91) #9
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %91)
          to label %1246 unwind label %1250

1246:                                             ; preds = %1245
  %1247 = load ptr, ptr %65, align 8, !tbaa !5
  %1248 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %1247, ptr noundef nonnull align 8 dereferenceable(152) %91)
          to label %1249 unwind label %1254

1249:                                             ; preds = %1246
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %91) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr %91) #9
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %1259

1250:                                             ; preds = %1245
  %1251 = landingpad { ptr, i32 }
          cleanup
  %1252 = extractvalue { ptr, i32 } %1251, 0
  store ptr %1252, ptr %11, align 8
  %1253 = extractvalue { ptr, i32 } %1251, 1
  store i32 %1253, ptr %12, align 4
  br label %1258

1254:                                             ; preds = %1246
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %11, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %12, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %91) #9
  br label %1258

1258:                                             ; preds = %1254, %1250
  call void @llvm.lifetime.end.p0(i64 152, ptr %91) #9
  br label %1260

1259:                                             ; preds = %1249, %1244
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %1262

1260:                                             ; preds = %1258, %1238, %1234
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %1261

1261:                                             ; preds = %1260, %1199
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %1263

1262:                                             ; preds = %1259, %1168
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #9
  br label %1281

1263:                                             ; preds = %1261, %1170
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #9
  br label %1282

1264:                                             ; preds = %1040
  br label %1265

1265:                                             ; preds = %1264
  %1266 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1267 unwind label %974

1267:                                             ; preds = %1265
  br i1 %1266, label %1268, label %1278

1268:                                             ; preds = %1267
  %1269 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1269, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1271 unwind label %974

1271:                                             ; preds = %1268
  %1272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1270, ptr noundef @.str.41)
          to label %1273 unwind label %974

1273:                                             ; preds = %1271
  %1274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1272, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1275 unwind label %974

1275:                                             ; preds = %1273
  %1276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1274, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1277 unwind label %974

1277:                                             ; preds = %1275
  br label %1278

1278:                                             ; preds = %1277, %1267
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

1280:                                             ; preds = %1279
  br label %1281

1281:                                             ; preds = %1280, %1262
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1418

1282:                                             ; preds = %1263, %1039, %974, %970
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %1283

1283:                                             ; preds = %1282, %966
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  br label %1284

1284:                                             ; preds = %1283, %962
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1421

1285:                                             ; preds = %902, %888, %868
  br label %1286

1286:                                             ; preds = %1285
  %1287 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1288 unwind label %267

1288:                                             ; preds = %1286
  br i1 %1287, label %1289, label %1299

1289:                                             ; preds = %1288
  %1290 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1290, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1292 unwind label %267

1292:                                             ; preds = %1289
  %1293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1291, ptr noundef @.str.42)
          to label %1294 unwind label %267

1294:                                             ; preds = %1292
  %1295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1293, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1296 unwind label %267

1296:                                             ; preds = %1294
  %1297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1295, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1298 unwind label %267

1298:                                             ; preds = %1296
  br label %1299

1299:                                             ; preds = %1298, %1288
  br label %1300

1300:                                             ; preds = %1299
  br label %1301

1301:                                             ; preds = %1300
  %1302 = load ptr, ptr %20, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.LocalUsage, ptr %1302, i32 0, i32 3
  %1304 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1303, i32 0, i32 1
  %1305 = load i32, ptr %1304, align 4, !tbaa !23
  %1306 = zext i32 %1305 to i64
  %1307 = load ptr, ptr %23, align 8, !tbaa !5
  %1308 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1307, i32 0, i32 0
  %1309 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1308) #9
  %1310 = icmp ult i64 %1306, %1309
  br i1 %1310, label %1311, label %1338

1311:                                             ; preds = %1301
  br label %1312

1312:                                             ; preds = %1311
  %1313 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1314 unwind label %267

1314:                                             ; preds = %1312
  br i1 %1313, label %1315, label %1335

1315:                                             ; preds = %1314
  %1316 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1316, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1318 unwind label %267

1318:                                             ; preds = %1315
  %1319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1317, ptr noundef @.str.43)
          to label %1320 unwind label %267

1320:                                             ; preds = %1318
  %1321 = load ptr, ptr %23, align 8, !tbaa !5
  %1322 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1321, i32 0, i32 0
  %1323 = load ptr, ptr %20, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.LocalUsage, ptr %1323, i32 0, i32 3
  %1325 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1324, i32 0, i32 1
  %1326 = load i32, ptr %1325, align 4, !tbaa !23
  %1327 = zext i32 %1326 to i64
  %1328 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1322, i64 noundef %1327) #9
  %1329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %1319, ptr noundef nonnull align 8 dereferenceable(152) %1328)
          to label %1330 unwind label %267

1330:                                             ; preds = %1320
  %1331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1329, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1332 unwind label %267

1332:                                             ; preds = %1330
  %1333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1331, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1334 unwind label %267

1334:                                             ; preds = %1332
  br label %1335

1335:                                             ; preds = %1334, %1314
  br label %1336

1336:                                             ; preds = %1335
  br label %1337

1337:                                             ; preds = %1336
  br label %1359

1338:                                             ; preds = %1301
  br label %1339

1339:                                             ; preds = %1338
  %1340 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1341 unwind label %267

1341:                                             ; preds = %1339
  br i1 %1340, label %1342, label %1356

1342:                                             ; preds = %1341
  %1343 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1343, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1345 unwind label %267

1345:                                             ; preds = %1342
  %1346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1344, ptr noundef @.str.43)
          to label %1347 unwind label %267

1347:                                             ; preds = %1345
  %1348 = load ptr, ptr %23, align 8, !tbaa !5
  %1349 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1348, i32 0, i32 1
  %1350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1346, ptr noundef nonnull align 8 dereferenceable(168) %1349)
          to label %1351 unwind label %267

1351:                                             ; preds = %1347
  %1352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1350, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1353 unwind label %267

1353:                                             ; preds = %1351
  %1354 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1352, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1355 unwind label %267

1355:                                             ; preds = %1353
  br label %1356

1356:                                             ; preds = %1355, %1341
  br label %1357

1357:                                             ; preds = %1356
  br label %1358

1358:                                             ; preds = %1357
  br label %1359

1359:                                             ; preds = %1358, %1337
  %1360 = load ptr, ptr %20, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.LocalUsage, ptr %1360, i32 0, i32 4
  %1362 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1361, i32 0, i32 1
  %1363 = load i32, ptr %1362, align 4, !tbaa !40
  %1364 = zext i32 %1363 to i64
  %1365 = load ptr, ptr %22, align 8, !tbaa !5
  %1366 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1365, i32 0, i32 0
  %1367 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1366) #9
  %1368 = icmp ult i64 %1364, %1367
  br i1 %1368, label %1369, label %1396

1369:                                             ; preds = %1359
  br label %1370

1370:                                             ; preds = %1369
  %1371 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1372 unwind label %267

1372:                                             ; preds = %1370
  br i1 %1371, label %1373, label %1393

1373:                                             ; preds = %1372
  %1374 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1374, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1376 unwind label %267

1376:                                             ; preds = %1373
  %1377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1375, ptr noundef @.str.44)
          to label %1378 unwind label %267

1378:                                             ; preds = %1376
  %1379 = load ptr, ptr %22, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1379, i32 0, i32 0
  %1381 = load ptr, ptr %20, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.LocalUsage, ptr %1381, i32 0, i32 4
  %1383 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %1382, i32 0, i32 1
  %1384 = load i32, ptr %1383, align 4, !tbaa !40
  %1385 = zext i32 %1384 to i64
  %1386 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1380, i64 noundef %1385) #9
  %1387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %1377, ptr noundef nonnull align 8 dereferenceable(152) %1386)
          to label %1388 unwind label %267

1388:                                             ; preds = %1378
  %1389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1387, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1390 unwind label %267

1390:                                             ; preds = %1388
  %1391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1389, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1392 unwind label %267

1392:                                             ; preds = %1390
  br label %1393

1393:                                             ; preds = %1392, %1372
  br label %1394

1394:                                             ; preds = %1393
  br label %1395

1395:                                             ; preds = %1394
  br label %1417

1396:                                             ; preds = %1359
  br label %1397

1397:                                             ; preds = %1396
  %1398 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1399 unwind label %267

1399:                                             ; preds = %1397
  br i1 %1398, label %1400, label %1414

1400:                                             ; preds = %1399
  %1401 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %1402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1401, ptr noundef @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %1403 unwind label %267

1403:                                             ; preds = %1400
  %1404 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1402, ptr noundef @.str.44)
          to label %1405 unwind label %267

1405:                                             ; preds = %1403
  %1406 = load ptr, ptr %22, align 8, !tbaa !5
  %1407 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1406, i32 0, i32 1
  %1408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1404, ptr noundef nonnull align 8 dereferenceable(168) %1407)
          to label %1409 unwind label %267

1409:                                             ; preds = %1405
  %1410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1408, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1411 unwind label %267

1411:                                             ; preds = %1409
  %1412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1410, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1413 unwind label %267

1413:                                             ; preds = %1411
  br label %1414

1414:                                             ; preds = %1413, %1399
  br label %1415

1415:                                             ; preds = %1414
  br label %1416

1416:                                             ; preds = %1415
  br label %1417

1417:                                             ; preds = %1416, %1395
  store i32 0, ptr %19, align 4
  br label %1418

1418:                                             ; preds = %1417, %1281, %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  %1419 = load i32, ptr %19, align 4
  switch i32 %1419, label %1423 [
    i32 0, label %1420
  ]

1420:                                             ; preds = %1418
  br label %1422

1421:                                             ; preds = %1284, %867, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %1429

1422:                                             ; preds = %1420, %190, %185, %180
  store i32 0, ptr %19, align 4
  br label %1423

1423:                                             ; preds = %1422, %1418
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  %1424 = load i32, ptr %19, align 4
  switch i32 %1424, label %1442 [
    i32 0, label %1425
    i32 4, label %1426
  ]

1425:                                             ; preds = %1423
  br label %1426

1426:                                             ; preds = %1425, %1423
  %1427 = load i64, ptr %18, align 8, !tbaa !11
  %1428 = add i64 %1427, 1
  store i64 %1428, ptr %18, align 8, !tbaa !11
  br label %108, !llvm.loop !52

1429:                                             ; preds = %1421, %174
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %1430

1430:                                             ; preds = %1429, %170
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %1434

1431:                                             ; preds = %114
  %1432 = load i8, ptr %5, align 1, !tbaa !9, !range !41, !noundef !42
  %1433 = trunc i8 %1432 to i1
  store i32 1, ptr %19, align 4
  call void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #9
  ret i1 %1433

1434:                                             ; preds = %1430, %123
  call void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  br label %1435

1435:                                             ; preds = %1434, %119
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #9
  br label %1436

1436:                                             ; preds = %1435, %115
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #9
  br label %1437

1437:                                             ; preds = %1436
  %1438 = load ptr, ptr %11, align 8
  %1439 = load i32, ptr %12, align 4
  %1440 = insertvalue { ptr, i32 } poison, ptr %1438, 0
  %1441 = insertvalue { ptr, i32 } %1440, i32 %1439, 1
  resume { ptr, i32 } %1441

1442:                                             ; preds = %1423, %723, %698
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117visit_mir_lvaluesERN3MIR11TypeResolveERKNS0_8FunctionESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef) #3

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, ptr noundef) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS4_SaIS4_EEEEZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_15EbT_SG_T0_"(ptr, ptr) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) #3

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !14, i64 0}
!16 = !{!"_ZTSZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionEE10LocalUsage", !14, i64 0, !14, i64 4, !14, i64 8, !17, i64 12, !17, i64 20}
!17 = !{!"_ZTSN12_GLOBAL__N_17StmtRefE", !14, i64 0, !14, i64 4}
!18 = !{!16, !14, i64 4}
!19 = !{!16, !14, i64 8}
!20 = !{!16, !14, i64 20}
!21 = !{!16, !14, i64 12}
!22 = !{i64 0, i64 4, !13, i64 4, i64 4, !13}
!23 = !{!16, !14, i64 16}
!24 = !{!17, !14, i64 4}
!25 = !{!26, !14, i64 0}
!26 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !14, i64 0, !14, i64 4, !27, i64 8, !33, i64 40, !35, i64 136}
!27 = !{!"_ZTSN3MIR6LValueE", !28, i64 0, !29, i64 8}
!28 = !{!"_ZTSN3MIR6LValue7StorageE", !12, i64 0}
!29 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSN3MIR10CallTargetE", !34, i64 0, !7, i64 8}
!34 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!35 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!17, !14, i64 0}
!40 = !{!16, !14, i64 24}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !44}
!48 = distinct !{!48, !44}
!49 = distinct !{!49, !44}
!50 = distinct !{!50, !44}
!51 = distinct !{!51, !44}
!52 = distinct !{!52, !44}


; 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"

%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.216 = type { i8 }
%class.anon.218 = type { ptr }
%"class.std::vector.219" = type { %"struct.std::_Vector_base.220" }
%"struct.std::_Vector_base.220" = type { %"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl" }
%"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl" = type { %"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<LocalUsage, std::allocator<LocalUsage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.221" = type { i8 }
%class.anon.224 = type { ptr }
%class.anon.225 = type { ptr, ptr }
%"class.std::function.226" = type { %"class.std::_Function_base", ptr }
%"struct.(anonymous namespace)::StmtRef" = type { i32, i32 }
%"class.std::function.228" = type { %"class.std::_Function_base", ptr }
%class.anon.234 = type { ptr }
%"class.std::function.231" = type { %"class.std::_Function_base", ptr }
%class.anon.235 = type { ptr }
%class.anon.236 = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"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" }
%"class.__gnu_cxx::__normal_iterator.237" = type { ptr }
%class.anon.254 = type { ptr, ptr }
%class.anon.255 = type { ptr, ptr }
%class.anon.256 = type { i8 }
%class.anon.258 = type { ptr, ptr }
%class.anon.259 = type { ptr, ptr }
%class.anon.263 = type { ptr, ptr, ptr }
%class.anon.264 = type { ptr }
%class.anon.265 = type { ptr, ptr }
%class.anon.266 = type { ptr, ptr, ptr }
%"class.std::function.267" = type { %"class.std::_Function_base", ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.8 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [41 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [87 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [6 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; 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 #5

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

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

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

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

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

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

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

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 #1

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

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 #1

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

declare noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca i8, align 1
  %4 = alloca %class.TraceLog, align 8
  %5 = alloca %"class.std::function", align 8
  %6 = alloca %class.anon.216, align 1
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.218, align 8
  %9 = alloca %"class.std::vector.219", align 8
  %10 = alloca %"class.std::allocator.221", align 1
  %11 = alloca %class.anon.224, align 8
  %12 = alloca %class.anon.225, align 8
  %13 = alloca %"class.std::function.226", align 8
  %14 = alloca i64, align 8
  %15 = alloca %"struct.MIR::LValue", align 8
  %16 = alloca %"struct.(anonymous namespace)::StmtRef", align 8
  %17 = alloca %"class.std::function.228", align 8
  %18 = alloca %class.anon.234, align 8
  %19 = alloca %"class.std::function.231", align 8
  %20 = alloca %class.anon.235, align 8
  %21 = alloca %"struct.MIR::LValue", align 8
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.236, align 8
  %24 = alloca %"struct.MIR::LValue", align 8
  %25 = alloca %"class.MIR::Statement", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.237", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.237", align 8
  %28 = alloca %"struct.MIR::LValue", align 8
  %29 = alloca %"struct.MIR::LValue", align 8
  %30 = alloca %"class.MIR::Statement", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.254, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::function", align 8
  %36 = alloca %class.anon.255, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.256, align 1
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.MIR::Statement", align 8
  %41 = alloca i8, align 1
  %42 = alloca %"struct.(anonymous namespace)::StmtRef", align 8
  %43 = alloca %"class.std::function.228", align 8
  %44 = alloca %class.anon.258, align 8
  %45 = alloca %"class.std::function.231", align 8
  %46 = alloca %class.anon.259, align 8
  %47 = alloca i8, align 1
  %48 = alloca %class.anon.263, align 8
  %49 = alloca %"class.std::function.228", align 8
  %50 = alloca %class.anon.264, align 8
  %51 = alloca %"class.std::function.231", align 8
  %52 = alloca %class.anon.265, align 8
  %53 = alloca %class.anon.266, align 8
  %54 = alloca %"class.std::function.267", align 8
  %55 = alloca %"class.MIR::Statement", align 8
  %56 = alloca %"class.std::function.267", align 8
  %57 = alloca %"class.MIR::Statement", align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #8
  store i8 0, ptr %3, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #8
  %58 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %59 = select i1 %58, ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr %3, ptr %8, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef %59, ptr noundef nonnull %5, ptr noundef nonnull %7)
          to label %60 unwind label %78

60:                                               ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  %61 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionEE10LocalUsageEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %61, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %62 unwind label %80

62:                                               ; preds = %60
  call void @_ZNSt15__new_allocatorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  store ptr %0, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  store ptr %9, ptr %12, align 8, !tbaa !9
  %63 = getelementptr inbounds i8, ptr %12, i64 8
  store ptr %11, ptr %63, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  invoke void @_ZN12_GLOBAL__N_117visit_mir_lvaluesERN3MIR11TypeResolveERKNS0_8FunctionESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull %13)
          to label %64 unwind label %82

64:                                               ; preds = %62
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  store i64 0, ptr %14, align 8, !tbaa !11
  %65 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %.not317 = icmp eq i64 %65, 0
  br i1 %.not317, label %._crit_edge, label %.lr.ph316

.lr.ph316:                                        ; preds = %64
  %66 = getelementptr inbounds i8, ptr %1, i64 64
  %67 = getelementptr inbounds i8, ptr %16, i64 4
  %68 = getelementptr inbounds i8, ptr %42, i64 4
  %69 = getelementptr inbounds i8, ptr %44, i64 8
  %70 = getelementptr inbounds i8, ptr %46, i64 8
  %71 = getelementptr inbounds i8, ptr %48, i64 8
  %72 = getelementptr inbounds i8, ptr %48, i64 16
  %73 = getelementptr inbounds i8, ptr %52, i64 8
  %74 = getelementptr inbounds i8, ptr %53, i64 8
  %75 = getelementptr inbounds i8, ptr %53, i64 16
  br label %84

._crit_edge:                                      ; preds = %754, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  %76 = load i8, ptr %3, align 1, !tbaa !5, !range !13, !noundef !14
  %77 = trunc nuw i8 %76 to i1
  call void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #8
  ret i1 %77

78:                                               ; preds = %2
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  br label %763

80:                                               ; preds = %60
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %762

82:                                               ; preds = %62
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %761

84:                                               ; preds = %.lr.ph316, %754
  %85 = phi i64 [ 0, %.lr.ph316 ], [ %756, %754 ]
  %86 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %85) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  %87 = trunc i64 %85 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %15, i32 noundef %87)
          to label %88 unwind label %119

88:                                               ; preds = %84
  %89 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %90 unwind label %121

90:                                               ; preds = %88
  br i1 %89, label %91, label %123

91:                                               ; preds = %90
  %92 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %92, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %94 unwind label %121

94:                                               ; preds = %91
  %95 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull @.str.22)
          to label %96 unwind label %121

96:                                               ; preds = %94
  %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %85)
          to label %98 unwind label %121

98:                                               ; preds = %96
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull @.str.23)
          to label %100 unwind label %121

100:                                              ; preds = %98
  %101 = load i32, ptr %86, align 4, !tbaa !17
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %99, i32 noundef %101)
          to label %103 unwind label %121

103:                                              ; preds = %100
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull @.str.24)
          to label %105 unwind label %121

105:                                              ; preds = %103
  %106 = getelementptr inbounds i8, ptr %86, i64 4
  %107 = load i32, ptr %106, align 4, !tbaa !20
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %104, i32 noundef %107)
          to label %109 unwind label %121

109:                                              ; preds = %105
  %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.24)
          to label %111 unwind label %121

111:                                              ; preds = %109
  %112 = getelementptr inbounds i8, ptr %86, i64 8
  %113 = load i32, ptr %112, align 4, !tbaa !21
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %110, i32 noundef %113)
          to label %115 unwind label %121

115:                                              ; preds = %111
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %117 unwind label %121

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %123 unwind label %121

119:                                              ; preds = %84
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %760

121:                                              ; preds = %154, %152, %149, %147, %144, %142, %140, %138, %135, %132, %117, %115, %111, %109, %105, %103, %100, %98, %96, %94, %91, %88
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %759

123:                                              ; preds = %117, %90
  %124 = load i32, ptr %86, align 4, !tbaa !17
  %125 = icmp eq i32 %124, 1
  %126 = getelementptr inbounds i8, ptr %86, i64 4
  %127 = load i32, ptr %126, align 4
  %128 = icmp eq i32 %127, 1
  %or.cond = select i1 %125, i1 %128, i1 false
  %129 = getelementptr inbounds i8, ptr %86, i64 8
  %130 = load i32, ptr %129, align 4
  %131 = icmp eq i32 %130, 0
  %or.cond256 = select i1 %or.cond, i1 %131, i1 false
  br i1 %or.cond256, label %132, label %754

132:                                              ; preds = %123
  %133 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %134 unwind label %121

134:                                              ; preds = %132
  br i1 %133, label %135, label %156

135:                                              ; preds = %134
  %136 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %136, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %138 unwind label %121

138:                                              ; preds = %135
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @.str.25)
          to label %140 unwind label %121

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %139, i64 noundef %85)
          to label %142 unwind label %121

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull @.str.26)
          to label %144 unwind label %121

144:                                              ; preds = %142
  %145 = getelementptr inbounds i8, ptr %86, i64 12
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_1lsERSoRKNS_7StmtRefE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 4 dereferenceable(8) %145)
          to label %147 unwind label %121

147:                                              ; preds = %144
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.27)
          to label %149 unwind label %121

149:                                              ; preds = %147
  %150 = getelementptr inbounds i8, ptr %86, i64 20
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_1lsERSoRKNS_7StmtRefE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 4 dereferenceable(8) %150)
          to label %152 unwind label %121

152:                                              ; preds = %149
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %154 unwind label %121

154:                                              ; preds = %152
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %156 unwind label %121

156:                                              ; preds = %154, %134
  %157 = getelementptr inbounds i8, ptr %86, i64 20
  %158 = load i32, ptr %157, align 4, !tbaa !22
  %159 = zext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %159) #8
  %161 = getelementptr inbounds i8, ptr %86, i64 12
  %162 = load i32, ptr %161, align 4, !tbaa !23
  %163 = zext i32 %162 to i64
  %164 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %163) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %165 = load i64, ptr %161, align 4
  store i64 %165, ptr %16, align 8
  %166 = getelementptr inbounds i8, ptr %86, i64 16
  %167 = lshr i64 %165, 32
  %168 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  %169 = icmp ugt i64 %168, %167
  br i1 %169, label %170, label %173

170:                                              ; preds = %156
  %171 = load i32, ptr %67, align 4, !tbaa !24
  %172 = add i32 %171, 1
  br label %179

173:                                              ; preds = %156
  %174 = getelementptr inbounds i8, ptr %164, i64 24
  %175 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %174)
  %176 = load i32, ptr %175, align 8, !tbaa !25
  store i32 %176, ptr %16, align 8, !tbaa !39
  br label %179

177:                                              ; preds = %.invoke532, %.invoke531, %.invoke530, %.invoke, %746, %744, %741, %738, %733, %731, %728, %725, %714, %712, %709, %706, %701, %699, %696, %693, %686, %684, %682, %679, %676, %197
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %753

179:                                              ; preds = %173, %170
  %storemerge = phi i32 [ 0, %173 ], [ %172, %170 ]
  store i32 %storemerge, ptr %67, align 4, !tbaa !24
  %180 = getelementptr inbounds i8, ptr %86, i64 24
  %181 = load i32, ptr %180, align 4, !tbaa !40
  %182 = zext i32 %181 to i64
  %183 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  %184 = icmp ugt i64 %183, %182
  br i1 %184, label %185, label %438

185:                                              ; preds = %179
  %186 = load i32, ptr %180, align 4, !tbaa !40
  %187 = zext i32 %186 to i64
  %188 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %187) #8
  %189 = call noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %188)
  br i1 %189, label %190, label %438

190:                                              ; preds = %185
  %191 = load i32, ptr %180, align 4, !tbaa !40
  %192 = zext i32 %191 to i64
  %193 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %192) #8
  %194 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %193)
  %195 = getelementptr inbounds i8, ptr %194, i64 32
  %196 = call noundef zeroext i1 @_ZNK3MIR6RValue6is_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %195)
  br i1 %196, label %197, label %438

197:                                              ; preds = %190
  %198 = load i32, ptr %180, align 4, !tbaa !40
  %199 = zext i32 %198 to i64
  %200 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %199) #8
  %201 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %200)
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  %203 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %202)
  %204 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %205 unwind label %177

205:                                              ; preds = %197
  br i1 %204, label %206, label %438

206:                                              ; preds = %205
  %207 = load i32, ptr %180, align 4, !tbaa !40
  %208 = zext i32 %207 to i64
  %209 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %208) #8
  %210 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %209)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  store ptr %210, ptr %18, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr %210, ptr %20, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %211 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull %17, ptr noundef nonnull %19)
          to label %212 unwind label %218

212:                                              ; preds = %206
  %.not = icmp eq i32 %211, 2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br i1 %.not, label %213, label %424

213:                                              ; preds = %212
  %214 = load i32, ptr %166, align 4, !tbaa !41
  %215 = zext i32 %214 to i64
  %216 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  %217 = icmp ugt i64 %216, %215
  br i1 %217, label %.lr.ph314, label %368

218:                                              ; preds = %206
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %753

.lr.ph314:                                        ; preds = %213
  %220 = load i32, ptr %166, align 4, !tbaa !41
  %221 = zext i32 %220 to i64
  %222 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %221) #8
  %223 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %222)
  switch i32 %223, label %359 [
    i32 0, label %225
    i32 1, label %.lr.ph312
    i32 2, label %.preheader266.split
    i32 3, label %.preheader268
  ]

.preheader266.split:                              ; preds = %.lr.ph314
  %224 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %222)
  br label %.critedge258

225:                                              ; preds = %.lr.ph314
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.8, i32 noundef 2133, ptr noundef nonnull @__PRETTY_FUNCTION__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE) #9
  unreachable

226:                                              ; preds = %264, %262, %260, %258, %253, %251, %249, %247, %244, %241
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %753

.lr.ph312:                                        ; preds = %.lr.ph314
  %228 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %222)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %21, i32 noundef %87)
          to label %229 unwind label %234

229:                                              ; preds = %.lr.ph312
  %230 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %231 unwind label %236

231:                                              ; preds = %229
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br i1 %230, label %241, label %232

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  store ptr %222, ptr %23, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %22)
          to label %233 unwind label %239

233:                                              ; preds = %232
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %241

234:                                              ; preds = %.lr.ph312
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %229
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %238

238:                                              ; preds = %236, %234
  %.pn234 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %753

239:                                              ; preds = %232
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %753

241:                                              ; preds = %231, %233
  %242 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %243 unwind label %226

243:                                              ; preds = %241
  br i1 %242, label %244, label %266

244:                                              ; preds = %243
  %245 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %245, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %247 unwind label %226

247:                                              ; preds = %244
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull @.str.29)
          to label %249 unwind label %226

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %251 unwind label %226

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @.str.30)
          to label %253 unwind label %226

253:                                              ; preds = %251
  %254 = load i32, ptr %180, align 4, !tbaa !40
  %255 = zext i32 %254 to i64
  %256 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %255) #8
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(152) %256)
          to label %258 unwind label %226

258:                                              ; preds = %253
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @.str.31)
          to label %260 unwind label %226

260:                                              ; preds = %258
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(152) %222)
          to label %262 unwind label %226

262:                                              ; preds = %260
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %264 unwind label %226

264:                                              ; preds = %262
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %266 unwind label %226

266:                                              ; preds = %264, %243
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %267 unwind label %275

267:                                              ; preds = %266
  %268 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %269 unwind label %277

269:                                              ; preds = %267
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %25) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %25)
          to label %270 unwind label %280

270:                                              ; preds = %269
  %271 = load i32, ptr %180, align 4, !tbaa !40
  %272 = zext i32 %271 to i64
  %273 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %272) #8
  %274 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %273, ptr noundef nonnull align 8 dereferenceable(152) %25)
          to label %..loopexit262_crit_edge unwind label %282

..loopexit262_crit_edge:                          ; preds = %270
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %25) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %25) #8
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %.critedge258

275:                                              ; preds = %266
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %279

277:                                              ; preds = %267
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %279

279:                                              ; preds = %277, %275
  %.pn236 = phi { ptr, i32 } [ %278, %277 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  br label %753

280:                                              ; preds = %269
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %284

282:                                              ; preds = %270
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %25) #8
  br label %284

284:                                              ; preds = %282, %280
  %.pn238 = phi { ptr, i32 } [ %283, %282 ], [ %281, %280 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %25) #8
  br label %753

.preheader268:                                    ; preds = %.lr.ph314
  %285 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %222)
  %286 = getelementptr inbounds i8, ptr %285, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %287 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %286) #8
  store ptr %287, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %288 = call ptr @_ZNSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %286) #8
  store ptr %288, ptr %27, align 8
  %289 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %289, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader268, %345
  %290 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %291 = call noundef ptr @_ZN3MIR8AsmParam7opt_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %290)
  %.not223 = icmp eq ptr %291, null
  br i1 %.not223, label %345, label %292

292:                                              ; preds = %.lr.ph
  %293 = getelementptr inbounds i8, ptr %291, i64 56
  %294 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %293) #8
  br i1 %294, label %295, label %345

295:                                              ; preds = %292
  %296 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %293) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %28, i32 noundef %87)
          to label %297 unwind label %326

297:                                              ; preds = %295
  %298 = invoke noundef zeroext i1 @_ZN3MIReqERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %296, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %299 unwind label %327

299:                                              ; preds = %297
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br i1 %298, label %300, label %345

300:                                              ; preds = %299
  %301 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %302 unwind label %325

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

303:                                              ; preds = %302
  %304 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %304, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %306 unwind label %325

306:                                              ; preds = %303
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull @.str.29)
          to label %308 unwind label %325

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %310 unwind label %325

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

312:                                              ; preds = %310
  %313 = load i32, ptr %180, align 4, !tbaa !40
  %314 = zext i32 %313 to i64
  %315 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %314) #8
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull align 8 dereferenceable(152) %315)
          to label %317 unwind label %325

317:                                              ; preds = %312
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull @.str.31)
          to label %319 unwind label %325

319:                                              ; preds = %317
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef nonnull align 8 dereferenceable(152) %222)
          to label %321 unwind label %325

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

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

325:                                              ; preds = %323, %321, %319, %317, %312, %310, %308, %306, %303, %300
  %lpad.loopexit487 = landingpad { ptr, i32 }
          cleanup
  br label %348

326:                                              ; preds = %295
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %328

327:                                              ; preds = %297
  %lpad.loopexit482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %328

328:                                              ; preds = %327, %326
  %.pn224 = phi { ptr, i32 } [ %lpad.loopexit482, %327 ], [ %lpad.loopexit, %326 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %348

329:                                              ; preds = %323, %302
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %330 unwind label %339

330:                                              ; preds = %329
  %331 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %293) #8
  %332 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %331, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %333 unwind label %340

333:                                              ; preds = %330
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %30) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %30)
          to label %334 unwind label %342

334:                                              ; preds = %333
  %335 = load i32, ptr %180, align 4, !tbaa !40
  %336 = zext i32 %335 to i64
  %337 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %336) #8
  %338 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %337, ptr noundef nonnull align 8 dereferenceable(152) %30)
          to label %.critedge unwind label %343

.critedge:                                        ; preds = %334
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %30) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %30) #8
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %.loopexit

339:                                              ; preds = %329
  %lpad.loopexit492 = landingpad { ptr, i32 }
          cleanup
  br label %341

340:                                              ; preds = %330
  %lpad.loopexit497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %341

341:                                              ; preds = %340, %339
  %.pn226 = phi { ptr, i32 } [ %lpad.loopexit497, %340 ], [ %lpad.loopexit492, %339 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  br label %348

342:                                              ; preds = %333
  %lpad.loopexit502 = landingpad { ptr, i32 }
          cleanup
  br label %344

343:                                              ; preds = %334
  %lpad.loopexit507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %30) #8
  br label %344

344:                                              ; preds = %343, %342
  %.pn228 = phi { ptr, i32 } [ %lpad.loopexit507, %343 ], [ %lpad.loopexit502, %342 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %30) #8
  br label %348

345:                                              ; preds = %292, %299, %.lr.ph
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %347 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %347, label %.lr.ph, label %.loopexit

348:                                              ; preds = %344, %341, %328, %325
  %.pn228.pn = phi { ptr, i32 } [ %.pn228, %344 ], [ %.pn226, %341 ], [ %lpad.loopexit487, %325 ], [ %.pn224, %328 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %753

.loopexit:                                        ; preds = %345, %.preheader268, %.critedge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  %349 = load i8, ptr %3, align 1, !tbaa !5, !range !13, !noundef !14
  %350 = trunc nuw i8 %349 to i1
  br i1 %350, label %.critedge258, label %.loopexit510, !llvm.loop !42

.loopexit510:                                     ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  store ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  store ptr %31, ptr %33, align 8, !tbaa !9
  %351 = getelementptr inbounds i8, ptr %33, i64 8
  store ptr %14, ptr %351, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %32)
          to label %352 unwind label %354

352:                                              ; preds = %.loopexit510
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  %353 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.11, ptr %353, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %353, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %764 unwind label %356

354:                                              ; preds = %.loopexit510
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %358

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

358:                                              ; preds = %356, %354
  %.pn231 = phi { ptr, i32 } [ %357, %356 ], [ %355, %354 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %753

359:                                              ; preds = %.lr.ph314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  store ptr @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #8
  store ptr %34, ptr %36, align 8, !tbaa !9
  %360 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %222, ptr %360, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %35)
          to label %361 unwind label %363

361:                                              ; preds = %359
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  %362 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.11, ptr %362, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %362, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %764 unwind label %365

363:                                              ; preds = %359
  %364 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  br label %367

365:                                              ; preds = %361
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %367

367:                                              ; preds = %365, %363
  %.pn241 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %753

368:                                              ; preds = %213
  %369 = getelementptr inbounds i8, ptr %164, i64 24
  %370 = call noundef zeroext i1 @_ZNK3MIR10Terminator7is_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %369)
  br i1 %370, label %375, label %371

371:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS4_8FunctionEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %37)
          to label %372 unwind label %373

372:                                              ; preds = %371
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  br label %375

373:                                              ; preds = %371
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  br label %753

375:                                              ; preds = %372, %368
  %376 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %369)
  %377 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %378 unwind label %401

378:                                              ; preds = %375
  br i1 %377, label %379, label %403

379:                                              ; preds = %378
  %380 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %380, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %382 unwind label %401

382:                                              ; preds = %379
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull @.str.29)
          to label %384 unwind label %401

384:                                              ; preds = %382
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %386 unwind label %401

386:                                              ; preds = %384
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull @.str.30)
          to label %388 unwind label %401

388:                                              ; preds = %386
  %389 = load i32, ptr %180, align 4, !tbaa !40
  %390 = zext i32 %389 to i64
  %391 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %390) #8
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(152) %391)
          to label %393 unwind label %401

393:                                              ; preds = %388
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull @.str.31)
          to label %395 unwind label %401

395:                                              ; preds = %393
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(168) %369)
          to label %397 unwind label %401

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

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

401:                                              ; preds = %399, %397, %395, %393, %388, %386, %384, %382, %379, %375
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %753

403:                                              ; preds = %399, %378
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %210)
          to label %404 unwind label %414

404:                                              ; preds = %403
  %405 = getelementptr inbounds i8, ptr %376, i64 8
  %406 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %405, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %407 unwind label %416

407:                                              ; preds = %404
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %40) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40)
          to label %408 unwind label %419

408:                                              ; preds = %407
  %409 = load i32, ptr %180, align 4, !tbaa !40
  %410 = zext i32 %409 to i64
  %411 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %410) #8
  %412 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %411, ptr noundef nonnull align 8 dereferenceable(152) %40)
          to label %413 unwind label %421

413:                                              ; preds = %408
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %40) #8
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %.critedge258

414:                                              ; preds = %403
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %418

416:                                              ; preds = %404
  %417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %418

418:                                              ; preds = %416, %414
  %.pn217 = phi { ptr, i32 } [ %417, %416 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  br label %753

419:                                              ; preds = %407
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %423

421:                                              ; preds = %408
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %40) #8
  br label %423

423:                                              ; preds = %421, %419
  %.pn219 = phi { ptr, i32 } [ %422, %421 ], [ %420, %419 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %40) #8
  br label %753

424:                                              ; preds = %212
  %425 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %426 unwind label %436

426:                                              ; preds = %424
  br i1 %425, label %427, label %.critedge258

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

430:                                              ; preds = %427
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull @.str.32)
          to label %432 unwind label %436

432:                                              ; preds = %430
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %434 unwind label %436

434:                                              ; preds = %432
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.critedge258 unwind label %436

436:                                              ; preds = %434, %432, %430, %427, %424
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %753

438:                                              ; preds = %205, %190, %185, %179
  %439 = load i32, ptr %166, align 4, !tbaa !41
  %440 = zext i32 %439 to i64
  %441 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  %442 = icmp ugt i64 %441, %440
  br i1 %442, label %443, label %676

443:                                              ; preds = %438
  %444 = load i32, ptr %166, align 4, !tbaa !41
  %445 = zext i32 %444 to i64
  %446 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %445) #8
  %447 = call noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %446)
  br i1 %447, label %448, label %676

448:                                              ; preds = %443
  %449 = load i32, ptr %166, align 4, !tbaa !41
  %450 = zext i32 %449 to i64
  %451 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %450) #8
  %452 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %451)
  %453 = getelementptr inbounds i8, ptr %452, i64 32
  %454 = call noundef zeroext i1 @_ZNK3MIR6RValue6is_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %453)
  br i1 %454, label %455, label %676

455:                                              ; preds = %448
  %456 = load i32, ptr %166, align 4, !tbaa !41
  %457 = zext i32 %456 to i64
  %458 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %457) #8
  %459 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %458)
  %460 = getelementptr inbounds i8, ptr %459, i64 32
  %461 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %460)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  %463 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #8
  br i1 %463, label %464, label %466

464:                                              ; preds = %455
  %465 = invoke noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %461)
          to label %466 unwind label %489

466:                                              ; preds = %464, %455
  %467 = phi i1 [ false, %455 ], [ %465, %464 ]
  %468 = zext i1 %467 to i8
  store i8 %468, ptr %41, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %469 = load i64, ptr %157, align 4
  store i64 %469, ptr %42, align 8
  %470 = lshr i64 %469, 32
  %471 = trunc nuw i64 %470 to i32
  %472 = add i32 %471, 1
  store i32 %472, ptr %68, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #8
  store ptr %461, ptr %44, align 8, !tbaa !9
  store ptr %41, ptr %69, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(16) %44) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #8
  store ptr %461, ptr %46, align 8, !tbaa !9
  store ptr %41, ptr %70, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(16) %46) #8
  %473 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull %43, ptr noundef nonnull %45)
          to label %474 unwind label %491

474:                                              ; preds = %466
  %475 = icmp ne i32 %473, 2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #8
  %476 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %477 unwind label %493

477:                                              ; preds = %474
  br i1 %476, label %478, label %495

478:                                              ; preds = %477
  %479 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %479, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %481 unwind label %493

481:                                              ; preds = %478
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull @.str.33)
          to label %483 unwind label %493

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %482, i1 noundef zeroext %475)
          to label %485 unwind label %493

485:                                              ; preds = %483
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %487 unwind label %493

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %486, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %495 unwind label %493

489:                                              ; preds = %464
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %675

491:                                              ; preds = %466
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #8
  br label %674

493:                                              ; preds = %671, %669, %667, %664, %.thread, %496, %487, %485, %483, %481, %478, %474
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %674

495:                                              ; preds = %487, %477
  br i1 %475, label %.thread, label %496

496:                                              ; preds = %495
  %497 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #8
  %498 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #8
  %499 = invoke noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS4_SaIS4_EEEEZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_15EbT_SG_T0_"(ptr %497, ptr %498)
          to label %500 unwind label %493

500:                                              ; preds = %496
  br i1 %499, label %501, label %.thread260

501:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #8
  store i8 0, ptr %47, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  store ptr %15, ptr %48, align 8, !tbaa !9
  store ptr %47, ptr %71, align 8, !tbaa !9
  store ptr %0, ptr %72, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  store ptr %48, ptr %50, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR9StatementEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #8
  store ptr %15, ptr %52, align 8, !tbaa !9
  store ptr %48, ptr %73, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbN12_GLOBAL__N_17StmtRefERKN3MIR10TerminatorEEEC2IZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(16) %52) #8
  %502 = invoke noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull %49, ptr noundef nonnull %51)
          to label %503 unwind label %518

503:                                              ; preds = %501
  %504 = icmp ne i32 %502, 2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  %505 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %506 unwind label %520

506:                                              ; preds = %503
  br i1 %505, label %507, label %523

507:                                              ; preds = %506
  %508 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %509 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %508, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %510 unwind label %520

510:                                              ; preds = %507
  %511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %509, ptr noundef nonnull @.str.33)
          to label %512 unwind label %520

512:                                              ; preds = %510
  %513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %511, i1 noundef zeroext %504)
          to label %514 unwind label %520

514:                                              ; preds = %512
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %513, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %516 unwind label %520

516:                                              ; preds = %514
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %523 unwind label %520

518:                                              ; preds = %501
  %519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br label %522

520:                                              ; preds = %516, %514, %512, %510, %507, %503
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %522

522:                                              ; preds = %520, %518
  %.pn = phi { ptr, i32 } [ %521, %520 ], [ %519, %518 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #8
  br label %674

523:                                              ; preds = %506, %516
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #8
  br i1 %504, label %.thread, label %.thread260

.thread260:                                       ; preds = %500, %523
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #8
  store ptr %15, ptr %53, align 8, !tbaa !9
  store ptr %461, ptr %74, align 8, !tbaa !9
  store ptr %0, ptr %75, align 8, !tbaa !9
  %524 = load i32, ptr %180, align 4, !tbaa !40
  %525 = zext i32 %524 to i64
  %526 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  %527 = icmp ugt i64 %526, %525
  br i1 %527, label %528, label %600

528:                                              ; preds = %.thread260
  %529 = load i32, ptr %180, align 4, !tbaa !40
  %530 = zext i32 %529 to i64
  %531 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %530) #8
  %532 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %533 unwind label %563

533:                                              ; preds = %528
  br i1 %532, label %534, label %565

534:                                              ; preds = %533
  %535 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %535, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %537 unwind label %563

537:                                              ; preds = %534
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %536, ptr noundef nonnull @.str.34)
          to label %539 unwind label %563

539:                                              ; preds = %537
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %541 unwind label %563

541:                                              ; preds = %539
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %540, ptr noundef nonnull @.str.35)
          to label %543 unwind label %563

543:                                              ; preds = %541
  %544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef nonnull align 8 dereferenceable(32) %461)
          to label %545 unwind label %563

545:                                              ; preds = %543
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %544, ptr noundef nonnull @.str.36)
          to label %547 unwind label %563

547:                                              ; preds = %545
  %548 = load i32, ptr %157, align 4, !tbaa !22
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %546, i32 noundef %548)
          to label %550 unwind label %563

550:                                              ; preds = %547
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef nonnull @.str.37)
          to label %552 unwind label %563

552:                                              ; preds = %550
  %553 = load i32, ptr %180, align 4, !tbaa !40
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %551, i32 noundef %553)
          to label %555 unwind label %563

555:                                              ; preds = %552
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef nonnull @.str.38)
          to label %557 unwind label %563

557:                                              ; preds = %555
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef nonnull align 8 dereferenceable(152) %531)
          to label %559 unwind label %563

559:                                              ; preds = %557
  %560 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %558, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %561 unwind label %563

561:                                              ; preds = %559
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %565 unwind label %563

563:                                              ; preds = %561, %559, %557, %555, %552, %550, %547, %545, %543, %541, %539, %537, %534, %528
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %661

565:                                              ; preds = %561, %533
  invoke void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %566 unwind label %587

566:                                              ; preds = %565
  %567 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %531, ptr noundef nonnull %54)
          to label %568 unwind label %589

568:                                              ; preds = %566
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br i1 %567, label %591, label %569

569:                                              ; preds = %568
  %570 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %571 unwind label %587

571:                                              ; preds = %569
  br i1 %570, label %572, label %660

572:                                              ; preds = %571
  %573 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %573, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %575 unwind label %587

575:                                              ; preds = %572
  %576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %574, ptr noundef nonnull @.str.39)
          to label %577 unwind label %587

577:                                              ; preds = %575
  %578 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %579 unwind label %587

579:                                              ; preds = %577
  %580 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %578, ptr noundef nonnull @.str.40)
          to label %581 unwind label %587

581:                                              ; preds = %579
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef nonnull align 8 dereferenceable(152) %531)
          to label %583 unwind label %587

583:                                              ; preds = %581
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %585 unwind label %587

585:                                              ; preds = %583
  %586 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %660 unwind label %587

587:                                              ; preds = %585, %583, %581, %579, %577, %575, %572, %569, %565
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %661

589:                                              ; preds = %566
  %590 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %661

591:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %55) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %55)
          to label %592 unwind label %595

592:                                              ; preds = %591
  %593 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %458, ptr noundef nonnull align 8 dereferenceable(152) %55)
          to label %594 unwind label %597

594:                                              ; preds = %592
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %55) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %55) #8
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %660

595:                                              ; preds = %591
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %599

597:                                              ; preds = %592
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %55) #8
  br label %599

599:                                              ; preds = %597, %595
  %.pn209 = phi { ptr, i32 } [ %598, %597 ], [ %596, %595 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %55) #8
  br label %661

600:                                              ; preds = %.thread260
  %601 = getelementptr inbounds i8, ptr %160, i64 24
  %602 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %603 unwind label %623

603:                                              ; preds = %600
  br i1 %602, label %604, label %625

604:                                              ; preds = %603
  %605 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %605, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %607 unwind label %623

607:                                              ; preds = %604
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull @.str.34)
          to label %609 unwind label %623

609:                                              ; preds = %607
  %610 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %611 unwind label %623

611:                                              ; preds = %609
  %612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull @.str.35)
          to label %613 unwind label %623

613:                                              ; preds = %611
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef nonnull align 8 dereferenceable(32) %461)
          to label %615 unwind label %623

615:                                              ; preds = %613
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull @.str.40)
          to label %617 unwind label %623

617:                                              ; preds = %615
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull align 8 dereferenceable(168) %601)
          to label %619 unwind label %623

619:                                              ; preds = %617
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %621 unwind label %623

621:                                              ; preds = %619
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %620, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %625 unwind label %623

623:                                              ; preds = %621, %619, %617, %615, %613, %611, %609, %607, %604, %600
  %624 = landingpad { ptr, i32 }
          cleanup
  br label %661

625:                                              ; preds = %621, %603
  invoke void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IRZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS0_11TypeResolveERNS0_8FunctionEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %626 unwind label %647

626:                                              ; preds = %625
  %627 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %601, ptr noundef nonnull %56)
          to label %628 unwind label %649

628:                                              ; preds = %626
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br i1 %627, label %651, label %629

629:                                              ; preds = %628
  %630 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %631 unwind label %647

631:                                              ; preds = %629
  br i1 %630, label %632, label %660

632:                                              ; preds = %631
  %633 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %633, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %635 unwind label %647

635:                                              ; preds = %632
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef nonnull @.str.39)
          to label %637 unwind label %647

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %639 unwind label %647

639:                                              ; preds = %637
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull @.str.40)
          to label %641 unwind label %647

641:                                              ; preds = %639
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef nonnull align 8 dereferenceable(168) %601)
          to label %643 unwind label %647

643:                                              ; preds = %641
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %645 unwind label %647

645:                                              ; preds = %643
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %660 unwind label %647

647:                                              ; preds = %645, %643, %641, %639, %637, %635, %632, %629, %625
  %648 = landingpad { ptr, i32 }
          cleanup
  br label %661

649:                                              ; preds = %626
  %650 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %661

651:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %57) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %57)
          to label %652 unwind label %655

652:                                              ; preds = %651
  %653 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %458, ptr noundef nonnull align 8 dereferenceable(152) %57)
          to label %654 unwind label %657

654:                                              ; preds = %652
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %57) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %57) #8
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %660

655:                                              ; preds = %651
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %659

657:                                              ; preds = %652
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %57) #8
  br label %659

659:                                              ; preds = %657, %655
  %.pn205 = phi { ptr, i32 } [ %658, %657 ], [ %656, %655 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %57) #8
  br label %661

660:                                              ; preds = %654, %645, %631, %594, %585, %571
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #8
  br label %673

661:                                              ; preds = %623, %659, %649, %647, %563, %599, %589, %587
  %.pn209.pn.pn.pn = phi { ptr, i32 } [ %564, %563 ], [ %.pn209, %599 ], [ %588, %587 ], [ %590, %589 ], [ %624, %623 ], [ %.pn205, %659 ], [ %648, %647 ], [ %650, %649 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #8
  br label %674

.thread:                                          ; preds = %495, %523
  %662 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %663 unwind label %493

663:                                              ; preds = %.thread
  br i1 %662, label %664, label %673

664:                                              ; preds = %663
  %665 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %666 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %665, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %667 unwind label %493

667:                                              ; preds = %664
  %668 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull @.str.41)
          to label %669 unwind label %493

669:                                              ; preds = %667
  %670 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %668, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %671 unwind label %493

671:                                              ; preds = %669
  %672 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %670, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %673 unwind label %493

673:                                              ; preds = %663, %671, %660
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  br label %.critedge258

674:                                              ; preds = %661, %522, %493, %491
  %.pn214 = phi { ptr, i32 } [ %494, %493 ], [ %.pn209.pn.pn.pn, %661 ], [ %.pn, %522 ], [ %492, %491 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %675

675:                                              ; preds = %674, %489
  %.pn214.pn = phi { ptr, i32 } [ %.pn214, %674 ], [ %490, %489 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  br label %753

676:                                              ; preds = %438, %443, %448
  %677 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %678 unwind label %177

678:                                              ; preds = %676
  br i1 %677, label %679, label %688

679:                                              ; preds = %678
  %680 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %680, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %682 unwind label %177

682:                                              ; preds = %679
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull @.str.42)
          to label %684 unwind label %177

684:                                              ; preds = %682
  %685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %686 unwind label %177

686:                                              ; preds = %684
  %687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %685, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %688 unwind label %177

688:                                              ; preds = %686, %678
  %689 = load i32, ptr %166, align 4, !tbaa !41
  %690 = zext i32 %689 to i64
  %691 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  %692 = icmp ugt i64 %691, %690
  br i1 %692, label %693, label %706

693:                                              ; preds = %688
  %694 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %695 unwind label %177

695:                                              ; preds = %693
  br i1 %694, label %696, label %720

696:                                              ; preds = %695
  %697 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %697, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %699 unwind label %177

699:                                              ; preds = %696
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %698, ptr noundef nonnull @.str.43)
          to label %701 unwind label %177

701:                                              ; preds = %699
  %702 = load i32, ptr %166, align 4, !tbaa !41
  %703 = zext i32 %702 to i64
  %704 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %703) #8
  %705 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef nonnull align 8 dereferenceable(152) %704)
          to label %.invoke532 unwind label %177

706:                                              ; preds = %688
  %707 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %708 unwind label %177

708:                                              ; preds = %706
  br i1 %707, label %709, label %720

709:                                              ; preds = %708
  %710 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %710, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %712 unwind label %177

712:                                              ; preds = %709
  %713 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %711, ptr noundef nonnull @.str.43)
          to label %714 unwind label %177

714:                                              ; preds = %712
  %715 = getelementptr inbounds i8, ptr %164, i64 24
  %716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %713, ptr noundef nonnull align 8 dereferenceable(168) %715)
          to label %.invoke532 unwind label %177

.invoke532:                                       ; preds = %714, %701
  %717 = phi ptr [ %705, %701 ], [ %716, %714 ]
  %718 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %717, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke530 unwind label %177

.invoke530:                                       ; preds = %.invoke532
  %719 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %718, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %720 unwind label %177

720:                                              ; preds = %.invoke530, %708, %695
  %721 = load i32, ptr %180, align 4, !tbaa !40
  %722 = zext i32 %721 to i64
  %723 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  %724 = icmp ugt i64 %723, %722
  br i1 %724, label %725, label %738

725:                                              ; preds = %720
  %726 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %727 unwind label %177

727:                                              ; preds = %725
  br i1 %726, label %728, label %752

728:                                              ; preds = %727
  %729 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %730 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %729, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %731 unwind label %177

731:                                              ; preds = %728
  %732 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %730, ptr noundef nonnull @.str.44)
          to label %733 unwind label %177

733:                                              ; preds = %731
  %734 = load i32, ptr %180, align 4, !tbaa !40
  %735 = zext i32 %734 to i64
  %736 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %735) #8
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %732, ptr noundef nonnull align 8 dereferenceable(152) %736)
          to label %.invoke531 unwind label %177

738:                                              ; preds = %720
  %739 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %740 unwind label %177

740:                                              ; preds = %738
  br i1 %739, label %741, label %752

741:                                              ; preds = %740
  %742 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %742, ptr noundef nonnull @__func__._Z40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionE)
          to label %744 unwind label %177

744:                                              ; preds = %741
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %743, ptr noundef nonnull @.str.44)
          to label %746 unwind label %177

746:                                              ; preds = %744
  %747 = getelementptr inbounds i8, ptr %160, i64 24
  %748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef nonnull align 8 dereferenceable(168) %747)
          to label %.invoke531 unwind label %177

.invoke531:                                       ; preds = %746, %733
  %749 = phi ptr [ %737, %733 ], [ %748, %746 ]
  %750 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %749, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke unwind label %177

.invoke:                                          ; preds = %.invoke531
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %750, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %752 unwind label %177

752:                                              ; preds = %.invoke, %727, %740
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %754

753:                                              ; preds = %218, %436, %348, %358, %226, %238, %239, %279, %284, %367, %401, %418, %423, %373, %675, %177
  %.pn244.pn = phi { ptr, i32 } [ %.pn214.pn, %675 ], [ %178, %177 ], [ %437, %436 ], [ %219, %218 ], [ %.pn241, %367 ], [ %.pn238, %284 ], [ %.pn236, %279 ], [ %227, %226 ], [ %240, %239 ], [ %.pn234, %238 ], [ %.pn231, %358 ], [ %.pn228.pn, %348 ], [ %374, %373 ], [ %.pn219, %423 ], [ %.pn217, %418 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %759

.critedge258:                                     ; preds = %.loopexit, %.preheader266.split, %..loopexit262_crit_edge, %413, %434, %426, %673
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %754

754:                                              ; preds = %123, %752, %.critedge258
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  %755 = load i64, ptr %14, align 8, !tbaa !11
  %756 = add i64 %755, 1
  store i64 %756, ptr %14, align 8, !tbaa !11
  %757 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %758 = icmp ult i64 %756, %757
  br i1 %758, label %84, label %._crit_edge, !llvm.loop !44

759:                                              ; preds = %753, %121
  %.pn244.pn.pn = phi { ptr, i32 } [ %.pn244.pn, %753 ], [ %122, %121 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %760

760:                                              ; preds = %759, %119
  %.pn244.pn.pn.pn = phi { ptr, i32 } [ %.pn244.pn.pn, %759 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %761

761:                                              ; preds = %760, %82
  %.pn244.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn244.pn.pn.pn, %760 ], [ %83, %82 ]
  call void @_ZNSt6vectorIZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS0_8FunctionEE10LocalUsageSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %762

762:                                              ; preds = %761, %80
  %.pn244.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn244.pn.pn.pn.pn, %761 ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #8
  br label %763

763:                                              ; preds = %762, %78
  %.pn244.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn244.pn.pn.pn.pn.pn, %762 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn244.pn.pn.pn.pn.pn.pn

764:                                              ; preds = %361, %352
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117visit_mir_lvaluesERN3MIR11TypeResolveERKNS0_8FunctionESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_19iter_pathERKN3MIR8FunctionERKNS_7StmtRefES6_St8functionIFbS4_RKNS0_9StatementEEES7_IFbS4_RKNS0_10TerminatorEEE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152), 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(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS4_SaIS4_EEEEZ40MIR_Optimise_DeTemporary_SingleSetAndUseRNS2_11TypeResolveERNS2_8FunctionEE4$_15EbT_SG_T0_"(ptr, ptr) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef) local_unnamed_addr #3

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { 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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !16, i64 0}
!18 = !{!"_ZTSZ40MIR_Optimise_DeTemporary_SingleSetAndUseRN3MIR11TypeResolveERNS_8FunctionEE10LocalUsage", !16, i64 0, !16, i64 4, !16, i64 8, !19, i64 12, !19, i64 20}
!19 = !{!"_ZTSN12_GLOBAL__N_17StmtRefE", !16, i64 0, !16, i64 4}
!20 = !{!18, !16, i64 4}
!21 = !{!18, !16, i64 8}
!22 = !{!18, !16, i64 20}
!23 = !{!18, !16, i64 12}
!24 = !{!19, !16, i64 4}
!25 = !{!26, !16, i64 0}
!26 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !16, i64 0, !16, i64 4, !27, i64 8, !33, i64 40, !35, i64 136}
!27 = !{!"_ZTSN3MIR6LValueE", !28, i64 0, !29, i64 8}
!28 = !{!"_ZTSN3MIR6LValue7StorageE", !12, i64 0}
!29 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!33 = !{!"_ZTSN3MIR10CallTargetE", !34, i64 0, !7, i64 8}
!34 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!35 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!39 = !{!19, !16, i64 0}
!40 = !{!18, !16, i64 24}
!41 = !{!18, !16, i64 16}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass