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

%"class.vl::ObjectString" = type { %"class.vl::Object", ptr, ptr, i64, i64, i64 }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.137" = type { ptr, ptr, ptr, ptr }
%"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::Ptr.140" = type { ptr, ptr, ptr, ptr }
%"class.vl::regex::RegexToken" = type { i64, i64, i64, ptr, i64, i8, i64, i64, i64, i64 }

@.str.94 = external hidden unnamed_addr constant [24 x i32], align 4
@.str.95 = external hidden unnamed_addr constant [3 x i32], align 4
@.str.96 = external hidden unnamed_addr constant [29 x i32], align 4
@.str.97 = external hidden unnamed_addr constant [60 x i32], align 4
@.str.98 = external hidden unnamed_addr constant [47 x i32], align 4

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2vl12ObjectStringIwEplERKS1_(ptr dead_on_unwind noalias writable sret(%"class.vl::ObjectString") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #2 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vlplEPKwRKNS_12ObjectStringIwEE(ptr dead_on_unwind noalias writable sret(%"class.vl::ObjectString") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(48)) #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN2vl7parsing7tabling20ParsingGeneralParser5ParseERNS1_12ParsingStateERNS1_26ParsingTransitionProcessorERNS_11collections4ListINS_3PtrINS0_12ParsingErrorEEEPSA_EE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(33) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.vl::Ptr.137", align 8
  %13 = alloca %"class.vl::ObjectString", align 8
  %14 = alloca %"class.vl::ObjectString", align 8
  %15 = alloca %"class.vl::ObjectString", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.vl::ObjectString", align 8
  %19 = alloca i1, align 1
  %20 = alloca %"struct.vl::parsing::tabling::ParsingState::TransitionResult", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.vl::Ptr.137", align 8
  %23 = alloca %"class.vl::ObjectString", align 8
  %24 = alloca i1, align 1
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"class.vl::Ptr.137", align 8
  %28 = alloca %"class.vl::ObjectString", align 8
  %29 = alloca i1, align 1
  %30 = alloca ptr, align 8
  %31 = alloca %"class.vl::Ptr.137", align 8
  %32 = alloca %"class.vl::ObjectString", align 8
  %33 = alloca i1, align 1
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %34 = load ptr, ptr %6, align 8
  %35 = load ptr, ptr %34, align 8, !tbaa !9
  %36 = getelementptr inbounds ptr, ptr %35, i64 2
  %37 = load ptr, ptr %36, align 8
  call void %37(ptr noundef nonnull align 8 dereferenceable(40) %34)
  %38 = load ptr, ptr %8, align 8, !tbaa !5
  %39 = load ptr, ptr %38, align 8, !tbaa !9
  %40 = getelementptr inbounds ptr, ptr %39, i64 2
  %41 = load ptr, ptr %40, align 8
  call void %41(ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %42

42:                                               ; preds = %114, %4
  %43 = load i64, ptr %10, align 8, !tbaa !11
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZN2vl7parsing7tabling12ParsingState9GetTokensEv(ptr noundef nonnull align 8 dereferenceable(256) %44)
  %46 = call noundef i64 @_ZNK2vl11collections9ArrayBaseINS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %45)
  %47 = icmp slt i64 %43, %46
  br i1 %47, label %49, label %48

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

49:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZN2vl7parsing7tabling12ParsingState9GetTokensEv(ptr noundef nonnull align 8 dereferenceable(256) %50)
  %52 = load i64, ptr %10, align 8, !tbaa !11
  %53 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK2vl11collections9ArrayBaseINS_5regex10RegexTokenEE3GetEl(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %52)
  store ptr %53, ptr %11, align 8, !tbaa !5
  %54 = load ptr, ptr %11, align 8, !tbaa !5
  %55 = getelementptr inbounds %"class.vl::regex::RegexToken", ptr %54, i32 0, i32 2
  %56 = load i64, ptr %55, align 8, !tbaa !13
  %57 = icmp eq i64 %56, -1
  br i1 %57, label %63, label %58

58:                                               ; preds = %49
  %59 = load ptr, ptr %11, align 8, !tbaa !5
  %60 = getelementptr inbounds %"class.vl::regex::RegexToken", ptr %59, i32 0, i32 5
  %61 = load i8, ptr %60, align 8, !tbaa !16, !range !17, !noundef !18
  %62 = trunc i8 %61 to i1
  br i1 %62, label %113, label %63

63:                                               ; preds = %58, %49
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  %65 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #7
  store i1 true, ptr %19, align 1
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %15) #6
  %67 = load ptr, ptr %11, align 8, !tbaa !5
  %68 = getelementptr inbounds %"class.vl::regex::RegexToken", ptr %67, i32 0, i32 3
  %69 = load ptr, ptr %68, align 8, !tbaa !19
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %"class.vl::regex::RegexToken", ptr %70, i32 0, i32 1
  %72 = load i64, ptr %71, align 8, !tbaa !20
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwl(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef %69, i64 noundef %72)
          to label %73 unwind label %81

