; LLVM IR from vczh/herodb :: Kernel/Source (Vlpp)

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

%"struct.vl::parsing::tabling::ParsingState::TransitionResult" = type { i32, i64, %"class.vl::ObjectString", i64, i64, i64, i64, ptr, ptr, i64, i64, %"class.vl::Ptr.140" }
%"class.vl::ObjectString" = type { %"class.vl::Object", ptr, ptr, i64, i64, i64 }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.140" = type { ptr, ptr, ptr, ptr }
%"class.vl::parsing::tabling::ParsingState" = type { %"class.vl::Object", %"class.vl::ObjectString", %"class.vl::Ptr.61", %"class.vl::collections::List.47", %"class.vl::Ptr.62", %"class.vl::ObjectString", i64, %"class.vl::Ptr.63" }
%"class.vl::Ptr.61" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::List.47" = type { %"class.vl::collections::ListBase.base.53", %"class.vl::collections::IEnumerable.51" }
%"class.vl::collections::ListBase.base.53" = type <{ %"class.vl::collections::ArrayBase.base.52", i64, i8 }>
%"class.vl::collections::ArrayBase.base.52" = type { %"class.vl::collections::ListStore.50", ptr, i64 }
%"class.vl::collections::ListStore.50" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.51" = type { %"class.vl::Interface" }
%"class.vl::Interface" = type { ptr }
%"class.vl::Ptr.62" = type { ptr, ptr, ptr, ptr }
%"class.vl::Ptr.63" = type { ptr, ptr, ptr, ptr }
%"struct.vl::parsing::tabling::ParsingState::StateGroup" = type { %"class.vl::collections::List.116", i64, i64, %"class.vl::collections::List.626", ptr, ptr }
%"class.vl::collections::List.116" = type { %"class.vl::collections::ListBase.base.122", %"class.vl::collections::IEnumerable.120" }
%"class.vl::collections::ListBase.base.122" = type <{ %"class.vl::collections::ArrayBase.base.121", i64, i8 }>
%"class.vl::collections::ArrayBase.base.121" = type { %"class.vl::collections::ListStore.119", ptr, i64 }
%"class.vl::collections::ListStore.119" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.120" = type { %"class.vl::Interface" }
%"class.vl::collections::List.626" = type { %"class.vl::collections::ListBase.base.632", %"class.vl::collections::IEnumerable.630" }
%"class.vl::collections::ListBase.base.632" = type <{ %"class.vl::collections::ArrayBase.base.631", i64, i8 }>
%"class.vl::collections::ArrayBase.base.631" = type { %"class.vl::collections::ListStore.629", ptr, i64 }
%"class.vl::collections::ListStore.629" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.630" = type { %"class.vl::Interface" }
%"class.vl::parsing::tabling::ParsingTable::TransitionItem" = type { i64, i64, %"class.vl::collections::List.182", %"class.vl::collections::List.116", %"class.vl::collections::List.190" }
%"class.vl::collections::List.182" = type { %"class.vl::collections::ListBase.base.188", %"class.vl::collections::IEnumerable.186" }
%"class.vl::collections::ListBase.base.188" = type <{ %"class.vl::collections::ArrayBase.base.187", i64, i8 }>
%"class.vl::collections::ArrayBase.base.187" = type { %"class.vl::collections::ListStore.185", ptr, i64 }
%"class.vl::collections::ListStore.185" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.186" = type { %"class.vl::Interface" }
%"class.vl::collections::List.190" = type { %"class.vl::collections::ListBase.base.196", %"class.vl::collections::IEnumerable.194" }
%"class.vl::collections::ListBase.base.196" = type <{ %"class.vl::collections::ArrayBase.base.195", i64, i8 }>
%"class.vl::collections::ArrayBase.base.195" = type { %"class.vl::collections::ListStore.193", ptr, i64 }
%"class.vl::collections::ListStore.193" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.194" = type { %"class.vl::Interface" }
%"class.vl::parsing::tabling::ParsingTable::Instruction" = type { i32, i64, %"class.vl::ObjectString", %"class.vl::ObjectString", %"class.vl::ObjectString" }

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultC2ENS3_14TransitionTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing7tabling12ParsingState13RunTransitionEPNS1_12ParsingTable14TransitionItemEPNS_5regex10RegexTokenEllb(ptr dead_on_unwind noalias writable sret(%"struct.vl::parsing::tabling::ParsingState::TransitionResult") align 8 %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, i64 noundef %5, i1 noundef zeroext %6) #2 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i8, align 1
  %15 = alloca i1, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca ptr, align 8
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store i64 %4, ptr %12, align 8, !tbaa !9
  store i64 %5, ptr %13, align 8, !tbaa !9
  %20 = zext i1 %6 to i8
  store i8 %20, ptr %14, align 1, !tbaa !11
  %21 = load ptr, ptr %9, align 8
  %22 = load ptr, ptr %11, align 8, !tbaa !5
  %23 = icmp ne ptr %22, null
  br i1 %23, label %24, label %40

24:                                               ; preds = %7
  %25 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %26 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %25)
  %27 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %26, i32 0, i32 4
  %28 = load ptr, ptr %27, align 8, !tbaa !13
  %29 = icmp ne ptr %28, null
  br i1 %29, label %39, label %30

30:                                               ; preds = %24
  %31 = load ptr, ptr %11, align 8, !tbaa !5
  %32 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %33 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %32)
  %34 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %33, i32 0, i32 4
  store ptr %31, ptr %34, align 8, !tbaa !13
  %35 = load ptr, ptr %11, align 8, !tbaa !5
  %36 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %37 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %36)
  %38 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %37, i32 0, i32 5
  store ptr %35, ptr %38, align 8, !tbaa !24
  br label %39

39:                                               ; preds = %30, %24
  br label %40

40:                                               ; preds = %39, %7
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %41, i32 0, i32 0
  %43 = load i64, ptr %42, align 8, !tbaa !25
  %44 = icmp sge i64 %43, 4
  br i1 %44, label %45, label %65

45:                                               ; preds = %40
  %46 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %47 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %46)
  %48 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %47, i32 0, i32 2
  %49 = load i64, ptr %48, align 8, !tbaa !35
  %50 = icmp eq i64 %49, 0
  br i1 %50, label %51, label %59

51:                                               ; preds = %45
  %52 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %53 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %52)
  %54 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %53, i32 0, i32 3
  %55 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %56 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %55)
  %57 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %56, i32 0, i32 4
  %58 = call noundef i64 @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_E3AddERKS4_(ptr noundef nonnull align 8 dereferenceable(33) %54, ptr noundef nonnull align 8 dereferenceable(8) %57)
  br label %59

59:                                               ; preds = %51, %45
  %60 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %61 = call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %60)
  %62 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %61, i32 0, i32 2
  %63 = load i64, ptr %62, align 8, !tbaa !35
  %64 = add nsw i64 %63, 1
  store i64 %64, ptr %62, align 8, !tbaa !35
  br label %65

65:                                               ; preds = %59, %40
  store i1 false, ptr %15, align 1
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultC2ENS3_14TransitionTypeE(ptr noundef nonnull align 8 dereferenceable(160) %0, i32 noundef 0)
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %66, i32 0, i32 0
  %68 = load i64, ptr %67, align 8, !tbaa !25
  %69 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 3
  store i64 %68, ptr %69, align 8, !tbaa !36
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 7
  store ptr %70, ptr %71, align 8, !tbaa !41
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = icmp ne ptr %72, null
  br i1 %73, label %74, label %80

74:                                               ; preds = %65
  %75 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 4
  %76 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling18ParsingTokenWalkerEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %77 unwind label %108

77:                                               ; preds = %74
  %78 = invoke noundef i64 @_ZNK2vl7parsing7tabling18ParsingTokenWalker21GetTokenIndexInStreamEv(ptr noundef nonnull align 8 dereferenceable(104) %76)
          to label %79 unwind label %108

79:                                               ; preds = %77
  br label %81

80:                                               ; preds = %65
  br label %81

81:                                               ; preds = %80, %79
  %82 = phi i64 [ %78, %79 ], [ -1, %80 ]
  %83 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 6
  store i64 %82, ptr %83, align 8, !tbaa !42
  %84 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %85 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %86 unwind label %108

86:                                               ; preds = %81
  %87 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %85, i32 0, i32 1
  %88 = load i64, ptr %87, align 8, !tbaa !43
  %89 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 4
  store i64 %88, ptr %89, align 8, !tbaa !44
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %90, i32 0, i32 1
  %92 = load i64, ptr %91, align 8, !tbaa !45
  %93 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 5
  store i64 %92, ptr %93, align 8, !tbaa !46
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 8
  store ptr %94, ptr %95, align 8, !tbaa !47
  %96 = load i64, ptr %12, align 8, !tbaa !9
  %97 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 9
  store i64 %96, ptr %97, align 8, !tbaa !48
  %98 = load i64, ptr %13, align 8, !tbaa !9
  %99 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %0, i32 0, i32 10
  store i64 %98, ptr %99, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  %100 = load i64, ptr %12, align 8, !tbaa !9
  store i64 %100, ptr %18, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %233, %86
  %102 = load i64, ptr %18, align 8, !tbaa !9
  %103 = load i64, ptr %12, align 8, !tbaa !9
  %104 = load i64, ptr %13, align 8, !tbaa !9
  %105 = add nsw i64 %103, %104
  %106 = icmp slt i64 %102, %105
  br i1 %106, label %112, label %107

107:                                              ; preds = %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %236

108:                                              ; preds = %296, %292, %287, %284, %281, %278, %274, %270, %266, %263, %260, %256, %253, %239, %81, %77, %74
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %16, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %17, align 4
  br label %307

112:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %113, i32 0, i32 4
  %115 = load i64, ptr %18, align 8, !tbaa !9
  %116 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %114, i64 noundef %115)
          to label %117 unwind label %121

117:                                              ; preds = %112
  store ptr %116, ptr %19, align 8, !tbaa !5
  %118 = load ptr, ptr %19, align 8, !tbaa !5
  %119 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::Instruction", ptr %118, i32 0, i32 0
  %120 = load i32, ptr %119, align 8, !tbaa !50
  switch i32 %120, label %231 [
    i32 5, label %125
    i32 6, label %154
    i32 7, label %210
  ]

121:                                              ; preds = %224, %218, %213, %210, %206, %203, %199, %195, %191, %188, %185, %181, %178, %175, %170, %167, %164, %161, %157, %154, %147, %143, %140, %136, %133, %128, %125, %112
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %16, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %307

125:                                              ; preds = %117
  %126 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %127 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %128 unwind label %121

128:                                              ; preds = %125
  %129 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %127, i32 0, i32 0
  %130 = load ptr, ptr %19, align 8, !tbaa !5
  %131 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::Instruction", ptr %130, i32 0, i32 1
  %132 = invoke noundef i64 @_ZN2vl11collections4ListIllE3AddERKl(ptr noundef nonnull align 8 dereferenceable(33) %129, ptr noundef nonnull align 8 dereferenceable(8) %131)
          to label %133 unwind label %121

133:                                              ; preds = %128
  %134 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %135 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %136 unwind label %121

136:                                              ; preds = %133
  %137 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %135, i32 0, i32 3
  %138 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %139 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %138)
          to label %140 unwind label %121

140:                                              ; preds = %136
  %141 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %139, i32 0, i32 4
  %142 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_E3AddERKS4_(ptr noundef nonnull align 8 dereferenceable(33) %137, ptr noundef nonnull align 8 dereferenceable(8) %141)
          to label %143 unwind label %121

143:                                              ; preds = %140
  %144 = load ptr, ptr %11, align 8, !tbaa !5
  %145 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %146 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %145)
          to label %147 unwind label %121

147:                                              ; preds = %143
  %148 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %146, i32 0, i32 4
  store ptr %144, ptr %148, align 8, !tbaa !13
  %149 = load ptr, ptr %11, align 8, !tbaa !5
  %150 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %151 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %150)
          to label %152 unwind label %121

152:                                              ; preds = %147
  %153 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %151, i32 0, i32 5
  store ptr %149, ptr %153, align 8, !tbaa !24
  br label %232

154:                                              ; preds = %117
  %155 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %156 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %157 unwind label %121

157:                                              ; preds = %154
  %158 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %156, i32 0, i32 0
  %159 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %160 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %161 unwind label %121

161:                                              ; preds = %157
  %162 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %160, i32 0, i32 0
  %163 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIlE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %162)
          to label %164 unwind label %121

164:                                              ; preds = %161
  %165 = sub nsw i64 %163, 1
  %166 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIllE8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %158, i64 noundef %165)
          to label %167 unwind label %121

167:                                              ; preds = %164
  %168 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %169 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %168)
          to label %170 unwind label %121

170:                                              ; preds = %167
  %171 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %169, i32 0, i32 4
  %172 = load ptr, ptr %171, align 8, !tbaa !13
  %173 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %174 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %173)
          to label %175 unwind label %121

175:                                              ; preds = %170
  %176 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %174, i32 0, i32 5
  %177 = load ptr, ptr %176, align 8, !tbaa !24
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %172, ptr noundef %177)
          to label %178 unwind label %121

178:                                              ; preds = %175
  %179 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %180 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %179)
          to label %181 unwind label %121

181:                                              ; preds = %178
  %182 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %180, i32 0, i32 3
  %183 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %184 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %183)
          to label %185 unwind label %121

185:                                              ; preds = %181
  %186 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %184, i32 0, i32 3
  %187 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %186)
          to label %188 unwind label %121

188:                                              ; preds = %185
  %189 = sub nsw i64 %187, 1
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %182, i64 noundef %189)
          to label %191 unwind label %121

191:                                              ; preds = %188
  %192 = load ptr, ptr %190, align 8, !tbaa !5
  %193 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %194 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %193)
          to label %195 unwind label %121

195:                                              ; preds = %191
  %196 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %194, i32 0, i32 4
  store ptr %192, ptr %196, align 8, !tbaa !13
  %197 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %198 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %197)
          to label %199 unwind label %121

199:                                              ; preds = %195
  %200 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %198, i32 0, i32 3
  %201 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %202 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %201)
          to label %203 unwind label %121

203:                                              ; preds = %199
  %204 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %202, i32 0, i32 3
  %205 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %204)
          to label %206 unwind label %121

206:                                              ; preds = %203
  %207 = sub nsw i64 %205, 1
  %208 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_E8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %200, i64 noundef %207)
          to label %209 unwind label %121

209:                                              ; preds = %206
  br label %232

210:                                              ; preds = %117
  %211 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %212 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %211)
          to label %213 unwind label %121

213:                                              ; preds = %210
  %214 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %212, i32 0, i32 4
  %215 = load ptr, ptr %214, align 8, !tbaa !13
  %216 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %217 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %216)
          to label %218 unwind label %121

218:                                              ; preds = %213
  %219 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %217, i32 0, i32 5
  %220 = load ptr, ptr %219, align 8, !tbaa !24
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %215, ptr noundef %220)
          to label %221 unwind label %121

221:                                              ; preds = %218
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = icmp ne ptr %222, null
  br i1 %223, label %224, label %230

224:                                              ; preds = %221
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %227 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %226)
          to label %228 unwind label %121

228:                                              ; preds = %224
  %229 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %227, i32 0, i32 5
  store ptr %225, ptr %229, align 8, !tbaa !24
  br label %230

230:                                              ; preds = %228, %221
  br label %232

231:                                              ; preds = %117
  br label %232

232:                                              ; preds = %231, %230, %209, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  br label %233

233:                                              ; preds = %232
  %234 = load i64, ptr %18, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %18, align 8, !tbaa !9
  br label %101, !llvm.loop !53

236:                                              ; preds = %107
  %237 = load ptr, ptr %11, align 8, !tbaa !5
  %238 = icmp ne ptr %237, null
  br i1 %238, label %239, label %245

239:                                              ; preds = %236
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %242 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %241)
          to label %243 unwind label %108

243:                                              ; preds = %239
  %244 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %242, i32 0, i32 5
  store ptr %240, ptr %244, align 8, !tbaa !24
  br label %245

245:                                              ; preds = %243, %236
  %246 = load ptr, ptr %10, align 8, !tbaa !5
  %247 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %246, i32 0, i32 0
  %248 = load i64, ptr %247, align 8, !tbaa !25
  %249 = icmp eq i64 %248, 1
  br i1 %249, label %250, label %296

250:                                              ; preds = %245
  %251 = load i8, ptr %14, align 1, !tbaa !11, !range !55, !noundef !56
  %252 = trunc i8 %251 to i1
  br i1 %252, label %253, label %296

253:                                              ; preds = %250
  %254 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %255 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %254)
          to label %256 unwind label %108

256:                                              ; preds = %253
  %257 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %255, i32 0, i32 3
  %258 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %259 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %258)
          to label %260 unwind label %108

260:                                              ; preds = %256
  %261 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %259, i32 0, i32 3
  %262 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %261)
          to label %263 unwind label %108

263:                                              ; preds = %260
  %264 = sub nsw i64 %262, 1
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %257, i64 noundef %264)
          to label %266 unwind label %108

266:                                              ; preds = %263
  %267 = load ptr, ptr %265, align 8, !tbaa !5
  %268 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %269 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %268)
          to label %270 unwind label %108

270:                                              ; preds = %266
  %271 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %269, i32 0, i32 4
  store ptr %267, ptr %271, align 8, !tbaa !13
  %272 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %273 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %272)
          to label %274 unwind label %108

274:                                              ; preds = %270
  %275 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %273, i32 0, i32 3
  %276 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %277 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %276)
          to label %278 unwind label %108

278:                                              ; preds = %274
  %279 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %277, i32 0, i32 3
  %280 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %279)
          to label %281 unwind label %108

281:                                              ; preds = %278
  %282 = sub nsw i64 %280, 1
  %283 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_E8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %275, i64 noundef %282)
          to label %284 unwind label %108

284:                                              ; preds = %281
  %285 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %286 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %285)
          to label %287 unwind label %108

287:                                              ; preds = %284
  %288 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %286, i32 0, i32 4
  %289 = load ptr, ptr %288, align 8, !tbaa !13
  %290 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %291 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %290)
          to label %292 unwind label %108

292:                                              ; preds = %287
  %293 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %291, i32 0, i32 5
  %294 = load ptr, ptr %293, align 8, !tbaa !24
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %289, ptr noundef %294)
          to label %295 unwind label %108

295:                                              ; preds = %292
  br label %296

296:                                              ; preds = %295, %250, %245
  %297 = load ptr, ptr %10, align 8, !tbaa !5
  %298 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingTable::TransitionItem", ptr %297, i32 0, i32 1
  %299 = load i64, ptr %298, align 8, !tbaa !45
  %300 = getelementptr inbounds %"class.vl::parsing::tabling::ParsingState", ptr %21, i32 0, i32 7
  %301 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %300)
          to label %302 unwind label %108

302:                                              ; preds = %296
  %303 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::StateGroup", ptr %301, i32 0, i32 1
  store i64 %299, ptr %303, align 8, !tbaa !43
  store i1 true, ptr %15, align 1
  %304 = load i1, ptr %15, align 1
  br i1 %304, label %306, label %305

305:                                              ; preds = %302
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %0) #4
  br label %306

306:                                              ; preds = %305, %302
  ret void

307:                                              ; preds = %121, %108
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %0) #4
  br label %308

308:                                              ; preds = %307
  %309 = load ptr, ptr %16, align 8
  %310 = load i32, ptr %17, align 4
  %311 = insertvalue { ptr, i32 } poison, ptr %309, 0
  %312 = insertvalue { ptr, i32 } %311, i32 %310, 1
  resume { ptr, i32 } %312
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK2vl7parsing7tabling18ParsingTokenWalker21GetTokenIndexInStreamEv(ptr noundef nonnull align 8 dereferenceable(104)) #2 align 2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !6, i64 112}
!14 = !{!"_ZTSN2vl7parsing7tabling12ParsingState10StateGroupE", !15, i64 0, !10, i64 48, !10, i64 56, !20, i64 64, !6, i64 112, !6, i64 120}
!15 = !{!"_ZTSN2vl11collections4ListIllEE", !16, i64 0}
!16 = !{!"_ZTSN2vl11collections8ListBaseIllEE", !17, i64 0, !10, i64 24, !12, i64 32}
!17 = !{!"_ZTSN2vl11collections9ArrayBaseIlEE", !18, i64 0, !6, i64 8, !10, i64 16}
!18 = !{!"_ZTSN2vl11collections9ListStoreIlLb1EEE", !19, i64 0}
!19 = !{!"_ZTSN2vl6ObjectE"}
!20 = !{!"_ZTSN2vl11collections4ListIPNS_5regex10RegexTokenES4_EE", !21, i64 0}
!21 = !{!"_ZTSN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_EE", !22, i64 0, !10, i64 24, !12, i64 32}
!22 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEEE", !23, i64 0, !6, i64 8, !10, i64 16}
!23 = !{!"_ZTSN2vl11collections9ListStoreIPNS_5regex10RegexTokenELb1EEE", !19, i64 0}
!24 = !{!14, !6, i64 120}
!25 = !{!26, !10, i64 0}
!26 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable14TransitionItemE", !10, i64 0, !10, i64 8, !27, i64 16, !15, i64 64, !31, i64 112}
!27 = !{!"_ZTSN2vl11collections4ListINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEPS6_EE", !28, i64 0}
!28 = !{!"_ZTSN2vl11collections8ListBaseINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEPS6_EE", !29, i64 0, !10, i64 24, !12, i64 32}
!29 = !{!"_ZTSN2vl11collections9ArrayBaseINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEEE", !30, i64 0, !6, i64 8, !10, i64 16}
!30 = !{!"_ZTSN2vl11collections9ListStoreINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEELb0EEE", !19, i64 0}
!31 = !{!"_ZTSN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EE", !32, i64 0}
!32 = !{!"_ZTSN2vl11collections8ListBaseINS_7parsing7tabling12ParsingTable11InstructionES5_EE", !33, i64 0, !10, i64 24, !12, i64 32}
!33 = !{!"_ZTSN2vl11collections9ArrayBaseINS_7parsing7tabling12ParsingTable11InstructionEEE", !34, i64 0, !6, i64 8, !10, i64 16}
!34 = !{!"_ZTSN2vl11collections9ListStoreINS_7parsing7tabling12ParsingTable11InstructionELb0EEE", !19, i64 0}
!35 = !{!14, !10, i64 56}
!36 = !{!37, !10, i64 64}
!37 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResultE", !38, i64 0, !10, i64 8, !39, i64 16, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 120, !40, i64 128}
!38 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResult14TransitionTypeE", !7, i64 0}
!39 = !{!"_ZTSN2vl12ObjectStringIwEE", !19, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!40 = !{!"_ZTSN2vl3PtrINS_11collections4ListINS_7parsing7tabling12ParsingState16ShiftReduceRangeES6_EEEE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!37, !6, i64 96}
!42 = !{!37, !10, i64 88}
!43 = !{!14, !10, i64 48}
!44 = !{!37, !10, i64 72}
!45 = !{!26, !10, i64 8}
!46 = !{!37, !10, i64 80}
!47 = !{!37, !6, i64 104}
!48 = !{!37, !10, i64 112}
!49 = !{!37, !10, i64 120}
!50 = !{!51, !52, i64 0}
!51 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable11InstructionE", !52, i64 0, !10, i64 8, !39, i64 16, !39, i64 64, !39, i64 112}
!52 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable11Instruction15InstructionTypeE", !7, i64 0}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{i8 0, i8 2}
!56 = !{}


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

%"struct.vl::parsing::tabling::ParsingState::TransitionResult" = type { i32, i64, %"class.vl::ObjectString", i64, i64, i64, i64, ptr, ptr, i64, i64, %"class.vl::Ptr.140" }
%"class.vl::ObjectString" = type { %"class.vl::Object", ptr, ptr, i64, i64, i64 }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.140" = type { ptr, ptr, ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultC2ENS3_14TransitionTypeE(ptr noundef nonnull align 8 dereferenceable(160), i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN2vl11collections4ListIllE3AddERKl(ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing7tabling12ParsingState13RunTransitionEPNS1_12ParsingTable14TransitionItemEPNS_5regex10RegexTokenEllb(ptr dead_on_unwind noalias writable sret(%"struct.vl::parsing::tabling::ParsingState::TransitionResult") align 8 %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef %2, ptr noundef %3, i64 noundef %4, i64 noundef %5, i1 noundef zeroext %6) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %.not = icmp eq ptr %3, null
  br i1 %.not, label %18, label %8

8:                                                ; preds = %7
  %9 = getelementptr inbounds i8, ptr %1, i64 224
  %10 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
  %11 = getelementptr inbounds i8, ptr %10, i64 112
  %12 = load ptr, ptr %11, align 8, !tbaa !5
  %.not35 = icmp eq ptr %12, null
  br i1 %.not35, label %13, label %18

13:                                               ; preds = %8
  %14 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
  %15 = getelementptr inbounds i8, ptr %14, i64 112
  store ptr %3, ptr %15, align 8, !tbaa !5
  %16 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
  %17 = getelementptr inbounds i8, ptr %16, i64 120
  store ptr %3, ptr %17, align 8, !tbaa !21
  br label %18

18:                                               ; preds = %8, %13, %7
  %19 = load i64, ptr %2, align 8, !tbaa !22
  %20 = icmp sgt i64 %19, 3
  br i1 %20, label %21, label %38

21:                                               ; preds = %18
  %22 = getelementptr inbounds i8, ptr %1, i64 224
  %23 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %22)
  %24 = getelementptr inbounds i8, ptr %23, i64 56
  %25 = load i64, ptr %24, align 8, !tbaa !32
  %26 = icmp eq i64 %25, 0
  br i1 %26, label %27, label %33

27:                                               ; preds = %21
  %28 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %22)
  %29 = getelementptr inbounds i8, ptr %28, i64 64
  %30 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %22)
  %31 = getelementptr inbounds i8, ptr %30, i64 112
  %32 = tail call noundef i64 @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_E3AddERKS4_(ptr noundef nonnull align 8 dereferenceable(33) %29, ptr noundef nonnull align 8 dereferenceable(8) %31)
  br label %33

33:                                               ; preds = %27, %21
  %34 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %22)
  %35 = getelementptr inbounds i8, ptr %34, i64 56
  %36 = load i64, ptr %35, align 8, !tbaa !32
  %37 = add nsw i64 %36, 1
  store i64 %37, ptr %35, align 8, !tbaa !32
  br label %38

38:                                               ; preds = %33, %18
  tail call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultC2ENS3_14TransitionTypeE(ptr noundef nonnull align 8 dereferenceable(160) %0, i32 noundef 0)
  %39 = load i64, ptr %2, align 8, !tbaa !22
  %40 = getelementptr inbounds i8, ptr %0, i64 64
  store i64 %39, ptr %40, align 8, !tbaa !33
  %41 = getelementptr inbounds i8, ptr %0, i64 96
  store ptr %3, ptr %41, align 8, !tbaa !38
  br i1 %.not, label %46, label %42

42:                                               ; preds = %38
  %43 = getelementptr inbounds i8, ptr %1, i64 136
  %44 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling18ParsingTokenWalkerEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %43)
  %45 = invoke noundef i64 @_ZNK2vl7parsing7tabling18ParsingTokenWalker21GetTokenIndexInStreamEv(ptr noundef nonnull align 8 dereferenceable(104) %44)
          to label %46 unwind label %63

46:                                               ; preds = %38, %42
  %47 = phi i64 [ %45, %42 ], [ -1, %38 ]
  %48 = getelementptr inbounds i8, ptr %0, i64 88
  store i64 %47, ptr %48, align 8, !tbaa !39
  %49 = getelementptr inbounds i8, ptr %1, i64 224
  %50 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %51 = getelementptr inbounds i8, ptr %50, i64 48
  %52 = load i64, ptr %51, align 8, !tbaa !40
  %53 = getelementptr inbounds i8, ptr %0, i64 72
  store i64 %52, ptr %53, align 8, !tbaa !41
  %54 = getelementptr inbounds i8, ptr %2, i64 8
  %55 = load i64, ptr %54, align 8, !tbaa !42
  %56 = getelementptr inbounds i8, ptr %0, i64 80
  store i64 %55, ptr %56, align 8, !tbaa !43
  %57 = getelementptr inbounds i8, ptr %0, i64 104
  store ptr %2, ptr %57, align 8, !tbaa !44
  %58 = getelementptr inbounds i8, ptr %0, i64 112
  store i64 %4, ptr %58, align 8, !tbaa !45
  %59 = getelementptr inbounds i8, ptr %0, i64 120
  store i64 %5, ptr %59, align 8, !tbaa !46
  %60 = add nsw i64 %5, %4
  %61 = icmp sgt i64 %5, 0
  br i1 %61, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %46
  %62 = getelementptr inbounds i8, ptr %2, i64 112
  br label %65

._crit_edge:                                      ; preds = %126, %46
  br i1 %.not, label %132, label %129

63:                                               ; preds = %154, %143, %135, %42
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %165

65:                                               ; preds = %.lr.ph, %126
  %.040 = phi i64 [ %4, %.lr.ph ], [ %127, %126 ]
  %66 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %62, i64 noundef %.040)
          to label %67 unwind label %69

67:                                               ; preds = %65
  %68 = load i32, ptr %66, align 8, !tbaa !47
  switch i32 %68, label %126 [
    i32 5, label %71
    i32 6, label %84
    i32 7, label %116
  ]

69:                                               ; preds = %116, %105, %97, %90, %84, %75, %71, %65
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %165

71:                                               ; preds = %67
  %72 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %73 = getelementptr inbounds i8, ptr %66, i64 8
  %74 = invoke noundef i64 @_ZN2vl11collections4ListIllE3AddERKl(ptr noundef nonnull align 8 dereferenceable(33) %72, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %75 unwind label %69

75:                                               ; preds = %71
  %76 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %77 = getelementptr inbounds i8, ptr %76, i64 64
  %78 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %79 = getelementptr inbounds i8, ptr %78, i64 112
  %80 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_E3AddERKS4_(ptr noundef nonnull align 8 dereferenceable(33) %77, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %81 unwind label %69

81:                                               ; preds = %75
  %82 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %83 = getelementptr inbounds i8, ptr %82, i64 112
  store ptr %3, ptr %83, align 8, !tbaa !5
  br label %.sink.split

84:                                               ; preds = %67
  %85 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %86 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %87 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIlE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %86)
  %88 = add nsw i64 %87, -1
  %89 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIllE8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %85, i64 noundef %88)
          to label %90 unwind label %69

90:                                               ; preds = %84
  %91 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %92 = getelementptr inbounds i8, ptr %91, i64 112
  %93 = load ptr, ptr %92, align 8, !tbaa !5
  %94 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %95 = getelementptr inbounds i8, ptr %94, i64 120
  %96 = load ptr, ptr %95, align 8, !tbaa !21
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %93, ptr noundef %96)
          to label %97 unwind label %69

97:                                               ; preds = %90
  %98 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %99 = getelementptr inbounds i8, ptr %98, i64 64
  %100 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %101 = getelementptr inbounds i8, ptr %100, i64 64
  %102 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %101)
  %103 = add nsw i64 %102, -1
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %99, i64 noundef %103)
          to label %105 unwind label %69

105:                                              ; preds = %97
  %106 = load ptr, ptr %104, align 8, !tbaa !50
  %107 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %108 = getelementptr inbounds i8, ptr %107, i64 112
  store ptr %106, ptr %108, align 8, !tbaa !5
  %109 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %110 = getelementptr inbounds i8, ptr %109, i64 64
  %111 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %112 = getelementptr inbounds i8, ptr %111, i64 64
  %113 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %112)
  %114 = add nsw i64 %113, -1
  %115 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_E8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %110, i64 noundef %114)
          to label %126 unwind label %69

116:                                              ; preds = %67
  %117 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %118 = getelementptr inbounds i8, ptr %117, i64 112
  %119 = load ptr, ptr %118, align 8, !tbaa !5
  %120 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %121 = getelementptr inbounds i8, ptr %120, i64 120
  %122 = load ptr, ptr %121, align 8, !tbaa !21
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %119, ptr noundef %122)
          to label %123 unwind label %69

123:                                              ; preds = %116
  br i1 %.not, label %126, label %.sink.split

.sink.split:                                      ; preds = %123, %81
  %124 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %125 = getelementptr inbounds i8, ptr %124, i64 120
  store ptr %3, ptr %125, align 8, !tbaa !21
  br label %126

126:                                              ; preds = %.sink.split, %67, %123, %105
  %127 = add nsw i64 %.040, 1
  %128 = icmp slt i64 %127, %60
  br i1 %128, label %65, label %._crit_edge, !llvm.loop !51

129:                                              ; preds = %._crit_edge
  %130 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %131 = getelementptr inbounds i8, ptr %130, i64 120
  store ptr %3, ptr %131, align 8, !tbaa !21
  br label %132

132:                                              ; preds = %129, %._crit_edge
  %133 = load i64, ptr %2, align 8, !tbaa !22
  %134 = icmp eq i64 %133, 1
  %brmerge.not = and i1 %134, %6
  br i1 %brmerge.not, label %135, label %161

135:                                              ; preds = %132
  %136 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %137 = getelementptr inbounds i8, ptr %136, i64 64
  %138 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %139 = getelementptr inbounds i8, ptr %138, i64 64
  %140 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %139)
  %141 = add nsw i64 %140, -1
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %137, i64 noundef %141)
          to label %143 unwind label %63

143:                                              ; preds = %135
  %144 = load ptr, ptr %142, align 8, !tbaa !50
  %145 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %146 = getelementptr inbounds i8, ptr %145, i64 112
  store ptr %144, ptr %146, align 8, !tbaa !5
  %147 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %148 = getelementptr inbounds i8, ptr %147, i64 64
  %149 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %150 = getelementptr inbounds i8, ptr %149, i64 64
  %151 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %150)
  %152 = add nsw i64 %151, -1
  %153 = invoke noundef zeroext i1 @_ZN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_E8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33) %148, i64 noundef %152)
          to label %154 unwind label %63

154:                                              ; preds = %143
  %155 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %156 = getelementptr inbounds i8, ptr %155, i64 112
  %157 = load ptr, ptr %156, align 8, !tbaa !5
  %158 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %159 = getelementptr inbounds i8, ptr %158, i64 120
  %160 = load ptr, ptr %159, align 8, !tbaa !21
  invoke void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %157, ptr noundef %160)
          to label %161 unwind label %63

161:                                              ; preds = %132, %154
  %162 = load i64, ptr %54, align 8, !tbaa !42
  %163 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing7tabling12ParsingState10StateGroupEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %49)
  %164 = getelementptr inbounds i8, ptr %163, i64 48
  store i64 %162, ptr %164, align 8, !tbaa !40
  ret void

165:                                              ; preds = %69, %63
  %.pn = phi { ptr, i32 } [ %70, %69 ], [ %64, %63 ]
  tail call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %0) #3
  resume { ptr, i32 } %.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN2vl11collections8ListBaseIllE8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_E3AddERKS4_(ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing7tabling12ParsingState16TransitionResult19AddShiftReduceRangeEPNS_5regex10RegexTokenES6_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_5regex10RegexTokenES4_EixEl(ptr noundef nonnull align 8 dereferenceable(33), i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_E8RemoveAtEl(ptr noundef nonnull align 8 dereferenceable(33), i64 noundef) local_unnamed_addr #1 align 2

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 112}
!6 = !{!"_ZTSN2vl7parsing7tabling12ParsingState10StateGroupE", !7, i64 0, !15, i64 48, !15, i64 56, !17, i64 64, !12, i64 112, !12, i64 120}
!7 = !{!"_ZTSN2vl11collections4ListIllEE", !8, i64 0}
!8 = !{!"_ZTSN2vl11collections8ListBaseIllEE", !9, i64 0, !15, i64 24, !16, i64 32}
!9 = !{!"_ZTSN2vl11collections9ArrayBaseIlEE", !10, i64 0, !12, i64 8, !15, i64 16}
!10 = !{!"_ZTSN2vl11collections9ListStoreIlLb1EEE", !11, i64 0}
!11 = !{!"_ZTSN2vl6ObjectE"}
!12 = !{!"any pointer", !13, i64 0}
!13 = !{!"omnipotent char", !14, i64 0}
!14 = !{!"Simple C++ TBAA"}
!15 = !{!"long", !13, i64 0}
!16 = !{!"bool", !13, i64 0}
!17 = !{!"_ZTSN2vl11collections4ListIPNS_5regex10RegexTokenES4_EE", !18, i64 0}
!18 = !{!"_ZTSN2vl11collections8ListBaseIPNS_5regex10RegexTokenES4_EE", !19, i64 0, !15, i64 24, !16, i64 32}
!19 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_5regex10RegexTokenEEE", !20, i64 0, !12, i64 8, !15, i64 16}
!20 = !{!"_ZTSN2vl11collections9ListStoreIPNS_5regex10RegexTokenELb1EEE", !11, i64 0}
!21 = !{!6, !12, i64 120}
!22 = !{!23, !15, i64 0}
!23 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable14TransitionItemE", !15, i64 0, !15, i64 8, !24, i64 16, !7, i64 64, !28, i64 112}
!24 = !{!"_ZTSN2vl11collections4ListINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEPS6_EE", !25, i64 0}
!25 = !{!"_ZTSN2vl11collections8ListBaseINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEPS6_EE", !26, i64 0, !15, i64 24, !16, i64 32}
!26 = !{!"_ZTSN2vl11collections9ArrayBaseINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEEEE", !27, i64 0, !12, i64 8, !15, i64 16}
!27 = !{!"_ZTSN2vl11collections9ListStoreINS_3PtrINS_7parsing7tabling12ParsingTable13LookAheadInfoEEELb0EEE", !11, i64 0}
!28 = !{!"_ZTSN2vl11collections4ListINS_7parsing7tabling12ParsingTable11InstructionES5_EE", !29, i64 0}
!29 = !{!"_ZTSN2vl11collections8ListBaseINS_7parsing7tabling12ParsingTable11InstructionES5_EE", !30, i64 0, !15, i64 24, !16, i64 32}
!30 = !{!"_ZTSN2vl11collections9ArrayBaseINS_7parsing7tabling12ParsingTable11InstructionEEE", !31, i64 0, !12, i64 8, !15, i64 16}
!31 = !{!"_ZTSN2vl11collections9ListStoreINS_7parsing7tabling12ParsingTable11InstructionELb0EEE", !11, i64 0}
!32 = !{!6, !15, i64 56}
!33 = !{!34, !15, i64 64}
!34 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResultE", !35, i64 0, !15, i64 8, !36, i64 16, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !12, i64 96, !12, i64 104, !15, i64 112, !15, i64 120, !37, i64 128}
!35 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResult14TransitionTypeE", !13, i64 0}
!36 = !{!"_ZTSN2vl12ObjectStringIwEE", !11, i64 0, !12, i64 8, !12, i64 16, !15, i64 24, !15, i64 32, !15, i64 40}
!37 = !{!"_ZTSN2vl3PtrINS_11collections4ListINS_7parsing7tabling12ParsingState16ShiftReduceRangeES6_EEEE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!38 = !{!34, !12, i64 96}
!39 = !{!34, !15, i64 88}
!40 = !{!6, !15, i64 48}
!41 = !{!34, !15, i64 72}
!42 = !{!23, !15, i64 8}
!43 = !{!34, !15, i64 80}
!44 = !{!34, !12, i64 104}
!45 = !{!34, !15, i64 112}
!46 = !{!34, !15, i64 120}
!47 = !{!48, !49, i64 0}
!48 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable11InstructionE", !49, i64 0, !15, i64 8, !36, i64 16, !36, i64 64, !36, i64 112}
!49 = !{!"_ZTSN2vl7parsing7tabling12ParsingTable11Instruction15InstructionTypeE", !13, i64 0}
!50 = !{!12, !12, i64 0}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}


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