; LLVM IR from thepowersgang/mrustc :: src/mir/mir_builder.ll (ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)

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

%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%class.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.481 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.484" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.483" = type { ptr }
%"struct.MIR::Statement::Data_SetDropFlag" = type { i32, i8, i32 }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.485 = type { ptr }
%class.anon.486 = type { i8 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.Span = type { ptr }
%class.anon.488 = type { ptr, ptr }
%class.anon.489 = type { ptr, ptr }
%"struct.MirBuilder::ScopeDef" = type { ptr, i8, %class.ScopeType }
%class.ScopeType = type { i32, %"union.ScopeType::DataUnion" }
%"union.ScopeType::DataUnion" = type { %"struct.ScopeType::Data_Loop" }
%"struct.ScopeType::Data_Loop" = type { %"class.std::map.252", %"class.std::map.252", i8, %struct.SplitEnd, i32, %"class.std::vector.47" }
%"class.std::map.252" = type { %"class.std::_Rb_tree.253" }
%"class.std::_Rb_tree.253" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, VarState>, std::_Select1st<std::pair<const unsigned int, VarState>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, VarState>, std::_Select1st<std::pair<const unsigned int, VarState>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%struct.SplitEnd = type { %"class.std::map.252", %"class.std::map.252" }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ScopeType::Data_Owning" = type { i8, %"class.std::vector.47" }
%class.MirBuilder = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, %"class.MIR::RValue", i8, [7 x i8], %class.VarState, %"class.std::vector.26", %"class.std::vector.26", i64, %"class.std::map", %"class.std::vector.42", %"class.std::vector.47", %class.ScopeHandle, %"class.std::vector.52", %"struct.MIR::LValue" }
%class.VarState = type { i32, [4 x i8], %"union.VarState::DataUnion" }
%"union.VarState::DataUnion" = type { i32, [28 x i8] }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl" }
%"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl" = type { %"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ScopeHandle = type <{ ptr, i32, [4 x i8] }>
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Function" = type { %"class.std::vector.84", %"class.std::vector.89", %"class.std::vector.93", %"class.MIR::EnumCachePtr" }
%"class.std::vector.84" = type { %"struct.std::_Vector_base.85" }
%"struct.std::_Vector_base.85" = 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.89" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = 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.399", %"class.MIR::Terminator" }
%"class.std::vector.399" = type { %"struct.std::_Vector_base.400" }
%"struct.std::_Vector_base.400" = 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.18" }
%"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.280" }
%"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.23, %class.ThinVector.24, %class.ThinVector.25 }
%class.ThinVector.23 = type { ptr }
%class.ThinVector.24 = type { ptr }
%class.ThinVector.25 = type { ptr }
%"class.std::unique_ptr.280" = type { %"struct.std::__uniq_ptr_data.281" }
%"struct.std::__uniq_ptr_data.281" = type { %"class.std::__uniq_ptr_impl.282" }
%"class.std::__uniq_ptr_impl.282" = type { %"class.std::tuple.283" }
%"class.std::tuple.283" = type { %"struct.std::_Tuple_impl.284" }
%"struct.std::_Tuple_impl.284" = type { %"struct.std::_Head_base.287" }
%"struct.std::_Head_base.287" = type { ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = 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.ScopeType::Data_Split" = type { i8, %struct.SplitEnd, %struct.SplitEnd, %"class.std::vector.257" }
%"class.std::vector.257" = type { %"struct.std::_Vector_base.258" }
%"struct.std::_Vector_base.258" = type { %"struct.std::_Vector_base<SplitArm, std::allocator<SplitArm>>::_Vector_impl" }
%"struct.std::_Vector_base<SplitArm, std::allocator<SplitArm>>::_Vector_impl" = type { %"struct.std::_Vector_base<SplitArm, std::allocator<SplitArm>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SplitArm, std::allocator<SplitArm>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ScopeType::Data_Freeze" = type { %"class.std::map.252", %"class.std::vector.89" }
%"struct.std::pair.471" = type { i32, [4 x i8], %class.VarState }
%"struct.std::pair.429" = type { i32, %"struct.MIR::LValue" }

@g_debug_indent_level = external global i32, align 4
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE = external hidden unnamed_addr constant [44 x i8], align 1
@__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE = external hidden unnamed_addr constant [15 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #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) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10MirBuilder14lvalue_is_copyERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10MirBuilder14complete_scopeERNS_8ScopeDefE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(256) %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca %class.TraceLog, align 8
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.481, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.484", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.483", align 8
  %28 = alloca %"class.MIR::Statement", align 8
  %29 = alloca %"struct.MIR::Statement::Data_SetDropFlag", align 4
  %30 = alloca %"struct.std::_Bit_reference", align 8
  %31 = alloca { i64, i32 }, align 4
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.483", align 8
  %33 = alloca i8, align 1
  %34 = alloca ptr, align 8
  %35 = alloca %class.TraceLog, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.485, align 8
  %38 = alloca i8, align 1
  %39 = alloca ptr, align 8
  %40 = alloca %class.TraceLog, align 8
  %41 = alloca %"class.std::function", align 8
  %42 = alloca %class.anon.486, align 1
  %43 = alloca ptr, align 8
  %44 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %45 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"struct.MIR::LValue", align 8
  %49 = alloca %struct.Span, align 8
  %50 = alloca %"class.std::function", align 8
  %51 = alloca %class.anon.488, align 8
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.489, align 8
  %55 = alloca i64, align 8
  %56 = alloca %"struct.std::_Bit_reference", align 8
  %57 = alloca %"struct.MIR::LValue", align 8
  %58 = alloca i1, align 1
  %59 = alloca i1, align 1
  %60 = alloca %"struct.MIR::LValue", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %61 = load ptr, ptr %3, align 8
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %62, i32 0, i32 1
  store i8 1, ptr %63, align 8, !tbaa !9
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %64, i32 0, i32 2
  %66 = call noundef i32 @_ZNK9ScopeType3tagEv(ptr noundef nonnull align 8 dereferenceable(240) %65)
  switch i32 %66, label %121 [
    i32 0, label %67
    i32 1, label %68
    i32 3, label %95
    i32 2, label %111
    i32 4, label %116
  ]

67:                                               ; preds = %2
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1587, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE) #9
  unreachable

68:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %69, i32 0, i32 2
  %71 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN9ScopeType9as_OwningEv(ptr noundef nonnull align 8 dereferenceable(240) %70)
  store ptr %71, ptr %5, align 8, !tbaa !5
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  br label %73

73:                                               ; preds = %68
  %74 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %74, label %75, label %92

75:                                               ; preds = %73
  %76 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %76, ptr noundef @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef @.str.67)
  %79 = load ptr, ptr %5, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.ScopeType::Data_Owning", ptr %79, i32 0, i32 0
  %81 = load i8, ptr %80, align 8, !tbaa !16, !range !22, !noundef !23
  %82 = trunc i8 %81 to i1
  %83 = zext i1 %82 to i64
  %84 = select i1 %82, ptr @.str.68, ptr @.str.69
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef %84)
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef @.str.70)
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.ScopeType::Data_Owning", ptr %87, i32 0, i32 1
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(24) %88)
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef @_ZSt3decRSt8ios_base)
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %92

92:                                               ; preds = %75, %73
  br label %93

93:                                               ; preds = %92
  br label %94

94:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  br label %121

95:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %96, i32 0, i32 2
  %98 = call noundef nonnull align 8 dereferenceable(232) ptr @_ZN9ScopeType7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(240) %97)
  store ptr %98, ptr %6, align 8, !tbaa !5
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  br label %100

100:                                              ; preds = %95
  %101 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %101, label %102, label %108

102:                                              ; preds = %100
  %103 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %103, ptr noundef @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef @.str.71)
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef @_ZSt3decRSt8ios_base)
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %108

108:                                              ; preds = %102, %100
  br label %109

109:                                              ; preds = %108
  br label %110

110:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  br label %121

111:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %112, i32 0, i32 2
  %114 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZN9ScopeType8as_SplitEv(ptr noundef nonnull align 8 dereferenceable(240) %113)
  store ptr %114, ptr %7, align 8, !tbaa !5
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  br label %121

116:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %117, i32 0, i32 2
  %119 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN9ScopeType9as_FreezeEv(ptr noundef nonnull align 8 dereferenceable(240) %118)
  store ptr %119, ptr %8, align 8, !tbaa !5
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %121

121:                                              ; preds = %116, %111, %110, %94, %2
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #10
  store i8 1, ptr %9, align 1, !tbaa !24
  br label %122

122:                                              ; preds = %617, %121
  %123 = load i8, ptr %9, align 1, !tbaa !24, !range !22, !noundef !23
  %124 = trunc i8 %123 to i1
  br i1 %124, label %126, label %125

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

126:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %127, i32 0, i32 2
  store ptr %128, ptr %11, align 8, !tbaa !5
  br label %129

129:                                              ; preds = %614, %126
  %130 = load i8, ptr %9, align 1, !tbaa !24, !range !22, !noundef !23
  %131 = trunc i8 %130 to i1
  br i1 %131, label %133, label %132

132:                                              ; preds = %129
  store i32 10, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  br label %616

133:                                              ; preds = %129
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = call noundef i32 @_ZNK9ScopeType3tagEv(ptr noundef nonnull align 8 dereferenceable(240) %134)
  switch i32 %135, label %613 [
    i32 0, label %136
    i32 1, label %137
    i32 3, label %155
    i32 2, label %295
    i32 4, label %340
  ]

136:                                              ; preds = %133
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1614, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE) #9
  unreachable

137:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #10
  store i8 1, ptr %12, align 1, !tbaa !24
  br label %138

138:                                              ; preds = %153, %137
  %139 = load i8, ptr %12, align 1, !tbaa !24, !range !22, !noundef !23
  %140 = trunc i8 %139 to i1
  br i1 %140, label %142, label %141

141:                                              ; preds = %138
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  br label %154

142:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN9ScopeType9as_OwningEv(ptr noundef nonnull align 8 dereferenceable(240) %143)
  store ptr %144, ptr %13, align 8, !tbaa !5
  br label %145

145:                                              ; preds = %151, %142
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = load i8, ptr %12, align 1, !tbaa !24, !range !22, !noundef !23
  %148 = trunc i8 %147 to i1
  br i1 %148, label %150, label %149

149:                                              ; preds = %145
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %152

150:                                              ; preds = %145
  br label %151

151:                                              ; preds = %150
  store i8 0, ptr %12, align 1, !tbaa !24
  br label %145, !llvm.loop !25

152:                                              ; preds = %149
  br label %153

153:                                              ; preds = %152
  store i8 0, ptr %12, align 1, !tbaa !24
  br label %138, !llvm.loop !27

154:                                              ; preds = %141
  br label %613

155:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #10
  store i8 1, ptr %14, align 1, !tbaa !24
  br label %156

156:                                              ; preds = %293, %155
  %157 = load i8, ptr %14, align 1, !tbaa !24, !range !22, !noundef !23
  %158 = trunc i8 %157 to i1
  br i1 %158, label %160, label %159

159:                                              ; preds = %156
  store i32 20, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #10
  br label %294

160:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = call noundef nonnull align 8 dereferenceable(232) ptr @_ZN9ScopeType7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(240) %161)
  store ptr %162, ptr %15, align 8, !tbaa !5
  br label %163

163:                                              ; preds = %288, %160
  %164 = load ptr, ptr %15, align 8, !tbaa !5
  %165 = load i8, ptr %14, align 1, !tbaa !24, !range !22, !noundef !23
  %166 = trunc i8 %165 to i1
  br i1 %166, label %168, label %167

167:                                              ; preds = %163
  store i32 23, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %292

168:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #10
  %169 = call noundef zeroext i1 @_Z13debug_enabledv()
  %170 = zext i1 %169 to i64
  %171 = select i1 %169, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %171, ptr noundef %17)
          to label %172 unwind label %184

172:                                              ; preds = %168
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  %173 = load ptr, ptr %15, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.ScopeType::Data_Loop", ptr %173, i32 0, i32 2
  %175 = load i8, ptr %174, align 8, !tbaa !28, !range !22, !noundef !23
  %176 = trunc i8 %175 to i1
  br i1 %176, label %177, label %192

177:                                              ; preds = %172
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %178, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8, !tbaa !40
  %181 = load ptr, ptr %15, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.ScopeType::Data_Loop", ptr %181, i32 0, i32 3
  invoke void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(440) %61, ptr noundef nonnull align 8 dereferenceable(96) %182)
          to label %183 unwind label %188

183:                                              ; preds = %177
  br label %192

184:                                              ; preds = %168
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %19, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  br label %291

188:                                              ; preds = %177
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %19, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %20, align 4
  br label %290

192:                                              ; preds = %183, %172
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %193 = getelementptr inbounds %class.MirBuilder, ptr %61, i32 0, i32 4
  %194 = load ptr, ptr %193, align 8, !tbaa !41
  %195 = getelementptr inbounds %"class.MIR::Function", ptr %194, i32 0, i32 2
  %196 = load ptr, ptr %15, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.ScopeType::Data_Loop", ptr %196, i32 0, i32 4
  %198 = load i32, ptr %197, align 8, !tbaa !69
  %199 = zext i32 %198 to i64
  %200 = invoke noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %199)
          to label %201 unwind label %214

201:                                              ; preds = %192
  %202 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %200, i32 0, i32 0
  store ptr %202, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %203 = load ptr, ptr %15, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.ScopeType::Data_Loop", ptr %203, i32 0, i32 5
  store ptr %204, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %205) #10
  %207 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %206, ptr %207, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %208 = load ptr, ptr %22, align 8, !tbaa !5
  %209 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %208) #10
  %210 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %209, ptr %210, align 8
  br label %211

211:                                              ; preds = %275, %201
  %212 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br i1 %212, label %218, label %213

213:                                              ; preds = %211
  store i32 26, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %287

214:                                              ; preds = %192
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %19, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %20, align 4
  br label %289

218:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  %220 = load i32, ptr %219, align 4, !tbaa !14
  store i32 %220, ptr %25, align 4, !tbaa !14
  br label %221

221:                                              ; preds = %218
  %222 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %223 unwind label %237

223:                                              ; preds = %221
  br i1 %222, label %224, label %241

224:                                              ; preds = %223
  %225 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %225, ptr noundef @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
          to label %227 unwind label %237

227:                                              ; preds = %224
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef @.str.72)
          to label %229 unwind label %237

229:                                              ; preds = %227
  %230 = load i32, ptr %25, align 4, !tbaa !14
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %228, i32 noundef %230)
          to label %232 unwind label %237

232:                                              ; preds = %229
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef @_ZSt3decRSt8ios_base)
          to label %234 unwind label %237

234:                                              ; preds = %232
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %236 unwind label %237

236:                                              ; preds = %234
  br label %241

237:                                              ; preds = %234, %232, %229, %227, %224, %221
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %19, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %20, align 4
  br label %286

241:                                              ; preds = %236, %223
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242
  %244 = load ptr, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %245 = load ptr, ptr %21, align 8, !tbaa !5
  %246 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %245) #10
  %247 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.483", ptr %27, i32 0, i32 0
  store ptr %246, ptr %247, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  call void @llvm.lifetime.start.p0(i64 152, ptr %28) #10
  %248 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %29, i32 0, i32 0
  %249 = load i32, ptr %25, align 4, !tbaa !14
  store i32 %249, ptr %248, align 4, !tbaa !70
  %250 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %29, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #10
  %251 = getelementptr inbounds %class.MirBuilder, ptr %61, i32 0, i32 4
  %252 = load ptr, ptr %251, align 8, !tbaa !41
  %253 = getelementptr inbounds %"class.MIR::Function", ptr %252, i32 0, i32 1
  %254 = load i32, ptr %25, align 4, !tbaa !14
  %255 = zext i32 %254 to i64
  %256 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %253, i64 noundef %255)
          to label %257 unwind label %277