73:                                               ; preds = %63
  invoke void @_ZN2vlplEPKwRKNS_12ObjectStringIwEE(ptr dead_on_unwind writable sret(%"class.vl::ObjectString") align 8 %14, ptr noundef @.str.94, ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %74 unwind label %85

74:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef @.str.95, i1 noundef zeroext true)
          to label %75 unwind label %89

75:                                               ; preds = %74
  invoke void @_ZNK2vl12ObjectStringIwEplERKS1_(ptr dead_on_unwind writable sret(%"class.vl::ObjectString") align 8 %13, ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %76 unwind label %93

76:                                               ; preds = %75
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %65, ptr noundef %66, ptr noundef nonnull align 8 dereferenceable(48) %13)
          to label %77 unwind label %97

77:                                               ; preds = %76
  store i1 false, ptr %19, align 1
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %65)
          to label %78 unwind label %97

78:                                               ; preds = %77
  %79 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %64, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %80 unwind label %101

80:                                               ; preds = %78
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  br label %113

81:                                               ; preds = %63
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %16, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %17, align 4
  br label %109

85:                                               ; preds = %73
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %16, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %17, align 4
  br label %108

89:                                               ; preds = %74
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %16, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %17, align 4
  br label %107

93:                                               ; preds = %75
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %16, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %17, align 4
  br label %106

97:                                               ; preds = %77, %76
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %16, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %17, align 4
  br label %105

101:                                              ; preds = %78
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %16, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %17, align 4
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %105

105:                                              ; preds = %101, %97
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %13) #6
  br label %106

106:                                              ; preds = %105, %93
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #6
  br label %107

107:                                              ; preds = %106, %89
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  br label %108

108:                                              ; preds = %107, %85
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #6
  br label %109

109:                                              ; preds = %108, %81
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #6
  %110 = load i1, ptr %19, align 1
  br i1 %110, label %111, label %112

111:                                              ; preds = %109
  call void @_ZdlPvm(ptr noundef %65, i64 noundef 208) #8
  br label %112

112:                                              ; preds = %111, %109
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br label %300

113:                                              ; preds = %80, %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  br label %114

114:                                              ; preds = %113
  %115 = load i64, ptr %10, align 8, !tbaa !11
  %116 = add nsw i64 %115, 1
  store i64 %116, ptr %10, align 8, !tbaa !11
  br label %42, !llvm.loop !21

117:                                              ; preds = %48
  br label %118

118:                                              ; preds = %295, %293, %117
  call void @llvm.lifetime.start.p0(i64 160, ptr %20) #6
  %119 = load ptr, ptr %7, align 8, !tbaa !5
  %120 = load ptr, ptr %9, align 8, !tbaa !5
  %121 = load ptr, ptr %34, align 8, !tbaa !9
  %122 = getelementptr inbounds ptr, ptr %121, i64 3
  %123 = load ptr, ptr %122, align 8
  call void %123(ptr dead_on_unwind writable sret(%"struct.vl::parsing::tabling::ParsingState::TransitionResult") align 8 %20, ptr noundef nonnull align 8 dereferenceable(40) %34, ptr noundef nonnull align 8 dereferenceable(256) %119, ptr noundef nonnull align 8 dereferenceable(33) %120)
  %124 = invoke noundef zeroext i1 @_ZNK2vl7parsing7tabling12ParsingState16TransitionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(160) %20)
          to label %125 unwind label %142

125:                                              ; preds = %118
  br i1 %124, label %173, label %126

126:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %127 = load ptr, ptr %7, align 8, !tbaa !5
  %128 = load ptr, ptr %7, align 8, !tbaa !5
  %129 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %128)
          to label %130 unwind label %146

130:                                              ; preds = %126
  %131 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %127, i64 noundef %129)
          to label %132 unwind label %146

132:                                              ; preds = %130
  store ptr %131, ptr %21, align 8, !tbaa !5
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  %134 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #7
          to label %135 unwind label %150

135:                                              ; preds = %132
  store i1 true, ptr %24, align 1
  %136 = load ptr, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef @.str.96, i1 noundef zeroext true)
          to label %137 unwind label %154

137:                                              ; preds = %135
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %134, ptr noundef %136, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %138 unwind label %158

138:                                              ; preds = %137
  store i1 false, ptr %24, align 1
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %134)
          to label %139 unwind label %158

