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

%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.337 = type { i8 }
%class.anon.339 = type { ptr }
%"class.std::vector.340" = type { %"struct.std::_Vector_base.341" }
%"struct.std::_Vector_base.341" = type { %"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl" }
%"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl" = type { %"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.189" = type { ptr }
%"struct.(anonymous namespace)::StmtRef" = type { i32, i32 }
%struct.Poss = type <{ %"struct.(anonymous namespace)::StmtRef", %"class.MIR::LValue::Storage", %"class.MIR::LValue::Storage", i8, [7 x i8] }>
%"class.MIR::LValue::Storage" = type { i64 }
%"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::allocator.190" = type { i8 }
%struct.VisitState = type { ptr, %"class.std::vector.25", %"class.std::vector.111" }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.376" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::function.226" = type { %"class.std::_Function_base", ptr }
%class.anon.377 = type { ptr }
%class.anon.378 = type { ptr }
%class.anon.379 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.381" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"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.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.std::function.267" = type { %"class.std::_Function_base", ptr }
%class.anon.382 = type { ptr, ptr }
%class.anon.383 = type { ptr, 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.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.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::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%"struct.std::pair" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.345", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.345" = type { %"struct.std::_Vector_base.346" }
%"struct.std::_Vector_base.346" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"class.HIR::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>

@g_debug_indent_level = external global i32, align 4
@__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [12 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 nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) #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)) #1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 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)) #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) #6 personality ptr @__gxx_personality_v0 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %class.TraceLog, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.337, align 1
  %10 = alloca %"class.std::function", align 8
  %11 = alloca %class.anon.339, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::vector.340", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %29 = alloca %struct.Poss, align 8
  %30 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %31 = alloca %"class.MIR::LValue::Storage", align 8
  %32 = alloca %"class.MIR::LValue::Storage", align 8
  %33 = alloca %"class.std::vector.25", align 8
  %34 = alloca %"class.std::allocator.190", align 1
  %35 = alloca %"class.std::vector.25", align 8
  %36 = alloca %"class.std::allocator.190", align 1
  %37 = alloca %struct.VisitState, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"struct.std::_Bit_reference", align 8
  %43 = alloca %"struct.std::_Bit_reference", align 8
  %44 = alloca %"struct.std::_Bit_reference", align 8
  %45 = alloca %"struct.std::_Bit_reference", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %55 = alloca ptr, align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.std::function.226", align 8
  %60 = alloca %class.anon.377, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"class.std::function.226", align 8
  %66 = alloca %class.anon.378, align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %70 = alloca %class.anon.379, align 1
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.381", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.381", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %75 = alloca ptr, align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %82 = alloca ptr, align 8
  %83 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %84 = alloca ptr, align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %87 = alloca ptr, align 8
  %88 = alloca %"class.MIR::Statement", align 8
  %89 = alloca %"class.MIR::Statement", align 8
  %90 = alloca %"class.std::function.267", align 8
  %91 = alloca %class.anon.382, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %95 = alloca ptr, align 8
  %96 = alloca %"class.std::function.267", align 8
  %97 = alloca %class.anon.383, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #8
  store i8 0, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #8
  %98 = call noundef zeroext i1 @_Z13debug_enabledv()
  %99 = zext i1 %98 to i64
  %100 = select i1 %98, ptr @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %101 = getelementptr inbounds %class.anon.339, ptr %11, i32 0, i32 0
  store ptr %6, ptr %101, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %100, ptr noundef %8, ptr noundef %10)
          to label %102 unwind label %114

102:                                              ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #8
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = getelementptr inbounds %"class.MIR::Function", ptr %103, i32 0, i32 2
  store ptr %104, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %105 = load ptr, ptr %15, align 8, !tbaa !5
  %106 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %105) #8
  %107 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %106, ptr %107, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #8
  %110 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %109, ptr %110, align 8
  br label %111

111:                                              ; preds = %354, %102
  %112 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %112, label %118, label %113

113:                                              ; preds = %111
  store i32 2, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %356

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

118:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %119 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  store ptr %119, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %120 = load ptr, ptr %19, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %120, i32 0, i32 0
  store ptr %121, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %122 = load ptr, ptr %20, align 8, !tbaa !5
  %123 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %122) #8
  %124 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.189", ptr %21, i32 0, i32 0
  store ptr %123, ptr %124, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %125 = load ptr, ptr %20, align 8, !tbaa !5
  %126 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #8
  %127 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.189", ptr %22, i32 0, i32 0
  store ptr %126, ptr %127, align 8
  br label %128

128:                                              ; preds = %326, %118
  %129 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %129, label %131, label %130

130:                                              ; preds = %128
  store i32 4, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %353

131:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %132 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  store ptr %132, ptr %23, align 8, !tbaa !5
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = getelementptr inbounds %"class.MIR::Function", ptr %135, i32 0, i32 2
  %137 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %136) #8
  %138 = ptrtoint ptr %134 to i64
  %139 = ptrtoint ptr %137 to i64
  %140 = sub i64 %138, %139
  %141 = sdiv exact i64 %140, 192
  %142 = trunc i64 %141 to i32
  %143 = load ptr, ptr %23, align 8, !tbaa !5
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %144, i32 0, i32 0
  %146 = call noundef ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %145) #8
  %147 = ptrtoint ptr %143 to i64
  %148 = ptrtoint ptr %146 to i64
  %149 = sub i64 %147, %148
  %150 = sdiv exact i64 %149, 152
  %151 = trunc i64 %150 to i32
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %133, i32 noundef %142, i32 noundef %151)
          to label %152 unwind label %157

152:                                              ; preds = %131
  %153 = load ptr, ptr %23, align 8, !tbaa !5
  %154 = invoke noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %153)
          to label %155 unwind label %157

155:                                              ; preds = %152
  br i1 %154, label %161, label %156

156:                                              ; preds = %155
  store i32 5, ptr %18, align 4
  br label %323

157:                                              ; preds = %152, %131
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %12, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %13, align 4
  br label %352

161:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %162 = load ptr, ptr %23, align 8, !tbaa !5
  %163 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %162)
          to label %164 unwind label %170

164:                                              ; preds = %161
  store ptr %163, ptr %24, align 8, !tbaa !5
  %165 = load ptr, ptr %24, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %165, i32 0, i32 0
  %167 = invoke noundef zeroext i1 @_ZNK3MIR6LValue8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %166)
          to label %168 unwind label %170

168:                                              ; preds = %164
  br i1 %167, label %174, label %169

169:                                              ; preds = %168
  store i32 5, ptr %18, align 4
  br label %320

170:                                              ; preds = %174, %164, %161
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %12, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %13, align 4
  br label %351

174:                                              ; preds = %168
  %175 = load ptr, ptr %24, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %175, i32 0, i32 1
  %177 = invoke noundef zeroext i1 @_ZNK3MIR6RValue9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %176)
          to label %178 unwind label %170

178:                                              ; preds = %174
  br i1 %177, label %180, label %179

179:                                              ; preds = %178
  store i32 5, ptr %18, align 4
  br label %320

180:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %181, i32 0, i32 1
  %183 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %182)
          to label %184 unwind label %197

184:                                              ; preds = %180
  store ptr %183, ptr %25, align 8, !tbaa !5
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %185, i32 0, i32 1
  %187 = getelementptr inbounds %"struct.MIR::LValue", ptr %186, i32 0, i32 0
  %188 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Storage8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %189 unwind label %197

189:                                              ; preds = %184
  br i1 %188, label %201, label %190

190:                                              ; preds = %189
  %191 = load ptr, ptr %25, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %191, i32 0, i32 1
  %193 = getelementptr inbounds %"struct.MIR::LValue", ptr %192, i32 0, i32 0
  %194 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Storage11is_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %195 unwind label %197

195:                                              ; preds = %190
  br i1 %194, label %201, label %196

196:                                              ; preds = %195
  store i32 5, ptr %18, align 4
  br label %319

197:                                              ; preds = %207, %190, %184, %180
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %12, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %13, align 4
  br label %350

201:                                              ; preds = %195, %189
  %202 = load ptr, ptr %25, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %202, i32 0, i32 1
  %204 = getelementptr inbounds %"struct.MIR::LValue", ptr %203, i32 0, i32 1
  %205 = call noundef i64 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %204) #8
  %206 = icmp eq i64 %205, 1
  br i1 %206, label %207, label %214

207:                                              ; preds = %201
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %208, i32 0, i32 1
  %210 = getelementptr inbounds %"struct.MIR::LValue", ptr %209, i32 0, i32 1
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %210, i64 noundef 0) #8
  %212 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %211)
          to label %213 unwind label %197

213:                                              ; preds = %207
  br i1 %212, label %215, label %214

214:                                              ; preds = %213, %201
  store i32 5, ptr %18, align 4
  br label %319

215:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %216 = load ptr, ptr %25, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %216, i32 0, i32 1
  %218 = getelementptr inbounds %"struct.MIR::LValue", ptr %217, i32 0, i32 0
  %219 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7Storage8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %218)
          to label %220 unwind label %258

220:                                              ; preds = %215
  br i1 %219, label %221, label %231

221:                                              ; preds = %220
  %222 = load ptr, ptr %5, align 8, !tbaa !5
  %223 = getelementptr inbounds %"class.MIR::Function", ptr %222, i32 0, i32 0
  %224 = load ptr, ptr %25, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %224, i32 0, i32 1
  %226 = getelementptr inbounds %"struct.MIR::LValue", ptr %225, i32 0, i32 0
  %227 = invoke noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %226)
          to label %228 unwind label %258

228:                                              ; preds = %221
  %229 = zext i32 %227 to i64
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %229) #8
  br label %243

231:                                              ; preds = %220
  %232 = load ptr, ptr %4, align 8, !tbaa !5
  %233 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %232, i32 0, i32 6
  %234 = load ptr, ptr %233, align 8, !tbaa !11
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %235, i32 0, i32 1
  %237 = getelementptr inbounds %"struct.MIR::LValue", ptr %236, i32 0, i32 0
  %238 = invoke noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %239 unwind label %258

239:                                              ; preds = %231
  %240 = zext i32 %238 to i64
  %241 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %234, i64 noundef %240) #8
  %242 = getelementptr inbounds %"struct.std::pair", ptr %241, i32 0, i32 1
  br label %243

