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

; 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.Span = type { ptr }
%"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.368 = type { i8 }
%class.anon.370 = type { ptr, ptr }
%class.anon.371 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.372" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"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::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.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" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"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.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 }
%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 }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.10", [8 x i8] }
%"class.std::unique_ptr.10" = type { %"struct.std::__uniq_ptr_data.11" }
%"struct.std::__uniq_ptr_data.11" = type { %"class.std::__uniq_ptr_impl.12" }
%"class.std::__uniq_ptr_impl.12" = type { %"class.std::tuple.13" }
%"class.std::tuple.13" = type { %"struct.std::_Tuple_impl.14" }
%"struct.std::_Tuple_impl.14" = type { %"struct.std::_Head_base.17" }
%"struct.std::_Head_base.17" = type { ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"class.HIR::TypeRef" = type { ptr }
%"struct.MIR::RValue::Data_UniOp" = type <{ %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.18" }
%"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.MIR::RValue::Data_Array" = type { %"class.std::vector.18" }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = 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 }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.18" }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.18" }

@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
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb = external hidden unnamed_addr constant [84 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2, ptr noundef %3, i1 noundef zeroext %4) #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.368, align 1
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %class.anon.370, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %struct.Span, align 8
  %23 = alloca %"class.std::function", align 8
  %24 = alloca %class.anon.371, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %51 = alloca ptr, align 8
  %52 = alloca %"class.MIR::Statement", align 8
  %53 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %54 = zext i1 %4 to i8
  store i8 %54, ptr %10, align 1, !tbaa !9
  %55 = load ptr, ptr %6, align 8
  br label %56

56:                                               ; preds = %5
  %57 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %57, label %58, label %66

58:                                               ; preds = %56
  %59 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %59, ptr noundef @__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb)
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef @.str.14)
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(112) %3)
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef @_ZSt3decRSt8ios_base)
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %66

66:                                               ; preds = %58, %56
  br label %67

67:                                               ; preds = %66
  br label %68

68:                                               ; preds = %67
  %69 = getelementptr inbounds %class.MirBuilder, ptr %55, i32 0, i32 7
  %70 = load i8, ptr %69, align 4, !tbaa !13, !range !51, !noundef !52
  %71 = trunc i8 %70 to i1
  br i1 %71, label %85, label %72

72:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %73)
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %12)
          to label %74 unwind label %77

74:                                               ; preds = %72
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  %75 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef @.str.9)
          to label %76 unwind label %81

76:                                               ; preds = %74
  call void @__cxa_throw(ptr %75, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

77:                                               ; preds = %72
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %14, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %279

81:                                               ; preds = %74
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %14, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %15, align 4
  call void @__cxa_free_exception(ptr %75) #8
  br label %279

85:                                               ; preds = %68
  br label %86

86:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #8
  %87 = getelementptr inbounds %class.anon.370, ptr %16, i32 0, i32 0
  store ptr %55, ptr %87, align 8, !tbaa !53
  %88 = getelementptr inbounds %class.anon.370, ptr %16, i32 0, i32 1
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %89, ptr %88, align 8, !tbaa !5
  %90 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  switch i32 %90, label %258 [
    i32 0, label %91
    i32 1, label %92
    i32 3, label %97
    i32 4, label %100
    i32 2, label %105
    i32 5, label %135
    i32 6, label %141
    i32 7, label %154
    i32 8, label %160
    i32 9, label %163
    i32 10, label %166
    i32 11, label %173
    i32 12, label %193
    i32 13, label %213
    i32 14, label %218
    i32 15, label %238
  ]

91:                                               ; preds = %86
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 348, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb) #10
  unreachable

92:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %93 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %93, ptr %17, align 8, !tbaa !5
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(32) %96)
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %258

97:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %98 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %98, ptr %18, align 8, !tbaa !5
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %258

100:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %101 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %101, ptr %19, align 8, !tbaa !5
  %102 = load ptr, ptr %19, align 8, !tbaa !5
  %103 = load ptr, ptr %19, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %103, i32 0, i32 0
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %104)
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %258

105:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %106 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %106, ptr %20, align 8, !tbaa !5
  %107 = load ptr, ptr %20, align 8, !tbaa !5
  %108 = load ptr, ptr %20, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %108, i32 0, i32 0
  %110 = load i32, ptr %109, align 8, !tbaa !55
  %111 = icmp eq i32 %110, 2
  br i1 %111, label %112, label %133

112:                                              ; preds = %105
  br label %113

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  store ptr @__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %114 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %114)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %115 = getelementptr inbounds %class.anon.371, ptr %24, i32 0, i32 0
  store ptr %21, ptr %115, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %23)
          to label %116 unwind label %119

116:                                              ; preds = %113
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  %117 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef @.str.15)
          to label %118 unwind label %123

118:                                              ; preds = %116
  call void @__cxa_throw(ptr %117, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

119:                                              ; preds = %113
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %14, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %127

123:                                              ; preds = %116
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %14, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %15, align 4
  call void @__cxa_free_exception(ptr %117) #8
  br label %127

127:                                              ; preds = %123, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %278

128:                                              ; No predecessors!
  br label %129

129:                                              ; preds = %128
  %130 = load ptr, ptr %7, align 8, !tbaa !5
  %131 = load ptr, ptr %20, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %131, i32 0, i32 1
  call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(32) %132)
  br label %134

133:                                              ; preds = %105
  br label %134

134:                                              ; preds = %133, %129
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %258

135:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %136 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %136, ptr %25, align 8, !tbaa !5
  %137 = load ptr, ptr %25, align 8, !tbaa !5
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = load ptr, ptr %25, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %139, i32 0, i32 0
  call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(32) %140)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %258

141:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %142 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %142, ptr %26, align 8, !tbaa !5
  %143 = load ptr, ptr %26, align 8, !tbaa !5
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %144, i32 0, i32 1
  %146 = load i32, ptr %145, align 8, !tbaa !58
  switch i32 %146, label %148 [
    i32 14, label %147
    i32 15, label %147
    i32 16, label %147
    i32 17, label %147
    i32 18, label %147
    i32 19, label %147
  ]

147:                                              ; preds = %141, %141, %141, %141, %141, %141
  br label %153

148:                                              ; preds = %141
  %149 = load ptr, ptr %26, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %149, i32 0, i32 0
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %150)
  %151 = load ptr, ptr %26, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %151, i32 0, i32 2
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %152)
  br label %153

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

154:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %155 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %155, ptr %27, align 8, !tbaa !5
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  %157 = load ptr, ptr %7, align 8, !tbaa !5
  %158 = load ptr, ptr %27, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %158, i32 0, i32 0
  call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(32) %159)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %258

160:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %161 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %161, ptr %28, align 8, !tbaa !5
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %258

163:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %164 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %164, ptr %29, align 8, !tbaa !5
  %165 = load ptr, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %258

166:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %167 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %167, ptr %30, align 8, !tbaa !5
  %168 = load ptr, ptr %30, align 8, !tbaa !5
  %169 = load ptr, ptr %30, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %169, i32 0, i32 0
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %170)
  %171 = load ptr, ptr %30, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %171, i32 0, i32 1
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %172)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %258

173:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %174 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %174, ptr %31, align 8, !tbaa !5
  %175 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %176 = load ptr, ptr %31, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %176, i32 0, i32 0
  store ptr %177, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %178 = load ptr, ptr %32, align 8, !tbaa !5
  %179 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %178) #8
  %180 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %33, i32 0, i32 0
  store ptr %179, ptr %180, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %181 = load ptr, ptr %32, align 8, !tbaa !5
  %182 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #8
  %183 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %34, i32 0, i32 0
  store ptr %182, ptr %183, align 8
  br label %184

184:                                              ; preds = %190, %173
  %185 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br i1 %185, label %187, label %186

186:                                              ; preds = %184
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %192

187:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %188 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  store ptr %188, ptr %35, align 8, !tbaa !5
  %189 = load ptr, ptr %35, align 8, !tbaa !5
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %189)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %190

190:                                              ; preds = %187
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %184

192:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %258

193:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %194 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %194, ptr %36, align 8, !tbaa !5
  %195 = load ptr, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %196 = load ptr, ptr %36, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %196, i32 0, i32 0
  store ptr %197, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %198 = load ptr, ptr %37, align 8, !tbaa !5
  %199 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %198) #8
  %200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %38, i32 0, i32 0
  store ptr %199, ptr %200, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %201 = load ptr, ptr %37, align 8, !tbaa !5
  %202 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %201) #8
  %203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %39, i32 0, i32 0
  store ptr %202, ptr %203, align 8
  br label %204

204:                                              ; preds = %210, %193
  %205 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br i1 %205, label %207, label %206

206:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %212

207:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %208 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  store ptr %208, ptr %40, align 8, !tbaa !5
  %209 = load ptr, ptr %40, align 8, !tbaa !5
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %209)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %210

210:                                              ; preds = %207
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %204

212:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %258

213:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %214 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %214, ptr %41, align 8, !tbaa !5
  %215 = load ptr, ptr %41, align 8, !tbaa !5
  %216 = load ptr, ptr %41, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %216, i32 0, i32 2
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %217)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %258

218:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %219 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %219, ptr %42, align 8, !tbaa !5
  %220 = load ptr, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %221 = load ptr, ptr %42, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %221, i32 0, i32 2
  store ptr %222, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %223 = load ptr, ptr %43, align 8, !tbaa !5
  %224 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #8
  %225 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %44, i32 0, i32 0
  store ptr %224, ptr %225, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %226 = load ptr, ptr %43, align 8, !tbaa !5
  %227 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %226) #8
  %228 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %45, i32 0, i32 0
  store ptr %227, ptr %228, align 8
  br label %229

229:                                              ; preds = %235, %218
  %230 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  br i1 %230, label %232, label %231

231:                                              ; preds = %229
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %237

232:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %233 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  store ptr %233, ptr %46, align 8, !tbaa !5
  %234 = load ptr, ptr %46, align 8, !tbaa !5
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %234)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %235

235:                                              ; preds = %232
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br label %229

237:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %258

238:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %239 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  store ptr %239, ptr %47, align 8, !tbaa !5
  %240 = load ptr, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %241 = load ptr, ptr %47, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %241, i32 0, i32 1
  store ptr %242, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %243 = load ptr, ptr %48, align 8, !tbaa !5
  %244 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #8
  %245 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %49, i32 0, i32 0
  store ptr %244, ptr %245, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %246 = load ptr, ptr %48, align 8, !tbaa !5
  %247 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %246) #8
  %248 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.372", ptr %50, i32 0, i32 0
  store ptr %247, ptr %248, align 8
  br label %249

249:                                              ; preds = %255, %238
  %250 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  br i1 %250, label %252, label %251

251:                                              ; preds = %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %257

252:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %253 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  store ptr %253, ptr %51, align 8, !tbaa !5
  %254 = load ptr, ptr %51, align 8, !tbaa !5
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(48) %254)
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %255

255:                                              ; preds = %252
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %249

257:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %258

258:                                              ; preds = %257, %237, %213, %212, %192, %166, %163, %160, %154, %153, %135, %134, %100, %97, %92, %86
  %259 = load i8, ptr %10, align 1, !tbaa !9, !range !51, !noundef !52
  %260 = trunc i8 %259 to i1
  br i1 %260, label %261, label %263

261:                                              ; preds = %258
  %262 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10MirBuilder19mark_value_assignedERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull align 8 dereferenceable(32) %2)
  br label %263

263:                                              ; preds = %261, %258
  %264 = load ptr, ptr %7, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %53, i32 0, i32 0
  call void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %266 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %53, i32 0, i32 1
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %266, ptr noundef nonnull align 8 dereferenceable(112) %3) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %52, ptr noundef %53)
          to label %267 unwind label %269

267:                                              ; preds = %263
  invoke void @_ZN10MirBuilder9push_stmtERK4SpanN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(440) %55, ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef %52)
          to label %268 unwind label %273

268:                                              ; preds = %267
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  ret void

269:                                              ; preds = %263
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %14, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %15, align 4
  br label %277

273:                                              ; preds = %267
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %14, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %15, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %52) #8
  br label %277

277:                                              ; preds = %273, %269
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %53) #8
  br label %278

278:                                              ; preds = %277, %127
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  br label %279

279:                                              ; preds = %278, %81, %77
  %280 = load ptr, ptr %14, align 8
  %281 = load i32, ptr %15, align 4
  %282 = insertvalue { ptr, i32 } poison, ptr %280, 0
  %283 = insertvalue { ptr, i32 } %282, i32 %281, 1
  resume { ptr, i32 } %283
}

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

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

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

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 nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) #6 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(48)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_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 dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112)) #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) #3 align 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144)) 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 #6 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !10, i64 52}
!14 = !{!"_ZTS10MirBuilder", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !12, i64 48, !10, i64 52, !15, i64 56, !10, i64 168, !17, i64 176, !19, i64 216, !19, i64 240, !23, i64 264, !24, i64 272, !32, i64 320, !36, i64 344, !40, i64 368, !41, i64 384, !45, i64 408}
!15 = !{!"_ZTSN3MIR6RValueE", !16, i64 0, !7, i64 8}
!16 = !{!"_ZTSN3MIR6RValue3TagE", !7, i64 0}
!17 = !{!"_ZTS8VarState", !18, i64 0, !7, i64 8}
!18 = !{!"_ZTSN8VarState3TagE", !7, i64 0}
!19 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !27, i64 0, !29, i64 8}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessIjE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !23, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!32 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSSt6vectorIjSaIjEE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTS11ScopeHandle", !6, i64 0, !12, i64 8}
!41 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSN3MIR6LValueE", !46, i64 0, !47, i64 8}
!46 = !{!"_ZTSN3MIR6LValue7StorageE", !23, i64 0}
!47 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = !{!54, !6, i64 0}
!54 = !{!"_ZTSZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbE3$_2", !6, i64 0, !6, i64 8}
!55 = !{!56, !57, i64 0}
!56 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !57, i64 0, !45, i64 8}
!57 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!58 = !{!59, !62, i64 48}
!59 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !60, i64 0, !62, i64 48, !60, i64 56}
!60 = !{!"_ZTSN3MIR5ParamE", !61, i64 0, !7, i64 8}
!61 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!62 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}


; 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.Span = type { ptr }
%"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.368 = type { i8 }
%class.anon.370 = type { ptr, ptr }
%class.anon.371 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.372" = type { ptr }
%"class.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"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::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" }

@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
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb = external hidden unnamed_addr constant [84 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2, ptr noundef %3, i1 noundef zeroext %4) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %struct.Span, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.368, align 1
  %9 = alloca %class.anon.370, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.371, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.372", align 8
  %22 = alloca %"class.MIR::Statement", align 8
  %23 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %24 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %24, label %25, label %33

25:                                               ; preds = %5
  %26 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %27 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %26, ptr noundef nonnull @__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb)
  %28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %29 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull @.str.14)
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(112) %3)
  %31 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %32 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %33

33:                                               ; preds = %25, %5
  %34 = getelementptr inbounds i8, ptr %0, i64 52
  %35 = load i8, ptr %34, align 4, !tbaa !9, !range !49, !noundef !50
  %36 = trunc nuw i8 %35 to i1
  br i1 %36, label %45, label %37

37:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull %7)
          to label %38 unwind label %41

38:                                               ; preds = %37
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %39 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull @.str.9)
          to label %40 unwind label %43

40:                                               ; preds = %38
  call void @__cxa_throw(ptr nonnull %39, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

41:                                               ; preds = %37
  %42 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %134

43:                                               ; preds = %38
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %39) #8
  br label %134

45:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  store ptr %0, ptr %9, align 8, !tbaa !51
  %46 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %1, ptr %46, align 8, !tbaa !53
  %47 = tail call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  switch i32 %47, label %122 [
    i32 0, label %48
    i32 1, label %49
    i32 3, label %51
    i32 4, label %53
    i32 2, label %55
    i32 5, label %68
    i32 6, label %70
    i32 7, label %76
    i32 8, label %78
    i32 9, label %80
    i32 10, label %82
    i32 11, label %85
    i32 12, label %93
    i32 13, label %101
    i32 14, label %104
    i32 15, label %113
  ]

48:                                               ; preds = %45
  tail call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 348, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb) #10
  unreachable

49:                                               ; preds = %45
  %50 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  tail call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %50)
  br label %122

51:                                               ; preds = %45
  %52 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  br label %122

53:                                               ; preds = %45
  %54 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %54)
  br label %122

55:                                               ; preds = %45
  %56 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  %57 = load i32, ptr %56, align 8, !tbaa !54
  %58 = icmp eq i32 %57, 2
  br i1 %58, label %59, label %122

59:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr @__FUNCTION__._ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb, ptr %10, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store ptr %10, ptr %13, align 8, !tbaa !53
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %60 unwind label %63

60:                                               ; preds = %59
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %61 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull @.str.15)
          to label %62 unwind label %65

62:                                               ; preds = %60
  call void @__cxa_throw(ptr nonnull %61, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

63:                                               ; preds = %59
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %67

65:                                               ; preds = %60
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %61) #8
  br label %67

67:                                               ; preds = %65, %63
  %.pn = phi { ptr, i32 } [ %66, %65 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %133

68:                                               ; preds = %45
  %69 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  tail call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %69)
  br label %122

70:                                               ; preds = %45
  %71 = tail call noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  %72 = getelementptr inbounds i8, ptr %71, i64 48
  %73 = load i32, ptr %72, align 8, !tbaa !57
  %.off = add i32 %73, -14
  %switch = icmp ult i32 %.off, 6
  br i1 %switch, label %122, label %74

74:                                               ; preds = %70
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %71)
  %75 = getelementptr inbounds i8, ptr %71, i64 56
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %75)
  br label %122

76:                                               ; preds = %45
  %77 = tail call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  tail call void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %77)
  br label %122

78:                                               ; preds = %45
  %79 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  br label %122

80:                                               ; preds = %45
  %81 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  br label %122

82:                                               ; preds = %45
  %83 = tail call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %83)
  %84 = getelementptr inbounds i8, ptr %83, i64 48
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %84)
  br label %122

85:                                               ; preds = %45
  %86 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %87 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %86) #8
  store ptr %87, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %88 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %86) #8
  store ptr %88, ptr %15, align 8
  %89 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %89, label %.lr.ph69, label %._crit_edge70

._crit_edge70:                                    ; preds = %.lr.ph69, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %122

.lr.ph69:                                         ; preds = %85, %.lr.ph69
  %90 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %90)
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %92 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %92, label %.lr.ph69, label %._crit_edge70

93:                                               ; preds = %45
  %94 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %95 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #8
  store ptr %95, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %96 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #8
  store ptr %96, ptr %17, align 8
  %97 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %97, label %.lr.ph66, label %._crit_edge67

._crit_edge67:                                    ; preds = %.lr.ph66, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %122

.lr.ph66:                                         ; preds = %93, %.lr.ph66
  %98 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %98)
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %100 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %100, label %.lr.ph66, label %._crit_edge67

101:                                              ; preds = %45
  %102 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  %103 = getelementptr inbounds i8, ptr %102, i64 40
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %103)
  br label %122

104:                                              ; preds = %45
  %105 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  %106 = getelementptr inbounds i8, ptr %105, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %107 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  store ptr %107, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %108 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  store ptr %108, ptr %19, align 8
  %109 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %109, label %.lr.ph63, label %._crit_edge64

._crit_edge64:                                    ; preds = %.lr.ph63, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %122

.lr.ph63:                                         ; preds = %104, %.lr.ph63
  %110 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %110)
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %112 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %112, label %.lr.ph63, label %._crit_edge64

113:                                              ; preds = %45
  %114 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %3)
  %115 = getelementptr inbounds i8, ptr %114, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %116 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  store ptr %116, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %117 = tail call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  store ptr %117, ptr %21, align 8
  %118 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %118, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %122

.lr.ph:                                           ; preds = %113, %.lr.ph
  %119 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %119)
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %121 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %121, label %.lr.ph, label %._crit_edge

122:                                              ; preds = %74, %70, %55, %._crit_edge, %._crit_edge64, %101, %._crit_edge67, %._crit_edge70, %82, %80, %78, %76, %68, %53, %51, %49, %45
  br i1 %4, label %123, label %124

123:                                              ; preds = %122
  call void @_ZN10MirBuilder19mark_value_assignedERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2)
  br label %124

124:                                              ; preds = %123, %122
  call void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %125 = getelementptr inbounds i8, ptr %23, i64 32
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %125, ptr noundef nonnull align 8 dereferenceable(112) %3) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %22, ptr noundef nonnull %23)
          to label %126 unwind label %128

126:                                              ; preds = %124
  invoke void @_ZN10MirBuilder9push_stmtERK4SpanN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %22)
          to label %127 unwind label %130

127:                                              ; preds = %126
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %22) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  ret void

128:                                              ; preds = %124
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %126
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %22) #8
  br label %132

132:                                              ; preds = %130, %128
  %.pn58 = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %23) #8
  br label %133

133:                                              ; preds = %132, %67
  %.pn58.pn = phi { ptr, i32 } [ %.pn58, %132 ], [ %.pn, %67 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br label %134

134:                                              ; preds = %133, %43, %41
  %.pn58.pn.pn = phi { ptr, i32 } [ %.pn58.pn, %133 ], [ %44, %43 ], [ %42, %41 ]
  resume { ptr, i32 } %.pn58.pn.pn
}

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

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

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

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 nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_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 dso_local void @_ZN10MirBuilder12moved_lvalueERK4SpanRKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbENK3$_2clERKNS3_5ParamE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS8_6RValueEbE3$_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 dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(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_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(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(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 52}
!10 = !{!"_ZTS10MirBuilder", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !6, i64 48, !12, i64 52, !13, i64 56, !12, i64 168, !15, i64 176, !17, i64 216, !17, i64 240, !21, i64 264, !22, i64 272, !30, i64 320, !34, i64 344, !38, i64 368, !39, i64 384, !43, i64 408}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTSN3MIR6RValueE", !14, i64 0, !7, i64 8}
!14 = !{!"_ZTSN3MIR6RValue3TagE", !7, i64 0}
!15 = !{!"_ZTS8VarState", !16, i64 0, !7, i64 8}
!16 = !{!"_ZTSN8VarState3TagE", !7, i64 0}
!17 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessIjE"}
!27 = !{!"_ZTSSt15_Rb_tree_header", !28, i64 0, !21, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!30 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!34 = !{!"_ZTSSt6vectorIjSaIjEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!38 = !{!"_ZTS11ScopeHandle", !11, i64 0, !6, i64 8}
!39 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!43 = !{!"_ZTSN3MIR6LValueE", !44, i64 0, !45, i64 8}
!44 = !{!"_ZTSN3MIR6LValue7StorageE", !21, i64 0}
!45 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!49 = !{i8 0, i8 2}
!50 = !{}
!51 = !{!52, !11, i64 0}
!52 = !{!"_ZTSZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEbE3$_2", !11, i64 0, !11, i64 8}
!53 = !{!11, !11, i64 0}
!54 = !{!55, !56, i64 0}
!55 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !56, i64 0, !43, i64 8}
!56 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!57 = !{!58, !61, i64 48}
!58 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !59, i64 0, !61, i64 48, !59, i64 56}
!59 = !{!"_ZTSN3MIR5ParamE", !60, i64 0, !7, i64 8}
!60 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!61 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}


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