139:                                              ; preds = %138
  %140 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %133, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %141 unwind label %162

141:                                              ; preds = %139
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  store i1 false, ptr %5, align 1
  store i32 1, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %293

142:                                              ; preds = %284, %228, %225, %177, %118
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %16, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %17, align 4
  br label %296

146:                                              ; preds = %130, %126
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %16, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %17, align 4
  br label %172

150:                                              ; preds = %132
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %16, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %17, align 4
  br label %171

154:                                              ; preds = %135
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %16, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %17, align 4
  br label %167

158:                                              ; preds = %138, %137
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %16, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %17, align 4
  br label %166

162:                                              ; preds = %139
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %16, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %17, align 4
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %166

166:                                              ; preds = %162, %158
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #6
  br label %167

167:                                              ; preds = %166, %154
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #6
  %168 = load i1, ptr %24, align 1
  br i1 %168, label %169, label %170

169:                                              ; preds = %167
  call void @_ZdlPvm(ptr noundef %134, i64 noundef 208) #8
  br label %170

170:                                              ; preds = %169, %167
  br label %171

171:                                              ; preds = %170, %150
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %172

172:                                              ; preds = %171, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %296

173:                                              ; preds = %125
  %174 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %20, i32 0, i32 0
  %175 = load i32, ptr %174, align 8, !tbaa !23
  %176 = icmp eq i32 %175, 4
  br i1 %176, label %177, label %228

177:                                              ; preds = %173
  %178 = load ptr, ptr %7, align 8, !tbaa !5
  %179 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState25GetCurrentTableTokenIndexEv(ptr noundef nonnull align 8 dereferenceable(256) %178)
          to label %180 unwind label %142

180:                                              ; preds = %177
  %181 = icmp eq i64 %179, 1
  br i1 %181, label %182, label %225

182:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = load ptr, ptr %7, align 8, !tbaa !5
  %185 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %184)
          to label %186 unwind label %198

186:                                              ; preds = %182
  %187 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %183, i64 noundef %185)
          to label %188 unwind label %198

188:                                              ; preds = %186
  store ptr %187, ptr %26, align 8, !tbaa !5
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  %190 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #7
          to label %191 unwind label %202

191:                                              ; preds = %188
  store i1 true, ptr %29, align 1
  %192 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %28) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef @.str.97, i1 noundef zeroext true)
          to label %193 unwind label %206

193:                                              ; preds = %191
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %190, ptr noundef %192, ptr noundef nonnull align 8 dereferenceable(48) %28)
          to label %194 unwind label %210

194:                                              ; preds = %193
  store i1 false, ptr %29, align 1
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef %190)
          to label %195 unwind label %210

195:                                              ; preds = %194
  %196 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %189, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %197 unwind label %214

197:                                              ; preds = %195
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  store i1 false, ptr %5, align 1
  store i32 1, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %293

198:                                              ; preds = %186, %182
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %16, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %17, align 4
  br label %224

202:                                              ; preds = %188
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %16, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %17, align 4
  br label %223

206:                                              ; preds = %191
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %16, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %17, align 4
  br label %219

210:                                              ; preds = %194, %193
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %16, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %17, align 4
  br label %218

214:                                              ; preds = %195
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %16, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %17, align 4
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %218

218:                                              ; preds = %214, %210
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #6
  br label %219

219:                                              ; preds = %218, %206
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #6
  %220 = load i1, ptr %29, align 1
  br i1 %220, label %221, label %222

221:                                              ; preds = %219
  call void @_ZdlPvm(ptr noundef %190, i64 noundef 208) #8
  br label %222

222:                                              ; preds = %221, %219
  br label %223

223:                                              ; preds = %222, %202
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %224

224:                                              ; preds = %223, %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %296

225:                                              ; preds = %180
  %226 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN2vl7parsing7tabling12ParsingState16SkipCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %226)
          to label %227 unwind label %142

227:                                              ; preds = %225
  store i32 5, ptr %25, align 4
  br label %293, !llvm.loop !29

228:                                              ; preds = %173
  %229 = load ptr, ptr %8, align 8, !tbaa !5
  %230 = load ptr, ptr %229, align 8, !tbaa !9
  %231 = getelementptr inbounds ptr, ptr %230, i64 3
  %232 = load ptr, ptr %231, align 8
  %233 = invoke noundef zeroext i1 %232(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull align 8 dereferenceable(160) %20)
          to label %234 unwind label %142

234:                                              ; preds = %228
  br i1 %233, label %278, label %235

235:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %236 = load ptr, ptr %7, align 8, !tbaa !5
  %237 = load ptr, ptr %7, align 8, !tbaa !5
  %238 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %237)
          to label %239 unwind label %251

239:                                              ; preds = %235
  %240 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %236, i64 noundef %238)
          to label %241 unwind label %251

241:                                              ; preds = %239
  store ptr %240, ptr %30, align 8, !tbaa !5
  %242 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #6
  %243 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #7
          to label %244 unwind label %255

244:                                              ; preds = %241
  store i1 true, ptr %33, align 1
  %245 = load ptr, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %32) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %32, ptr noundef @.str.98, i1 noundef zeroext true)
          to label %246 unwind label %259

246:                                              ; preds = %244
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %243, ptr noundef %245, ptr noundef nonnull align 8 dereferenceable(48) %32)
          to label %247 unwind label %263

247:                                              ; preds = %246
  store i1 false, ptr %33, align 1
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %243)
          to label %248 unwind label %263

248:                                              ; preds = %247
  %249 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %242, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %250 unwind label %267

250:                                              ; preds = %248
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  store i1 false, ptr %5, align 1
  store i32 1, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %293

251:                                              ; preds = %239, %235
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %16, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %17, align 4
  br label %277

255:                                              ; preds = %241
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %16, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %17, align 4
  br label %276

259:                                              ; preds = %244
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %16, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %17, align 4
  br label %272

263:                                              ; preds = %247, %246
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %16, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %17, align 4
  br label %271

267:                                              ; preds = %248
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %16, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %17, align 4
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %271

271:                                              ; preds = %267, %263
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #6
  br label %272

272:                                              ; preds = %271, %259
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #6
  %273 = load i1, ptr %33, align 1
  br i1 %273, label %274, label %275

274:                                              ; preds = %272
  call void @_ZdlPvm(ptr noundef %243, i64 noundef 208) #8
  br label %275

275:                                              ; preds = %274, %272
  br label %276

276:                                              ; preds = %275, %255
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  br label %277

277:                                              ; preds = %276, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %296

278:                                              ; preds = %234
  br label %279

279:                                              ; preds = %278
  br label %280

280:                                              ; preds = %279
  %281 = getelementptr inbounds %"struct.vl::parsing::tabling::ParsingState::TransitionResult", ptr %20, i32 0, i32 3
  %282 = load i64, ptr %281, align 8, !tbaa !30
  %283 = icmp eq i64 %282, 1
  br i1 %283, label %284, label %292

284:                                              ; preds = %280
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = load ptr, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds ptr, ptr %286, i64 4
  %288 = load ptr, ptr %287, align 8
  %289 = invoke noundef zeroext i1 %288(ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %290 unwind label %142

290:                                              ; preds = %284
  br i1 %289, label %292, label %291

291:                                              ; preds = %290
  store i32 6, ptr %25, align 4
  br label %293

292:                                              ; preds = %290, %280
  store i32 0, ptr %25, align 4
  br label %293

293:                                              ; preds = %292, %291, %250, %227, %197, %141
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %20) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr %20) #6
  %294 = load i32, ptr %25, align 4
  switch i32 %294, label %305 [
    i32 0, label %295
    i32 1, label %298
    i32 5, label %118
    i32 6, label %297
  ]

295:                                              ; preds = %293
  br label %118, !llvm.loop !29

296:                                              ; preds = %277, %224, %172, %142
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %20) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr %20) #6
  br label %300

297:                                              ; preds = %293
  store i1 true, ptr %5, align 1
  br label %298

298:                                              ; preds = %297, %293
  %299 = load i1, ptr %5, align 1
  ret i1 %299

300:                                              ; preds = %296, %112
  %301 = load ptr, ptr %16, align 8
  %302 = load i32, ptr %17, align 4
  %303 = insertvalue { ptr, i32 } poison, ptr %301, 0
  %304 = insertvalue { ptr, i32 } %303, i32 %302, 1
  resume { ptr, i32 } %304

305:                                              ; preds = %293
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl12ObjectStringIwEC2EPKwl(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i64 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef, ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

attributes #0 = { nobuiltin 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress 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 #6 = { nounwind }
attributes #7 = { builtin allocsize(0) }
attributes #8 = { builtin 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 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !12, i64 16}
!14 = !{!"_ZTSN2vl5regex10RegexTokenE", !12, i64 0, !12, i64 8, !12, i64 16, !6, i64 24, !12, i64 32, !15, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72}
!15 = !{!"bool", !7, i64 0}
!16 = !{!14, !15, i64 40}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!14, !6, i64 24}
!20 = !{!14, !12, i64 8}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !25, i64 0}
!24 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResultE", !25, i64 0, !12, i64 8, !26, i64 16, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !6, i64 96, !6, i64 104, !12, i64 112, !12, i64 120, !28, i64 128}
!25 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResult14TransitionTypeE", !7, i64 0}
!26 = !{!"_ZTSN2vl12ObjectStringIwEE", !27, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !12, i64 32, !12, i64 40}
!27 = !{!"_ZTSN2vl6ObjectE"}
!28 = !{!"_ZTSN2vl3PtrINS_11collections4ListINS_7parsing7tabling12ParsingState16ShiftReduceRangeES6_EEEE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!29 = distinct !{!29, !22}
!30 = !{!24, !12, i64 64}


; 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.vl::ObjectString" = type { %"class.vl::Object", ptr, ptr, i64, i64, i64 }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.137" = type { ptr, ptr, ptr, ptr }
%"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::Ptr.140" = type { ptr, ptr, ptr, ptr }

@.str.94 = external hidden unnamed_addr constant [24 x i32], align 4
@.str.95 = external hidden unnamed_addr constant [3 x i32], align 4
@.str.96 = external hidden unnamed_addr constant [29 x i32], align 4
@.str.97 = external hidden unnamed_addr constant [60 x i32], align 4
@.str.98 = external hidden unnamed_addr constant [47 x i32], align 4

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK2vl12ObjectStringIwEplERKS1_(ptr dead_on_unwind noalias writable sret(%"class.vl::ObjectString") align 8, ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vlplEPKwRKNS_12ObjectStringIwEE(ptr dead_on_unwind noalias writable sret(%"class.vl::ObjectString") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN2vl7parsing7tabling20ParsingGeneralParser5ParseERNS1_12ParsingStateERNS1_26ParsingTransitionProcessorERNS_11collections4ListINS_3PtrINS0_12ParsingErrorEEEPSA_EE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(33) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.vl::Ptr.137", align 8
  %6 = alloca %"class.vl::ObjectString", align 8
  %7 = alloca %"class.vl::ObjectString", align 8
  %8 = alloca %"class.vl::ObjectString", align 8
  %9 = alloca %"class.vl::ObjectString", align 8
  %10 = alloca %"struct.vl::parsing::tabling::ParsingState::TransitionResult", align 8
  %11 = alloca %"class.vl::Ptr.137", align 8
  %12 = alloca %"class.vl::ObjectString", align 8
  %13 = alloca %"class.vl::Ptr.137", align 8
  %14 = alloca %"class.vl::ObjectString", align 8
  %15 = alloca %"class.vl::Ptr.137", align 8
  %16 = alloca %"class.vl::ObjectString", align 8
  %17 = load ptr, ptr %0, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %17, i64 16
  %19 = load ptr, ptr %18, align 8
  tail call void %19(ptr noundef nonnull align 8 dereferenceable(40) %0)
  %20 = load ptr, ptr %2, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 16
  %22 = load ptr, ptr %21, align 8
  tail call void %22(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %23 = tail call noundef nonnull align 8 dereferenceable(33) ptr @_ZN2vl7parsing7tabling12ParsingState9GetTokensEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
  %24 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseINS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %23)
  %25 = icmp sgt i64 %24, 0
  br i1 %25, label %.lr.ph, label %.preheader

.preheader:                                       ; preds = %69, %4
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %10) #6
  %26 = load ptr, ptr %0, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %26, i64 24
  %28 = load ptr, ptr %27, align 8
  call void %28(ptr dead_on_unwind nonnull writable sret(%"struct.vl::parsing::tabling::ParsingState::TransitionResult") align 8 %10, ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(33) %3)
  %29 = call noundef zeroext i1 @_ZNK2vl7parsing7tabling12ParsingState16TransitionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(160) %10)
  br i1 %29, label %.lr.ph143, label %._crit_edge

.lr.ph143:                                        ; preds = %.preheader
  %30 = getelementptr inbounds i8, ptr %10, i64 64
  br label %98

.lr.ph:                                           ; preds = %4, %69
  %.044142 = phi i64 [ %70, %69 ], [ 0, %4 ]
  %31 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZN2vl7parsing7tabling12ParsingState9GetTokensEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
  %32 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK2vl11collections9ArrayBaseINS_5regex10RegexTokenEE3GetEl(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %.044142)
  %33 = getelementptr inbounds i8, ptr %32, i64 16
  %34 = load i64, ptr %33, align 8, !tbaa !8
  %35 = icmp eq i64 %34, -1
  br i1 %35, label %40, label %36

36:                                               ; preds = %.lr.ph
  %37 = getelementptr inbounds i8, ptr %32, i64 40
  %38 = load i8, ptr %37, align 8, !tbaa !14, !range !15, !noundef !16
  %39 = trunc nuw i8 %38 to i1
  br i1 %39, label %69, label %40

40:                                               ; preds = %36, %.lr.ph
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  %41 = call noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) #6
  %42 = getelementptr inbounds i8, ptr %32, i64 24
  %43 = load ptr, ptr %42, align 8, !tbaa !17
  %44 = getelementptr inbounds i8, ptr %32, i64 8
  %45 = load i64, ptr %44, align 8, !tbaa !18
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwl(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef %43, i64 noundef %45)
          to label %46 unwind label %.thread

46:                                               ; preds = %40
  invoke void @_ZN2vlplEPKwRKNS_12ObjectStringIwEE(ptr dead_on_unwind nonnull writable sret(%"class.vl::ObjectString") align 8 %7, ptr noundef nonnull @.str.94, ptr noundef nonnull align 8 dereferenceable(48) %8)
          to label %47 unwind label %.thread103

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull @.str.95, i1 noundef zeroext true)
          to label %48 unwind label %56

48:                                               ; preds = %47
  invoke void @_ZNK2vl12ObjectStringIwEplERKS1_(ptr dead_on_unwind nonnull writable sret(%"class.vl::ObjectString") align 8 %6, ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(48) %9)
          to label %49 unwind label %58

49:                                               ; preds = %48
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %41, ptr noundef nonnull %32, ptr noundef nonnull align 8 dereferenceable(48) %6)
          to label %50 unwind label %60

50:                                               ; preds = %49
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %41)
          to label %51 unwind label %60

51:                                               ; preds = %50
  %52 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %3, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %53 unwind label %62

53:                                               ; preds = %51
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %6) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %69

.thread:                                          ; preds = %40
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #6
  br label %67

.thread103:                                       ; preds = %46
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #6
  br label %67

56:                                               ; preds = %47
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %66

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

60:                                               ; preds = %50, %49
  %.052 = phi i1 [ false, %50 ], [ true, %49 ]
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %64

62:                                               ; preds = %51
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %64

64:                                               ; preds = %62, %60
  %.pn92 = phi { ptr, i32 } [ %63, %62 ], [ %61, %60 ]
  %.153 = phi i1 [ false, %62 ], [ %.052, %60 ]
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %6) #6
  br label %65

65:                                               ; preds = %64, %58
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %64 ], [ %59, %58 ]
  %.254 = phi i1 [ %.153, %64 ], [ true, %58 ]
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #6
  br label %66

66:                                               ; preds = %56, %65
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %65 ], [ %57, %56 ]
  %.355 = phi i1 [ %.254, %65 ], [ true, %56 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #6
  br i1 %.355, label %67, label %68

67:                                               ; preds = %.thread103, %.thread, %66
  %.pn92.pn.pn.pn.pn102 = phi { ptr, i32 } [ %54, %.thread ], [ %.pn92.pn.pn, %66 ], [ %55, %.thread103 ]
  call void @_ZdlPvm(ptr noundef nonnull %41, i64 noundef 208) #8
  br label %68

68:                                               ; preds = %67, %66
  %.pn92.pn.pn.pn.pn101 = phi { ptr, i32 } [ %.pn92.pn.pn.pn.pn102, %67 ], [ %.pn92.pn.pn, %66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %175

69:                                               ; preds = %53, %36
  %70 = add nuw nsw i64 %.044142, 1
  %71 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZN2vl7parsing7tabling12ParsingState9GetTokensEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
  %72 = call noundef i64 @_ZNK2vl11collections9ArrayBaseINS_5regex10RegexTokenEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %71)
  %73 = icmp slt i64 %70, %72
  br i1 %73, label %.lr.ph, label %.preheader, !llvm.loop !19

._crit_edge:                                      ; preds = %167, %.preheader
  %74 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
          to label %75 unwind label %88

75:                                               ; preds = %._crit_edge
  %76 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %1, i64 noundef %74)
          to label %77 unwind label %88

77:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  %78 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #7
          to label %79 unwind label %90

79:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull @.str.96, i1 noundef zeroext true)
          to label %80 unwind label %.thread106

80:                                               ; preds = %79
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %78, ptr noundef %76, ptr noundef nonnull align 8 dereferenceable(48) %12)
          to label %82 unwind label %.thread113

.thread113:                                       ; preds = %80
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  br label %96

82:                                               ; preds = %80
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %78)
          to label %83 unwind label %94

83:                                               ; preds = %82
  %84 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %3, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %85 unwind label %.thread110

85:                                               ; preds = %83
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %.thread133

86:                                               ; preds = %161, %129, %128, %101
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %172

88:                                               ; preds = %75, %._crit_edge
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %172

90:                                               ; preds = %77
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %97

.thread106:                                       ; preds = %79
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  br label %96

.thread110:                                       ; preds = %83
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  br label %97

94:                                               ; preds = %82
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  br label %97

96:                                               ; preds = %.thread113, %.thread106
  %.pn.pn109 = phi { ptr, i32 } [ %92, %.thread106 ], [ %81, %.thread113 ]
  call void @_ZdlPvm(ptr noundef nonnull %78, i64 noundef 208) #8
  br label %97

97:                                               ; preds = %94, %.thread110, %96, %90
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn109, %96 ], [ %95, %94 ], [ %91, %90 ], [ %93, %.thread110 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %172

98:                                               ; preds = %.lr.ph143, %167
  %99 = load i32, ptr %10, align 8, !tbaa !21
  %100 = icmp eq i32 %99, 4
  br i1 %100, label %101, label %129

101:                                              ; preds = %98
  %102 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState25GetCurrentTableTokenIndexEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
          to label %103 unwind label %86

103:                                              ; preds = %101
  %104 = icmp eq i64 %102, 1
  br i1 %104, label %105, label %128

105:                                              ; preds = %103
  %106 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
          to label %107 unwind label %118

107:                                              ; preds = %105
  %108 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %1, i64 noundef %106)
          to label %109 unwind label %118

109:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  %110 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #7
          to label %111 unwind label %120

111:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull @.str.97, i1 noundef zeroext true)
          to label %112 unwind label %.thread115

112:                                              ; preds = %111
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %110, ptr noundef %108, ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %114 unwind label %.thread122

.thread122:                                       ; preds = %112
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #6
  br label %126

114:                                              ; preds = %112
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull %110)
          to label %115 unwind label %124

115:                                              ; preds = %114
  %116 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %3, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %117 unwind label %.thread119

117:                                              ; preds = %115
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %.thread133

118:                                              ; preds = %107, %105
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %172

120:                                              ; preds = %109
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %127

.thread115:                                       ; preds = %111
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #6
  br label %126

.thread119:                                       ; preds = %115
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #6
  br label %127

124:                                              ; preds = %114
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #6
  br label %127

126:                                              ; preds = %.thread122, %.thread115
  %.pn86.pn118 = phi { ptr, i32 } [ %122, %.thread115 ], [ %113, %.thread122 ]
  call void @_ZdlPvm(ptr noundef nonnull %110, i64 noundef 208) #8
  br label %127

127:                                              ; preds = %124, %.thread119, %126, %120
  %.pn86.pn.pn = phi { ptr, i32 } [ %.pn86.pn118, %126 ], [ %125, %124 ], [ %121, %120 ], [ %123, %.thread119 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %172

128:                                              ; preds = %103
  invoke void @_ZN2vl7parsing7tabling12ParsingState16SkipCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
          to label %167 unwind label %86, !llvm.loop !27

129:                                              ; preds = %98
  %130 = load ptr, ptr %2, align 8, !tbaa !5
  %131 = getelementptr inbounds i8, ptr %130, i64 24
  %132 = load ptr, ptr %131, align 8
  %133 = invoke noundef zeroext i1 %132(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(160) %10)
          to label %134 unwind label %86

134:                                              ; preds = %129
  br i1 %133, label %158, label %135

135:                                              ; preds = %134
  %136 = invoke noundef i64 @_ZN2vl7parsing7tabling12ParsingState15GetCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256) %1)
          to label %137 unwind label %148

137:                                              ; preds = %135
  %138 = invoke noundef ptr @_ZN2vl7parsing7tabling12ParsingState8GetTokenEl(ptr noundef nonnull align 8 dereferenceable(256) %1, i64 noundef %136)
          to label %139 unwind label %148

139:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  %140 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #7
          to label %141 unwind label %150

141:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #6
  invoke void @_ZN2vl12ObjectStringIwEC2EPKwb(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull @.str.98, i1 noundef zeroext true)
          to label %142 unwind label %.thread124

142:                                              ; preds = %141
  invoke void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136) %140, ptr noundef %138, ptr noundef nonnull align 8 dereferenceable(48) %16)
          to label %144 unwind label %.thread131

.thread131:                                       ; preds = %142
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  br label %156

144:                                              ; preds = %142
  invoke void @_ZN2vl3PtrINS_7parsing12ParsingErrorEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull %140)
          to label %145 unwind label %154

145:                                              ; preds = %144
  %146 = invoke noundef i64 @_ZN2vl11collections4ListINS_3PtrINS_7parsing12ParsingErrorEEEPS4_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %3, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %147 unwind label %.thread128

147:                                              ; preds = %145
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %.thread133

148:                                              ; preds = %137, %135
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %172

150:                                              ; preds = %139
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %157

.thread124:                                       ; preds = %141
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  br label %156

.thread128:                                       ; preds = %145
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing12ParsingErrorEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  br label %157

154:                                              ; preds = %144
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl12ObjectStringIwED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  br label %157

156:                                              ; preds = %.thread131, %.thread124
  %.pn81.pn127 = phi { ptr, i32 } [ %152, %.thread124 ], [ %143, %.thread131 ]
  call void @_ZdlPvm(ptr noundef nonnull %140, i64 noundef 208) #8
  br label %157

157:                                              ; preds = %154, %.thread128, %156, %150
  %.pn81.pn.pn = phi { ptr, i32 } [ %.pn81.pn127, %156 ], [ %155, %154 ], [ %151, %150 ], [ %153, %.thread128 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %172

158:                                              ; preds = %134
  %159 = load i64, ptr %30, align 8, !tbaa !28
  %160 = icmp eq i64 %159, 1
  br i1 %160, label %161, label %167

161:                                              ; preds = %158
  %162 = load ptr, ptr %2, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 32
  %164 = load ptr, ptr %163, align 8
  %165 = invoke noundef zeroext i1 %164(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %166 unwind label %86

166:                                              ; preds = %161
  br i1 %165, label %167, label %173

.thread133:                                       ; preds = %117, %147, %85
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %10) #6
  br label %174

167:                                              ; preds = %158, %166, %128
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %10) #6
  %168 = load ptr, ptr %0, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 24
  %170 = load ptr, ptr %169, align 8
  call void %170(ptr dead_on_unwind nonnull writable sret(%"struct.vl::parsing::tabling::ParsingState::TransitionResult") align 8 %10, ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull align 8 dereferenceable(33) %3)
  %171 = call noundef zeroext i1 @_ZNK2vl7parsing7tabling12ParsingState16TransitionResultcvbEv(ptr noundef nonnull align 8 dereferenceable(160) %10)
  br i1 %171, label %98, label %._crit_edge

172:                                              ; preds = %148, %157, %118, %127, %88, %97, %86
  %.pn86.pn.pn.pn.pn = phi { ptr, i32 } [ %87, %86 ], [ %.pn.pn.pn, %97 ], [ %89, %88 ], [ %.pn86.pn.pn, %127 ], [ %119, %118 ], [ %.pn81.pn.pn, %157 ], [ %149, %148 ]
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %10) #6
  br label %175

173:                                              ; preds = %166
  call void @_ZN2vl7parsing7tabling12ParsingState16TransitionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %10) #6
  br label %174

174:                                              ; preds = %.thread133, %173
  %.240 = phi i1 [ true, %173 ], [ false, %.thread133 ]
  ret i1 %.240

175:                                              ; preds = %172, %68
  %.pn92.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn92.pn.pn.pn.pn101, %68 ], [ %.pn86.pn.pn.pn.pn, %172 ]
  resume { ptr, i32 } %.pn92.pn.pn.pn.pn.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl12ObjectStringIwEC2EPKwl(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i64 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing12ParsingErrorC1EPKNS_5regex10RegexTokenERKNS_12ObjectStringIwEE(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef, ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2vl7parsing7tabling12ParsingState16SkipCurrentTokenEv(ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #2 align 2

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

attributes #0 = { nobuiltin 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress 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 #6 = { nounwind }
attributes #7 = { builtin allocsize(0) }
attributes #8 = { builtin 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 16}
!9 = !{!"_ZTSN2vl5regex10RegexTokenE", !10, i64 0, !10, i64 8, !10, i64 16, !12, i64 24, !10, i64 32, !13, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!10 = !{!"long", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"any pointer", !11, i64 0}
!13 = !{!"bool", !11, i64 0}
!14 = !{!9, !13, i64 40}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!9, !12, i64 24}
!18 = !{!9, !10, i64 8}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!22, !23, i64 0}
!22 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResultE", !23, i64 0, !10, i64 8, !24, i64 16, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !12, i64 96, !12, i64 104, !10, i64 112, !10, i64 120, !26, i64 128}
!23 = !{!"_ZTSN2vl7parsing7tabling12ParsingState16TransitionResult14TransitionTypeE", !11, i64 0}
!24 = !{!"_ZTSN2vl12ObjectStringIwEE", !25, i64 0, !12, i64 8, !12, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!25 = !{!"_ZTSN2vl6ObjectE"}
!26 = !{!"_ZTSN2vl3PtrINS_11collections4ListINS_7parsing7tabling12ParsingState16ShiftReduceRangeES6_EEEE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!27 = distinct !{!27, !20}
!28 = !{!22, !10, i64 64}


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