243:                                              ; preds = %239, %228
  %244 = phi ptr [ %230, %228 ], [ %242, %239 ]
  store ptr %244, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %245 = load ptr, ptr %5, align 8, !tbaa !5
  %246 = getelementptr inbounds %"class.MIR::Function", ptr %245, i32 0, i32 0
  %247 = load ptr, ptr %24, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %247, i32 0, i32 0
  %249 = invoke noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %248)
          to label %250 unwind label %262

250:                                              ; preds = %243
  %251 = zext i32 %249 to i64
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef %251) #8
  store ptr %252, ptr %27, align 8, !tbaa !5
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %256 unwind label %262

256:                                              ; preds = %250
  br i1 %255, label %257, label %266

257:                                              ; preds = %256
  store i32 5, ptr %18, align 4
  br label %318

258:                                              ; preds = %231, %221, %215
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %12, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %13, align 4
  br label %349

262:                                              ; preds = %250, %243
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %12, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %13, align 4
  br label %348

266:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %267 = load ptr, ptr %4, align 8, !tbaa !5
  %268 = invoke noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %267)
          to label %269 unwind label %300

269:                                              ; preds = %266
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %270)
          to label %272 unwind label %300

272:                                              ; preds = %269
  invoke void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %28, i32 noundef %268, i32 noundef %271)
          to label %273 unwind label %300

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  %275 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %276 unwind label %300

276:                                              ; preds = %274
  br i1 %275, label %277, label %304

277:                                              ; preds = %276
  %278 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %278, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %280 unwind label %300

280:                                              ; preds = %277
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(120) %281)
          to label %283 unwind label %300

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

285:                                              ; preds = %283
  %286 = load ptr, ptr %24, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %286, i32 0, i32 0
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %289 unwind label %300

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

291:                                              ; preds = %289
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %292, i32 0, i32 1
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull align 8 dereferenceable(32) %293)
          to label %295 unwind label %300

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

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

299:                                              ; preds = %297
  br label %304

300:                                              ; preds = %297, %295, %291, %289, %285, %283, %280, %277, %274, %272, %269, %266
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %12, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %13, align 4
  br label %347

304:                                              ; preds = %299, %276
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !18
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %307, i32 0, i32 1
  %309 = getelementptr inbounds %"struct.MIR::LValue", ptr %308, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::LValue::Storage") align 8 %31, ptr noundef nonnull align 8 dereferenceable(8) %309)
          to label %310 unwind label %328

310:                                              ; preds = %306
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %311, i32 0, i32 0
  %313 = getelementptr inbounds %"struct.MIR::LValue", ptr %312, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::LValue::Storage") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %313)
          to label %314 unwind label %332

314:                                              ; preds = %310
  %315 = load i64, ptr %30, align 4
  invoke void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossC2EN12_GLOBAL__N_17StmtRefENS_6LValue7StorageES8_(ptr noundef nonnull align 8 dereferenceable(25) %29, i64 %315, ptr noundef %31, ptr noundef %32)
          to label %316 unwind label %336

316:                                              ; preds = %314
  invoke void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(25) %29)
          to label %317 unwind label %340

317:                                              ; preds = %316
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %29) #8
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  store i32 0, ptr %18, align 4
  br label %318

318:                                              ; preds = %317, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %319

319:                                              ; preds = %318, %214, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %320

320:                                              ; preds = %319, %179, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %321 = load i32, ptr %18, align 4
  switch i32 %321, label %323 [
    i32 0, label %322
  ]

322:                                              ; preds = %320
  store i32 0, ptr %18, align 4
  br label %323

323:                                              ; preds = %322, %320, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %324 = load i32, ptr %18, align 4
  switch i32 %324, label %1005 [
    i32 0, label %325
    i32 5, label %326
  ]

325:                                              ; preds = %323
  br label %326

326:                                              ; preds = %325, %323
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %128

328:                                              ; preds = %306
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %12, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %13, align 4
  br label %346

332:                                              ; preds = %310
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %12, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %13, align 4
  br label %345

336:                                              ; preds = %314
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %12, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %13, align 4
  br label %344

340:                                              ; preds = %316
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %12, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %13, align 4
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %29) #8
  br label %344

344:                                              ; preds = %340, %336
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br label %345

345:                                              ; preds = %344, %332
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %346

346:                                              ; preds = %345, %328
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  br label %347

347:                                              ; preds = %346, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %348

348:                                              ; preds = %347, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %349

349:                                              ; preds = %348, %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %350

350:                                              ; preds = %349, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %351

351:                                              ; preds = %350, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %352

352:                                              ; preds = %351, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %998

353:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %354

354:                                              ; preds = %353
  %355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %111

356:                                              ; preds = %113
  %357 = call noundef i64 @_ZNKSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %358 = icmp eq i64 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %356
  store i1 false, ptr %3, align 1
  store i32 1, ptr %18, align 4
  br label %996

360:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 40, ptr %33) #8
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = getelementptr inbounds %"class.MIR::Function", ptr %361, i32 0, i32 2
  %363 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %33, i64 noundef %363, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %364 unwind label %380

364:                                              ; preds = %360
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr %35) #8
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = getelementptr inbounds %"class.MIR::Function", ptr %365, i32 0, i32 2
  %367 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %366) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %367, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %368 unwind label %384

368:                                              ; preds = %364
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 72, ptr %37) #8
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(72) %37, ptr noundef nonnull align 8 dereferenceable(96) %369)
          to label %370 unwind label %388

370:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  store ptr %14, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %371 = load ptr, ptr %38, align 8, !tbaa !5
  %372 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %371) #8
  %373 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %39, i32 0, i32 0
  store ptr %372, ptr %373, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %374 = load ptr, ptr %38, align 8, !tbaa !5
  %375 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %374) #8
  %376 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %40, i32 0, i32 0
  store ptr %375, ptr %376, align 8
  br label %377

377:                                              ; preds = %476, %370
  %378 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br i1 %378, label %392, label %379

379:                                              ; preds = %377
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %483

380:                                              ; preds = %360
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %12, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %13, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %497

384:                                              ; preds = %364
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %12, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %13, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %496

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

392:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %393 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  store ptr %393, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #8
  %394 = load ptr, ptr %41, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.Poss, ptr %394, i32 0, i32 0
  %396 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %395, i32 0, i32 0
  %397 = load i32, ptr %396, align 8, !tbaa !19
  %398 = zext i32 %397 to i64
  %399 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %33, i64 noundef %398)
          to label %400 unwind label %438

400:                                              ; preds = %392
  %401 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %402 = extractvalue { ptr, i64 } %399, 0
  store ptr %402, ptr %401, align 8
  %403 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %404 = extractvalue { ptr, i64 } %399, 1
  store i64 %404, ptr %403, align 8
  %405 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %42) #8
  %406 = xor i1 %405, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  br i1 %406, label %407, label %454

407:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  %408 = load ptr, ptr %41, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.Poss, ptr %408, i32 0, i32 0
  %410 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %409, i32 0, i32 0
  %411 = load i32, ptr %410, align 8, !tbaa !19
  %412 = zext i32 %411 to i64
  %413 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %33, i64 noundef %412)
          to label %414 unwind label %442

414:                                              ; preds = %407
  %415 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %416 = extractvalue { ptr, i64 } %413, 0
  store ptr %416, ptr %415, align 8
  %417 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %418 = extractvalue { ptr, i64 } %413, 1
  store i64 %418, ptr %417, align 8
  %419 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %43, i1 noundef zeroext true) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  %420 = load ptr, ptr %41, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.Poss, ptr %420, i32 0, i32 0
  %422 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %421, i32 0, i32 0
  %423 = load i32, ptr %422, align 8, !tbaa !19
  %424 = invoke noundef zeroext i1 @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitState15does_block_loopEj(ptr noundef nonnull align 8 dereferenceable(72) %37, i32 noundef %423)
          to label %425 unwind label %446

425:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #8
  %426 = load ptr, ptr %41, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.Poss, ptr %426, i32 0, i32 0
  %428 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %427, i32 0, i32 0
  %429 = load i32, ptr %428, align 8, !tbaa !19
  %430 = zext i32 %429 to i64
  %431 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %430)
          to label %432 unwind label %450

432:                                              ; preds = %425
  %433 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %434 = extractvalue { ptr, i64 } %431, 0
  store ptr %434, ptr %433, align 8
  %435 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %436 = extractvalue { ptr, i64 } %431, 1
  store i64 %436, ptr %435, align 8
  %437 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %44, i1 noundef zeroext %424) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  br label %454

438:                                              ; preds = %392
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %12, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  br label %482

442:                                              ; preds = %407
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %12, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br label %482

446:                                              ; preds = %414
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %12, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %13, align 4
  br label %482

450:                                              ; preds = %425
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %12, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  br label %482

454:                                              ; preds = %432, %400
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #8
  %455 = load ptr, ptr %41, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.Poss, ptr %455, i32 0, i32 0
  %457 = getelementptr inbounds %"struct.(anonymous namespace)::StmtRef", ptr %456, i32 0, i32 0
  %458 = load i32, ptr %457, align 8, !tbaa !19
  %459 = zext i32 %458 to i64
  %460 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %459)
          to label %461 unwind label %478

461:                                              ; preds = %454
  %462 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 0
  %463 = extractvalue { ptr, i64 } %460, 0
  store ptr %463, ptr %462, align 8
  %464 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 1
  %465 = extractvalue { ptr, i64 } %460, 1
  store i64 %465, ptr %464, align 8
  %466 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  %467 = zext i1 %466 to i32
  %468 = load ptr, ptr %41, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.Poss, ptr %468, i32 0, i32 3
  %470 = load i8, ptr %469, align 8, !tbaa !24, !range !25, !noundef !26
  %471 = trunc i8 %470 to i1
  %472 = zext i1 %471 to i32
  %473 = or i32 %472, %467
  %474 = icmp ne i32 %473, 0
  %475 = zext i1 %474 to i8
  store i8 %475, ptr %469, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %476

476:                                              ; preds = %461
  %477 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %377

478:                                              ; preds = %454
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %12, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  br label %482

482:                                              ; preds = %478, %450, %446, %442, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %37) #8
  br label %495

483:                                              ; preds = %379
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %37) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %37) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %484 = load ptr, ptr %5, align 8, !tbaa !5
  %485 = getelementptr inbounds %"class.MIR::Function", ptr %484, i32 0, i32 2
  store ptr %485, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %486 = load ptr, ptr %46, align 8, !tbaa !5
  %487 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %486) #8
  %488 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %487, ptr %488, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %489 = load ptr, ptr %46, align 8, !tbaa !5
  %490 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %489) #8
  %491 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  store ptr %490, ptr %491, align 8
  br label %492

492:                                              ; preds = %728, %483
  %493 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br i1 %493, label %498, label %494

494:                                              ; preds = %492
  store i32 10, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %731

495:                                              ; preds = %482, %388
  call void @llvm.lifetime.end.p0(i64 72, ptr %37) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #8
  br label %496

496:                                              ; preds = %495, %384
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #8
  br label %497

497:                                              ; preds = %496, %380
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #8
  br label %998

498:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %499 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  store ptr %499, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %500 = load ptr, ptr %49, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %500, i32 0, i32 0
  store ptr %501, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %502 = load ptr, ptr %50, align 8, !tbaa !5
  %503 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %502) #8
  %504 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.189", ptr %51, i32 0, i32 0
  store ptr %503, ptr %504, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %505 = load ptr, ptr %50, align 8, !tbaa !5
  %506 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %505) #8
  %507 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.189", ptr %52, i32 0, i32 0
  store ptr %506, ptr %507, align 8
  br label %508

508:                                              ; preds = %663, %498
  %509 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %509, label %511, label %510

510:                                              ; preds = %508
  store i32 12, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %667

511:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %512 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  store ptr %512, ptr %53, align 8, !tbaa !5
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = load ptr, ptr %49, align 8, !tbaa !5
  %515 = load ptr, ptr %5, align 8, !tbaa !5
  %516 = getelementptr inbounds %"class.MIR::Function", ptr %515, i32 0, i32 2
  %517 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %516) #8
  %518 = ptrtoint ptr %514 to i64
  %519 = ptrtoint ptr %517 to i64
  %520 = sub i64 %518, %519
  %521 = sdiv exact i64 %520, 192
  %522 = trunc i64 %521 to i32
  %523 = load ptr, ptr %53, align 8, !tbaa !5
  %524 = load ptr, ptr %49, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %524, i32 0, i32 0
  %526 = call noundef ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %525) #8
  %527 = ptrtoint ptr %523 to i64
  %528 = ptrtoint ptr %526 to i64
  %529 = sub i64 %527, %528
  %530 = sdiv exact i64 %529, 152
  %531 = trunc i64 %530 to i32
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %513, i32 noundef %522, i32 noundef %531)
          to label %532 unwind label %549

532:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = invoke noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %533)
          to label %535 unwind label %553

535:                                              ; preds = %532
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %536)
          to label %538 unwind label %553

538:                                              ; preds = %535
  invoke void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %54, i32 noundef %534, i32 noundef %537)
          to label %539 unwind label %553

539:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  store ptr %14, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %540 = load ptr, ptr %55, align 8, !tbaa !5
  %541 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %540) #8
  %542 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %56, i32 0, i32 0
  store ptr %541, ptr %542, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %543 = load ptr, ptr %55, align 8, !tbaa !5
  %544 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %543) #8
  %545 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %57, i32 0, i32 0
  store ptr %544, ptr %545, align 8
  br label %546

546:                                              ; preds = %659, %539
  %547 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br i1 %547, label %557, label %548

548:                                              ; preds = %546
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %662

549:                                              ; preds = %511
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %12, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %13, align 4
  br label %666

553:                                              ; preds = %538, %535, %532
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %12, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %13, align 4
  br label %665

557:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %558 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  store ptr %558, ptr %58, align 8, !tbaa !5
  %559 = load ptr, ptr %58, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.Poss, ptr %559, i32 0, i32 0
  %561 = invoke noundef zeroext i1 @_ZNK12_GLOBAL__N_17StmtRefeqERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %54, ptr noundef nonnull align 4 dereferenceable(8) %560)
          to label %562 unwind label %564

562:                                              ; preds = %557
  br i1 %561, label %563, label %568

563:                                              ; preds = %562
  store i32 15, ptr %18, align 4
  br label %656

564:                                              ; preds = %643, %641, %638, %636, %632, %629, %626, %623, %610, %608, %605, %603, %599, %596, %593, %590, %582, %575, %572, %568, %557
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %12, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %13, align 4
  br label %661

568:                                              ; preds = %562
  %569 = load ptr, ptr %53, align 8, !tbaa !5
  %570 = invoke noundef zeroext i1 @_ZNK3MIR9Statement7is_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %569)
          to label %571 unwind label %564

571:                                              ; preds = %568
  br i1 %570, label %572, label %616

572:                                              ; preds = %571
  %573 = load ptr, ptr %53, align 8, !tbaa !5
  %574 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %573)
          to label %575 unwind label %564

575:                                              ; preds = %572
  %576 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %574, i32 0, i32 2
  %577 = getelementptr inbounds %"struct.MIR::LValue", ptr %576, i32 0, i32 0
  %578 = load ptr, ptr %58, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.Poss, ptr %578, i32 0, i32 1
  %580 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7StorageeqERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull align 8 dereferenceable(8) %579)
          to label %581 unwind label %564

581:                                              ; preds = %575
  br i1 %580, label %582, label %616

582:                                              ; preds = %581
  %583 = load ptr, ptr %53, align 8, !tbaa !5
  %584 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %583)
          to label %585 unwind label %564

585:                                              ; preds = %582
  %586 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %584, i32 0, i32 2
  %587 = getelementptr inbounds %"struct.MIR::LValue", ptr %586, i32 0, i32 1
  %588 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %587) #8
  br i1 %588, label %589, label %616

589:                                              ; preds = %585
  br label %590

590:                                              ; preds = %589
  %591 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %592 unwind label %564

592:                                              ; preds = %590
  br i1 %591, label %593, label %613

593:                                              ; preds = %592
  %594 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %595 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %594, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %596 unwind label %564

596:                                              ; preds = %593
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef nonnull align 8 dereferenceable(120) %597)
          to label %599 unwind label %564

599:                                              ; preds = %596
  %600 = load ptr, ptr %58, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.Poss, ptr %600, i32 0, i32 1
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef nonnull align 8 dereferenceable(8) %601)
          to label %603 unwind label %564

603:                                              ; preds = %599
  %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.61)
          to label %605 unwind label %564

605:                                              ; preds = %603
  %606 = load ptr, ptr %53, align 8, !tbaa !5
  %607 = 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) %606)
          to label %608 unwind label %564

608:                                              ; preds = %605
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef @_ZSt3decRSt8ios_base)
          to label %610 unwind label %564

610:                                              ; preds = %608
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %612 unwind label %564

612:                                              ; preds = %610
  br label %613

613:                                              ; preds = %612, %592
  br label %614

614:                                              ; preds = %613
  br label %615

615:                                              ; preds = %614
  store i32 15, ptr %18, align 4
  br label %656

616:                                              ; preds = %585, %581, %571
  %617 = load ptr, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %618 = getelementptr inbounds %class.anon.377, ptr %60, i32 0, i32 0
  %619 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %619, ptr %618, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %620 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_117visit_mir_lvaluesERKN3MIR9StatementESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %617, ptr noundef %59)
          to label %621 unwind label %646

621:                                              ; preds = %616
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br i1 %620, label %622, label %655

622:                                              ; preds = %621
  br label %623

623:                                              ; preds = %622
  %624 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %625 unwind label %564

625:                                              ; preds = %623
  br i1 %624, label %626, label %650

626:                                              ; preds = %625
  %627 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %627, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %629 unwind label %564

629:                                              ; preds = %626
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef nonnull align 8 dereferenceable(120) %630)
          to label %632 unwind label %564

632:                                              ; preds = %629
  %633 = load ptr, ptr %58, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.Poss, ptr %633, i32 0, i32 1
  %635 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %631, ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %636 unwind label %564

636:                                              ; preds = %632
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef @.str.62)
          to label %638 unwind label %564

638:                                              ; preds = %636
  %639 = load ptr, ptr %53, align 8, !tbaa !5
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %637, ptr noundef nonnull align 8 dereferenceable(152) %639)
          to label %641 unwind label %564

641:                                              ; preds = %638
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef @_ZSt3decRSt8ios_base)
          to label %643 unwind label %564

643:                                              ; preds = %641
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %645 unwind label %564

645:                                              ; preds = %643
  br label %650

646:                                              ; preds = %616
  %647 = landingpad { ptr, i32 }
          cleanup
  %648 = extractvalue { ptr, i32 } %647, 0
  store ptr %648, ptr %12, align 8
  %649 = extractvalue { ptr, i32 } %647, 1
  store i32 %649, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %661

650:                                              ; preds = %645, %625
  br label %651

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %651
  %653 = load ptr, ptr %58, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.Poss, ptr %653, i32 0, i32 3
  store i8 1, ptr %654, align 8, !tbaa !24
  br label %655

655:                                              ; preds = %652, %621
  store i32 0, ptr %18, align 4
  br label %656

656:                                              ; preds = %655, %615, %563
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  %657 = load i32, ptr %18, align 4
  switch i32 %657, label %1005 [
    i32 0, label %658
    i32 15, label %659
  ]

658:                                              ; preds = %656
  br label %659

659:                                              ; preds = %658, %656
  %660 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %546

661:                                              ; preds = %646, %564
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %665

662:                                              ; preds = %548
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %663

663:                                              ; preds = %662
  %664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %508

665:                                              ; preds = %661, %553
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %666

666:                                              ; preds = %665, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %730

667:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  store ptr %14, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %668 = load ptr, ptr %61, align 8, !tbaa !5
  %669 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %668) #8
  %670 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %62, i32 0, i32 0
  store ptr %669, ptr %670, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %671 = load ptr, ptr %61, align 8, !tbaa !5
  %672 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %671) #8
  %673 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %63, i32 0, i32 0
  store ptr %672, ptr %673, align 8
  br label %674

674:                                              ; preds = %724, %667
  %675 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br i1 %675, label %677, label %676

676:                                              ; preds = %674
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %727

677:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %678 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  store ptr %678, ptr %64, align 8, !tbaa !5
  %679 = load ptr, ptr %49, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %679, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %681 = getelementptr inbounds %class.anon.378, ptr %66, i32 0, i32 0
  %682 = load ptr, ptr %64, align 8, !tbaa !5
  store ptr %682, ptr %681, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  %683 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_117visit_mir_lvaluesERKN3MIR10TerminatorESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %680, ptr noundef %65)
          to label %684 unwind label %710

684:                                              ; preds = %677
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br i1 %683, label %685, label %723

685:                                              ; preds = %684
  br label %686

686:                                              ; preds = %685
  %687 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %688 unwind label %714

688:                                              ; preds = %686
  br i1 %687, label %689, label %718

689:                                              ; preds = %688
  %690 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %690, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %692 unwind label %714

692:                                              ; preds = %689
  %693 = load ptr, ptr %4, align 8, !tbaa !5
  %694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef nonnull align 8 dereferenceable(120) %693)
          to label %695 unwind label %714

695:                                              ; preds = %692
  %696 = load ptr, ptr %64, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.Poss, ptr %696, i32 0, i32 1
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %694, ptr noundef nonnull align 8 dereferenceable(8) %697)
          to label %699 unwind label %714

699:                                              ; preds = %695
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %698, ptr noundef @.str.62)
          to label %701 unwind label %714

701:                                              ; preds = %699
  %702 = load ptr, ptr %49, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %702, i32 0, i32 1
  %704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef nonnull align 8 dereferenceable(168) %703)
          to label %705 unwind label %714

705:                                              ; preds = %701
  %706 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %704, ptr noundef @_ZSt3decRSt8ios_base)
          to label %707 unwind label %714

707:                                              ; preds = %705
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %706, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %709 unwind label %714

709:                                              ; preds = %707
  br label %718

710:                                              ; preds = %677
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %12, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %726

714:                                              ; preds = %707, %705, %701, %699, %695, %692, %689, %686
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %12, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %13, align 4
  br label %726

718:                                              ; preds = %709, %688
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  %721 = load ptr, ptr %64, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.Poss, ptr %721, i32 0, i32 3
  store i8 1, ptr %722, align 8, !tbaa !24
  br label %723

723:                                              ; preds = %720, %684
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %724

724:                                              ; preds = %723
  %725 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  br label %674

726:                                              ; preds = %714, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %730

727:                                              ; preds = %676
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %728

728:                                              ; preds = %727
  %729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %492

730:                                              ; preds = %726, %666
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %998

731:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %732 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %733 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %68, i32 0, i32 0
  store ptr %732, ptr %733, align 8
  %734 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %735 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %69, i32 0, i32 0
  store ptr %734, ptr %735, align 8
  %736 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %68, i32 0, i32 0
  %737 = load ptr, ptr %736, align 8
  %738 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %69, i32 0, i32 0
  %739 = load ptr, ptr %738, align 8
  %740 = invoke ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS2_8FunctionEE4PossSt6vectorIS7_SaIS7_EEEEZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedS4_S6_E3$_6ET_SE_SE_T0_"(ptr %737, ptr %739)
          to label %741 unwind label %755

741:                                              ; preds = %731
  %742 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %67, i32 0, i32 0
  store ptr %740, ptr %742, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %743 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %744 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %73, i32 0, i32 0
  store ptr %743, ptr %744, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  %745 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.381", ptr %71, i32 0, i32 0
  %746 = load ptr, ptr %745, align 8
  %747 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.381", ptr %72, i32 0, i32 0
  %748 = load ptr, ptr %747, align 8
  %749 = invoke ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS5_S7_EESC_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr %746, ptr %748)
          to label %750 unwind label %759

750:                                              ; preds = %741
  %751 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %74, i32 0, i32 0
  store ptr %749, ptr %751, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  %752 = call noundef i64 @_ZNKSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %753 = icmp eq i64 %752, 0
  br i1 %753, label %754, label %764

754:                                              ; preds = %750
  store i1 false, ptr %3, align 1
  store i32 1, ptr %18, align 4
  br label %996

755:                                              ; preds = %731
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %12, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %13, align 4
  br label %763

759:                                              ; preds = %741
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %12, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %763

763:                                              ; preds = %759, %755
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %998

764:                                              ; preds = %750
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %765 = load ptr, ptr %5, align 8, !tbaa !5
  %766 = getelementptr inbounds %"class.MIR::Function", ptr %765, i32 0, i32 2
  store ptr %766, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %767 = load ptr, ptr %75, align 8, !tbaa !5
  %768 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %767) #8
  %769 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %76, i32 0, i32 0
  store ptr %768, ptr %769, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %770 = load ptr, ptr %75, align 8, !tbaa !5
  %771 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %770) #8
  %772 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %77, i32 0, i32 0
  store ptr %771, ptr %772, align 8
  br label %773

773:                                              ; preds = %990, %764
  %774 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br i1 %774, label %776, label %775

775:                                              ; preds = %773
  store i32 24, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %993

776:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %777 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  store ptr %777, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %778 = load ptr, ptr %78, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %778, i32 0, i32 0
  store ptr %779, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %780 = load ptr, ptr %79, align 8, !tbaa !5
  %781 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %780) #8
  %782 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %80, i32 0, i32 0
  store ptr %781, ptr %782, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %783 = load ptr, ptr %79, align 8, !tbaa !5
  %784 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %783) #8
  %785 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %81, i32 0, i32 0
  store ptr %784, ptr %785, align 8
  br label %786

786:                                              ; preds = %959, %776
  %787 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  br i1 %787, label %789, label %788

788:                                              ; preds = %786
  store i32 26, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %963

789:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %790 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  store ptr %790, ptr %82, align 8, !tbaa !5
  %791 = load ptr, ptr %4, align 8, !tbaa !5
  %792 = load ptr, ptr %78, align 8, !tbaa !5
  %793 = load ptr, ptr %5, align 8, !tbaa !5
  %794 = getelementptr inbounds %"class.MIR::Function", ptr %793, i32 0, i32 2
  %795 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %794) #8
  %796 = ptrtoint ptr %792 to i64
  %797 = ptrtoint ptr %795 to i64
  %798 = sub i64 %796, %797
  %799 = sdiv exact i64 %798, 192
  %800 = trunc i64 %799 to i32
  %801 = load ptr, ptr %82, align 8, !tbaa !5
  %802 = load ptr, ptr %78, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %802, i32 0, i32 0
  %804 = call noundef ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %803) #8
  %805 = ptrtoint ptr %801 to i64
  %806 = ptrtoint ptr %804 to i64
  %807 = sub i64 %805, %806
  %808 = sdiv exact i64 %807, 152
  %809 = trunc i64 %808 to i32
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %791, i32 noundef %800, i32 noundef %809)
          to label %810 unwind label %827

810:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  %812 = invoke noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %811)
          to label %813 unwind label %831

813:                                              ; preds = %810
  %814 = load ptr, ptr %4, align 8, !tbaa !5
  %815 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %814)
          to label %816 unwind label %831

816:                                              ; preds = %813
  invoke void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %83, i32 noundef %812, i32 noundef %815)
          to label %817 unwind label %831

817:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  store ptr %14, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %818 = load ptr, ptr %84, align 8, !tbaa !5
  %819 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %818) #8
  %820 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %85, i32 0, i32 0
  store ptr %819, ptr %820, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %821 = load ptr, ptr %84, align 8, !tbaa !5
  %822 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %821) #8
  %823 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %86, i32 0, i32 0
  store ptr %822, ptr %823, align 8
  br label %824

824:                                              ; preds = %951, %817
  %825 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  br i1 %825, label %835, label %826

826:                                              ; preds = %824
  store i32 28, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %958

827:                                              ; preds = %789
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %12, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %13, align 4
  br label %962

831:                                              ; preds = %816, %813, %810
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %12, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %13, align 4
  br label %961

835:                                              ; preds = %824
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %836 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  store ptr %836, ptr %87, align 8, !tbaa !5
  %837 = load ptr, ptr %87, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.Poss, ptr %837, i32 0, i32 0
  %839 = invoke noundef zeroext i1 @_ZNK12_GLOBAL__N_17StmtRefeqERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %838)
          to label %840 unwind label %862

840:                                              ; preds = %835
  br i1 %839, label %841, label %882

841:                                              ; preds = %840
  br label %842

842:                                              ; preds = %841
  %843 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %844 unwind label %862

844:                                              ; preds = %842
  br i1 %843, label %845, label %866

845:                                              ; preds = %844
  %846 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %847 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %846, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %848 unwind label %862

848:                                              ; preds = %845
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %847, ptr noundef nonnull align 8 dereferenceable(120) %849)
          to label %851 unwind label %862

851:                                              ; preds = %848
  %852 = load ptr, ptr %87, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.Poss, ptr %852, i32 0, i32 1
  %854 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %850, ptr noundef nonnull align 8 dereferenceable(8) %853)
          to label %855 unwind label %862

855:                                              ; preds = %851
  %856 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %854, ptr noundef @.str.63)
          to label %857 unwind label %862

857:                                              ; preds = %855
  %858 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %856, ptr noundef @_ZSt3decRSt8ios_base)
          to label %859 unwind label %862

859:                                              ; preds = %857
  %860 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %858, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %861 unwind label %862

861:                                              ; preds = %859
  br label %866

862:                                              ; preds = %921, %919, %917, %913, %910, %907, %904, %896, %889, %886, %882, %859, %857, %855, %851, %848, %845, %842, %835
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %12, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %13, align 4
  br label %957

866:                                              ; preds = %861, %844
  br label %867

867:                                              ; preds = %866
  br label %868

868:                                              ; preds = %867
  call void @llvm.lifetime.start.p0(i64 152, ptr %88) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %88)
          to label %869 unwind label %873

869:                                              ; preds = %868
  %870 = load ptr, ptr %82, align 8, !tbaa !5
  %871 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %870, ptr noundef nonnull align 8 dereferenceable(152) %88)
          to label %872 unwind label %877

872:                                              ; preds = %869
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %88) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %88) #8
  store i32 29, ptr %18, align 4
  br label %948

873:                                              ; preds = %868
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %12, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %13, align 4
  br label %881

877:                                              ; preds = %869
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %12, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %13, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %88) #8
  br label %881

881:                                              ; preds = %877, %873
  call void @llvm.lifetime.end.p0(i64 152, ptr %88) #8
  br label %957

882:                                              ; preds = %840
  %883 = load ptr, ptr %82, align 8, !tbaa !5
  %884 = invoke noundef zeroext i1 @_ZNK3MIR9Statement7is_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %883)
          to label %885 unwind label %862

885:                                              ; preds = %882
  br i1 %884, label %886, label %940

886:                                              ; preds = %885
  %887 = load ptr, ptr %82, align 8, !tbaa !5
  %888 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %887)
          to label %889 unwind label %862

889:                                              ; preds = %886
  %890 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %888, i32 0, i32 2
  %891 = getelementptr inbounds %"struct.MIR::LValue", ptr %890, i32 0, i32 0
  %892 = load ptr, ptr %87, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.Poss, ptr %892, i32 0, i32 1
  %894 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7StorageeqERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %891, ptr noundef nonnull align 8 dereferenceable(8) %893)
          to label %895 unwind label %862

895:                                              ; preds = %889
  br i1 %894, label %896, label %940

896:                                              ; preds = %895
  %897 = load ptr, ptr %82, align 8, !tbaa !5
  %898 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %897)
          to label %899 unwind label %862

899:                                              ; preds = %896
  %900 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %898, i32 0, i32 2
  %901 = getelementptr inbounds %"struct.MIR::LValue", ptr %900, i32 0, i32 1
  %902 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %901) #8
  br i1 %902, label %903, label %940

903:                                              ; preds = %899
  br label %904

904:                                              ; preds = %903
  %905 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %906 unwind label %862

906:                                              ; preds = %904
  br i1 %905, label %907, label %924

907:                                              ; preds = %906
  %908 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %908, ptr noundef @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %910 unwind label %862

910:                                              ; preds = %907
  %911 = load ptr, ptr %4, align 8, !tbaa !5
  %912 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %909, ptr noundef nonnull align 8 dereferenceable(120) %911)
          to label %913 unwind label %862

913:                                              ; preds = %910
  %914 = load ptr, ptr %87, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.Poss, ptr %914, i32 0, i32 1
  %916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %912, ptr noundef nonnull align 8 dereferenceable(8) %915)
          to label %917 unwind label %862

917:                                              ; preds = %913
  %918 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %916, ptr noundef @.str.64)
          to label %919 unwind label %862

919:                                              ; preds = %917
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef @_ZSt3decRSt8ios_base)
          to label %921 unwind label %862

921:                                              ; preds = %919
  %922 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %920, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %923 unwind label %862

923:                                              ; preds = %921
  br label %924

924:                                              ; preds = %923, %906
  br label %925

925:                                              ; preds = %924
  br label %926

926:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 152, ptr %89) #8
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %89)
          to label %927 unwind label %931

927:                                              ; preds = %926
  %928 = load ptr, ptr %82, align 8, !tbaa !5
  %929 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %928, ptr noundef nonnull align 8 dereferenceable(152) %89)
          to label %930 unwind label %935

930:                                              ; preds = %927
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %89) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %89) #8
  store i32 29, ptr %18, align 4
  br label %948

931:                                              ; preds = %926
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %12, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %13, align 4
  br label %939

935:                                              ; preds = %927
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %12, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %13, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %89) #8
  br label %939

939:                                              ; preds = %935, %931
  call void @llvm.lifetime.end.p0(i64 152, ptr %89) #8
  br label %957

940:                                              ; preds = %899, %895, %885
  %941 = load ptr, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #8
  %942 = getelementptr inbounds %class.anon.382, ptr %91, i32 0, i32 0
  %943 = load ptr, ptr %87, align 8, !tbaa !5
  store ptr %943, ptr %942, align 8, !tbaa !5
  %944 = getelementptr inbounds %class.anon.382, ptr %91, i32 0, i32 1
  %945 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %945, ptr %944, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  %946 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %941, ptr noundef %90)
          to label %947 unwind label %953

947:                                              ; preds = %940
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  store i32 0, ptr %18, align 4
  br label %948

948:                                              ; preds = %947, %930, %872
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  %949 = load i32, ptr %18, align 4
  switch i32 %949, label %1005 [
    i32 0, label %950
    i32 29, label %951
  ]

950:                                              ; preds = %948
  br label %951

951:                                              ; preds = %950, %948
  %952 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %824

953:                                              ; preds = %940
  %954 = landingpad { ptr, i32 }
          cleanup
  %955 = extractvalue { ptr, i32 } %954, 0
  store ptr %955, ptr %12, align 8
  %956 = extractvalue { ptr, i32 } %954, 1
  store i32 %956, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  br label %957

957:                                              ; preds = %953, %939, %881, %862
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %961

958:                                              ; preds = %826
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %959

959:                                              ; preds = %958
  %960 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br label %786

961:                                              ; preds = %957, %831
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %962

962:                                              ; preds = %961, %827
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %992

963:                                              ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  store ptr %14, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %964 = load ptr, ptr %92, align 8, !tbaa !5
  %965 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %964) #8
  %966 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %93, i32 0, i32 0
  store ptr %965, ptr %966, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %967 = load ptr, ptr %92, align 8, !tbaa !5
  %968 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %967) #8
  %969 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.376", ptr %94, i32 0, i32 0
  store ptr %968, ptr %969, align 8
  br label %970

970:                                              ; preds = %983, %963
  %971 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br i1 %971, label %973, label %972

972:                                              ; preds = %970
  store i32 34, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %989

973:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %974 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  store ptr %974, ptr %95, align 8, !tbaa !5
  %975 = load ptr, ptr %78, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %975, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #8
  %977 = getelementptr inbounds %class.anon.383, ptr %97, i32 0, i32 0
  %978 = load ptr, ptr %95, align 8, !tbaa !5
  store ptr %978, ptr %977, align 8, !tbaa !5
  %979 = getelementptr inbounds %class.anon.383, ptr %97, i32 0, i32 1
  %980 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %980, ptr %979, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(16) %97) #8
  %981 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %976, ptr noundef %96)
          to label %982 unwind label %985

982:                                              ; preds = %973
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %983

983:                                              ; preds = %982
  %984 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  br label %970

985:                                              ; preds = %973
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %12, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %992

989:                                              ; preds = %972
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %990

990:                                              ; preds = %989
  %991 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %773

992:                                              ; preds = %985, %962
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %998

993:                                              ; preds = %775
  store i8 1, ptr %6, align 1, !tbaa !9
  %994 = load i8, ptr %6, align 1, !tbaa !9, !range !25, !noundef !26
  %995 = trunc i8 %994 to i1
  store i1 %995, ptr %3, align 1
  store i32 1, ptr %18, align 4
  br label %996

996:                                              ; preds = %993, %754, %359
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  %997 = load i1, ptr %3, align 1
  ret i1 %997

998:                                              ; preds = %992, %763, %730, %497, %352
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  br label %999

999:                                              ; preds = %998, %114
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #8
  br label %1000

1000:                                             ; preds = %999
  %1001 = load ptr, ptr %12, align 8
  %1002 = load i32, ptr %13, align 4
  %1003 = insertvalue { ptr, i32 } poison, ptr %1001, 0
  %1004 = insertvalue { ptr, i32 } %1003, i32 %1002, 1
  resume { ptr, i32 } %1004

1005:                                             ; preds = %948, %656, %323
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(25)) #6 align 2

declare void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::LValue::Storage") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossC2EN12_GLOBAL__N_17StmtRefENS_6LValue7StorageES8_(ptr noundef nonnull align 8 dereferenceable(25), i64, ptr noundef, ptr noundef) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitState15does_block_loopEj(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) #6 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS2_8FunctionEE4PossSt6vectorIS7_SaIS7_EEEEZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedS4_S6_E3$_6ET_SE_SE_T0_"(ptr, ptr) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 72}
!12 = !{!"_ZTSN3MIR11TypeResolveE", !13, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !14, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !13, i64 112, !13, i64 116}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS9FmtLambda", !15, i64 0}
!15 = !{!"_ZTSSt8functionIFvRSoEE", !16, i64 0, !6, i64 24}
!16 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!17 = !{!13, !13, i64 0}
!18 = !{i64 0, i64 4, !17, i64 4, i64 4, !17}
!19 = !{!20, !13, i64 0}
!20 = !{!"_ZTSZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEE4Poss", !21, i64 0, !22, i64 8, !22, i64 16, !10, i64 24}
!21 = !{!"_ZTSN12_GLOBAL__N_17StmtRefE", !13, i64 0, !13, i64 4}
!22 = !{!"_ZTSN3MIR6LValue7StorageE", !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!20, !10, i64 24}
!25 = !{i8 0, i8 2}
!26 = !{}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.337 = type { i8 }
%class.anon.339 = type { ptr }
%"class.std::vector.340" = type { %"struct.std::_Vector_base.341" }
%"struct.std::_Vector_base.341" = type { %"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl" }
%"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl" = type { %"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Poss, std::allocator<Poss>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.189" = type { ptr }
%"struct.(anonymous namespace)::StmtRef" = type { i32, i32 }
%struct.Poss = type <{ %"struct.(anonymous namespace)::StmtRef", %"class.MIR::LValue::Storage", %"class.MIR::LValue::Storage", i8, [7 x i8] }>
%"class.MIR::LValue::Storage" = type { i64 }
%"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::allocator.190" = type { i8 }
%struct.VisitState = type { ptr, %"class.std::vector.25", %"class.std::vector.111" }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.376" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::function.226" = type { %"class.std::_Function_base", ptr }
%class.anon.377 = type { ptr }
%class.anon.378 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.381" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"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.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.std::function.267" = type { %"class.std::_Function_base", ptr }
%class.anon.382 = type { ptr, ptr }
%class.anon.383 = type { ptr, ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE = external hidden unnamed_addr constant [42 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [12 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 nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #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 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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #6 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 #6 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 #3 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 #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #6 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.337, align 1
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.339, align 8
  %9 = alloca %"class.std::vector.340", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %14 = alloca %"struct.(anonymous namespace)::StmtRef", align 8
  %15 = alloca %struct.Poss, align 8
  %16 = alloca %"class.MIR::LValue::Storage", align 8
  %17 = alloca %"class.MIR::LValue::Storage", align 8
  %18 = alloca %"class.std::vector.25", align 8
  %19 = alloca %"class.std::allocator.190", align 1
  %20 = alloca %"class.std::vector.25", align 8
  %21 = alloca %"class.std::allocator.190", align 1
  %22 = alloca %struct.VisitState, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %25 = alloca %"struct.std::_Bit_reference", align 8
  %26 = alloca %"struct.std::_Bit_reference", align 8
  %27 = alloca %"struct.std::_Bit_reference", align 8
  %28 = alloca %"struct.std::_Bit_reference", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %33 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %36 = alloca %"class.std::function.226", align 8
  %37 = alloca %class.anon.377, align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %40 = alloca %"class.std::function.226", align 8
  %41 = alloca %class.anon.378, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.381", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.381", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %50 = alloca %"struct.(anonymous namespace)::StmtRef", align 4
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %53 = alloca %"class.MIR::Statement", align 8
  %54 = alloca %"class.MIR::Statement", align 8
  %55 = alloca %"class.std::function.267", align 8
  %56 = alloca %class.anon.382, align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.376", align 8
  %59 = alloca %"class.std::function.267", align 8
  %60 = alloca %class.anon.383, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #7
  store i8 0, ptr %3, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #7
  %61 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %62 = select i1 %61, ptr @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store ptr %3, ptr %8, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS4_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef %62, ptr noundef nonnull %5, ptr noundef nonnull %7)
          to label %63 unwind label %71

63:                                               ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %64 = getelementptr inbounds i8, ptr %1, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %65 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %65, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %66 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %66, ptr %11, align 8
  %67 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br i1 %67, label %.lr.ph175, label %._crit_edge176

.lr.ph175:                                        ; preds = %63
  %68 = getelementptr inbounds i8, ptr %0, i64 72
  br label %73

._crit_edge176:                                   ; preds = %._crit_edge, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  %69 = call noundef i64 @_ZNKSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %70 = icmp eq i64 %69, 0
  br i1 %70, label %530, label %181

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

73:                                               ; preds = %.lr.ph175, %._crit_edge
  %74 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %75 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  store ptr %75, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %76 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  store ptr %76, ptr %13, align 8
  %77 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br i1 %77, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %73
  %78 = ptrtoint ptr %74 to i64
  br label %81

._crit_edge:                                      ; preds = %165, %73
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  %80 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br i1 %80, label %73, label %._crit_edge176

81:                                               ; preds = %.lr.ph, %165
  %82 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %83 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  %84 = ptrtoint ptr %83 to i64
  %85 = sub i64 %78, %84
  %86 = sdiv exact i64 %85, 192
  %87 = trunc i64 %86 to i32
  %88 = call noundef ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #7
  %89 = ptrtoint ptr %82 to i64
  %90 = ptrtoint ptr %88 to i64
  %91 = sub i64 %89, %90
  %92 = sdiv exact i64 %91, 152
  %93 = trunc i64 %92 to i32
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %87, i32 noundef %93)
  %94 = call noundef zeroext i1 @_ZNK3MIR9Statement9is_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %82)
  br i1 %94, label %95, label %165

95:                                               ; preds = %81
  %96 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %82)
  %97 = call noundef zeroext i1 @_ZNK3MIR6LValue8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %96)
  br i1 %97, label %98, label %165

98:                                               ; preds = %95
  %99 = getelementptr inbounds i8, ptr %96, i64 32
  %100 = call noundef zeroext i1 @_ZNK3MIR6RValue9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %99)
  br i1 %100, label %101, label %165

101:                                              ; preds = %98
  %102 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %99)
  %103 = getelementptr inbounds i8, ptr %102, i64 8
  %104 = call noundef zeroext i1 @_ZNK3MIR6LValue7Storage8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  br i1 %104, label %107, label %105

105:                                              ; preds = %101
  %106 = call noundef zeroext i1 @_ZNK3MIR6LValue7Storage11is_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  br i1 %106, label %107, label %165

107:                                              ; preds = %105, %101
  %108 = getelementptr inbounds i8, ptr %102, i64 16
  %109 = call noundef i64 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #7
  %110 = icmp eq i64 %109, 1
  br i1 %110, label %111, label %165

111:                                              ; preds = %107
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef 0) #7
  %113 = call noundef zeroext i1 @_ZNK3MIR6LValue7Wrapper8is_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %112)
  br i1 %113, label %114, label %165

114:                                              ; preds = %111
  %115 = call noundef zeroext i1 @_ZNK3MIR6LValue7Storage8is_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  br i1 %115, label %116, label %120

116:                                              ; preds = %114
  %117 = call noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  %118 = zext i32 %117 to i64
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %118) #7
  br label %126

120:                                              ; preds = %114
  %121 = load ptr, ptr %68, align 8, !tbaa !11
  %122 = call noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  %123 = zext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %123) #7
  %125 = getelementptr inbounds i8, ptr %124, i64 216
  br label %126

126:                                              ; preds = %120, %116
  %127 = phi ptr [ %119, %116 ], [ %125, %120 ]
  %128 = call noundef i32 @_ZNK3MIR6LValue8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(32) %96)
  %129 = zext i32 %128 to i64
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %129) #7
  %131 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %130)
          to label %132 unwind label %133

132:                                              ; preds = %126
  br i1 %131, label %165, label %135

133:                                              ; preds = %126
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %180

135:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %136 = call noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  %137 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %138 unwind label %158

138:                                              ; preds = %135
  call void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef %136, i32 noundef %137)
  %139 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %140 unwind label %158

140:                                              ; preds = %138
  br i1 %139, label %141, label %160

141:                                              ; preds = %140
  %142 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %142, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %144 unwind label %158

144:                                              ; preds = %141
  %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %146 unwind label %158

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

148:                                              ; preds = %146
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %150 unwind label %158

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

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %154 unwind label %158

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

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

158:                                              ; preds = %156, %154, %152, %150, %148, %146, %144, %141, %138, %135
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %179

160:                                              ; preds = %156, %140
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  %.sroa.064.0.copyload = load i64, ptr %14, align 8
  invoke void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.MIR::LValue::Storage") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %161 unwind label %168

161:                                              ; preds = %160
  invoke void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.MIR::LValue::Storage") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %162 unwind label %170

162:                                              ; preds = %161
  invoke void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossC2EN12_GLOBAL__N_17StmtRefENS_6LValue7StorageES8_(ptr noundef nonnull align 8 dereferenceable(25) %15, i64 %.sroa.064.0.copyload, ptr noundef nonnull %16, ptr noundef nonnull %17)
          to label %163 unwind label %172

163:                                              ; preds = %162
  invoke void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(25) %15)
          to label %164 unwind label %174

164:                                              ; preds = %163
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %15) #7
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %165

165:                                              ; preds = %95, %98, %164, %132, %107, %111, %105, %81
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %167 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br i1 %167, label %81, label %._crit_edge

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

170:                                              ; preds = %161
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %177

172:                                              ; preds = %162
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %163
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %15) #7
  br label %176

176:                                              ; preds = %174, %172
  %.pn166 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %177

177:                                              ; preds = %176, %170
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %176 ], [ %171, %170 ]
  call void @_ZN3MIR6LValue7StorageD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br label %178

178:                                              ; preds = %177, %168
  %.pn166.pn.pn = phi { ptr, i32 } [ %.pn166.pn, %177 ], [ %169, %168 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %179

179:                                              ; preds = %178, %158
  %.pn166.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn, %178 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %180

180:                                              ; preds = %179, %133
  %.pn166.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn, %179 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %531

181:                                              ; preds = %._crit_edge176
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) #7
  %182 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %182, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %183 unwind label %196

183:                                              ; preds = %181
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %20) #7
  %184 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #7
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef %184, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %185 unwind label %198

185:                                              ; preds = %183
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %22) #7
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(72) %22, ptr noundef nonnull align 8 dereferenceable(96) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %186 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %186, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %187 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %187, ptr %24, align 8
  %188 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %188, label %.lr.ph178, label %._crit_edge179

.lr.ph178:                                        ; preds = %185
  %189 = getelementptr inbounds i8, ptr %25, i64 8
  %190 = getelementptr inbounds i8, ptr %26, i64 8
  %191 = getelementptr inbounds i8, ptr %27, i64 8
  %192 = getelementptr inbounds i8, ptr %28, i64 8
  br label %200

._crit_edge179:                                   ; preds = %239, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %22) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %22) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %193 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %193, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %194 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %194, ptr %30, align 8
  %195 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br i1 %195, label %.lr.ph190, label %._crit_edge191

196:                                              ; preds = %181
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  br label %256

198:                                              ; preds = %183
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  br label %255

200:                                              ; preds = %.lr.ph178, %239
  %201 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #7
  %202 = load i32, ptr %201, align 8, !tbaa !18
  %203 = zext i32 %202 to i64
  %204 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %203)
          to label %205 unwind label %227

205:                                              ; preds = %200
  %206 = extractvalue { ptr, i64 } %204, 0
  store ptr %206, ptr %25, align 8
  %207 = extractvalue { ptr, i64 } %204, 1
  store i64 %207, ptr %189, align 8
  %208 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  br i1 %208, label %235, label %209

209:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  %210 = load i32, ptr %201, align 8, !tbaa !18
  %211 = zext i32 %210 to i64
  %212 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %211)
          to label %213 unwind label %229

213:                                              ; preds = %209
  %214 = extractvalue { ptr, i64 } %212, 0
  store ptr %214, ptr %26, align 8
  %215 = extractvalue { ptr, i64 } %212, 1
  store i64 %215, ptr %190, align 8
  %216 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %26, i1 noundef zeroext true) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  %217 = load i32, ptr %201, align 8, !tbaa !18
  %218 = invoke noundef zeroext i1 @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitState15does_block_loopEj(ptr noundef nonnull align 8 dereferenceable(72) %22, i32 noundef %217)
          to label %219 unwind label %231

219:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  %220 = load i32, ptr %201, align 8, !tbaa !18
  %221 = zext i32 %220 to i64
  %222 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef %221)
          to label %223 unwind label %233

223:                                              ; preds = %219
  %224 = extractvalue { ptr, i64 } %222, 0
  store ptr %224, ptr %27, align 8
  %225 = extractvalue { ptr, i64 } %222, 1
  store i64 %225, ptr %191, align 8
  %226 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %27, i1 noundef zeroext %218) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  br label %235

227:                                              ; preds = %200
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  br label %251

229:                                              ; preds = %209
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  br label %251

231:                                              ; preds = %213
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %251

233:                                              ; preds = %219
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  br label %251

235:                                              ; preds = %223, %205
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  %236 = load i32, ptr %201, align 8, !tbaa !18
  %237 = zext i32 %236 to i64
  %238 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef %237)
          to label %239 unwind label %249