257:                                              ; preds = %243
  %258 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 0
  %259 = extractvalue { ptr, i64 } %256, 0
  store ptr %259, ptr %258, align 8
  %260 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 1
  %261 = extractvalue { ptr, i64 } %256, 1
  store i64 %261, ptr %260, align 8
  %262 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  %263 = zext i1 %262 to i8
  store i8 %263, ptr %250, align 4, !tbaa !72
  %264 = getelementptr inbounds %"struct.MIR::Statement::Data_SetDropFlag", ptr %29, i32 0, i32 2
  store i32 -1, ptr %264, align 4, !tbaa !73
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %29, i64 12, i1 false)
  %265 = getelementptr inbounds { i64, i32 }, ptr %31, i32 0, i32 0
  %266 = load i64, ptr %265, align 4
  %267 = getelementptr inbounds { i64, i32 }, ptr %31, i32 0, i32 1
  %268 = load i32, ptr %267, align 4
  invoke void @_ZN3MIR9Statement16make_SetDropFlagENS0_16Data_SetDropFlagE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %28, i64 %266, i32 %268)
          to label %269 unwind label %277

269:                                              ; preds = %257
  %270 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.484", ptr %26, i32 0, i32 0
  %271 = load ptr, ptr %270, align 8
  %272 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %244, ptr %271, ptr noundef nonnull align 8 dereferenceable(152) %28)
          to label %273 unwind label %281

273:                                              ; preds = %269
  %274 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.483", ptr %32, i32 0, i32 0
  store ptr %272, ptr %274, align 8
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %28) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %275

275:                                              ; preds = %273
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br label %211

277:                                              ; preds = %257, %243
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %19, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %20, align 4
  br label %285

281:                                              ; preds = %269
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %19, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %20, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %28) #10
  br label %285

285:                                              ; preds = %281, %277
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %286

286:                                              ; preds = %285, %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %289

287:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #10
  br label %288

288:                                              ; preds = %287
  store i8 0, ptr %14, align 1, !tbaa !24
  br label %163, !llvm.loop !74

289:                                              ; preds = %286, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %290

290:                                              ; preds = %289, %188
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #10
  br label %291

291:                                              ; preds = %290, %184
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #10
  br label %615

292:                                              ; preds = %167
  br label %293

293:                                              ; preds = %292
  store i8 0, ptr %14, align 1, !tbaa !24
  br label %156, !llvm.loop !75

294:                                              ; preds = %159
  br label %613

295:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #10
  store i8 1, ptr %33, align 1, !tbaa !24
  br label %296

296:                                              ; preds = %338, %295
  %297 = load i8, ptr %33, align 1, !tbaa !24, !range !22, !noundef !23
  %298 = trunc i8 %297 to i1
  br i1 %298, label %300, label %299

299:                                              ; preds = %296
  store i32 30, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  br label %339

300:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZN9ScopeType8as_SplitEv(ptr noundef nonnull align 8 dereferenceable(240) %301)
  store ptr %302, ptr %34, align 8, !tbaa !5
  br label %303

303:                                              ; preds = %335, %300
  %304 = load ptr, ptr %34, align 8, !tbaa !5
  %305 = load i8, ptr %33, align 1, !tbaa !24, !range !22, !noundef !23
  %306 = trunc i8 %305 to i1
  br i1 %306, label %308, label %307

307:                                              ; preds = %303
  store i32 33, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %337

308:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 40, ptr %35) #10
  %309 = call noundef zeroext i1 @_Z13debug_enabledv()
  %310 = zext i1 %309 to i64
  %311 = select i1 %309, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %312 = getelementptr inbounds %class.anon.485, ptr %37, i32 0, i32 0
  %313 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %313, ptr %312, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %35, ptr noundef %311, ptr noundef %36)
          to label %314 unwind label %326

314:                                              ; preds = %308
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  %315 = load ptr, ptr %34, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.ScopeType::Data_Split", ptr %315, i32 0, i32 0
  %317 = load i8, ptr %316, align 8, !tbaa !76, !range !22, !noundef !23
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %334

319:                                              ; preds = %314
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %320, i32 0, i32 0
  %322 = load ptr, ptr %321, align 8, !tbaa !40
  %323 = load ptr, ptr %34, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.ScopeType::Data_Split", ptr %323, i32 0, i32 2
  invoke void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef nonnull align 8 dereferenceable(440) %61, ptr noundef nonnull align 8 dereferenceable(96) %324)
          to label %325 unwind label %330

325:                                              ; preds = %319
  br label %334

326:                                              ; preds = %308
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %19, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  br label %336

330:                                              ; preds = %319
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %19, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %20, align 4
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #10
  br label %336

334:                                              ; preds = %325, %314
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #10
  br label %335

335:                                              ; preds = %334
  store i8 0, ptr %33, align 1, !tbaa !24
  br label %303, !llvm.loop !82

336:                                              ; preds = %330, %326
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  br label %615

337:                                              ; preds = %307
  br label %338

338:                                              ; preds = %337
  store i8 0, ptr %33, align 1, !tbaa !24
  br label %296, !llvm.loop !83

339:                                              ; preds = %299
  br label %613

340:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #10
  store i8 1, ptr %38, align 1, !tbaa !24
  br label %341

341:                                              ; preds = %611, %340
  %342 = load i8, ptr %38, align 1, !tbaa !24, !range !22, !noundef !23
  %343 = trunc i8 %342 to i1
  br i1 %343, label %345, label %344

344:                                              ; preds = %341
  store i32 36, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #10
  br label %612

345:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %346 = load ptr, ptr %11, align 8, !tbaa !5
  %347 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN9ScopeType9as_FreezeEv(ptr noundef nonnull align 8 dereferenceable(240) %346)
  store ptr %347, ptr %39, align 8, !tbaa !5
  br label %348

348:                                              ; preds = %607, %345
  %349 = load ptr, ptr %39, align 8, !tbaa !5
  %350 = load i8, ptr %38, align 1, !tbaa !24, !range !22, !noundef !23
  %351 = trunc i8 %350 to i1
  br i1 %351, label %353, label %352

352:                                              ; preds = %348
  store i32 39, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %610

353:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 40, ptr %40) #10
  %354 = call noundef zeroext i1 @_Z13debug_enabledv()
  %355 = zext i1 %354 to i64
  %356 = select i1 %354, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(1) %42) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %40, ptr noundef %356, ptr noundef %41)
          to label %357 unwind label %369

357:                                              ; preds = %353
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %358 = load ptr, ptr %39, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.ScopeType::Data_Freeze", ptr %358, i32 0, i32 0
  store ptr %359, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %360 = load ptr, ptr %43, align 8, !tbaa !5
  %361 = call ptr @_ZNSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %360) #10
  %362 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %44, i32 0, i32 0
  store ptr %361, ptr %362, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %363 = load ptr, ptr %43, align 8, !tbaa !5
  %364 = call ptr @_ZNSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %363) #10
  %365 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %45, i32 0, i32 0
  store ptr %364, ptr %365, align 8
  br label %366

366:                                              ; preds = %501, %357
  %367 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKj8VarStateEES6_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  br i1 %367, label %373, label %368

368:                                              ; preds = %366
  store i32 42, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %506

369:                                              ; preds = %353
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %19, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  br label %609

373:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %374 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKj8VarStateEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  store ptr %374, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %375, i32 0, i32 0
  %377 = load ptr, ptr %376, align 8, !tbaa !40
  %378 = load ptr, ptr %46, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.std::pair.471", ptr %378, i32 0, i32 0
  %380 = load i32, ptr %379, align 8, !tbaa !84
  %381 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %61, ptr noundef nonnull align 8 dereferenceable(8) %377, i32 noundef %380, i32 noundef 0)
          to label %382 unwind label %411

382:                                              ; preds = %373
  store ptr %381, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #10
  %383 = load ptr, ptr %46, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.std::pair.471", ptr %383, i32 0, i32 0
  %385 = load i32, ptr %384, align 8, !tbaa !84
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %48, i32 noundef %385)
          to label %386 unwind label %415

386:                                              ; preds = %382
  br label %387

387:                                              ; preds = %386
  %388 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %389 unwind label %419

389:                                              ; preds = %387
  br i1 %388, label %390, label %423

390:                                              ; preds = %389
  %391 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %391, ptr noundef @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
          to label %393 unwind label %419

393:                                              ; preds = %390
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %395 unwind label %419

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

397:                                              ; preds = %395
  %398 = load ptr, ptr %47, align 8, !tbaa !5
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8VarState(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(40) %398)
          to label %400 unwind label %419

400:                                              ; preds = %397
  %401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef @.str.20)
          to label %402 unwind label %419

402:                                              ; preds = %400
  %403 = load ptr, ptr %46, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.std::pair.471", ptr %403, i32 0, i32 2
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8VarState(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef nonnull align 8 dereferenceable(40) %404)
          to label %406 unwind label %419

406:                                              ; preds = %402
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef @_ZSt3decRSt8ios_base)
          to label %408 unwind label %419

408:                                              ; preds = %406
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %407, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %410 unwind label %419

410:                                              ; preds = %408
  br label %423

411:                                              ; preds = %373
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %19, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %20, align 4
  br label %505

415:                                              ; preds = %382
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %19, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %20, align 4
  br label %504

419:                                              ; preds = %481, %463, %447, %431, %425, %408, %406, %402, %400, %397, %395, %393, %390, %387
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %19, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %20, align 4
  br label %503

423:                                              ; preds = %410, %389
  br label %424

424:                                              ; preds = %423
  br label %425

425:                                              ; preds = %424
  %426 = load ptr, ptr %47, align 8, !tbaa !5
  %427 = load ptr, ptr %46, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.std::pair.471", ptr %427, i32 0, i32 2
  %429 = invoke noundef zeroext i1 @_ZNK8VarStateneERKS_(ptr noundef nonnull align 8 dereferenceable(40) %426, ptr noundef nonnull align 8 dereferenceable(40) %428)
          to label %430 unwind label %419

430:                                              ; preds = %425
  br i1 %429, label %431, label %500

431:                                              ; preds = %430
  %432 = load ptr, ptr %47, align 8, !tbaa !5
  %433 = invoke noundef zeroext i1 @_ZNK8VarState8is_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %432)
          to label %434 unwind label %419

434:                                              ; preds = %431
  br i1 %433, label %435, label %463

435:                                              ; preds = %434
  br label %436

436:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %437 = load ptr, ptr %4, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %437, i32 0, i32 0
  %439 = load ptr, ptr %438, align 8, !tbaa !40
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %439)
          to label %440 unwind label %448

440:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #10
  %441 = getelementptr inbounds %class.anon.488, ptr %51, i32 0, i32 0
  %442 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %442, ptr %441, align 8, !tbaa !5
  %443 = getelementptr inbounds %class.anon.488, ptr %51, i32 0, i32 1
  %444 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %444, ptr %443, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(16) %51) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef 0, ptr noundef %50)
          to label %445 unwind label %452

445:                                              ; preds = %440
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  %446 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %446, ptr noundef @.str.73)
          to label %447 unwind label %457

447:                                              ; preds = %445
  invoke void @__cxa_throw(ptr %446, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %624 unwind label %419

448:                                              ; preds = %436
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %19, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %20, align 4
  br label %456

452:                                              ; preds = %440
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %19, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  br label %456

456:                                              ; preds = %452, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %503

457:                                              ; preds = %445
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %19, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %20, align 4
  call void @__cxa_free_exception(ptr %446) #10
  br label %503

461:                                              ; No predecessors!
  br label %462

462:                                              ; preds = %461
  br label %499

463:                                              ; preds = %434
  %464 = load ptr, ptr %4, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %464, i32 0, i32 0
  %466 = load ptr, ptr %465, align 8, !tbaa !40
  %467 = invoke noundef zeroext i1 @_ZNK10MirBuilder14lvalue_is_copyERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %61, ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %468 unwind label %419

468:                                              ; preds = %463
  br i1 %467, label %497, label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %471 = load ptr, ptr %4, align 8, !tbaa !5
  %472 = getelementptr inbounds %"struct.MirBuilder::ScopeDef", ptr %471, i32 0, i32 0
  %473 = load ptr, ptr %472, align 8, !tbaa !40
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %473)
          to label %474 unwind label %482

474:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #10
  %475 = getelementptr inbounds %class.anon.489, ptr %54, i32 0, i32 0
  %476 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %476, ptr %475, align 8, !tbaa !5
  %477 = getelementptr inbounds %class.anon.489, ptr %54, i32 0, i32 1
  %478 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %478, ptr %477, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(16) %54) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, i32 noundef 0, ptr noundef %53)
          to label %479 unwind label %486

479:                                              ; preds = %474
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  %480 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %480, ptr noundef @.str.73)
          to label %481 unwind label %491

481:                                              ; preds = %479
  invoke void @__cxa_throw(ptr %480, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %624 unwind label %419

482:                                              ; preds = %470
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %19, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %20, align 4
  br label %490

486:                                              ; preds = %474
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %19, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  br label %490

490:                                              ; preds = %486, %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %503

491:                                              ; preds = %479
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %19, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %20, align 4
  call void @__cxa_free_exception(ptr %480) #10
  br label %503

495:                                              ; No predecessors!
  br label %496

496:                                              ; preds = %495
  br label %498

497:                                              ; preds = %468
  br label %498

498:                                              ; preds = %497, %496
  br label %499

499:                                              ; preds = %498, %462
  br label %500

500:                                              ; preds = %499, %430
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %501

501:                                              ; preds = %500
  %502 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKj8VarStateEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  br label %366

503:                                              ; preds = %491, %490, %457, %456, %419
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  br label %504

504:                                              ; preds = %503, %415
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #10
  br label %505

505:                                              ; preds = %504, %411
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %608

506:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  store i64 0, ptr %55, align 8, !tbaa !86
  br label %507

507:                                              ; preds = %602, %506
  %508 = load i64, ptr %55, align 8, !tbaa !86
  %509 = load ptr, ptr %39, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.ScopeType::Data_Freeze", ptr %509, i32 0, i32 1
  %511 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %510) #10
  %512 = icmp ult i64 %508, %511
  br i1 %512, label %514, label %513

513:                                              ; preds = %507
  store i32 50, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %606

514:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #10
  %515 = load ptr, ptr %39, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.ScopeType::Data_Freeze", ptr %515, i32 0, i32 1
  %517 = load i64, ptr %55, align 8, !tbaa !86
  store i1 false, ptr %58, align 1
  store i1 false, ptr %59, align 1
  %518 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %516, i64 noundef %517)
          to label %519 unwind label %558

519:                                              ; preds = %514
  %520 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 0
  %521 = extractvalue { ptr, i64 } %518, 0
  store ptr %521, ptr %520, align 8
  %522 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 1
  %523 = extractvalue { ptr, i64 } %518, 1
  store i64 %523, ptr %522, align 8
  %524 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  br i1 %524, label %533, label %525

525:                                              ; preds = %519
  %526 = getelementptr inbounds %class.MirBuilder, ptr %61, i32 0, i32 19
  %527 = load i64, ptr %55, align 8, !tbaa !86
  %528 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %526, i64 noundef %527) #10
  %529 = getelementptr inbounds %"struct.std::pair.429", ptr %528, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #10
  store i1 true, ptr %58, align 1
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %530 unwind label %562

530:                                              ; preds = %525
  store i1 true, ptr %59, align 1
  %531 = invoke noundef zeroext i1 @_ZN3MIRneERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %529, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %532 unwind label %566

532:                                              ; preds = %530
  br label %533

533:                                              ; preds = %532, %519
  %534 = phi i1 [ false, %519 ], [ %531, %532 ]
  %535 = load i1, ptr %59, align 1
  br i1 %535, label %536, label %537

536:                                              ; preds = %533
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #10
  br label %537

537:                                              ; preds = %536, %533
  %538 = load i1, ptr %58, align 1
  br i1 %538, label %539, label %540

539:                                              ; preds = %537
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #10
  br label %540

540:                                              ; preds = %539, %537
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  br i1 %534, label %541, label %601

541:                                              ; preds = %540
  br label %542

542:                                              ; preds = %541
  %543 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %544 unwind label %578

544:                                              ; preds = %542
  br i1 %543, label %545, label %582

545:                                              ; preds = %544
  %546 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %546, ptr noundef @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
          to label %548 unwind label %578

548:                                              ; preds = %545
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef @.str.74)
          to label %550 unwind label %578

550:                                              ; preds = %548
  %551 = load i64, ptr %55, align 8, !tbaa !86
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %549, i64 noundef %551)
          to label %553 unwind label %578

553:                                              ; preds = %550
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef @_ZSt3decRSt8ios_base)
          to label %555 unwind label %578

555:                                              ; preds = %553
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %557 unwind label %578

557:                                              ; preds = %555
  br label %582

558:                                              ; preds = %514
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %19, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %20, align 4
  br label %577

562:                                              ; preds = %525
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %19, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %20, align 4
  br label %573

566:                                              ; preds = %530
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %19, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %20, align 4
  %570 = load i1, ptr %59, align 1
  br i1 %570, label %571, label %572

571:                                              ; preds = %566
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #10
  br label %572

572:                                              ; preds = %571, %566
  br label %573

573:                                              ; preds = %572, %562
  %574 = load i1, ptr %58, align 1
  br i1 %574, label %575, label %576

575:                                              ; preds = %573
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #10
  br label %576

576:                                              ; preds = %575, %573
  br label %577

577:                                              ; preds = %576, %558
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  br label %605

578:                                              ; preds = %555, %553, %550, %548, %545, %542
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %19, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %20, align 4
  br label %605

582:                                              ; preds = %557, %544
  br label %583

583:                                              ; preds = %582
  br label %584

584:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #10
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %585 unwind label %592

585:                                              ; preds = %584
  %586 = getelementptr inbounds %class.MirBuilder, ptr %61, i32 0, i32 19
  %587 = load i64, ptr %55, align 8, !tbaa !86
  %588 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %586, i64 noundef %587) #10
  %589 = getelementptr inbounds %"struct.std::pair.429", ptr %588, i32 0, i32 1
  %590 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %589, ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %591 unwind label %596

591:                                              ; preds = %585
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #10
  br label %601

592:                                              ; preds = %584
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %19, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %20, align 4
  br label %600

596:                                              ; preds = %585
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %19, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %20, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  br label %600

600:                                              ; preds = %596, %592
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #10
  br label %605

601:                                              ; preds = %591, %540
  br label %602

602:                                              ; preds = %601
  %603 = load i64, ptr %55, align 8, !tbaa !86
  %604 = add i64 %603, 1
  store i64 %604, ptr %55, align 8, !tbaa !86
  br label %507, !llvm.loop !87

605:                                              ; preds = %600, %578, %577
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %608

606:                                              ; preds = %513
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #10
  br label %607

607:                                              ; preds = %606
  store i8 0, ptr %38, align 1, !tbaa !24
  br label %348, !llvm.loop !88

608:                                              ; preds = %605, %505
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #10
  br label %609

609:                                              ; preds = %608, %369
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #10
  br label %615

610:                                              ; preds = %352
  br label %611

611:                                              ; preds = %610
  store i8 0, ptr %38, align 1, !tbaa !24
  br label %341, !llvm.loop !89

612:                                              ; preds = %344
  br label %613

613:                                              ; preds = %612, %339, %294, %154, %133
  br label %614

614:                                              ; preds = %613
  store i8 0, ptr %9, align 1, !tbaa !24
  br label %129, !llvm.loop !90

615:                                              ; preds = %609, %336, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  br label %619

616:                                              ; preds = %132
  br label %617

617:                                              ; preds = %616
  store i8 0, ptr %9, align 1, !tbaa !24
  br label %122, !llvm.loop !91

618:                                              ; preds = %125
  ret void

619:                                              ; preds = %615
  %620 = load ptr, ptr %19, align 8
  %621 = load i32, ptr %20, align 4
  %622 = insertvalue { ptr, i32 } poison, ptr %620, 0
  %623 = insertvalue { ptr, i32 } %622, i32 %621, 1
  resume { ptr, i32 } %623

624:                                              ; preds = %481, %447
  unreachable
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(96)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 8}
!10 = !{!"_ZTSN10MirBuilder8ScopeDefE", !6, i64 0, !11, i64 8, !12, i64 16}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTS9ScopeType", !13, i64 0, !7, i64 8}
!13 = !{!"_ZTSN9ScopeType3TagE", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!17, !11, i64 0}
!17 = !{!"_ZTSN9ScopeType11Data_OwningE", !11, i64 0, !18, i64 8}
!18 = !{!"_ZTSSt6vectorIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!11, !11, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!29, !11, i64 96}
!29 = !{!"_ZTSN9ScopeType9Data_LoopE", !30, i64 0, !30, i64 48, !11, i64 96, !39, i64 104, !15, i64 200, !18, i64 208}
!30 = !{!"_ZTSSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKj8VarStateESt10_Select1stIS3_ESt4lessIjESaIS3_EE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKj8VarStateESt10_Select1stIS3_ESt4lessIjESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !33, i64 0, !35, i64 8}
!33 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !34, i64 0}
!34 = !{!"_ZTSSt4lessIjE"}
!35 = !{!"_ZTSSt15_Rb_tree_header", !36, i64 0, !38, i64 32}
!36 = !{!"_ZTSSt18_Rb_tree_node_base", !37, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!37 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!38 = !{!"long", !7, i64 0}
!39 = !{!"_ZTS8SplitEnd", !30, i64 0, !30, i64 48}
!40 = !{!10, !6, i64 0}
!41 = !{!42, !6, i64 32}
!42 = !{!"_ZTS10MirBuilder", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !15, i64 48, !11, i64 52, !43, i64 56, !11, i64 168, !45, i64 176, !47, i64 216, !47, i64 240, !38, i64 264, !51, i64 272, !54, i64 320, !18, i64 344, !58, i64 368, !59, i64 384, !63, i64 408}
!43 = !{!"_ZTSN3MIR6RValueE", !44, i64 0, !7, i64 8}
!44 = !{!"_ZTSN3MIR6RValue3TagE", !7, i64 0}
!45 = !{!"_ZTS8VarState", !46, i64 0, !7, i64 8}
!46 = !{!"_ZTSN8VarState3TagE", !7, i64 0}
!47 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !52, i64 0}
!52 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !53, i64 0}
!53 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !33, i64 0, !35, i64 8}
!54 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTS11ScopeHandle", !6, i64 0, !15, i64 8}
!59 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSN3MIR6LValueE", !64, i64 0, !65, i64 8}
!64 = !{!"_ZTSN3MIR6LValue7StorageE", !38, i64 0}
!65 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!29, !15, i64 200}
!70 = !{!71, !15, i64 0}
!71 = !{!"_ZTSN3MIR9Statement16Data_SetDropFlagE", !15, i64 0, !11, i64 4, !15, i64 8}
!72 = !{!71, !11, i64 4}
!73 = !{!71, !15, i64 8}
!74 = distinct !{!74, !26}
!75 = distinct !{!75, !26}
!76 = !{!77, !11, i64 0}
!77 = !{!"_ZTSN9ScopeType10Data_SplitE", !11, i64 0, !39, i64 8, !39, i64 104, !78, i64 200}
!78 = !{!"_ZTSSt6vectorI8SplitArmSaIS0_EE", !79, i64 0}
!79 = !{!"_ZTSSt12_Vector_baseI8SplitArmSaIS0_EE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseI8SplitArmSaIS0_EE12_Vector_implE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseI8SplitArmSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!82 = distinct !{!82, !26}
!83 = distinct !{!83, !26}
!84 = !{!85, !15, i64 0}
!85 = !{!"_ZTSSt4pairIKj8VarStateE", !15, i64 0, !45, i64 8}
!86 = !{!38, !38, i64 0}
!87 = distinct !{!87, !26}
!88 = distinct !{!88, !26}
!89 = distinct !{!89, !26}
!90 = distinct !{!90, !26}
!91 = distinct !{!91, !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"

%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%class.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.481 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.484" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.483" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.485 = type { ptr }
%class.anon.486 = type { i8 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.Span = type { ptr }
%class.anon.488 = type { ptr, ptr }
%class.anon.489 = type { ptr, ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE = external hidden unnamed_addr constant [44 x i8], align 1
@__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE = external hidden unnamed_addr constant [15 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN9ScopeType9as_OwningEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(224) ptr @_ZN9ScopeType8as_SplitEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #6 align 2

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10MirBuilder14lvalue_is_copyERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(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 i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #0 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 #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(232) ptr @_ZN9ScopeType7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9ScopeType9as_FreezeEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #6 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10MirBuilder14complete_scopeERNS_8ScopeDefE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(256) %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.TraceLog, align 8
  %4 = alloca %"class.std::function", align 8
  %5 = alloca %class.anon.481, align 1
  %6 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.484", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.483", align 8
  %10 = alloca %"class.MIR::Statement", align 8
  %11 = alloca %"struct.std::_Bit_reference", align 8
  %12 = alloca %class.TraceLog, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.485, align 8
  %15 = alloca %class.TraceLog, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.486, align 1
  %18 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %19 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %20 = alloca %"struct.MIR::LValue", align 8
  %21 = alloca %struct.Span, align 8
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.488, align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.489, align 8
  %27 = alloca %"struct.std::_Bit_reference", align 8
  %28 = alloca %"struct.MIR::LValue", align 8
  %29 = alloca %"struct.MIR::LValue", align 8
  %30 = getelementptr inbounds i8, ptr %1, i64 8
  store i8 1, ptr %30, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %1, i64 16
  %32 = tail call noundef i32 @_ZNK9ScopeType3tagEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  switch i32 %32, label %.lr.ph188 [
    i32 0, label %33
    i32 1, label %34
    i32 3, label %50
    i32 2, label %59
    i32 4, label %61
  ]

33:                                               ; preds = %2
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1587, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE) #8
  unreachable

34:                                               ; preds = %2
  %35 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN9ScopeType9as_OwningEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  %36 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %36, label %37, label %.lr.ph188

37:                                               ; preds = %34
  %38 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %38, ptr noundef nonnull @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
  %40 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull @.str.67)
  %41 = load i8, ptr %35, align 8, !tbaa !15, !range !21, !noundef !22
  %42 = trunc nuw i8 %41 to i1
  %43 = select i1 %42, ptr @.str.68, ptr @.str.69
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %43)
  %45 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull @.str.70)
  %46 = getelementptr inbounds i8, ptr %35, i64 8
  %47 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIjERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(24) %46)
  %48 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %49 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.lr.ph188

50:                                               ; preds = %2
  %51 = tail call noundef nonnull align 8 dereferenceable(232) ptr @_ZN9ScopeType7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  %52 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %52, label %53, label %.lr.ph188

53:                                               ; preds = %50
  %54 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %55 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %54, ptr noundef nonnull @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
  %56 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull @.str.71)
  %57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %58 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.lr.ph188

59:                                               ; preds = %2
  %60 = tail call noundef nonnull align 8 dereferenceable(224) ptr @_ZN9ScopeType8as_SplitEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  br label %.lr.ph188

61:                                               ; preds = %2
  %62 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZN9ScopeType9as_FreezeEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  br label %.lr.ph188

.loopexit151:                                     ; preds = %.preheader, %.lr.ph188, %..loopexit141_crit_edge, %..loopexit140_crit_edge, %..loopexit142_crit_edge
  ret void

.lr.ph188:                                        ; preds = %50, %53, %34, %37, %61, %59, %2
  %63 = getelementptr inbounds i8, ptr %27, i64 8
  %64 = getelementptr inbounds i8, ptr %0, i64 384
  %65 = getelementptr inbounds i8, ptr %0, i64 32
  %66 = getelementptr inbounds i8, ptr %11, i64 8
  %67 = tail call noundef i32 @_ZNK9ScopeType3tagEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  switch i32 %67, label %.loopexit151 [
    i32 0, label %73
    i32 1, label %.preheader
    i32 3, label %.lr.ph184
    i32 2, label %.preheader146
    i32 4, label %.lr.ph165
  ]

.preheader146:                                    ; preds = %.lr.ph188
  %68 = tail call noundef nonnull align 8 dereferenceable(224) ptr @_ZN9ScopeType8as_SplitEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  %69 = getelementptr inbounds i8, ptr %68, i64 104
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #9
  %70 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %71 = select i1 %70, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  store ptr %68, ptr %14, align 8, !tbaa !23
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef %71, ptr noundef nonnull %13)
          to label %143 unwind label %.split.split

.preheader:                                       ; preds = %.lr.ph188
  %72 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN9ScopeType9as_OwningEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  br label %.loopexit151

73:                                               ; preds = %.lr.ph188
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1614, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE) #8
  unreachable

.lr.ph184:                                        ; preds = %.lr.ph188
  %74 = tail call noundef nonnull align 8 dereferenceable(232) ptr @_ZN9ScopeType7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  %75 = getelementptr inbounds i8, ptr %74, i64 104
  %76 = getelementptr inbounds i8, ptr %74, i64 200
  %77 = getelementptr inbounds i8, ptr %74, i64 208
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #9
  %78 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %79 = select i1 %78, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef %79, ptr noundef nonnull %4)
          to label %80 unwind label %86

80:                                               ; preds = %.lr.ph184
  %81 = getelementptr inbounds i8, ptr %74, i64 96
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  %82 = load i8, ptr %81, align 8, !tbaa !24, !range !21, !noundef !22
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %84, label %90

84:                                               ; preds = %80
  %85 = load ptr, ptr %1, align 8, !tbaa !36
  invoke void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(96) %75)
          to label %90 unwind label %88

86:                                               ; preds = %.lr.ph184
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  br label %142

88:                                               ; preds = %84
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %141

90:                                               ; preds = %84, %80
  %91 = load ptr, ptr %65, align 8, !tbaa !37
  %92 = getelementptr inbounds i8, ptr %91, i64 64
  %93 = load i32, ptr %76, align 8, !tbaa !65
  %94 = zext i32 %93 to i64
  %95 = invoke noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %92, i64 noundef %94)
          to label %96 unwind label %100

96:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  %97 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #9
  store ptr %97, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %98 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #9
  store ptr %98, ptr %7, align 8
  %99 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  br i1 %99, label %.lr.ph181, label %..loopexit140_crit_edge

..loopexit140_crit_edge:                          ; preds = %132, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #9
  br label %.loopexit151

100:                                              ; preds = %90
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %141

.lr.ph181:                                        ; preds = %96, %132
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  %103 = load i32, ptr %102, align 4, !tbaa !13
  %104 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %105 unwind label %117

105:                                              ; preds = %.lr.ph181
  br i1 %104, label %106, label %119

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

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

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

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

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

117:                                              ; preds = %115, %113, %111, %109, %106, %.lr.ph181
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %140

119:                                              ; preds = %115, %105
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %120 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %95) #9
  store ptr %120, ptr %9, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  %121 = load ptr, ptr %65, align 8, !tbaa !37
  %122 = getelementptr inbounds i8, ptr %121, i64 24
  %123 = zext i32 %103 to i64
  %124 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEE2atEm(ptr noundef nonnull align 8 dereferenceable(40) %122, i64 noundef %123)
          to label %125 unwind label %135

125:                                              ; preds = %119
  %126 = extractvalue { ptr, i64 } %124, 0
  store ptr %126, ptr %11, align 8
  %127 = extractvalue { ptr, i64 } %124, 1
  store i64 %127, ptr %66, align 8
  %128 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  %.sroa.236.0.insert.shift = select i1 %128, i64 4294967296, i64 0
  %.sroa.035.0.insert.insert = or disjoint i64 %.sroa.236.0.insert.shift, %123
  invoke void @_ZN3MIR9Statement16make_SetDropFlagENS0_16Data_SetDropFlagE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %10, i64 %.sroa.035.0.insert.insert, i32 -1)
          to label %129 unwind label %135

129:                                              ; preds = %125
  %130 = load ptr, ptr %8, align 8
  %131 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr %130, ptr noundef nonnull align 8 dereferenceable(152) %10)
          to label %132 unwind label %137

132:                                              ; preds = %129
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  %134 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  br i1 %134, label %.lr.ph181, label %..loopexit140_crit_edge

135:                                              ; preds = %125, %119
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %139

137:                                              ; preds = %129
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %10) #9
  br label %139

139:                                              ; preds = %137, %135
  %.pn132 = phi { ptr, i32 } [ %138, %137 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %140

140:                                              ; preds = %139, %117
  %.pn132.pn = phi { ptr, i32 } [ %.pn132, %139 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %141

141:                                              ; preds = %100, %140, %88
  %.pn132.pn.pn.pn = phi { ptr, i32 } [ %89, %88 ], [ %.pn132.pn, %140 ], [ %101, %100 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #9
  br label %142

142:                                              ; preds = %141, %86
  %.pn132.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn.pn, %141 ], [ %87, %86 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #9
  br label %287

143:                                              ; preds = %.preheader146
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  %144 = load i8, ptr %68, align 8, !tbaa !66, !range !21, !noundef !22
  %145 = trunc nuw i8 %144 to i1
  br i1 %145, label %146, label %..loopexit141_crit_edge

146:                                              ; preds = %143
  %147 = load ptr, ptr %1, align 8, !tbaa !36
  invoke void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(96) %69)
          to label %..loopexit141_crit_edge unwind label %.split170.split

.split.split:                                     ; preds = %.preheader146
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  br label %150

.split170.split:                                  ; preds = %146
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #9
  br label %150

..loopexit141_crit_edge:                          ; preds = %146, %143
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #9
  br label %.loopexit151

150:                                              ; preds = %.split170.split, %.split.split
  %.pn130 = phi { ptr, i32 } [ %149, %.split170.split ], [ %148, %.split.split ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #9
  br label %287

.lr.ph165:                                        ; preds = %.lr.ph188
  %151 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZN9ScopeType9as_FreezeEv(ptr noundef nonnull align 8 dereferenceable(240) %31)
  %152 = getelementptr inbounds i8, ptr %151, i64 48
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) #9
  %153 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %154 = select i1 %153, ptr @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %154, ptr noundef nonnull %16)
          to label %155 unwind label %160

155:                                              ; preds = %.lr.ph165
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %156 = call ptr @_ZNSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %151) #9
  store ptr %156, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %157 = call ptr @_ZNSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %151) #9
  store ptr %157, ptr %19, align 8
  %158 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKj8VarStateEES6_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %158, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %230, %155
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  %159 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %152) #9
  %.not = icmp eq i64 %159, 0
  br i1 %.not, label %..loopexit142_crit_edge, label %.lr.ph162

160:                                              ; preds = %.lr.ph165
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  br label %286

.lr.ph:                                           ; preds = %155, %230
  %162 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKj8VarStateEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %163 = load ptr, ptr %1, align 8, !tbaa !36
  %164 = load i32, ptr %162, align 8, !tbaa !72
  %165 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %163, i32 noundef %164, i32 noundef 0)
          to label %166 unwind label %189

166:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  %167 = load i32, ptr %162, align 8, !tbaa !72
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %20, i32 noundef %167)
          to label %168 unwind label %191

168:                                              ; preds = %166
  %169 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %170 unwind label %.loopexit

170:                                              ; preds = %168
  br i1 %169, label %171, label %193

171:                                              ; preds = %170
  %172 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %172, ptr noundef nonnull @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
          to label %174 unwind label %.loopexit

174:                                              ; preds = %171
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %176 unwind label %.loopexit

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

178:                                              ; preds = %176
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8VarState(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull align 8 dereferenceable(40) %165)
          to label %180 unwind label %.loopexit

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

182:                                              ; preds = %180
  %183 = getelementptr inbounds i8, ptr %162, i64 8
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8VarState(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(40) %183)
          to label %185 unwind label %.loopexit

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

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %193 unwind label %.loopexit

189:                                              ; preds = %.lr.ph
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %235

191:                                              ; preds = %166
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %234

.loopexit:                                        ; preds = %168, %171, %174, %176, %178, %180, %182, %185, %187, %193, %213
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %233

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

193:                                              ; preds = %187, %170
  %194 = getelementptr inbounds i8, ptr %162, i64 8
  %195 = invoke noundef zeroext i1 @_ZNK8VarStateneERKS_(ptr noundef nonnull align 8 dereferenceable(40) %165, ptr noundef nonnull align 8 dereferenceable(40) %194)
          to label %196 unwind label %.loopexit

196:                                              ; preds = %193
  br i1 %195, label %197, label %230

197:                                              ; preds = %196
  %198 = call noundef zeroext i1 @_ZNK8VarState8is_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %165)
  br i1 %198, label %199, label %213

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %200 = load ptr, ptr %1, align 8, !tbaa !36
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %201 unwind label %206

201:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #9
  store ptr %165, ptr %23, align 8, !tbaa !23
  %202 = getelementptr inbounds i8, ptr %23, i64 8
  store ptr %162, ptr %202, align 8, !tbaa !23
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %21, i32 noundef 0, ptr noundef nonnull %22)
          to label %203 unwind label %208

203:                                              ; preds = %201
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  %204 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull @.str.73)
          to label %.invoke unwind label %211

.invoke:                                          ; preds = %221, %203
  %205 = phi ptr [ %204, %203 ], [ %222, %221 ]
  invoke void @__cxa_throw(ptr nonnull %205, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont unwind label %.loopexit.split-lp

.cont:                                            ; preds = %.invoke
  unreachable

206:                                              ; preds = %199
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %210

208:                                              ; preds = %201
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br label %210

210:                                              ; preds = %208, %206
  %.pn122 = phi { ptr, i32 } [ %209, %208 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %233

211:                                              ; preds = %203
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %204) #9
  br label %233

213:                                              ; preds = %197
  %214 = load ptr, ptr %1, align 8, !tbaa !36
  %215 = invoke noundef zeroext i1 @_ZNK10MirBuilder14lvalue_is_copyERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %216 unwind label %.loopexit

216:                                              ; preds = %213
  br i1 %215, label %230, label %217

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %218 = load ptr, ptr %1, align 8, !tbaa !36
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %218)
          to label %219 unwind label %223

219:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #9
  store ptr %165, ptr %26, align 8, !tbaa !23
  %220 = getelementptr inbounds i8, ptr %26, i64 8
  store ptr %162, ptr %220, align 8, !tbaa !23
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder14complete_scopeERNS4_8ScopeDefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, i32 noundef 0, ptr noundef nonnull %25)
          to label %221 unwind label %225

221:                                              ; preds = %219
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  %222 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef nonnull @.str.73)
          to label %.invoke unwind label %228

223:                                              ; preds = %217
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %227

225:                                              ; preds = %219
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %227

227:                                              ; preds = %225, %223
  %.pn120 = phi { ptr, i32 } [ %226, %225 ], [ %224, %223 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %233

228:                                              ; preds = %221
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %222) #9
  br label %233

230:                                              ; preds = %216, %196
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKj8VarStateEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %232 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKj8VarStateEES6_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %232, label %.lr.ph, label %._crit_edge

233:                                              ; preds = %.loopexit, %.loopexit.split-lp, %228, %227, %211, %210
  %.pn124 = phi { ptr, i32 } [ %212, %211 ], [ %.pn122, %210 ], [ %229, %228 ], [ %.pn120, %227 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %234

234:                                              ; preds = %233, %191
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %233 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %235

235:                                              ; preds = %234, %189
  %.pn124.pn.pn = phi { ptr, i32 } [ %.pn124.pn, %234 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %285

..loopexit142_crit_edge:                          ; preds = %281, %._crit_edge
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #9
  br label %.loopexit151

.lr.ph162:                                        ; preds = %._crit_edge, %281
  %.085160 = phi i64 [ %282, %281 ], [ 0, %._crit_edge ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #9
  %236 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %152, i64 noundef %.085160)
          to label %237 unwind label %260

237:                                              ; preds = %.lr.ph162
  %238 = extractvalue { ptr, i64 } %236, 0
  store ptr %238, ptr %27, align 8
  %239 = extractvalue { ptr, i64 } %236, 1
  store i64 %239, ptr %63, align 8
  %240 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  br i1 %240, label %.critedge.thread, label %241

.critedge.thread:                                 ; preds = %237
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #9
  br label %281

241:                                              ; preds = %237
  %242 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %.085160) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #9
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %243 unwind label %262

243:                                              ; preds = %241
  %244 = getelementptr inbounds i8, ptr %242, i64 8
  %245 = invoke noundef zeroext i1 @_ZN3MIRneERKNS_6LValueES2_(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %.critedge unwind label %264

.critedge:                                        ; preds = %243
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #9
  br i1 %245, label %246, label %281

246:                                              ; preds = %.critedge
  %247 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %248 unwind label %268

248:                                              ; preds = %246
  br i1 %247, label %249, label %270

249:                                              ; preds = %248
  %250 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %250, ptr noundef nonnull @__FUNCTION__._ZN10MirBuilder14complete_scopeERNS_8ScopeDefE)
          to label %252 unwind label %268

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

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %253, i64 noundef %.085160)
          to label %256 unwind label %268

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %258 unwind label %268

258:                                              ; preds = %256
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %270 unwind label %268

260:                                              ; preds = %.lr.ph162
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %267

262:                                              ; preds = %241
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %243
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %266

266:                                              ; preds = %262, %264
  %.pn = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  br label %267

267:                                              ; preds = %266, %260
  %.pn.pn = phi { ptr, i32 } [ %.pn, %266 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #9
  br label %285

268:                                              ; preds = %258, %256, %254, %252, %249, %246
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %285

270:                                              ; preds = %258, %248
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #9
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %271 unwind label %276

271:                                              ; preds = %270
  %272 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %.085160) #9
  %273 = getelementptr inbounds i8, ptr %272, i64 8
  %274 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %273, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %275 unwind label %278

275:                                              ; preds = %271
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  br label %281

276:                                              ; preds = %270
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %280

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

280:                                              ; preds = %278, %276
  %.pn117 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  br label %285

281:                                              ; preds = %.critedge.thread, %.critedge, %275
  %282 = add nuw i64 %.085160, 1
  %283 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %152) #9
  %284 = icmp ult i64 %282, %283
  br i1 %284, label %.lr.ph162, label %..loopexit142_crit_edge, !llvm.loop !74

285:                                              ; preds = %267, %268, %280, %235
  %.pn124.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn, %235 ], [ %.pn117, %280 ], [ %269, %268 ], [ %.pn.pn, %267 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  br label %286

286:                                              ; preds = %285, %160
  %.pn124.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn, %285 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #9
  br label %287

287:                                              ; preds = %286, %150, %142
  %.pn124.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn.pn, %286 ], [ %.pn130, %150 ], [ %.pn132.pn.pn.pn.pn, %142 ]
  resume { ptr, i32 } %.pn124.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN10MirBuilder14complete_scopeERNS_8ScopeDefEEN1H15apply_end_stateERK4SpanRS_R8SplitEnd(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i32 noundef) local_unnamed_addr #0 align 2

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

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 8}
!6 = !{!"_ZTSN10MirBuilder8ScopeDefE", !7, i64 0, !10, i64 8, !11, i64 16}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTS9ScopeType", !12, i64 0, !8, i64 8}
!12 = !{!"_ZTSN9ScopeType3TagE", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !8, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTSN9ScopeType11Data_OwningE", !10, i64 0, !17, i64 8}
!17 = !{!"_ZTSSt6vectorIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!7, !7, i64 0}
!24 = !{!25, !10, i64 96}
!25 = !{!"_ZTSN9ScopeType9Data_LoopE", !26, i64 0, !26, i64 48, !10, i64 96, !35, i64 104, !14, i64 200, !17, i64 208}
!26 = !{!"_ZTSSt3mapIj8VarStateSt4lessIjESaISt4pairIKjS0_EEE", !27, i64 0}
!27 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKj8VarStateESt10_Select1stIS3_ESt4lessIjESaIS3_EE", !28, i64 0}
!28 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKj8VarStateESt10_Select1stIS3_ESt4lessIjESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !29, i64 0, !31, i64 8}
!29 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !30, i64 0}
!30 = !{!"_ZTSSt4lessIjE"}
!31 = !{!"_ZTSSt15_Rb_tree_header", !32, i64 0, !34, i64 32}
!32 = !{!"_ZTSSt18_Rb_tree_node_base", !33, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!33 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!34 = !{!"long", !8, i64 0}
!35 = !{!"_ZTS8SplitEnd", !26, i64 0, !26, i64 48}
!36 = !{!6, !7, i64 0}
!37 = !{!38, !7, i64 32}
!38 = !{!"_ZTS10MirBuilder", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !14, i64 48, !10, i64 52, !39, i64 56, !10, i64 168, !41, i64 176, !43, i64 216, !43, i64 240, !34, i64 264, !47, i64 272, !50, i64 320, !17, i64 344, !54, i64 368, !55, i64 384, !59, i64 408}
!39 = !{!"_ZTSN3MIR6RValueE", !40, i64 0, !8, i64 8}
!40 = !{!"_ZTSN3MIR6RValue3TagE", !8, i64 0}
!41 = !{!"_ZTS8VarState", !42, i64 0, !8, i64 8}
!42 = !{!"_ZTSN8VarState3TagE", !8, i64 0}
!43 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!47 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !48, i64 0}
!48 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !49, i64 0}
!49 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !29, i64 0, !31, i64 8}
!50 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!54 = !{!"_ZTS11ScopeHandle", !7, i64 0, !14, i64 8}
!55 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!59 = !{!"_ZTSN3MIR6LValueE", !60, i64 0, !61, i64 8}
!60 = !{!"_ZTSN3MIR6LValue7StorageE", !34, i64 0}
!61 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!65 = !{!25, !14, i64 200}
!66 = !{!67, !10, i64 0}
!67 = !{!"_ZTSN9ScopeType10Data_SplitE", !10, i64 0, !35, i64 8, !35, i64 104, !68, i64 200}
!68 = !{!"_ZTSSt6vectorI8SplitArmSaIS0_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseI8SplitArmSaIS0_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseI8SplitArmSaIS0_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseI8SplitArmSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!72 = !{!73, !14, i64 0}
!73 = !{!"_ZTSSt4pairIKj8VarStateE", !14, i64 0, !41, i64 8}
!74 = distinct !{!74, !75}
!75 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass