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

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

%class.VarState = type { i32, [4 x i8], %"union.VarState::DataUnion" }
%"union.VarState::DataUnion" = type { i32, [28 x i8] }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.567 = type { ptr }
%struct.Span = type { ptr }
%class.anon.568 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.408" = type { ptr }
%"struct.VarState::Data_Valid" = type { i8 }
%class.anon.570 = type { ptr }
%"class.std::function.490" = type { %"class.std::_Function_base", ptr }
%class.anon.571 = type { ptr, ptr }
%"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 }
%"struct.VarState::Data_Partial" = type <{ %"class.std::vector.26", i32, [4 x i8] }>
%class.anon.572 = type { ptr, ptr }
%"struct.VarState::Data_MovedOut" = type <{ %"class.std::unique_ptr.31", i32, [4 x i8] }>
%"class.std::unique_ptr.31" = type { %"struct.std::__uniq_ptr_data.32" }
%"struct.std::__uniq_ptr_data.32" = type { %"class.std::__uniq_ptr_impl.33" }
%"class.std::__uniq_ptr_impl.33" = type { %"class.std::tuple.34" }
%"class.std::tuple.34" = type { %"struct.std::_Tuple_impl.35" }
%"struct.std::_Tuple_impl.35" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }
%class.anon.573 = type { i8 }
%class.anon.575 = type { ptr, ptr }
%"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.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.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.std::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 }

@.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
@__func__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb = external hidden unnamed_addr constant [85 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8) #0 align 2

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

declare noundef zeroext i1 @_Z13debug_enabledv() #3

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState12make_InvalidE11InvalidType(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, i32 noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, i1 noundef zeroext %3) #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.567, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.568, align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i8, align 1
  %30 = alloca ptr, align 8
  %31 = alloca i8, align 1
  %32 = alloca i32, align 4
  %33 = alloca %class.VarState, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %class.VarState, align 8
  %36 = alloca %"struct.VarState::Data_Valid", align 1
  %37 = alloca ptr, align 8
  %38 = alloca %struct.Span, align 8
  %39 = alloca %"class.std::function", align 8
  %40 = alloca %class.anon.570, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %class.VarState, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %class.VarState, align 8
  %46 = alloca %"struct.VarState::Data_Valid", align 1
  %47 = alloca i64, align 8
  %48 = alloca %"class.std::function.490", align 8
  %49 = alloca %class.anon.571, align 8
  %50 = alloca %"class.std::vector.26", align 8
  %51 = alloca i64, align 8
  %52 = alloca %class.VarState, align 8
  %53 = alloca %class.VarState, align 8
  %54 = alloca %"struct.VarState::Data_Partial", align 8
  %55 = alloca i8, align 1
  %56 = alloca i8, align 1
  %57 = alloca i8, align 1
  %58 = alloca %"class.std::function.490", align 8
  %59 = alloca %class.anon.572, align 8
  %60 = alloca %"class.std::vector.26", align 8
  %61 = alloca %class.VarState, align 8
  %62 = alloca %"struct.VarState::Data_Valid", align 1
  %63 = alloca i32, align 4
  %64 = alloca %class.VarState, align 8
  %65 = alloca %"struct.VarState::Data_MovedOut", align 8
  %66 = alloca %class.VarState, align 8
  %67 = alloca %"struct.VarState::Data_Valid", align 1
  %68 = alloca i8, align 1
  %69 = alloca i32, align 4
  %70 = alloca i8, align 1
  %71 = alloca i32, align 4
  %72 = alloca %struct.Span, align 8
  %73 = alloca %"class.std::function", align 8
  %74 = alloca %class.anon.573, align 1
  %75 = alloca i64, align 8
  %76 = alloca %"class.std::function.490", align 8
  %77 = alloca %class.anon.575, align 8
  %78 = alloca %"class.std::vector.26", align 8
  %79 = alloca i64, align 8
  %80 = alloca %class.VarState, align 8
  %81 = alloca %class.VarState, align 8
  %82 = alloca %"struct.VarState::Data_Partial", 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
  %83 = zext i1 %3 to i8
  store i8 %83, ptr %9, align 1, !tbaa !9
  %84 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %10) #7
  %85 = call noundef zeroext i1 @_Z13debug_enabledv()
  %86 = zext i1 %85 to i64
  %87 = select i1 %85, ptr @__func__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %88 = getelementptr inbounds %class.anon.567, ptr %12, i32 0, i32 0
  %89 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %89, ptr %88, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %87, ptr noundef %11)
          to label %90 unwind label %95

90:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store ptr null, ptr %15, align 8, !tbaa !5
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.MIR::LValue", ptr %91, i32 0, i32 0
  %93 = invoke noundef i32 @_ZNK3MIR6LValue7Storage3tagEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %94 unwind label %99

94:                                               ; preds = %90
  switch i32 %93, label %174 [
    i32 4, label %103
    i32 3, label %104
    i32 0, label %138
    i32 1, label %151
    i32 2, label %164
  ]

95:                                               ; preds = %4
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %13, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %737

99:                                               ; preds = %183, %90
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %13, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %14, align 4
  br label %736

103:                                              ; preds = %94
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 2045, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

104:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  %105 = load ptr, ptr %8, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.MIR::LValue", ptr %105, i32 0, i32 0
  %107 = invoke noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %108 unwind label %115

108:                                              ; preds = %104
  store i8 %107, ptr %16, align 1, !tbaa !11
  br label %109

109:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %111 unwind label %119

111:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %18)
          to label %112 unwind label %123

112:                                              ; preds = %111
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  %113 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef @.str.9)
          to label %114 unwind label %128

114:                                              ; preds = %112
  invoke void @__cxa_throw(ptr %113, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %743 unwind label %115

115:                                              ; preds = %133, %114, %104
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %13, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %14, align 4
  br label %137

119:                                              ; preds = %109
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  br label %127

123:                                              ; preds = %111
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %13, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %127

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

128:                                              ; preds = %112
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %13, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %14, align 4
  call void @__cxa_free_exception(ptr %113) #7
  br label %137

132:                                              ; No predecessors!
  br label %133

133:                                              ; preds = %132
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %134, i32 noundef -1, i32 noundef 0)
          to label %136 unwind label %115

136:                                              ; preds = %133
  store ptr %135, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %174

137:                                              ; preds = %128, %127, %115
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %736

138:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.MIR::LValue", ptr %139, i32 0, i32 0
  %141 = invoke noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %142 unwind label %147

142:                                              ; preds = %138
  store i32 %141, ptr %20, align 4, !tbaa !12
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load i32, ptr %20, align 4, !tbaa !12
  %145 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %143, i32 noundef %144, i32 noundef 1)
          to label %146 unwind label %147

146:                                              ; preds = %142
  store ptr %145, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %174

147:                                              ; preds = %142, %138
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %13, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %736

151:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %152 = load ptr, ptr %8, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.MIR::LValue", ptr %152, i32 0, i32 0
  %154 = invoke noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %155 unwind label %160

155:                                              ; preds = %151
  store i32 %154, ptr %21, align 4, !tbaa !12
  %156 = load ptr, ptr %7, align 8, !tbaa !5
  %157 = load i32, ptr %21, align 4, !tbaa !12
  %158 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef %157, i32 noundef 0)
          to label %159 unwind label %160

159:                                              ; preds = %155
  store ptr %158, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %174

160:                                              ; preds = %155, %151
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %13, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %736

164:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.MIR::LValue", ptr %165, i32 0, i32 0
  %167 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6LValue7Storage9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %168 unwind label %170

168:                                              ; preds = %164
  store ptr %167, ptr %22, align 8, !tbaa !5
  %169 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr null, ptr %5, align 8
  store i32 1, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %734

170:                                              ; preds = %164
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %13, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %736

174:                                              ; preds = %159, %146, %136, %94
  %175 = load ptr, ptr %15, align 8, !tbaa !5
  %176 = icmp ne ptr %175, null
  br i1 %176, label %177, label %178

177:                                              ; preds = %174
  br label %180

178:                                              ; preds = %174
  call void @__assert_fail(ptr noundef @.str.79, ptr noundef @.str.7, i32 noundef 2046, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

179:                                              ; No predecessors!
  br label %180

180:                                              ; preds = %179, %177
  %181 = load i8, ptr %9, align 1, !tbaa !9, !range !14, !noundef !15
  %182 = trunc i8 %181 to i1
  br i1 %182, label %183, label %188

183:                                              ; preds = %180
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = invoke noundef zeroext i1 @_ZNK8VarState8is_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %184)
          to label %186 unwind label %99

186:                                              ; preds = %183
  br i1 %185, label %187, label %188

187:                                              ; preds = %186
  store ptr null, ptr %5, align 8
  store i32 1, ptr %23, align 4
  br label %734

188:                                              ; preds = %186, %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %189 = load ptr, ptr %8, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.MIR::LValue", ptr %189, i32 0, i32 1
  store ptr %190, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %191 = load ptr, ptr %24, align 8, !tbaa !5
  %192 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #7
  %193 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.408", ptr %25, i32 0, i32 0
  store ptr %192, ptr %193, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %194 = load ptr, ptr %24, align 8, !tbaa !5
  %195 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %194) #7
  %196 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.408", ptr %26, i32 0, i32 0
  store ptr %195, ptr %196, align 8
  br label %197

197:                                              ; preds = %728, %188
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br i1 %198, label %200, label %199

199:                                              ; preds = %197
  store i32 5, ptr %23, align 4
  br label %730

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  store ptr %201, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %202, ptr %28, align 8, !tbaa !5
  store ptr null, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  store i8 1, ptr %29, align 1, !tbaa !9
  br label %203

203:                                              ; preds = %712, %200
  %204 = load i8, ptr %29, align 1, !tbaa !9, !range !14, !noundef !15
  %205 = trunc i8 %204 to i1
  br i1 %205, label %207, label %206

206:                                              ; preds = %203
  store i32 7, ptr %23, align 4
  br label %713

207:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %208 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %208, ptr %30, align 8, !tbaa !5
  br label %209

209:                                              ; preds = %707, %207
  %210 = load i8, ptr %29, align 1, !tbaa !9, !range !14, !noundef !15
  %211 = trunc i8 %210 to i1
  br i1 %211, label %213, label %212

212:                                              ; preds = %209
  store i32 10, ptr %23, align 4
  br label %708

213:                                              ; preds = %209
  %214 = load ptr, ptr %30, align 8, !tbaa !5
  %215 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4) %214)
          to label %216 unwind label %217

216:                                              ; preds = %213
  switch i32 %215, label %706 [
    i32 4, label %221
    i32 1, label %222
    i32 0, label %438
    i32 3, label %559
    i32 2, label %585
  ]

217:                                              ; preds = %213
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %13, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %14, align 4
  br label %710

221:                                              ; preds = %216
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 2057, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

222:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  store i8 1, ptr %31, align 1, !tbaa !9
  br label %223

223:                                              ; preds = %436, %222
  %224 = load i8, ptr %31, align 1, !tbaa !9, !range !14, !noundef !15
  %225 = trunc i8 %224 to i1
  br i1 %225, label %227, label %226

226:                                              ; preds = %223
  store i32 14, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %437

227:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4) %228)
          to label %230 unwind label %235

230:                                              ; preds = %227
  store i32 %229, ptr %32, align 4, !tbaa !12
  br label %231

231:                                              ; preds = %431, %230
  %232 = load i8, ptr %31, align 1, !tbaa !9, !range !14, !noundef !15
  %233 = trunc i8 %232 to i1
  br i1 %233, label %239, label %234

234:                                              ; preds = %231
  store i32 17, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %435

235:                                              ; preds = %227
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %13, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %14, align 4
  br label %434

239:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 40, ptr %33) #7
  invoke void @_ZN8VarStateC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %240 unwind label %244

240:                                              ; preds = %239
  %241 = load ptr, ptr %28, align 8, !tbaa !5
  %242 = invoke noundef i32 @_ZNK8VarState3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %241)
          to label %243 unwind label %248

243:                                              ; preds = %240
  switch i32 %242, label %362 [
    i32 0, label %252
    i32 1, label %253
    i32 3, label %275
    i32 2, label %308
    i32 4, label %317
    i32 5, label %340
  ]

244:                                              ; preds = %239
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %13, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %14, align 4
  br label %433

248:                                              ; preds = %425, %422, %362, %240
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %13, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %14, align 4
  br label %432

252:                                              ; preds = %243
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 2076, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

253:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %254 = load ptr, ptr %28, align 8, !tbaa !5
  %255 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState10as_InvalidEv(ptr noundef nonnull align 8 dereferenceable(40) %254)
          to label %256 unwind label %261

256:                                              ; preds = %253
  store ptr %255, ptr %34, align 8, !tbaa !5
  %257 = load ptr, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %35) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %35)
          to label %258 unwind label %265

258:                                              ; preds = %256
  %259 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %35)
          to label %260 unwind label %269

260:                                              ; preds = %258
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %362

261:                                              ; preds = %253
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %13, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %14, align 4
  br label %274

265:                                              ; preds = %256
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %13, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %14, align 4
  br label %273

269:                                              ; preds = %258
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %13, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #7
  br label %273

273:                                              ; preds = %269, %265
  call void @llvm.lifetime.end.p0(i64 40, ptr %35) #7
  br label %274

274:                                              ; preds = %273, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %432

275:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %276 = load ptr, ptr %28, align 8, !tbaa !5
  %277 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %276)
          to label %278 unwind label %288

278:                                              ; preds = %275
  store ptr %277, ptr %37, align 8, !tbaa !5
  %279 = load ptr, ptr %37, align 8, !tbaa !5
  br label %280

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %282 unwind label %292

282:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %283 = getelementptr inbounds %class.anon.570, ptr %40, i32 0, i32 0
  %284 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %284, ptr %283, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %39)
          to label %285 unwind label %296

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

287:                                              ; preds = %285
  invoke void @__cxa_throw(ptr %286, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %743 unwind label %288

288:                                              ; preds = %287, %275
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %13, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %14, align 4
  br label %307

292:                                              ; preds = %280
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %13, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %14, align 4
  br label %300

296:                                              ; preds = %282
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %13, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  br label %300

300:                                              ; preds = %296, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %307

301:                                              ; preds = %285
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %13, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %14, align 4
  call void @__cxa_free_exception(ptr %286) #7
  br label %307

305:                                              ; No predecessors!
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %362

307:                                              ; preds = %301, %300, %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %432

308:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %309 = load ptr, ptr %28, align 8, !tbaa !5
  %310 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %309)
          to label %311 unwind label %313

311:                                              ; preds = %308
  store ptr %310, ptr %41, align 8, !tbaa !5
  %312 = load ptr, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %362

313:                                              ; preds = %308
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %13, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %432

317:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %318 = load ptr, ptr %28, align 8, !tbaa !5
  %319 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState11as_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %318)
          to label %320 unwind label %326

320:                                              ; preds = %317
  store ptr %319, ptr %42, align 8, !tbaa !5
  %321 = load ptr, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %43) #7
  %322 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNK8VarState5cloneEv(ptr dead_on_unwind writable sret(%class.VarState) align 8 %43, ptr noundef nonnull align 8 dereferenceable(40) %322)
          to label %323 unwind label %330

323:                                              ; preds = %320
  %324 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %43)
          to label %325 unwind label %334

325:                                              ; preds = %323
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %362

326:                                              ; preds = %317
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %13, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %14, align 4
  br label %339

330:                                              ; preds = %320
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %13, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %14, align 4
  br label %338

334:                                              ; preds = %323
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %13, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #7
  br label %338

338:                                              ; preds = %334, %330
  call void @llvm.lifetime.end.p0(i64 40, ptr %43) #7
  br label %339

339:                                              ; preds = %338, %326
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %432

340:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %341 = load ptr, ptr %28, align 8, !tbaa !5
  %342 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8VarState8as_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %341)
          to label %343 unwind label %348

343:                                              ; preds = %340
  store ptr %342, ptr %44, align 8, !tbaa !5
  %344 = load ptr, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %45) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %45)
          to label %345 unwind label %352

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull align 8 dereferenceable(40) %45)
          to label %347 unwind label %356

347:                                              ; preds = %345
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %362

348:                                              ; preds = %340
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %13, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %14, align 4
  br label %361

352:                                              ; preds = %343
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %13, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %14, align 4
  br label %360

356:                                              ; preds = %345
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %13, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %45) #7
  br label %360

360:                                              ; preds = %356, %352
  call void @llvm.lifetime.end.p0(i64 40, ptr %45) #7
  br label %361

361:                                              ; preds = %360, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %432

362:                                              ; preds = %347, %325, %311, %306, %260, %243
  %363 = load ptr, ptr %28, align 8, !tbaa !5
  %364 = invoke noundef zeroext i1 @_ZNK8VarState10is_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %363)
          to label %365 unwind label %248

365:                                              ; preds = %362
  br i1 %364, label %422, label %366

366:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store i64 0, ptr %47, align 8, !tbaa !16
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #7
  %369 = getelementptr inbounds %class.anon.571, ptr %49, i32 0, i32 0
  %370 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %370, ptr %369, align 8, !tbaa !5
  %371 = getelementptr inbounds %class.anon.571, ptr %49, i32 0, i32 1
  store ptr %47, ptr %371, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  %372 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %367, ptr noundef nonnull align 8 dereferenceable(32) %368, ptr noundef %48, ptr noundef %372)
          to label %373 unwind label %381

373:                                              ; preds = %366
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  %374 = load i64, ptr %47, align 8, !tbaa !16
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %374)
          to label %375 unwind label %385

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  store i64 0, ptr %51, align 8, !tbaa !16
  br label %376

376:                                              ; preds = %392, %375
  %377 = load i64, ptr %51, align 8, !tbaa !16
  %378 = load i64, ptr %47, align 8, !tbaa !16
  %379 = icmp ult i64 %377, %378
  br i1 %379, label %389, label %380

380:                                              ; preds = %376
  store i32 23, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %404

381:                                              ; preds = %366
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %13, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  br label %421

385:                                              ; preds = %373
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %13, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %14, align 4
  br label %420

389:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 40, ptr %52) #7
  invoke void @_ZNK8VarState5cloneEv(ptr dead_on_unwind writable sret(%class.VarState) align 8 %52, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %390 unwind label %395

390:                                              ; preds = %389
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(40) %52)
          to label %391 unwind label %399

391:                                              ; preds = %390
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %52) #7
  br label %392

392:                                              ; preds = %391
  %393 = load i64, ptr %51, align 8, !tbaa !16
  %394 = add i64 %393, 1
  store i64 %394, ptr %51, align 8, !tbaa !16
  br label %376, !llvm.loop !18

395:                                              ; preds = %389
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %13, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %14, align 4
  br label %403

399:                                              ; preds = %390
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %13, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #7
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 40, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %420

404:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 40, ptr %53) #7
  %405 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %54, i32 0, i32 0
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %405, ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  %406 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %54, i32 0, i32 1
  store i32 0, ptr %406, align 8, !tbaa !20
  invoke void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %53, ptr noundef %54)
          to label %407 unwind label %411

407:                                              ; preds = %404
  %408 = load ptr, ptr %28, align 8, !tbaa !5
  %409 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %408, ptr noundef nonnull align 8 dereferenceable(40) %53)
          to label %410 unwind label %415

410:                                              ; preds = %407
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #7
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %54) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %422

411:                                              ; preds = %404
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %13, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %14, align 4
  br label %419

415:                                              ; preds = %407
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %13, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #7
  br label %419

419:                                              ; preds = %415, %411
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %54) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #7
  br label %420

420:                                              ; preds = %419, %403, %385
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #7
  br label %421

421:                                              ; preds = %420, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %432

422:                                              ; preds = %410, %365
  %423 = load ptr, ptr %28, align 8, !tbaa !5
  %424 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %423)
          to label %425 unwind label %248

425:                                              ; preds = %422
  %426 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %424, i32 0, i32 0
  %427 = load i32, ptr %32, align 4, !tbaa !12
  %428 = zext i32 %427 to i64
  %429 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef %428)
          to label %430 unwind label %248

430:                                              ; preds = %425
  store ptr %429, ptr %15, align 8, !tbaa !5
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #7
  br label %431

431:                                              ; preds = %430
  store i8 0, ptr %31, align 1, !tbaa !9
  br label %231, !llvm.loop !26

432:                                              ; preds = %421, %361, %339, %313, %307, %274, %248
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #7
  br label %433

433:                                              ; preds = %432, %244
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #7
  br label %434

434:                                              ; preds = %433, %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %710

435:                                              ; preds = %234
  br label %436

436:                                              ; preds = %435
  store i8 0, ptr %31, align 1, !tbaa !9
  br label %223, !llvm.loop !27

437:                                              ; preds = %226
  br label %706

438:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  store i8 1, ptr %55, align 1, !tbaa !9
  br label %439

439:                                              ; preds = %555, %438
  %440 = load i8, ptr %55, align 1, !tbaa !9, !range !14, !noundef !15
  %441 = trunc i8 %440 to i1
  br i1 %441, label %443, label %442

442:                                              ; preds = %439
  store i32 26, ptr %23, align 4
  br label %556

443:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  %444 = load ptr, ptr %30, align 8, !tbaa !5
  %445 = invoke noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %444)
          to label %446 unwind label %451

446:                                              ; preds = %443
  store i8 %445, ptr %56, align 1, !tbaa !11
  br label %447

447:                                              ; preds = %549, %446
  %448 = load i8, ptr %55, align 1, !tbaa !9, !range !14, !noundef !15
  %449 = trunc i8 %448 to i1
  br i1 %449, label %455, label %450

450:                                              ; preds = %447
  store i32 29, ptr %23, align 4
  br label %551

451:                                              ; preds = %443
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %13, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %14, align 4
  br label %553

455:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  store i8 0, ptr %57, align 1, !tbaa !9
  %456 = getelementptr inbounds %class.MirBuilder, ptr %84, i32 0, i32 5
  %457 = load ptr, ptr %456, align 8, !tbaa !28
  %458 = icmp ne ptr %457, null
  br i1 %458, label %459, label %470

459:                                              ; preds = %455
  %460 = load ptr, ptr %7, align 8, !tbaa !5
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #7
  %462 = getelementptr inbounds %class.anon.572, ptr %59, i32 0, i32 0
  store ptr %84, ptr %462, align 8, !tbaa !61
  %463 = getelementptr inbounds %class.anon.572, ptr %59, i32 0, i32 1
  store ptr %57, ptr %463, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %460, ptr noundef nonnull align 8 dereferenceable(32) %461, ptr noundef %58, ptr noundef %464)
          to label %465 unwind label %466

465:                                              ; preds = %459
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #7
  br label %470

466:                                              ; preds = %459
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %13, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #7
  br label %550

470:                                              ; preds = %465, %455
  %471 = load i8, ptr %57, align 1, !tbaa !9, !range !14, !noundef !15
  %472 = trunc i8 %471 to i1
  br i1 %472, label %473, label %544

473:                                              ; preds = %470
  %474 = load ptr, ptr %28, align 8, !tbaa !5
  %475 = invoke noundef zeroext i1 @_ZNK8VarState11is_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %474)
          to label %476 unwind label %500

476:                                              ; preds = %473
  br i1 %475, label %538, label %477

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %61) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %61)
          to label %478 unwind label %504

478:                                              ; preds = %477
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 8 dereferenceable(40) %61)
          to label %479 unwind label %508

479:                                              ; preds = %478
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %61) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  %480 = load ptr, ptr %28, align 8, !tbaa !5
  %481 = invoke noundef zeroext i1 @_ZNK8VarState11is_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %480)
          to label %482 unwind label %513

482:                                              ; preds = %479
  br i1 %481, label %483, label %488

483:                                              ; preds = %482
  %484 = load ptr, ptr %28, align 8, !tbaa !5
  %485 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState11as_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %484)
          to label %486 unwind label %513

486:                                              ; preds = %483
  %487 = load i32, ptr %485, align 4, !tbaa !12
  br label %489

488:                                              ; preds = %482
  br label %489

489:                                              ; preds = %488, %486
  %490 = phi i32 [ %487, %486 ], [ -1, %488 ]
  store i32 %490, ptr %63, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 40, ptr %64) #7
  %491 = getelementptr inbounds %"struct.VarState::Data_MovedOut", ptr %65, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 40, ptr %66) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %66)
          to label %492 unwind label %517

492:                                              ; preds = %489
  invoke void @_Z15make_unique_ptrI8VarStateESt10unique_ptrIT_St14default_deleteIS2_EEOS2_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.31") align 8 %491, ptr noundef nonnull align 8 dereferenceable(40) %66)
          to label %493 unwind label %521

493:                                              ; preds = %492
  %494 = getelementptr inbounds %"struct.VarState::Data_MovedOut", ptr %65, i32 0, i32 1
  %495 = load i32, ptr %63, align 4, !tbaa !12
  store i32 %495, ptr %494, align 8, !tbaa !63
  invoke void @_ZN8VarState13make_MovedOutENS_13Data_MovedOutE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %64, ptr noundef %65)
          to label %496 unwind label %525

496:                                              ; preds = %493
  %497 = load ptr, ptr %28, align 8, !tbaa !5
  %498 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %497, ptr noundef nonnull align 8 dereferenceable(40) %64)
          to label %499 unwind label %529

499:                                              ; preds = %496
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #7
  call void @_ZN8VarState13Data_MovedOutD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %65) #7
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %66) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #7
  br label %538

500:                                              ; preds = %538, %473
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %13, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %14, align 4
  br label %550

504:                                              ; preds = %477
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %13, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %14, align 4
  br label %512

508:                                              ; preds = %478
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %13, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %61) #7
  br label %512

512:                                              ; preds = %508, %504
  call void @llvm.lifetime.end.p0(i64 40, ptr %61) #7
  br label %537

513:                                              ; preds = %483, %479
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %13, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %14, align 4
  br label %536

517:                                              ; preds = %489
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %13, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %14, align 4
  br label %535

521:                                              ; preds = %492
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %13, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %14, align 4
  br label %534

525:                                              ; preds = %493
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %13, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %14, align 4
  br label %533

529:                                              ; preds = %496
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %13, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #7
  br label %533

533:                                              ; preds = %529, %525
  call void @_ZN8VarState13Data_MovedOutD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %65) #7
  br label %534

534:                                              ; preds = %533, %521
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %66) #7
  br label %535

535:                                              ; preds = %534, %517
  call void @llvm.lifetime.end.p0(i64 40, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #7
  br label %536

536:                                              ; preds = %535, %513
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br label %537

537:                                              ; preds = %536, %512
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #7
  br label %550

538:                                              ; preds = %499, %476
  %539 = load ptr, ptr %28, align 8, !tbaa !5
  %540 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %539)
          to label %541 unwind label %500

541:                                              ; preds = %538
  %542 = getelementptr inbounds %"struct.VarState::Data_MovedOut", ptr %540, i32 0, i32 0
  %543 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt10unique_ptrI8VarStateSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %542) #7
  store ptr %543, ptr %15, align 8, !tbaa !5
  br label %545

544:                                              ; preds = %470
  store ptr null, ptr %5, align 8
  store i32 1, ptr %23, align 4
  br label %546

545:                                              ; preds = %541
  store i32 0, ptr %23, align 4
  br label %546

546:                                              ; preds = %545, %544
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  %547 = load i32, ptr %23, align 4
  switch i32 %547, label %551 [
    i32 0, label %548
  ]

548:                                              ; preds = %546
  br label %549

549:                                              ; preds = %548
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %447, !llvm.loop !71

550:                                              ; preds = %537, %500, %466
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  br label %553

551:                                              ; preds = %546, %450
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  %552 = load i32, ptr %23, align 4
  switch i32 %552, label %556 [
    i32 29, label %554
  ]

553:                                              ; preds = %550, %451
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %710

554:                                              ; preds = %551
  br label %555

555:                                              ; preds = %554
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %439, !llvm.loop !72

556:                                              ; preds = %551, %442
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  %557 = load i32, ptr %23, align 4
  switch i32 %557, label %708 [
    i32 26, label %558
  ]

558:                                              ; preds = %556
  br label %706

559:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #7
  store i8 1, ptr %68, align 1, !tbaa !9
  br label %560

560:                                              ; preds = %581, %559
  %561 = load i8, ptr %68, align 1, !tbaa !9, !range !14, !noundef !15
  %562 = trunc i8 %561 to i1
  br i1 %562, label %564, label %563

563:                                              ; preds = %560
  store i32 32, ptr %23, align 4
  br label %582

564:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  %565 = load ptr, ptr %30, align 8, !tbaa !5
  %566 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %565)
          to label %567 unwind label %572

567:                                              ; preds = %564
  store i32 %566, ptr %69, align 4, !tbaa !12
  br label %568

568:                                              ; preds = %577, %567
  %569 = load i8, ptr %68, align 1, !tbaa !9, !range !14, !noundef !15
  %570 = trunc i8 %569 to i1
  br i1 %570, label %576, label %571

571:                                              ; preds = %568
  store i32 35, ptr %23, align 4
  br label %578

572:                                              ; preds = %564
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %13, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #7
  br label %710

576:                                              ; preds = %568
  store ptr null, ptr %5, align 8
  store i32 1, ptr %23, align 4
  br label %578

577:                                              ; No predecessors!
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %568, !llvm.loop !73

578:                                              ; preds = %576, %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  %579 = load i32, ptr %23, align 4
  switch i32 %579, label %582 [
    i32 35, label %580
  ]

580:                                              ; preds = %578
  br label %581

581:                                              ; preds = %580
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %560, !llvm.loop !74

582:                                              ; preds = %578, %563
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #7
  %583 = load i32, ptr %23, align 4
  switch i32 %583, label %708 [
    i32 32, label %584
  ]

584:                                              ; preds = %582
  br label %706

585:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #7
  store i8 1, ptr %70, align 1, !tbaa !9
  br label %586

586:                                              ; preds = %704, %585
  %587 = load i8, ptr %70, align 1, !tbaa !9, !range !14, !noundef !15
  %588 = trunc i8 %587 to i1
  br i1 %588, label %590, label %589

589:                                              ; preds = %586
  store i32 38, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  br label %705

590:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4) %591)
          to label %593 unwind label %598

593:                                              ; preds = %590
  store i32 %592, ptr %71, align 4, !tbaa !12
  br label %594

594:                                              ; preds = %701, %593
  %595 = load i8, ptr %70, align 1, !tbaa !9, !range !14, !noundef !15
  %596 = trunc i8 %595 to i1
  br i1 %596, label %602, label %597

597:                                              ; preds = %594
  store i32 41, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  br label %703

598:                                              ; preds = %695, %692, %616, %607, %602, %590
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %13, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %14, align 4
  br label %702

602:                                              ; preds = %594
  %603 = load ptr, ptr %28, align 8, !tbaa !5
  %604 = invoke noundef zeroext i1 @_ZNK8VarState10is_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %603)
          to label %605 unwind label %598

605:                                              ; preds = %602
  br i1 %604, label %692, label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606
  %608 = load ptr, ptr %28, align 8, !tbaa !5
  %609 = invoke noundef zeroext i1 @_ZNK8VarState11is_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %608)
          to label %610 unwind label %598

610:                                              ; preds = %607
  br i1 %609, label %611, label %630

611:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %612 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %612)
          to label %613 unwind label %617

613:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 1 dereferenceable(1) %74) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef %73)
          to label %614 unwind label %621

614:                                              ; preds = %613
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  %615 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %615, ptr noundef @.str.9)
          to label %616 unwind label %626

616:                                              ; preds = %614
  invoke void @__cxa_throw(ptr %615, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %743 unwind label %598

617:                                              ; preds = %611
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %13, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %14, align 4
  br label %625

621:                                              ; preds = %613
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %13, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  br label %625

625:                                              ; preds = %621, %617
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %702

626:                                              ; preds = %614
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %13, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %14, align 4
  call void @__cxa_free_exception(ptr %615) #7
  br label %702

630:                                              ; preds = %610
  br label %631

631:                                              ; preds = %630
  br label %632

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  store i64 0, ptr %75, align 8, !tbaa !16
  %633 = load ptr, ptr %7, align 8, !tbaa !5
  %634 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #7
  %635 = getelementptr inbounds %class.anon.575, ptr %77, i32 0, i32 0
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %636, ptr %635, align 8, !tbaa !5
  %637 = getelementptr inbounds %class.anon.575, ptr %77, i32 0, i32 1
  store ptr %75, ptr %637, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  %638 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %84, ptr noundef nonnull align 8 dereferenceable(8) %633, ptr noundef nonnull align 8 dereferenceable(32) %634, ptr noundef %76, ptr noundef %638)
          to label %639 unwind label %645

639:                                              ; preds = %632
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  store i64 0, ptr %79, align 8, !tbaa !16
  br label %640

640:                                              ; preds = %652, %639
  %641 = load i64, ptr %79, align 8, !tbaa !16
  %642 = load i64, ptr %75, align 8, !tbaa !16
  %643 = icmp ult i64 %641, %642
  br i1 %643, label %649, label %644

644:                                              ; preds = %640
  store i32 46, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %664

645:                                              ; preds = %632
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %13, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  br label %691

649:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 40, ptr %80) #7
  invoke void @_ZN8VarState12make_InvalidE11InvalidType(ptr dead_on_unwind writable sret(%class.VarState) align 8 %80, i32 noundef 0)
          to label %650 unwind label %655

650:                                              ; preds = %649
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 8 dereferenceable(40) %80)
          to label %651 unwind label %659

651:                                              ; preds = %650
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %80) #7
  br label %652

652:                                              ; preds = %651
  %653 = load i64, ptr %79, align 8, !tbaa !16
  %654 = add i64 %653, 1
  store i64 %654, ptr %79, align 8, !tbaa !16
  br label %640, !llvm.loop !75

655:                                              ; preds = %649
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %13, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %14, align 4
  br label %663

659:                                              ; preds = %650
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %13, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #7
  br label %663

663:                                              ; preds = %659, %655
  call void @llvm.lifetime.end.p0(i64 40, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  br label %690

664:                                              ; preds = %644
  %665 = load ptr, ptr %28, align 8, !tbaa !5
  %666 = load i32, ptr %71, align 4, !tbaa !12
  %667 = zext i32 %666 to i64
  %668 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %667) #7
  %669 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %668, ptr noundef nonnull align 8 dereferenceable(40) %665)
          to label %670 unwind label %677

670:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 40, ptr %81) #7
  %671 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %82, i32 0, i32 0
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %671, ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  %672 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %82, i32 0, i32 1
  store i32 0, ptr %672, align 8, !tbaa !20
  invoke void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind writable sret(%class.VarState) align 8 %81, ptr noundef %82)
          to label %673 unwind label %681

673:                                              ; preds = %670
  %674 = load ptr, ptr %28, align 8, !tbaa !5
  %675 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %674, ptr noundef nonnull align 8 dereferenceable(40) %81)
          to label %676 unwind label %685

676:                                              ; preds = %673
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %81) #7
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %82) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %81) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %692

677:                                              ; preds = %664
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %13, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %14, align 4
  br label %690

681:                                              ; preds = %670
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %13, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %14, align 4
  br label %689

685:                                              ; preds = %673
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %13, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %14, align 4
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %81) #7
  br label %689

689:                                              ; preds = %685, %681
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %82) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %81) #7
  br label %690

690:                                              ; preds = %689, %677, %663
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #7
  br label %691

691:                                              ; preds = %690, %645
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %702

692:                                              ; preds = %676, %605
  %693 = load ptr, ptr %28, align 8, !tbaa !5
  %694 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %693)
          to label %695 unwind label %598

695:                                              ; preds = %692
  %696 = getelementptr inbounds %"struct.VarState::Data_Partial", ptr %694, i32 0, i32 0
  %697 = load i32, ptr %71, align 4, !tbaa !12
  %698 = zext i32 %697 to i64
  %699 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %696, i64 noundef %698)
          to label %700 unwind label %598

700:                                              ; preds = %695
  store ptr %699, ptr %15, align 8, !tbaa !5
  br label %701

701:                                              ; preds = %700
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %594, !llvm.loop !76

702:                                              ; preds = %691, %626, %625, %598
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  br label %710

703:                                              ; preds = %597
  br label %704

704:                                              ; preds = %703
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %586, !llvm.loop !77

705:                                              ; preds = %589
  br label %706

706:                                              ; preds = %705, %584, %558, %437, %216
  br label %707

707:                                              ; preds = %706
  store i8 0, ptr %29, align 1, !tbaa !9
  br label %209, !llvm.loop !78

708:                                              ; preds = %582, %556, %212
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  %709 = load i32, ptr %23, align 4
  switch i32 %709, label %713 [
    i32 10, label %711
  ]

710:                                              ; preds = %702, %572, %553, %434, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %736

711:                                              ; preds = %708
  br label %712

712:                                              ; preds = %711
  store i8 0, ptr %29, align 1, !tbaa !9
  br label %203, !llvm.loop !79

713:                                              ; preds = %708, %206
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  %714 = load i32, ptr %23, align 4
  switch i32 %714, label %722 [
    i32 7, label %715
  ]

715:                                              ; preds = %713
  %716 = load ptr, ptr %15, align 8, !tbaa !5
  %717 = icmp ne ptr %716, null
  br i1 %717, label %718, label %719

718:                                              ; preds = %715
  br label %721

719:                                              ; preds = %715
  call void @__assert_fail(ptr noundef @.str.79, ptr noundef @.str.7, i32 noundef 2186, ptr noundef @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

720:                                              ; No predecessors!
  br label %721

721:                                              ; preds = %720, %718
  store i32 0, ptr %23, align 4
  br label %722

722:                                              ; preds = %721, %713
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  %723 = load i32, ptr %23, align 4
  switch i32 %723, label %725 [
    i32 0, label %724
  ]

724:                                              ; preds = %722
  store i32 0, ptr %23, align 4
  br label %725

725:                                              ; preds = %724, %722
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  %726 = load i32, ptr %23, align 4
  switch i32 %726, label %730 [
    i32 0, label %727
  ]

727:                                              ; preds = %725
  br label %728

728:                                              ; preds = %727
  %729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %197

730:                                              ; preds = %725, %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  %731 = load i32, ptr %23, align 4
  switch i32 %731, label %734 [
    i32 5, label %732
  ]

732:                                              ; preds = %730
  %733 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %733, ptr %5, align 8
  store i32 1, ptr %23, align 4
  br label %734

734:                                              ; preds = %732, %730, %187, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #7
  %735 = load ptr, ptr %5, align 8
  ret ptr %735

736:                                              ; preds = %710, %170, %160, %147, %137, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #7
  br label %737

737:                                              ; preds = %736, %95
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #7
  br label %738

738:                                              ; preds = %737
  %739 = load ptr, ptr %13, align 8
  %740 = load i32, ptr %14, align 4
  %741 = insertvalue { ptr, i32 } poison, ptr %739, 0
  %742 = insertvalue { ptr, i32 } %741, i32 %740, 1
  resume { ptr, i32 } %742

743:                                              ; preds = %616, %287, %114
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8VarState5cloneEv(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef nonnull align 8 dereferenceable(40)) #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef) #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState13make_MovedOutENS_13Data_MovedOutE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrI8VarStateESt10unique_ptrIT_St14default_deleteIS2_EEOS2_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.31") align 8, ptr noundef nonnull align 8 dereferenceable(40)) #0

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

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

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

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

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

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

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

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


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

%class.VarState = type { i32, [4 x i8], %"union.VarState::DataUnion" }
%"union.VarState::DataUnion" = type { i32, [28 x i8] }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.567 = type { ptr }
%struct.Span = type { ptr }
%class.anon.568 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.408" = type { ptr }
%class.anon.570 = type { ptr }
%"class.std::function.490" = type { %"class.std::_Function_base", ptr }
%class.anon.571 = type { ptr, ptr }
%"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 }
%"struct.VarState::Data_Partial" = type <{ %"class.std::vector.26", i32, [4 x i8] }>
%class.anon.572 = type { ptr, ptr }
%"struct.VarState::Data_MovedOut" = type <{ %"class.std::unique_ptr.31", i32, [4 x i8] }>
%"class.std::unique_ptr.31" = type { %"struct.std::__uniq_ptr_data.32" }
%"struct.std::__uniq_ptr_data.32" = type { %"class.std::__uniq_ptr_impl.33" }
%"class.std::__uniq_ptr_impl.33" = type { %"class.std::tuple.34" }
%"class.std::tuple.34" = type { %"struct.std::_Tuple_impl.35" }
%"struct.std::_Tuple_impl.35" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }
%class.anon.573 = type { i8 }
%class.anon.575 = type { ptr, ptr }

@.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
@__func__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb = external hidden unnamed_addr constant [85 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8) local_unnamed_addr #0 align 2

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #3

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState12make_InvalidE11InvalidType(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, i32 noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, i1 noundef zeroext %3) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.567, align 8
  %8 = alloca %struct.Span, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.568, align 1
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %13 = alloca %class.VarState, align 8
  %14 = alloca %class.VarState, align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.570, align 8
  %18 = alloca %class.VarState, align 8
  %19 = alloca %class.VarState, align 8
  %20 = alloca i64, align 8
  %21 = alloca %"class.std::function.490", align 8
  %22 = alloca %class.anon.571, align 8
  %23 = alloca %"class.std::vector.26", align 8
  %24 = alloca %class.VarState, align 8
  %25 = alloca %class.VarState, align 8
  %26 = alloca %"struct.VarState::Data_Partial", align 8
  %27 = alloca i8, align 1
  %28 = alloca %"class.std::function.490", align 8
  %29 = alloca %class.anon.572, align 8
  %30 = alloca %"class.std::vector.26", align 8
  %31 = alloca %class.VarState, align 8
  %32 = alloca %class.VarState, align 8
  %33 = alloca %"struct.VarState::Data_MovedOut", align 8
  %34 = alloca %class.VarState, align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.573, align 1
  %38 = alloca i64, align 8
  %39 = alloca %"class.std::function.490", align 8
  %40 = alloca %class.anon.575, align 8
  %41 = alloca %"class.std::vector.26", align 8
  %42 = alloca %class.VarState, align 8
  %43 = alloca %class.VarState, align 8
  %44 = alloca %"struct.VarState::Data_Partial", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #7
  %45 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %46 = select i1 %45, ptr @__func__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %46, ptr noundef nonnull %6)
          to label %47 unwind label %49

47:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  %48 = call noundef i32 @_ZNK3MIR6LValue7Storage3tagEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  switch i32 %48, label %80 [
    i32 4, label %51
    i32 3, label %52
    i32 0, label %67
    i32 1, label %73
    i32 2, label %78
  ]

49:                                               ; preds = %4
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %269

51:                                               ; preds = %47
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 2045, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

52:                                               ; preds = %47
  %53 = call noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %54 unwind label %60

54:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %9)
          to label %55 unwind label %62

55:                                               ; preds = %54
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  %56 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull @.str.9)
          to label %57 unwind label %65

57:                                               ; preds = %55
  invoke void @__cxa_throw(ptr nonnull %56, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %270 unwind label %58

58:                                               ; preds = %57
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %268

60:                                               ; preds = %52
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %64

62:                                               ; preds = %54
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %64

64:                                               ; preds = %62, %60
  %.pn = phi { ptr, i32 } [ %63, %62 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %268

65:                                               ; preds = %55
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %56) #7
  br label %268

67:                                               ; preds = %47
  %68 = invoke noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %69 unwind label %71

69:                                               ; preds = %67
  %70 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i32 noundef %68, i32 noundef 1)
          to label %81 unwind label %71

71:                                               ; preds = %69, %67
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %268

73:                                               ; preds = %47
  %74 = call noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %75 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN10MirBuilder18get_slot_state_mutERK4SpanjNS_8SlotTypeE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i32 noundef %74, i32 noundef 0)
          to label %81 unwind label %76

76:                                               ; preds = %73
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %268

78:                                               ; preds = %47
  %79 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6LValue7Storage9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  br label %267

80:                                               ; preds = %47
  call void @__assert_fail(ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.7, i32 noundef 2046, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

81:                                               ; preds = %69, %73
  %.0150.ph = phi ptr [ %75, %73 ], [ %70, %69 ]
  br i1 %3, label %82, label %84

82:                                               ; preds = %81
  %83 = call noundef zeroext i1 @_ZNK8VarState8is_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %.0150.ph)
  br i1 %83, label %267, label %84

84:                                               ; preds = %82, %81
  %85 = getelementptr inbounds i8, ptr %2, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %86 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  store ptr %86, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %87 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  store ptr %87, ptr %12, align 8
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br i1 %88, label %.lr.ph456, label %._crit_edge457

.lr.ph456:                                        ; preds = %84
  %89 = getelementptr inbounds i8, ptr %40, i64 8
  %90 = getelementptr inbounds i8, ptr %44, i64 24
  %91 = getelementptr inbounds i8, ptr %0, i64 40
  %92 = getelementptr inbounds i8, ptr %29, i64 8
  %93 = getelementptr inbounds i8, ptr %33, i64 8
  %94 = getelementptr inbounds i8, ptr %22, i64 8
  %95 = getelementptr inbounds i8, ptr %26, i64 24
  br label %.lr.ph450

.lr.ph450:                                        ; preds = %263, %.lr.ph456
  %.1151454 = phi ptr [ %.0150.ph, %.lr.ph456 ], [ %.2152.lcssa.ph, %263 ]
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  %97 = call noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
  switch i32 %97, label %.loopexit263 [
    i32 4, label %98
    i32 1, label %.preheader257
    i32 0, label %.preheader258
    i32 3, label %217
    i32 2, label %.lr.ph435
  ]

98:                                               ; preds = %.lr.ph450
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 2057, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

.preheader257:                                    ; preds = %.lr.ph450
  %99 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
          to label %.lr.ph445 unwind label %101

.lr.ph445:                                        ; preds = %.preheader257
  %100 = zext i32 %99 to i64
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #7
  invoke void @_ZN8VarStateC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13)
          to label %103 unwind label %105

101:                                              ; preds = %.preheader257
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %262

103:                                              ; preds = %.lr.ph445
  %104 = call noundef i32 @_ZNK8VarState3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  switch i32 %104, label %145 [
    i32 0, label %109
    i32 1, label %110
    i32 3, label %116
    i32 2, label %131
    i32 4, label %133
    i32 5, label %139
  ]

105:                                              ; preds = %.lr.ph445
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %175

107:                                              ; preds = %171
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %174

109:                                              ; preds = %103
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 2076, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

110:                                              ; preds = %103
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState10as_InvalidEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %14)
          to label %112 unwind label %114

112:                                              ; preds = %110
  %113 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %14)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #7
  br label %145

114:                                              ; preds = %110
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #7
  br label %174

116:                                              ; preds = %103
  %117 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %118 unwind label %124

118:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  store ptr %2, ptr %17, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %16)
          to label %119 unwind label %126

119:                                              ; preds = %118
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  %120 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef nonnull @.str.9)
          to label %121 unwind label %129

121:                                              ; preds = %119
  invoke void @__cxa_throw(ptr nonnull %120, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %270 unwind label %122

122:                                              ; preds = %121
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %174

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

126:                                              ; preds = %118
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %128

128:                                              ; preds = %126, %124
  %.pn204 = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %174

129:                                              ; preds = %119
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %120) #7
  br label %174

131:                                              ; preds = %103
  %132 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br label %145

133:                                              ; preds = %103
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState11as_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) #7
  invoke void @_ZNK8VarState5cloneEv(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %18, ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
          to label %135 unwind label %137

135:                                              ; preds = %133
  %136 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %18)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  br label %145

137:                                              ; preds = %133
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  br label %174

139:                                              ; preds = %103
  %140 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8VarState8as_ValidEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %19) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %19)
          to label %141 unwind label %143

141:                                              ; preds = %139
  %142 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef nonnull align 8 dereferenceable(40) %19)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #7
  br label %145

143:                                              ; preds = %139
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #7
  br label %174

145:                                              ; preds = %141, %135, %131, %112, %103
  %146 = call noundef zeroext i1 @_ZNK8VarState10is_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br i1 %146, label %171, label %147

147:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  store i64 0, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  store ptr %1, ptr %22, align 8, !tbaa !5
  store ptr %20, ptr %94, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull %21, ptr noundef nonnull %96)
          to label %148 unwind label %151

148:                                              ; preds = %147
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  %149 = load i64, ptr %20, align 8, !tbaa !9
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %149)
          to label %.preheader unwind label %153

.preheader:                                       ; preds = %148
  %150 = load i64, ptr %20, align 8, !tbaa !9
  %.not459 = icmp eq i64 %150, 0
  br i1 %.not459, label %._crit_edge444, label %.lr.ph443

._crit_edge444:                                   ; preds = %156, %.preheader
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %25) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  store i32 0, ptr %95, align 8, !tbaa !11
  invoke void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %25, ptr noundef nonnull %26)
          to label %165 unwind label %167

151:                                              ; preds = %147
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  br label %170

153:                                              ; preds = %148
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %169

.lr.ph443:                                        ; preds = %.preheader, %156
  %.0169442 = phi i64 [ %157, %156 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %24) #7
  invoke void @_ZNK8VarState5cloneEv(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %13)
          to label %155 unwind label %160

155:                                              ; preds = %.lr.ph443
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(40) %24)
          to label %156 unwind label %162

156:                                              ; preds = %155
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #7
  %157 = add nuw i64 %.0169442, 1
  %158 = load i64, ptr %20, align 8, !tbaa !9
  %159 = icmp ult i64 %157, %158
  br i1 %159, label %.lr.ph443, label %._crit_edge444, !llvm.loop !18

160:                                              ; preds = %.lr.ph443
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %164

162:                                              ; preds = %155
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  br label %164

164:                                              ; preds = %162, %160
  %.pn208 = phi { ptr, i32 } [ %163, %162 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #7
  br label %169

165:                                              ; preds = %._crit_edge444
  %166 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %.1151454, ptr noundef nonnull align 8 dereferenceable(40) %25)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #7
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %25) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %171

167:                                              ; preds = %._crit_edge444
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %26) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %25) #7
  br label %169

169:                                              ; preds = %167, %164, %153
  %.pn208.pn = phi { ptr, i32 } [ %.pn208, %164 ], [ %168, %167 ], [ %154, %153 ]
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %170

170:                                              ; preds = %169, %151
  %.pn208.pn.pn = phi { ptr, i32 } [ %.pn208.pn, %169 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %174

171:                                              ; preds = %165, %145
  %172 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  %173 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %100)
          to label %..loopexit_crit_edge unwind label %107

..loopexit_crit_edge:                             ; preds = %171
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %263

174:                                              ; preds = %122, %128, %129, %170, %143, %137, %114, %107
  %.pn212 = phi { ptr, i32 } [ %108, %107 ], [ %.pn208.pn.pn, %170 ], [ %144, %143 ], [ %138, %137 ], [ %115, %114 ], [ %123, %122 ], [ %130, %129 ], [ %.pn204, %128 ]
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #7
  br label %175

175:                                              ; preds = %174, %105
  %.pn212.pn = phi { ptr, i32 } [ %.pn212, %174 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  br label %262

.preheader258:                                    ; preds = %.lr.ph450
  %176 = invoke noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
          to label %.lr.ph438 unwind label %177

177:                                              ; preds = %.preheader258
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %262

.lr.ph438:                                        ; preds = %.preheader258
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  store i8 0, ptr %27, align 1, !tbaa !20
  %179 = load ptr, ptr %91, align 8, !tbaa !22
  %.not194 = icmp eq ptr %179, null
  br i1 %.not194, label %.thread, label %180

180:                                              ; preds = %.lr.ph438
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  store ptr %0, ptr %29, align 8, !tbaa !55
  store ptr %27, ptr %92, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull %28, ptr noundef nonnull %96)
          to label %183 unwind label %181

181:                                              ; preds = %180
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  br label %216

183:                                              ; preds = %180
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  %.pre = load i8, ptr %27, align 1, !tbaa !20, !range !57
  %184 = trunc nuw i8 %.pre to i1
  br i1 %184, label %185, label %.thread

185:                                              ; preds = %183
  %186 = call noundef zeroext i1 @_ZNK8VarState11is_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br i1 %186, label %..loopexit254_crit_edge, label %187

187:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %31) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %31)
          to label %188 unwind label %200

188:                                              ; preds = %187
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(40) %31)
          to label %189 unwind label %202

189:                                              ; preds = %188
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #7
  %190 = call noundef zeroext i1 @_ZNK8VarState11is_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br i1 %190, label %191, label %194

191:                                              ; preds = %189
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8VarState11as_OptionalEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  %193 = load i32, ptr %192, align 4, !tbaa !58
  br label %194

194:                                              ; preds = %189, %191
  %195 = phi i32 [ %193, %191 ], [ -1, %189 ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %34) #7
  invoke void @_ZN8VarState10make_ValidENS_10Data_ValidE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %34)
          to label %196 unwind label %205

196:                                              ; preds = %194
  invoke void @_Z15make_unique_ptrI8VarStateESt10unique_ptrIT_St14default_deleteIS2_EEOS2_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.31") align 8 %33, ptr noundef nonnull align 8 dereferenceable(40) %34)
          to label %197 unwind label %207

197:                                              ; preds = %196
  store i32 %195, ptr %93, align 8, !tbaa !59
  invoke void @_ZN8VarState13make_MovedOutENS_13Data_MovedOutE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %32, ptr noundef nonnull %33)
          to label %198 unwind label %209

198:                                              ; preds = %197
  %199 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %.1151454, ptr noundef nonnull align 8 dereferenceable(40) %32)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #7
  call void @_ZN8VarState13Data_MovedOutD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %33) #7
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %32) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #7
  br label %..loopexit254_crit_edge

200:                                              ; preds = %187
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %188
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #7
  br label %204

204:                                              ; preds = %202, %200
  %.pn195 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #7
  br label %213

205:                                              ; preds = %194
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %212

207:                                              ; preds = %196
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %211

209:                                              ; preds = %197
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarState13Data_MovedOutD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %33) #7
  br label %211

211:                                              ; preds = %209, %207
  %.pn197 = phi { ptr, i32 } [ %210, %209 ], [ %208, %207 ]
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #7
  br label %212

212:                                              ; preds = %211, %205
  %.pn197.pn = phi { ptr, i32 } [ %.pn197, %211 ], [ %206, %205 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %32) #7
  br label %213

213:                                              ; preds = %212, %204
  %.pn197.pn.pn = phi { ptr, i32 } [ %.pn197.pn, %212 ], [ %.pn195, %204 ]
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #7
  br label %216

..loopexit254_crit_edge:                          ; preds = %185, %198
  %214 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  %215 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt10unique_ptrI8VarStateSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %214) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  br label %263

216:                                              ; preds = %213, %181
  %.pn197.pn.pn.pn = phi { ptr, i32 } [ %.pn197.pn.pn, %213 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  br label %262

.thread:                                          ; preds = %.lr.ph438, %183
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  br label %266

217:                                              ; preds = %.lr.ph450
  %218 = call noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
  br label %266

.lr.ph435:                                        ; preds = %.lr.ph450
  %219 = call noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4) %96)
  %220 = zext i32 %219 to i64
  %221 = call noundef zeroext i1 @_ZNK8VarState10is_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br i1 %221, label %259, label %222

.loopexit256:                                     ; preds = %259
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %262

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

222:                                              ; preds = %.lr.ph435
  %223 = call noundef zeroext i1 @_ZNK8VarState11is_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  br i1 %223, label %224, label %236

224:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %225 unwind label %229

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %36)
          to label %226 unwind label %231

226:                                              ; preds = %225
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  %227 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %227, ptr noundef nonnull @.str.9)
          to label %228 unwind label %234

228:                                              ; preds = %226
  invoke void @__cxa_throw(ptr nonnull %227, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %270 unwind label %.loopexit.split-lp

229:                                              ; preds = %224
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %233

231:                                              ; preds = %225
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %233

233:                                              ; preds = %231, %229
  %.pn190 = phi { ptr, i32 } [ %232, %231 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br label %262

234:                                              ; preds = %226
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %227) #7
  br label %262

236:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  store i64 0, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #7
  store ptr %1, ptr %40, align 8, !tbaa !5
  store ptr %38, ptr %89, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRKN3HIR7TypeRefEEEC2IZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  invoke void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull %39, ptr noundef nonnull %96)
          to label %237 unwind label %241

237:                                              ; preds = %236
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  %238 = load i64, ptr %38, align 8, !tbaa !9
  %.not = icmp eq i64 %238, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %244, %237
  %239 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %220) #7
  %240 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %239, ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %43) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  store i32 0, ptr %90, align 8, !tbaa !11
  invoke void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %43, ptr noundef nonnull %44)
          to label %253 unwind label %255

241:                                              ; preds = %236
  %242 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #7
  br label %258

.lr.ph:                                           ; preds = %237, %244
  %.0433 = phi i64 [ %245, %244 ], [ 0, %237 ]
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %42) #7
  invoke void @_ZN8VarState12make_InvalidE11InvalidType(ptr dead_on_unwind nonnull writable sret(%class.VarState) align 8 %42, i32 noundef 0)
          to label %243 unwind label %248

243:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorI8VarStateSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(40) %42)
          to label %244 unwind label %250

244:                                              ; preds = %243
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %42) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %42) #7
  %245 = add nuw i64 %.0433, 1
  %246 = load i64, ptr %38, align 8, !tbaa !9
  %247 = icmp ult i64 %245, %246
  br i1 %247, label %.lr.ph, label %._crit_edge, !llvm.loop !67

248:                                              ; preds = %.lr.ph
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %252

250:                                              ; preds = %243
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %42) #7
  br label %252

252:                                              ; preds = %250, %248
  %.pn186 = phi { ptr, i32 } [ %251, %250 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %42) #7
  br label %257

253:                                              ; preds = %._crit_edge
  %254 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40) %.1151454, ptr noundef nonnull align 8 dereferenceable(40) %43)
  call void @_ZN8VarStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #7
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %44) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %43) #7
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  br label %259

255:                                              ; preds = %._crit_edge
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8VarState12Data_PartialD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %44) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %43) #7
  br label %257

257:                                              ; preds = %255, %252
  %.pn186.pn = phi { ptr, i32 } [ %.pn186, %252 ], [ %256, %255 ]
  call void @_ZNSt6vectorI8VarStateSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #7
  br label %258

258:                                              ; preds = %257, %241
  %.pn186.pn.pn = phi { ptr, i32 } [ %.pn186.pn, %257 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  br label %262

259:                                              ; preds = %253, %.lr.ph435
  %260 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40) %.1151454)
  %261 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorI8VarStateSaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef %220)
          to label %263 unwind label %.loopexit256, !llvm.loop !68

262:                                              ; preds = %.loopexit256, %.loopexit.split-lp, %233, %234, %258, %177, %216, %101, %175
  %.pn192.pn = phi { ptr, i32 } [ %.pn212.pn, %175 ], [ %102, %101 ], [ %.pn197.pn.pn.pn, %216 ], [ %178, %177 ], [ %235, %234 ], [ %.pn190, %233 ], [ %.pn186.pn.pn, %258 ], [ %lpad.loopexit, %.loopexit256 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %268

.loopexit263:                                     ; preds = %.lr.ph450
  call void @__assert_fail(ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.7, i32 noundef 2186, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10MirBuilder19get_val_state_mut_pERK4SpanRKN3MIR6LValueEb) #8
  unreachable

263:                                              ; preds = %..loopexit_crit_edge, %..loopexit254_crit_edge, %259
  %.2152.lcssa.ph = phi ptr [ %261, %259 ], [ %215, %..loopexit254_crit_edge ], [ %173, %..loopexit_crit_edge ]
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  %265 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br i1 %265, label %.lr.ph450, label %._crit_edge457

266:                                              ; preds = %217, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %267

._crit_edge457:                                   ; preds = %263, %84
  %.1151.lcssa = phi ptr [ %.0150.ph, %84 ], [ %.2152.lcssa.ph, %263 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %267

267:                                              ; preds = %._crit_edge457, %266, %82, %78
  %.15 = phi ptr [ null, %78 ], [ null, %82 ], [ %.1151.lcssa, %._crit_edge457 ], [ null, %266 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  ret ptr %.15

268:                                              ; preds = %58, %64, %65, %262, %76, %71
  %.pn192.pn.pn = phi { ptr, i32 } [ %.pn192.pn, %262 ], [ %77, %76 ], [ %72, %71 ], [ %59, %58 ], [ %66, %65 ], [ %.pn, %64 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  br label %269

269:                                              ; preds = %268, %49
  %.pn192.pn.pn.pn = phi { ptr, i32 } [ %.pn192.pn.pn, %268 ], [ %50, %49 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn192.pn.pn.pn

270:                                              ; preds = %228, %121, %57
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN8VarStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8VarState5cloneEv(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN8VarState11as_MovedOutEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ZN8VarState10as_PartialEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState12make_PartialENS_12Data_PartialE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8VarState13make_MovedOutENS_13Data_MovedOutE(ptr dead_on_unwind noalias writable sret(%class.VarState) align 8, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrI8VarStateESt10unique_ptrIT_St14default_deleteIS2_EEOS2_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.31") align 8, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #0

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

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

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

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

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

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

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

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


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