239:                                              ; preds = %235
  %240 = extractvalue { ptr, i64 } %238, 0
  store ptr %240, ptr %28, align 8
  %241 = extractvalue { ptr, i64 } %238, 1
  store i64 %241, ptr %192, align 8
  %242 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  %243 = getelementptr inbounds i8, ptr %201, i64 24
  %244 = load i8, ptr %243, align 8, !tbaa !23, !range !24, !noundef !25
  %245 = zext i1 %242 to i8
  %246 = or i8 %244, %245
  store i8 %246, ptr %243, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %248 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %248, label %200, label %._crit_edge179

249:                                              ; preds = %235
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %251

251:                                              ; preds = %249, %233, %231, %229, %227
  %.pn162 = phi { ptr, i32 } [ %250, %249 ], [ %234, %233 ], [ %232, %231 ], [ %230, %229 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitStateD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %22) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %22) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #7
  br label %255

._crit_edge191:                                   ; preds = %._crit_edge188, %._crit_edge179
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %252 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %253 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %254 = invoke ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS2_8FunctionEE4PossSt6vectorIS7_SaIS7_EEEEZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedS4_S6_E3$_6ET_SE_SE_T0_"(ptr %252, ptr %253)
          to label %390 unwind label %398

255:                                              ; preds = %251, %198
  %.pn162.pn = phi { ptr, i32 } [ %.pn162, %251 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %20) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #7
  br label %256

256:                                              ; preds = %255, %196
  %.pn162.pn.pn = phi { ptr, i32 } [ %.pn162.pn, %255 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  br label %531

.lr.ph190:                                        ; preds = %._crit_edge179, %._crit_edge188
  %257 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  %258 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #7
  store ptr %258, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %259 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #7
  store ptr %259, ptr %32, align 8
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br i1 %260, label %.lr.ph184, label %._crit_edge185

.lr.ph184:                                        ; preds = %.lr.ph190
  %261 = ptrtoint ptr %257 to i64
  br label %266

._crit_edge185:                                   ; preds = %._crit_edge182, %.lr.ph190
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  %262 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %262, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %263 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %263, ptr %39, align 8
  %264 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br i1 %264, label %.lr.ph187, label %._crit_edge188

.lr.ph187:                                        ; preds = %._crit_edge185
  %265 = getelementptr inbounds i8, ptr %257, i64 24
  br label %356

266:                                              ; preds = %.lr.ph184, %._crit_edge182
  %267 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  %268 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  %269 = ptrtoint ptr %268 to i64
  %270 = sub i64 %261, %269
  %271 = sdiv exact i64 %270, 192
  %272 = trunc i64 %271 to i32
  %273 = call noundef ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #7
  %274 = ptrtoint ptr %267 to i64
  %275 = ptrtoint ptr %273 to i64
  %276 = sub i64 %274, %275
  %277 = sdiv exact i64 %276, 152
  %278 = trunc i64 %277 to i32
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %272, i32 noundef %278)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %279 = call noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  %280 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %281 unwind label %287

281:                                              ; preds = %266
  call void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %33, i32 noundef %279, i32 noundef %280)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  %282 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %282, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %283 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %283, ptr %35, align 8
  %284 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br i1 %284, label %.lr.ph181, label %._crit_edge182

._crit_edge182:                                   ; preds = %349, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  %286 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br i1 %286, label %266, label %._crit_edge185

287:                                              ; preds = %266
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %353

.lr.ph181:                                        ; preds = %281, %349
  %289 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %290 = call noundef zeroext i1 @_ZNK12_GLOBAL__N_17StmtRefeqERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %289)
  br i1 %290, label %349, label %293

291:                                              ; preds = %343, %341, %339, %337, %334, %332, %329, %326, %321, %319, %317, %315, %313, %311, %308, %305, %295
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %352

293:                                              ; preds = %.lr.ph181
  %294 = call noundef zeroext i1 @_ZNK3MIR9Statement7is_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %267)
  br i1 %294, label %295, label %323

295:                                              ; preds = %293
  %296 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %267)
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  %298 = getelementptr inbounds i8, ptr %289, i64 8
  %299 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7StorageeqERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %300 unwind label %291

300:                                              ; preds = %295
  br i1 %299, label %301, label %323

301:                                              ; preds = %300
  %302 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %267)
  %303 = getelementptr inbounds i8, ptr %302, i64 16
  %304 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %303) #7
  br i1 %304, label %305, label %323

305:                                              ; preds = %301
  %306 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %307 unwind label %291

307:                                              ; preds = %305
  br i1 %306, label %308, label %349

308:                                              ; preds = %307
  %309 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %309, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %311 unwind label %291

311:                                              ; preds = %308
  %312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %313 unwind label %291

313:                                              ; preds = %311
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %312, ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %315 unwind label %291

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

317:                                              ; preds = %315
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(152) %267)
          to label %319 unwind label %291

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

321:                                              ; preds = %319
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %320, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %349 unwind label %291

323:                                              ; preds = %301, %300, %293
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  store ptr %289, ptr %37, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  %324 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_117visit_mir_lvaluesERKN3MIR9StatementESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %267, ptr noundef nonnull %36)
          to label %325 unwind label %345

325:                                              ; preds = %323
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br i1 %324, label %326, label %349

326:                                              ; preds = %325
  %327 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %328 unwind label %291

328:                                              ; preds = %326
  br i1 %327, label %329, label %347

329:                                              ; preds = %328
  %330 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %330, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %332 unwind label %291

332:                                              ; preds = %329
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %334 unwind label %291

334:                                              ; preds = %332
  %335 = getelementptr inbounds i8, ptr %289, i64 8
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %337 unwind label %291

337:                                              ; preds = %334
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull @.str.62)
          to label %339 unwind label %291

339:                                              ; preds = %337
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull align 8 dereferenceable(152) %267)
          to label %341 unwind label %291

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %343 unwind label %291

343:                                              ; preds = %341
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %347 unwind label %291

345:                                              ; preds = %323
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br label %352

347:                                              ; preds = %343, %328
  %348 = getelementptr inbounds i8, ptr %289, i64 24
  store i8 1, ptr %348, align 8, !tbaa !23
  br label %349

349:                                              ; preds = %325, %347, %307, %321, %.lr.ph181
  %350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %351 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br i1 %351, label %.lr.ph181, label %._crit_edge182

352:                                              ; preds = %345, %291
  %.pn158 = phi { ptr, i32 } [ %292, %291 ], [ %346, %345 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %353

353:                                              ; preds = %352, %287
  %.pn158.pn = phi { ptr, i32 } [ %.pn158, %352 ], [ %288, %287 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  br label %389

._crit_edge188:                                   ; preds = %385, %._crit_edge185
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  %355 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br i1 %355, label %.lr.ph190, label %._crit_edge191

356:                                              ; preds = %.lr.ph187, %385
  %357 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  store ptr %357, ptr %41, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbRKN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  %358 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_117visit_mir_lvaluesERKN3MIR10TerminatorESt8functionIFbRKNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %265, ptr noundef nonnull %40)
          to label %359 unwind label %379

359:                                              ; preds = %356
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br i1 %358, label %360, label %385

360:                                              ; preds = %359
  %361 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %362 unwind label %381

362:                                              ; preds = %360
  br i1 %361, label %363, label %383

363:                                              ; preds = %362
  %364 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %364, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %366 unwind label %381

366:                                              ; preds = %363
  %367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %368 unwind label %381

368:                                              ; preds = %366
  %369 = getelementptr inbounds i8, ptr %357, i64 8
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %367, ptr noundef nonnull align 8 dereferenceable(8) %369)
          to label %371 unwind label %381

371:                                              ; preds = %368
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef nonnull @.str.62)
          to label %373 unwind label %381

373:                                              ; preds = %371
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef nonnull align 8 dereferenceable(168) %265)
          to label %375 unwind label %381

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

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

379:                                              ; preds = %356
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %388

381:                                              ; preds = %377, %375, %373, %371, %368, %366, %363, %360
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %388

383:                                              ; preds = %377, %362
  %384 = getelementptr inbounds i8, ptr %357, i64 24
  store i8 1, ptr %384, align 8, !tbaa !23
  br label %385

385:                                              ; preds = %383, %359
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  %387 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br i1 %387, label %356, label %._crit_edge188

388:                                              ; preds = %381, %379
  %.pn156 = phi { ptr, i32 } [ %382, %381 ], [ %380, %379 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  br label %389

389:                                              ; preds = %388, %353
  %.pn158.pn.pn = phi { ptr, i32 } [ %.pn158.pn, %353 ], [ %.pn156, %388 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  br label %531

390:                                              ; preds = %._crit_edge191
  store ptr %254, ptr %42, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  %391 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %391, ptr %45, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %392 = load ptr, ptr %43, align 8
  %393 = load ptr, ptr %44, align 8
  %394 = invoke ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS5_S7_EESC_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr %392, ptr %393)
          to label %395 unwind label %400

395:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  %396 = call noundef i64 @_ZNKSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %397 = icmp eq i64 %396, 0
  br i1 %397, label %530, label %403

398:                                              ; preds = %._crit_edge191
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %402

400:                                              ; preds = %390
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  br label %402

402:                                              ; preds = %400, %398
  %.pn = phi { ptr, i32 } [ %401, %400 ], [ %399, %398 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  br label %531

403:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  %404 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %404, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  %405 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  store ptr %405, ptr %47, align 8
  %406 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br i1 %406, label %.lr.ph202, label %._crit_edge203

.lr.ph202:                                        ; preds = %403
  %407 = getelementptr inbounds i8, ptr %56, i64 8
  %408 = getelementptr inbounds i8, ptr %60, i64 8
  br label %409

._crit_edge203:                                   ; preds = %._crit_edge200, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  store i8 1, ptr %3, align 1, !tbaa !5
  br label %530

409:                                              ; preds = %.lr.ph202, %._crit_edge200
  %410 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #7
  %411 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #7
  store ptr %411, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #7
  %412 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #7
  store ptr %412, ptr %49, align 8
  %413 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %413, label %.lr.ph196, label %._crit_edge197

.lr.ph196:                                        ; preds = %409
  %414 = ptrtoint ptr %410 to i64
  br label %419

._crit_edge197:                                   ; preds = %._crit_edge194, %409
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #7
  %415 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %415, ptr %57, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #7
  %416 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %416, ptr %58, align 8
  %417 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br i1 %417, label %.lr.ph199, label %._crit_edge200

.lr.ph199:                                        ; preds = %._crit_edge197
  %418 = getelementptr inbounds i8, ptr %410, i64 24
  br label %521

419:                                              ; preds = %.lr.ph196, %._crit_edge194
  %420 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  %421 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  %422 = ptrtoint ptr %421 to i64
  %423 = sub i64 %414, %422
  %424 = sdiv exact i64 %423, 192
  %425 = trunc i64 %424 to i32
  %426 = call noundef ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #7
  %427 = ptrtoint ptr %420 to i64
  %428 = ptrtoint ptr %426 to i64
  %429 = sub i64 %427, %428
  %430 = sdiv exact i64 %429, 152
  %431 = trunc i64 %430 to i32
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %425, i32 noundef %431)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #7
  %432 = call noundef i32 @_ZNK3MIR11TypeResolve13get_cur_blockEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
  %433 = invoke noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %434 unwind label %440

434:                                              ; preds = %419
  call void @_ZN12_GLOBAL__N_17StmtRefC2Ejj(ptr noundef nonnull align 4 dereferenceable(8) %50, i32 noundef %432, i32 noundef %433)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  %435 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %435, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  %436 = call ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  store ptr %436, ptr %52, align 8
  %437 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %437, label %.lr.ph193, label %._crit_edge194

._crit_edge194:                                   ; preds = %512, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  %438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  %439 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %439, label %419, label %._crit_edge197

440:                                              ; preds = %419
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %518

.lr.ph193:                                        ; preds = %434, %512
  %442 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %443 = call noundef zeroext i1 @_ZNK12_GLOBAL__N_17StmtRefeqERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %442)
  br i1 %443, label %444, label %472

444:                                              ; preds = %.lr.ph193
  %445 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %446 unwind label %461

446:                                              ; preds = %444
  br i1 %445, label %447, label %463

447:                                              ; preds = %446
  %448 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %448, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %450 unwind label %461

450:                                              ; preds = %447
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %452 unwind label %461

452:                                              ; preds = %450
  %453 = getelementptr inbounds i8, ptr %442, i64 8
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull align 8 dereferenceable(8) %453)
          to label %455 unwind label %461

455:                                              ; preds = %452
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull @.str.63)
          to label %457 unwind label %461

457:                                              ; preds = %455
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %459 unwind label %461

459:                                              ; preds = %457
  %460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %463 unwind label %461

461:                                              ; preds = %498, %496, %494, %492, %490, %487, %484, %474, %459, %457, %455, %452, %450, %447, %444
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %517

463:                                              ; preds = %459, %446
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %53) #7
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %53)
          to label %464 unwind label %467

464:                                              ; preds = %463
  %465 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %420, ptr noundef nonnull align 8 dereferenceable(152) %53)
          to label %466 unwind label %469

466:                                              ; preds = %464
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %53) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %53) #7
  br label %512

467:                                              ; preds = %463
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %471

469:                                              ; preds = %464
  %470 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %53) #7
  br label %471

471:                                              ; preds = %469, %467
  %.pn151 = phi { ptr, i32 } [ %470, %469 ], [ %468, %467 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %53) #7
  br label %517

472:                                              ; preds = %.lr.ph193
  %473 = call noundef zeroext i1 @_ZNK3MIR9Statement7is_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %420)
  br i1 %473, label %474, label %509

474:                                              ; preds = %472
  %475 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %420)
  %476 = getelementptr inbounds i8, ptr %475, i64 8
  %477 = getelementptr inbounds i8, ptr %442, i64 8
  %478 = invoke noundef zeroext i1 @_ZNK3MIR6LValue7StorageeqERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %479 unwind label %461

479:                                              ; preds = %474
  br i1 %478, label %480, label %509

480:                                              ; preds = %479
  %481 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %420)
  %482 = getelementptr inbounds i8, ptr %481, i64 16
  %483 = call noundef zeroext i1 @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %482) #7
  br i1 %483, label %484, label %509

484:                                              ; preds = %480
  %485 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %486 unwind label %461

486:                                              ; preds = %484
  br i1 %485, label %487, label %500

487:                                              ; preds = %486
  %488 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !17
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %488, ptr noundef nonnull @__func__._Z41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionE)
          to label %490 unwind label %461

490:                                              ; preds = %487
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %492 unwind label %461

492:                                              ; preds = %490
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValue7StorageE(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %494 unwind label %461

494:                                              ; preds = %492
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %493, ptr noundef nonnull @.str.64)
          to label %496 unwind label %461

496:                                              ; preds = %494
  %497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %498 unwind label %461

498:                                              ; preds = %496
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %500 unwind label %461

500:                                              ; preds = %498, %486
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %54) #7
  invoke void @_ZN3MIR9StatementC2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54)
          to label %501 unwind label %504

501:                                              ; preds = %500
  %502 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3MIR9StatementaSEOS0_(ptr noundef nonnull align 8 dereferenceable(152) %420, ptr noundef nonnull align 8 dereferenceable(152) %54)
          to label %503 unwind label %506

503:                                              ; preds = %501
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %54) #7
  br label %512

504:                                              ; preds = %500
  %505 = landingpad { ptr, i32 }
          cleanup
  br label %508

506:                                              ; preds = %501
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #7
  br label %508

508:                                              ; preds = %506, %504
  %.pn149 = phi { ptr, i32 } [ %507, %506 ], [ %505, %504 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %54) #7
  br label %517

509:                                              ; preds = %480, %479, %472
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #7
  store ptr %442, ptr %56, align 8, !tbaa !9
  store ptr %0, ptr %407, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(16) %56) #7
  %510 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR9StatementESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(152) %420, ptr noundef nonnull %55)
          to label %511 unwind label %515

511:                                              ; preds = %509
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #7
  br label %512

512:                                              ; preds = %511, %503, %466
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %514 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %514, label %.lr.ph193, label %._crit_edge194

515:                                              ; preds = %509
  %516 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #7
  br label %517

517:                                              ; preds = %515, %508, %471, %461
  %.pn151.pn = phi { ptr, i32 } [ %.pn151, %471 ], [ %462, %461 ], [ %.pn149, %508 ], [ %516, %515 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  br label %518

518:                                              ; preds = %517, %440
  %.pn151.pn.pn = phi { ptr, i32 } [ %.pn151.pn, %517 ], [ %441, %440 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  br label %529

._crit_edge200:                                   ; preds = %524, %._crit_edge197
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  %520 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br i1 %520, label %409, label %._crit_edge203

521:                                              ; preds = %.lr.ph199, %524
  %522 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #7
  store ptr %522, ptr %60, align 8, !tbaa !9
  store ptr %0, ptr %408, align 8, !tbaa !9
  call void @"_ZNSt8functionIFbRN3MIR6LValueEN12_GLOBAL__N_18ValUsageEEEC2IZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRNS0_11TypeResolveERNS0_8FunctionEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  %523 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_121visit_mir_lvalues_mutERN3MIR10TerminatorESt8functionIFbRNS0_6LValueENS_8ValUsageEEE(ptr noundef nonnull align 8 dereferenceable(168) %418, ptr noundef nonnull %59)
          to label %524 unwind label %527

524:                                              ; preds = %521
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #7
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  %526 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br i1 %526, label %521, label %._crit_edge200

527:                                              ; preds = %521
  %528 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  br label %529

529:                                              ; preds = %527, %518
  %.pn151.pn.pn.pn = phi { ptr, i32 } [ %.pn151.pn.pn, %518 ], [ %528, %527 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %531

530:                                              ; preds = %395, %._crit_edge176, %._crit_edge203
  %.0 = phi i1 [ true, %._crit_edge203 ], [ false, %._crit_edge176 ], [ false, %395 ]
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  ret i1 %.0

531:                                              ; preds = %529, %402, %389, %256, %180
  %.pn166.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn.pn, %180 ], [ %.pn162.pn.pn, %256 ], [ %.pn158.pn.pn, %389 ], [ %.pn151.pn.pn.pn, %529 ], [ %.pn, %402 ]
  call void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #7
  br label %532

532:                                              ; preds = %531, %71
  %.pn166.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn.pn.pn, %531 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn166.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

declare noundef i32 @_ZNK3MIR11TypeResolve16get_cur_stmt_ofsEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(25)) local_unnamed_addr #6 align 2

declare void @_ZNK3MIR6LValue7Storage5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::LValue::Storage") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN4PossC2EN12_GLOBAL__N_17StmtRefENS_6LValue7StorageES8_(ptr noundef nonnull align 8 dereferenceable(25), i64, ptr noundef, ptr noundef) unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN9__gnu_cxxneIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(25) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS1_8FunctionEE4PossSt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEEN10VisitState15does_block_loopEj(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNK12_GLOBAL__N_17StmtRefeqERKS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR6LValue7StorageeqERKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS2_8FunctionEE4PossSt6vectorIS7_SaIS7_EEEEZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedS4_S6_E3$_6ET_SE_SE_T0_"(ptr, ptr) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden ptr @_ZNSt6vectorIZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS0_8FunctionEE4PossSaIS5_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS5_S7_EESC_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr) local_unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !10, i64 72}
!12 = !{!"_ZTSN3MIR11TypeResolveE", !13, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !14, i64 32, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !13, i64 112, !13, i64 116}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS9FmtLambda", !15, i64 0}
!15 = !{!"_ZTSSt8functionIFvRSoEE", !16, i64 0, !10, i64 24}
!16 = !{!"_ZTSSt14_Function_base", !7, i64 0, !10, i64 16}
!17 = !{!13, !13, i64 0}
!18 = !{!19, !13, i64 0}
!19 = !{!"_ZTSZ41MIR_Optimise_DeTemporary_ReborrowOfUnusedRN3MIR11TypeResolveERNS_8FunctionEE4Poss", !20, i64 0, !21, i64 8, !21, i64 16, !6, i64 24}
!20 = !{!"_ZTSN12_GLOBAL__N_17StmtRefE", !13, i64 0, !13, i64 4}
!21 = !{!"_ZTSN3MIR6LValue7StorageE", !22, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!19, !6, i64 24}
!24 = !{i8 0, i8 2}
!25 = !{}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass