; 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::collections::EnumerableForEachIterator.449" = type { %"class.vl::collections::ForEachIterator.450", %"class.vl::Ptr.451" }
%"class.vl::collections::ForEachIterator.450" = type { %"class.vl::Object" }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.451" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.518" = type { %"class.vl::collections::ForEachIterator.519", %"class.vl::Ptr.520" }
%"class.vl::collections::ForEachIterator.519" = type { %"class.vl::Object" }
%"class.vl::Ptr.520" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.539" = type { %"class.vl::collections::ForEachIterator.540", %"class.vl::Ptr.541" }
%"class.vl::collections::ForEachIterator.540" = type { %"class.vl::Object" }
%"class.vl::Ptr.541" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.551" = type { %"class.vl::collections::ForEachIterator.552", %"class.vl::Ptr.553" }
%"class.vl::collections::ForEachIterator.552" = type { %"class.vl::Object" }
%"class.vl::Ptr.553" = type { ptr, ptr, ptr, ptr }
%"class.vl::Ptr.447" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::List.403" = type { %"class.vl::collections::ListBase.base.409", %"class.vl::collections::IEnumerable.407" }
%"class.vl::collections::ListBase.base.409" = type <{ %"class.vl::collections::ArrayBase.base.408", i64, i8 }>
%"class.vl::collections::ArrayBase.base.408" = type { %"class.vl::collections::ListStore.406", ptr, i64 }
%"class.vl::collections::ListStore.406" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.407" = type { %"class.vl::Interface" }
%"class.vl::Interface" = type { ptr }
%"class.vl::Ptr.394" = type { ptr, ptr, ptr, ptr }
%"class.vl::parsing::analyzing::Automaton" = type { %"class.vl::Object", ptr, %"class.vl::collections::List.411", %"class.vl::collections::List.419", %"class.vl::collections::Dictionary.427" }
%"class.vl::collections::List.411" = type { %"class.vl::collections::ListBase.base.417", %"class.vl::collections::IEnumerable.415" }
%"class.vl::collections::ListBase.base.417" = type <{ %"class.vl::collections::ArrayBase.base.416", i64, i8 }>
%"class.vl::collections::ArrayBase.base.416" = type { %"class.vl::collections::ListStore.414", ptr, i64 }
%"class.vl::collections::ListStore.414" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.415" = type { %"class.vl::Interface" }
%"class.vl::collections::List.419" = type { %"class.vl::collections::ListBase.base.425", %"class.vl::collections::IEnumerable.423" }
%"class.vl::collections::ListBase.base.425" = type <{ %"class.vl::collections::ArrayBase.base.424", i64, i8 }>
%"class.vl::collections::ArrayBase.base.424" = type { %"class.vl::collections::ListStore.422", ptr, i64 }
%"class.vl::collections::ListStore.422" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.423" = type { %"class.vl::Interface" }
%"class.vl::collections::Dictionary.427" = type { %"class.vl::Object", %"class.vl::collections::SortedList.428", %"class.vl::collections::List.436", %"class.vl::collections::IEnumerable.444" }
%"class.vl::collections::SortedList.428" = type { %"class.vl::collections::ListBase.base.434", %"class.vl::collections::IEnumerable.432" }
%"class.vl::collections::ListBase.base.434" = type <{ %"class.vl::collections::ArrayBase.base.433", i64, i8 }>
%"class.vl::collections::ArrayBase.base.433" = type { %"class.vl::collections::ListStore.431", ptr, i64 }
%"class.vl::collections::ListStore.431" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.432" = type { %"class.vl::Interface" }
%"class.vl::collections::List.436" = type { %"class.vl::collections::ListBase.base.442", %"class.vl::collections::IEnumerable.440" }
%"class.vl::collections::ListBase.base.442" = type <{ %"class.vl::collections::ArrayBase.base.441", i64, i8 }>
%"class.vl::collections::ArrayBase.base.441" = type { %"class.vl::collections::ListStore.439", ptr, i64 }
%"class.vl::collections::ListStore.439" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.440" = type { %"class.vl::Interface" }
%"class.vl::collections::IEnumerable.444" = type { %"class.vl::Interface" }
%"class.vl::parsing::analyzing::RuleInfo" = type <{ %"class.vl::Object", ptr, ptr, ptr, %"class.vl::collections::List.403", i32, [4 x i8] }>
%"class.vl::parsing::analyzing::State" = type { %"class.vl::Object", %"class.vl::collections::List.395", %"class.vl::collections::List.395", i8, ptr, ptr, ptr, ptr, i32, %"class.vl::ObjectString", %"class.vl::ObjectString" }
%"class.vl::collections::List.395" = type { %"class.vl::collections::ListBase.base.401", %"class.vl::collections::IEnumerable.399" }
%"class.vl::collections::ListBase.base.401" = type <{ %"class.vl::collections::ArrayBase.base.400", i64, i8 }>
%"class.vl::collections::ArrayBase.base.400" = type { %"class.vl::collections::ListStore.398", ptr, i64 }
%"class.vl::collections::ListStore.398" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.399" = type { %"class.vl::Interface" }
%"class.vl::ObjectString" = type { %"class.vl::Object", ptr, ptr, i64, i64, i64 }
%"class.vl::parsing::analyzing::Transition" = type { %"class.vl::Object", ptr, ptr, %"class.vl::collections::List.386", i32, i32, ptr }
%"class.vl::collections::List.386" = type { %"class.vl::collections::ListBase.base.392", %"class.vl::collections::IEnumerable.390" }
%"class.vl::collections::ListBase.base.392" = type <{ %"class.vl::collections::ArrayBase.base.391", i64, i8 }>
%"class.vl::collections::ArrayBase.base.391" = type { %"class.vl::collections::ListStore.389", ptr, i64 }
%"class.vl::collections::ListStore.389" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.390" = type { %"class.vl::Interface" }
%"class.vl::parsing::analyzing::Action" = type { %"class.vl::Object", i32, ptr, ptr, ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i32], align 4
@.str.159 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.313 = external hidden unnamed_addr constant [18 x i32], align 4
@.str.314 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.315 = external hidden unnamed_addr constant [13 x i32], align 4
@.str.316 = external hidden unnamed_addr constant [11 x i32], align 4
@.str.317 = external hidden unnamed_addr constant [11 x i32], align 4
@.str.318 = external hidden unnamed_addr constant [7 x i32], align 4
@.str.319 = external hidden unnamed_addr constant [12 x i32], align 4
@.str.320 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.321 = external hidden unnamed_addr constant [17 x i32], align 4
@.str.322 = external hidden unnamed_addr constant [18 x i32], align 4
@.str.323 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.324 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.325 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.326 = external hidden unnamed_addr constant [30 x i32], align 4
@.str.327 = external hidden unnamed_addr constant [22 x i32], align 4
@.str.328 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.329 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.330 = external hidden unnamed_addr constant [15 x i32], align 4
@.str.331 = external hidden unnamed_addr constant [13 x i32], align 4
@.str.332 = external hidden unnamed_addr constant [15 x i32], align 4
@.str.333 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.334 = external hidden unnamed_addr constant [19 x i32], align 4
@.str.335 = external hidden unnamed_addr constant [3 x i32], align 4
@.str.336 = external hidden unnamed_addr constant [33 x i32], align 4

; 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN2vl7parsing9analyzing13ParsingSymbol7GetNameEv(ptr noundef nonnull align 8 dereferenceable(304)) #1 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E3AddERKS5_(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 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca ptr, align 8
  %7 = alloca %"class.vl::collections::EnumerableForEachIterator.518", align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.vl::Ptr.447", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca ptr, align 8
  %14 = alloca %"class.vl::collections::EnumerableForEachIterator.539", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.vl::collections::List.403", align 8
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca %"class.vl::collections::EnumerableForEachIterator.518", align 8
  %20 = alloca %"class.vl::Ptr.447", align 8
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i8, align 1
  %24 = alloca ptr, align 8
  %25 = alloca %"class.vl::collections::EnumerableForEachIterator.449", align 8
  %26 = alloca ptr, align 8
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca %"class.vl::collections::EnumerableForEachIterator.551", align 8
  %30 = alloca %"class.vl::Ptr.394", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
  store i8 1, ptr %5, align 1, !tbaa !9
  %31 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %32 = trunc i8 %31 to i1
  br i1 %32, label %33, label %169

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #4
  %34 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %35 = getelementptr inbounds %"class.vl::parsing::analyzing::Automaton", ptr %34, i32 0, i32 4
  %36 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZNK2vl11collections10DictionaryIPNS_7parsing11definitions31ParsingDefinitionRuleDefinitionENS_3PtrINS2_9analyzing8RuleInfoEEES5_PS8_E6ValuesEv(ptr noundef nonnull align 8 dereferenceable(104) %35)
  %37 = load ptr, ptr %36, align 8, !tbaa !13
  %38 = getelementptr i8, ptr %37, i64 -24
  %39 = load i64, ptr %38, align 8
  %40 = getelementptr inbounds i8, ptr %36, i64 %39
  call void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.518") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %40)
  store ptr %7, ptr %6, align 8, !tbaa !5
  br label %41

41:                                               ; preds = %167, %33
  %42 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %43 = trunc i8 %42 to i1
  br i1 %43, label %45, label %44

44:                                               ; preds = %41
  store i32 2, ptr %8, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  br label %168

45:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #4
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %46 unwind label %55

46:                                               ; preds = %45
  br label %47

47:                                               ; preds = %163, %46
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = load ptr, ptr %48, align 8, !tbaa !13
  %50 = getelementptr inbounds ptr, ptr %49, i64 2
  %51 = load ptr, ptr %50, align 8
  %52 = invoke noundef zeroext i1 %51(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %53 unwind label %59

53:                                               ; preds = %47
  br i1 %52, label %63, label %54

54:                                               ; preds = %53
  store i32 5, ptr %8, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #4
  br label %166

55:                                               ; preds = %45
  %56 = landingpad { ptr, i32 }
          cleanup
  %57 = extractvalue { ptr, i32 } %56, 0
  store ptr %57, ptr %10, align 8
  %58 = extractvalue { ptr, i32 } %56, 1
  store i32 %58, ptr %11, align 4
  br label %165

59:                                               ; preds = %158, %101, %98, %93, %86, %83, %78, %71, %68, %63, %47
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %10, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %11, align 4
  br label %164

63:                                               ; preds = %53
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = load ptr, ptr %64, align 8, !tbaa !13
  %66 = getelementptr inbounds ptr, ptr %65, i64 4
  %67 = load ptr, ptr %66, align 8
  invoke void %67(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef @.str.313)
          to label %68 unwind label %59

68:                                               ; preds = %63
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %71 unwind label %59

71:                                               ; preds = %68
  %72 = getelementptr inbounds %"class.vl::parsing::analyzing::RuleInfo", ptr %70, i32 0, i32 1
  %73 = load ptr, ptr %72, align 8, !tbaa !15
  %74 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %73, i32 0, i32 9
  %75 = load ptr, ptr %69, align 8, !tbaa !13
  %76 = getelementptr inbounds ptr, ptr %75, i64 8
  %77 = load ptr, ptr %76, align 8
  invoke void %77(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(48) %74)
          to label %78 unwind label %59

78:                                               ; preds = %71
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = load ptr, ptr %79, align 8, !tbaa !13
  %81 = getelementptr inbounds ptr, ptr %80, i64 4
  %82 = load ptr, ptr %81, align 8
  invoke void %82(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef @.str.314)
          to label %83 unwind label %59

83:                                               ; preds = %78
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %86 unwind label %59

86:                                               ; preds = %83
  %87 = getelementptr inbounds %"class.vl::parsing::analyzing::RuleInfo", ptr %85, i32 0, i32 2
  %88 = load ptr, ptr %87, align 8, !tbaa !24
  %89 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %88, i32 0, i32 9
  %90 = load ptr, ptr %84, align 8, !tbaa !13
  %91 = getelementptr inbounds ptr, ptr %90, i64 8
  %92 = load ptr, ptr %91, align 8
  invoke void %92(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(48) %89)
          to label %93 unwind label %59

93:                                               ; preds = %86
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = load ptr, ptr %94, align 8, !tbaa !13
  %96 = getelementptr inbounds ptr, ptr %95, i64 4
  %97 = load ptr, ptr %96, align 8
  invoke void %97(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef @.str.315)
          to label %98 unwind label %59

98:                                               ; preds = %93
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %101 unwind label %59

101:                                              ; preds = %98
  %102 = getelementptr inbounds %"class.vl::parsing::analyzing::RuleInfo", ptr %100, i32 0, i32 3
  %103 = load ptr, ptr %102, align 8, !tbaa !25
  %104 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %103, i32 0, i32 9
  %105 = load ptr, ptr %99, align 8, !tbaa !13
  %106 = getelementptr inbounds ptr, ptr %105, i64 8
  %107 = load ptr, ptr %106, align 8
  invoke void %107(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(48) %104)
          to label %108 unwind label %59

108:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #4
  store i8 1, ptr %12, align 1, !tbaa !9
  %109 = load i8, ptr %12, align 1, !tbaa !9, !range !11, !noundef !12
  %110 = trunc i8 %109 to i1
  br i1 %110, label %111, label %158

111:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #4
  %112 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %113 unwind label %124

113:                                              ; preds = %111
  %114 = getelementptr inbounds %"class.vl::parsing::analyzing::RuleInfo", ptr %112, i32 0, i32 4
  %115 = load ptr, ptr %114, align 8, !tbaa !13
  %116 = getelementptr i8, ptr %115, i64 -24
  %117 = load i64, ptr %116, align 8
  %118 = getelementptr inbounds i8, ptr %114, i64 %117
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing5StateEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.539") align 8 %14, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %119 unwind label %124

119:                                              ; preds = %113
  store ptr %14, ptr %13, align 8, !tbaa !5
  br label %120

120:                                              ; preds = %155, %119
  %121 = load i8, ptr %12, align 1, !tbaa !9, !range !11, !noundef !12
  %122 = trunc i8 %121 to i1
  br i1 %122, label %128, label %123

123:                                              ; preds = %120
  store i32 7, ptr %8, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing5StateEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  br label %157

124:                                              ; preds = %113, %111
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %10, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %11, align 4
  br label %156

128:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  br label %129

129:                                              ; preds = %153, %128
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load ptr, ptr %130, align 8, !tbaa !13
  %132 = getelementptr inbounds ptr, ptr %131, i64 2
  %133 = load ptr, ptr %132, align 8
  %134 = invoke noundef zeroext i1 %133(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %135 unwind label %137

135:                                              ; preds = %129
  br i1 %134, label %141, label %136

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

137:                                              ; preds = %146, %141, %129
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %10, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing5StateEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #4
  br label %156

141:                                              ; preds = %135
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !13
  %144 = getelementptr inbounds ptr, ptr %143, i64 4
  %145 = load ptr, ptr %144, align 8
  invoke void %145(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef @.str.316)
          to label %146 unwind label %137

146:                                              ; preds = %141
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = load ptr, ptr %15, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %148, i32 0, i32 9
  %150 = load ptr, ptr %147, align 8, !tbaa !13
  %151 = getelementptr inbounds ptr, ptr %150, i64 8
  %152 = load ptr, ptr %151, align 8
  invoke void %152(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(48) %149)
          to label %153 unwind label %137

153:                                              ; preds = %146
  br label %129, !llvm.loop !26

154:                                              ; preds = %136
  br label %155

155:                                              ; preds = %154
  store i8 0, ptr %12, align 1, !tbaa !9
  br label %120, !llvm.loop !28

156:                                              ; preds = %137, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #4
  br label %164

157:                                              ; preds = %123
  br label %158

158:                                              ; preds = %157, %108
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #4
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = load ptr, ptr %159, align 8, !tbaa !13
  %161 = getelementptr inbounds ptr, ptr %160, i64 7
  %162 = load ptr, ptr %161, align 8
  invoke void %162(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef @.str.2)
          to label %163 unwind label %59

163:                                              ; preds = %158
  br label %47, !llvm.loop !29

164:                                              ; preds = %156, %59
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  br label %165

165:                                              ; preds = %164, %55
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
  br label %599

166:                                              ; preds = %54
  br label %167

167:                                              ; preds = %166
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %41, !llvm.loop !30

168:                                              ; preds = %44
  br label %169

169:                                              ; preds = %168, %2
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 48, ptr %16) #4
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EC1Ev(ptr noundef nonnull align 8 dereferenceable(33) %16)
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #4
  store i8 1, ptr %17, align 1, !tbaa !9
  %170 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %598

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %19) #4
  %173 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %174 unwind label %187

174:                                              ; preds = %172
  %175 = getelementptr inbounds %"class.vl::parsing::analyzing::Automaton", ptr %173, i32 0, i32 4
  %176 = invoke noundef nonnull align 8 dereferenceable(33) ptr @_ZNK2vl11collections10DictionaryIPNS_7parsing11definitions31ParsingDefinitionRuleDefinitionENS_3PtrINS2_9analyzing8RuleInfoEEES5_PS8_E6ValuesEv(ptr noundef nonnull align 8 dereferenceable(104) %175)
          to label %177 unwind label %187

177:                                              ; preds = %174
  %178 = load ptr, ptr %176, align 8, !tbaa !13
  %179 = getelementptr i8, ptr %178, i64 -24
  %180 = load i64, ptr %179, align 8
  %181 = getelementptr inbounds i8, ptr %176, i64 %180
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.518") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %182 unwind label %187

182:                                              ; preds = %177
  store ptr %19, ptr %18, align 8, !tbaa !5
  br label %183

183:                                              ; preds = %595, %182
  %184 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %185 = trunc i8 %184 to i1
  br i1 %185, label %191, label %186

186:                                              ; preds = %183
  store i32 12, ptr %8, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %597

187:                                              ; preds = %177, %174, %172
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %10, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %11, align 4
  br label %596

191:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #4
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %192 unwind label %201

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %590, %192
  %194 = load ptr, ptr %18, align 8, !tbaa !5
  %195 = load ptr, ptr %194, align 8, !tbaa !13
  %196 = getelementptr inbounds ptr, ptr %195, i64 2
  %197 = load ptr, ptr %196, align 8
  %198 = invoke noundef zeroext i1 %197(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %199 unwind label %205

199:                                              ; preds = %193
  br i1 %198, label %209, label %200

200:                                              ; preds = %199
  store i32 15, ptr %8, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #4
  br label %594

201:                                              ; preds = %191
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %10, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %11, align 4
  br label %593

205:                                              ; preds = %193
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %10, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %11, align 4
  br label %592

209:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  %210 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %211 unwind label %245

211:                                              ; preds = %209
  store i64 %210, ptr %21, align 8, !tbaa !31
  %212 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %213 unwind label %245

213:                                              ; preds = %211
  %214 = getelementptr inbounds %"class.vl::parsing::analyzing::RuleInfo", ptr %212, i32 0, i32 1
  %215 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %16, ptr noundef nonnull align 8 dereferenceable(8) %214)
          to label %216 unwind label %245

216:                                              ; preds = %213
  br label %217

217:                                              ; preds = %583, %216
  %218 = load i64, ptr %21, align 8, !tbaa !31
  %219 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %220 unwind label %245

220:                                              ; preds = %217
  %221 = icmp slt i64 %218, %219
  br i1 %221, label %222, label %585

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  %223 = load i64, ptr %21, align 8, !tbaa !31
  %224 = add nsw i64 %223, 1
  store i64 %224, ptr %21, align 8, !tbaa !31
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %16, i64 noundef %223)
          to label %226 unwind label %249

226:                                              ; preds = %222
  %227 = load ptr, ptr %225, align 8, !tbaa !5
  store ptr %227, ptr %22, align 8, !tbaa !5
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  %229 = load ptr, ptr %22, align 8, !tbaa !5
  %230 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %229, i32 0, i32 10
  %231 = load ptr, ptr %228, align 8, !tbaa !13
  %232 = getelementptr inbounds ptr, ptr %231, i64 8
  %233 = load ptr, ptr %232, align 8
  invoke void %233(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(48) %230)
          to label %234 unwind label %249

234:                                              ; preds = %226
  %235 = load ptr, ptr %22, align 8, !tbaa !5
  %236 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %235, i32 0, i32 3
  %237 = load i8, ptr %236, align 8, !tbaa !32, !range !11, !noundef !12
  %238 = trunc i8 %237 to i1
  br i1 %238, label %239, label %253

239:                                              ; preds = %234
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = load ptr, ptr %240, align 8, !tbaa !13
  %242 = getelementptr inbounds ptr, ptr %241, i64 4
  %243 = load ptr, ptr %242, align 8
  invoke void %243(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef @.str.317)
          to label %244 unwind label %249

244:                                              ; preds = %239
  br label %259

245:                                              ; preds = %585, %217, %213, %211, %209
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %10, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %11, align 4
  br label %591

249:                                              ; preds = %578, %259, %253, %239, %226, %222
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %10, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %11, align 4
  br label %584

253:                                              ; preds = %234
  %254 = load ptr, ptr %4, align 8, !tbaa !5
  %255 = load ptr, ptr %254, align 8, !tbaa !13
  %256 = getelementptr inbounds ptr, ptr %255, i64 4
  %257 = load ptr, ptr %256, align 8
  invoke void %257(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef @.str.318)
          to label %258 unwind label %249

258:                                              ; preds = %253
  br label %259

259:                                              ; preds = %258, %244
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = load ptr, ptr %22, align 8, !tbaa !5
  %262 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %261, i32 0, i32 9
  %263 = load ptr, ptr %260, align 8, !tbaa !13
  %264 = getelementptr inbounds ptr, ptr %263, i64 8
  %265 = load ptr, ptr %264, align 8
  invoke void %265(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(48) %262)
          to label %266 unwind label %249

266:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #4
  store i8 1, ptr %23, align 1, !tbaa !9
  %267 = load i8, ptr %23, align 1, !tbaa !9, !range !11, !noundef !12
  %268 = trunc i8 %267 to i1
  br i1 %268, label %269, label %578

269:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #4
  %270 = load ptr, ptr %22, align 8, !tbaa !5
  %271 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %270, i32 0, i32 1
  %272 = load ptr, ptr %271, align 8, !tbaa !13
  %273 = getelementptr i8, ptr %272, i64 -24
  %274 = load i64, ptr %273, align 8
  %275 = getelementptr inbounds i8, ptr %271, i64 %274
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing10TransitionEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.449") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %276 unwind label %281

276:                                              ; preds = %269
  store ptr %25, ptr %24, align 8, !tbaa !5
  br label %277

277:                                              ; preds = %575, %276
  %278 = load i8, ptr %23, align 1, !tbaa !9, !range !11, !noundef !12
  %279 = trunc i8 %278 to i1
  br i1 %279, label %285, label %280

280:                                              ; preds = %277
  store i32 19, ptr %8, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  br label %577

281:                                              ; preds = %269
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %10, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %11, align 4
  br label %576

285:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  br label %286

286:                                              ; preds = %572, %285
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = load ptr, ptr %287, align 8, !tbaa !13
  %289 = getelementptr inbounds ptr, ptr %288, i64 2
  %290 = load ptr, ptr %289, align 8
  %291 = invoke noundef zeroext i1 %290(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %292 unwind label %294

292:                                              ; preds = %286
  br i1 %291, label %298, label %293

293:                                              ; preds = %292
  store i32 22, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  br label %574

294:                                              ; preds = %381, %375, %369, %363, %352, %342, %336, %330, %324, %318, %312, %303, %298, %286
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %10, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %11, align 4
  br label %573

298:                                              ; preds = %292
  %299 = load ptr, ptr %26, align 8, !tbaa !5
  %300 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %299, i32 0, i32 2
  %301 = invoke noundef zeroext i1 @_ZNK2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E8ContainsERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %16, ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %302 unwind label %294

302:                                              ; preds = %298
  br i1 %301, label %308, label %303

303:                                              ; preds = %302
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  %305 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %304, i32 0, i32 2
  %306 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %16, ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %307 unwind label %294

307:                                              ; preds = %303
  br label %308

308:                                              ; preds = %307, %302
  %309 = load ptr, ptr %26, align 8, !tbaa !5
  %310 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %309, i32 0, i32 4
  %311 = load i32, ptr %310, align 8, !tbaa !40
  switch i32 %311, label %359 [
    i32 4, label %312
    i32 0, label %318
    i32 1, label %324
    i32 2, label %330
    i32 3, label %336
    i32 5, label %342
  ]

312:                                              ; preds = %308
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = load ptr, ptr %313, align 8, !tbaa !13
  %315 = getelementptr inbounds ptr, ptr %314, i64 4
  %316 = load ptr, ptr %315, align 8
  invoke void %316(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef @.str.319)
          to label %317 unwind label %294

317:                                              ; preds = %312
  br label %359

318:                                              ; preds = %308
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = load ptr, ptr %319, align 8, !tbaa !13
  %321 = getelementptr inbounds ptr, ptr %320, i64 4
  %322 = load ptr, ptr %321, align 8
  invoke void %322(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef @.str.320)
          to label %323 unwind label %294

323:                                              ; preds = %318
  br label %359

324:                                              ; preds = %308
  %325 = load ptr, ptr %4, align 8, !tbaa !5
  %326 = load ptr, ptr %325, align 8, !tbaa !13
  %327 = getelementptr inbounds ptr, ptr %326, i64 4
  %328 = load ptr, ptr %327, align 8
  invoke void %328(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef @.str.321)
          to label %329 unwind label %294

329:                                              ; preds = %324
  br label %359

330:                                              ; preds = %308
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = load ptr, ptr %331, align 8, !tbaa !13
  %333 = getelementptr inbounds ptr, ptr %332, i64 4
  %334 = load ptr, ptr %333, align 8
  invoke void %334(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef @.str.322)
          to label %335 unwind label %294

335:                                              ; preds = %330
  br label %359

336:                                              ; preds = %308
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = load ptr, ptr %337, align 8, !tbaa !13
  %339 = getelementptr inbounds ptr, ptr %338, i64 4
  %340 = load ptr, ptr %339, align 8
  invoke void %340(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef @.str.323)
          to label %341 unwind label %294

341:                                              ; preds = %336
  br label %359

342:                                              ; preds = %308
  %343 = load ptr, ptr %4, align 8, !tbaa !5
  %344 = load ptr, ptr %343, align 8, !tbaa !13
  %345 = getelementptr inbounds ptr, ptr %344, i64 4
  %346 = load ptr, ptr %345, align 8
  invoke void %346(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef @.str.324)
          to label %347 unwind label %294

347:                                              ; preds = %342
  %348 = load ptr, ptr %26, align 8, !tbaa !5
  %349 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %348, i32 0, i32 6
  %350 = load ptr, ptr %349, align 8, !tbaa !48
  %351 = icmp ne ptr %350, null
  br i1 %351, label %352, label %358

352:                                              ; preds = %347
  %353 = load ptr, ptr %26, align 8, !tbaa !5
  %354 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %353, i32 0, i32 6
  %355 = load ptr, ptr %354, align 8, !tbaa !48
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN2vl7parsing9analyzing19LogTransitionSymbolEPNS1_13ParsingSymbolERNS_6stream10TextWriterE(ptr noundef %355, ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %357 unwind label %294

357:                                              ; preds = %352
  br label %358

358:                                              ; preds = %357, %347
  br label %359

359:                                              ; preds = %358, %341, %335, %329, %323, %317, %308
  %360 = load ptr, ptr %26, align 8, !tbaa !5
  %361 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %360, i32 0, i32 5
  %362 = load i32, ptr %361, align 4, !tbaa !49
  switch i32 %362, label %381 [
    i32 0, label %363
    i32 1, label %369
    i32 2, label %375
  ]

363:                                              ; preds = %359
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = load ptr, ptr %364, align 8, !tbaa !13
  %366 = getelementptr inbounds ptr, ptr %365, i64 4
  %367 = load ptr, ptr %366, align 8
  invoke void %367(ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef @.str.325)
          to label %368 unwind label %294

368:                                              ; preds = %363
  br label %381

369:                                              ; preds = %359
  %370 = load ptr, ptr %4, align 8, !tbaa !5
  %371 = load ptr, ptr %370, align 8, !tbaa !13
  %372 = getelementptr inbounds ptr, ptr %371, i64 4
  %373 = load ptr, ptr %372, align 8
  invoke void %373(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef @.str.326)
          to label %374 unwind label %294

374:                                              ; preds = %369
  br label %381

375:                                              ; preds = %359
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = load ptr, ptr %376, align 8, !tbaa !13
  %378 = getelementptr inbounds ptr, ptr %377, i64 4
  %379 = load ptr, ptr %378, align 8
  invoke void %379(ptr noundef nonnull align 8 dereferenceable(8) %376, ptr noundef @.str.327)
          to label %380 unwind label %294

380:                                              ; preds = %375
  br label %381

381:                                              ; preds = %380, %374, %368, %359
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = load ptr, ptr %26, align 8, !tbaa !5
  %384 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %383, i32 0, i32 2
  %385 = load ptr, ptr %384, align 8, !tbaa !50
  %386 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %385, i32 0, i32 9
  %387 = load ptr, ptr %382, align 8, !tbaa !13
  %388 = getelementptr inbounds ptr, ptr %387, i64 8
  %389 = load ptr, ptr %388, align 8
  invoke void %389(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 8 dereferenceable(48) %386)
          to label %390 unwind label %294

390:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #4
  store i8 1, ptr %27, align 1, !tbaa !9
  %391 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %392 = trunc i8 %391 to i1
  br i1 %392, label %393, label %572

393:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %29) #4
  %394 = load ptr, ptr %26, align 8, !tbaa !5
  %395 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %394, i32 0, i32 3
  %396 = load ptr, ptr %395, align 8, !tbaa !13
  %397 = getelementptr i8, ptr %396, i64 -24
  %398 = load i64, ptr %397, align 8
  %399 = getelementptr inbounds i8, ptr %395, i64 %398
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.551") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %399)
          to label %400 unwind label %405

400:                                              ; preds = %393
  store ptr %29, ptr %28, align 8, !tbaa !5
  br label %401

401:                                              ; preds = %569, %400
  %402 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %403 = trunc i8 %402 to i1
  br i1 %403, label %409, label %404

404:                                              ; preds = %401
  store i32 26, ptr %8, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  br label %571

405:                                              ; preds = %393
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %10, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %11, align 4
  br label %570

409:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #4
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %410 unwind label %419

410:                                              ; preds = %409
  br label %411

411:                                              ; preds = %566, %410
  %412 = load ptr, ptr %28, align 8, !tbaa !5
  %413 = load ptr, ptr %412, align 8, !tbaa !13
  %414 = getelementptr inbounds ptr, ptr %413, i64 2
  %415 = load ptr, ptr %414, align 8
  %416 = invoke noundef zeroext i1 %415(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %417 unwind label %423

417:                                              ; preds = %411
  br i1 %416, label %427, label %418

418:                                              ; preds = %417
  store i32 29, ptr %8, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #4
  br label %568

419:                                              ; preds = %409
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %10, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %11, align 4
  br label %567

423:                                              ; preds = %561, %553, %550, %545, %539, %531, %528, %522, %516, %509, %506, %501, %494, %491, %486, %480, %474, %468, %462, %456, %450, %444, %438, %432, %427, %411
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %10, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %11, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #4
  br label %567

427:                                              ; preds = %417
  %428 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %429 unwind label %423

429:                                              ; preds = %427
  %430 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %428, i32 0, i32 1
  %431 = load i32, ptr %430, align 8, !tbaa !51
  switch i32 %431, label %474 [
    i32 0, label %432
    i32 1, label %438
    i32 2, label %444
    i32 3, label %450
    i32 4, label %456
    i32 5, label %462
    i32 6, label %468
  ]

432:                                              ; preds = %429
  %433 = load ptr, ptr %4, align 8, !tbaa !5
  %434 = load ptr, ptr %433, align 8, !tbaa !13
  %435 = getelementptr inbounds ptr, ptr %434, i64 4
  %436 = load ptr, ptr %435, align 8
  invoke void %436(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef @.str.328)
          to label %437 unwind label %423

437:                                              ; preds = %432
  br label %474

438:                                              ; preds = %429
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = load ptr, ptr %439, align 8, !tbaa !13
  %441 = getelementptr inbounds ptr, ptr %440, i64 4
  %442 = load ptr, ptr %441, align 8
  invoke void %442(ptr noundef nonnull align 8 dereferenceable(8) %439, ptr noundef @.str.329)
          to label %443 unwind label %423

443:                                              ; preds = %438
  br label %474

444:                                              ; preds = %429
  %445 = load ptr, ptr %4, align 8, !tbaa !5
  %446 = load ptr, ptr %445, align 8, !tbaa !13
  %447 = getelementptr inbounds ptr, ptr %446, i64 4
  %448 = load ptr, ptr %447, align 8
  invoke void %448(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef @.str.330)
          to label %449 unwind label %423

449:                                              ; preds = %444
  br label %474

450:                                              ; preds = %429
  %451 = load ptr, ptr %4, align 8, !tbaa !5
  %452 = load ptr, ptr %451, align 8, !tbaa !13
  %453 = getelementptr inbounds ptr, ptr %452, i64 4
  %454 = load ptr, ptr %453, align 8
  invoke void %454(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef @.str.331)
          to label %455 unwind label %423

455:                                              ; preds = %450
  br label %474

456:                                              ; preds = %429
  %457 = load ptr, ptr %4, align 8, !tbaa !5
  %458 = load ptr, ptr %457, align 8, !tbaa !13
  %459 = getelementptr inbounds ptr, ptr %458, i64 4
  %460 = load ptr, ptr %459, align 8
  invoke void %460(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef @.str.332)
          to label %461 unwind label %423

461:                                              ; preds = %456
  br label %474

462:                                              ; preds = %429
  %463 = load ptr, ptr %4, align 8, !tbaa !5
  %464 = load ptr, ptr %463, align 8, !tbaa !13
  %465 = getelementptr inbounds ptr, ptr %464, i64 4
  %466 = load ptr, ptr %465, align 8
  invoke void %466(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef @.str.333)
          to label %467 unwind label %423

467:                                              ; preds = %462
  br label %474

468:                                              ; preds = %429
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = load ptr, ptr %469, align 8, !tbaa !13
  %471 = getelementptr inbounds ptr, ptr %470, i64 4
  %472 = load ptr, ptr %471, align 8
  invoke void %472(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef @.str.334)
          to label %473 unwind label %423

473:                                              ; preds = %468
  br label %474

474:                                              ; preds = %473, %467, %461, %455, %449, %443, %437, %429
  %475 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %476 unwind label %423

476:                                              ; preds = %474
  %477 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %475, i32 0, i32 5
  %478 = load ptr, ptr %477, align 8, !tbaa !54
  %479 = icmp ne ptr %478, null
  br i1 %479, label %480, label %522

480:                                              ; preds = %476
  %481 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %482 unwind label %423

482:                                              ; preds = %480
  %483 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %481, i32 0, i32 6
  %484 = load ptr, ptr %483, align 8, !tbaa !55
  %485 = icmp ne ptr %484, null
  br i1 %485, label %486, label %522

486:                                              ; preds = %482
  %487 = load ptr, ptr %4, align 8, !tbaa !5
  %488 = load ptr, ptr %487, align 8, !tbaa !13
  %489 = getelementptr inbounds ptr, ptr %488, i64 4
  %490 = load ptr, ptr %489, align 8
  invoke void %490(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef @.str.159)
          to label %491 unwind label %423

491:                                              ; preds = %486
  %492 = load ptr, ptr %4, align 8, !tbaa !5
  %493 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %494 unwind label %423

494:                                              ; preds = %491
  %495 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %493, i32 0, i32 5
  %496 = load ptr, ptr %495, align 8, !tbaa !54
  %497 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %496, i32 0, i32 9
  %498 = load ptr, ptr %492, align 8, !tbaa !13
  %499 = getelementptr inbounds ptr, ptr %498, i64 5
  %500 = load ptr, ptr %499, align 8
  invoke void %500(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef nonnull align 8 dereferenceable(48) %497)
          to label %501 unwind label %423

501:                                              ; preds = %494
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = load ptr, ptr %502, align 8, !tbaa !13
  %504 = getelementptr inbounds ptr, ptr %503, i64 4
  %505 = load ptr, ptr %504, align 8
  invoke void %505(ptr noundef nonnull align 8 dereferenceable(8) %502, ptr noundef @.str.325)
          to label %506 unwind label %423

506:                                              ; preds = %501
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %509 unwind label %423

509:                                              ; preds = %506
  %510 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %508, i32 0, i32 6
  %511 = load ptr, ptr %510, align 8, !tbaa !55
  %512 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %511, i32 0, i32 9
  %513 = load ptr, ptr %507, align 8, !tbaa !13
  %514 = getelementptr inbounds ptr, ptr %513, i64 5
  %515 = load ptr, ptr %514, align 8
  invoke void %515(ptr noundef nonnull align 8 dereferenceable(8) %507, ptr noundef nonnull align 8 dereferenceable(48) %512)
          to label %516 unwind label %423

516:                                              ; preds = %509
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = load ptr, ptr %517, align 8, !tbaa !13
  %519 = getelementptr inbounds ptr, ptr %518, i64 4
  %520 = load ptr, ptr %519, align 8
  invoke void %520(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef @.str.335)
          to label %521 unwind label %423

521:                                              ; preds = %516
  br label %522

522:                                              ; preds = %521, %482, %476
  %523 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %524 unwind label %423

524:                                              ; preds = %522
  %525 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %523, i32 0, i32 3
  %526 = load ptr, ptr %525, align 8, !tbaa !56
  %527 = icmp ne ptr %526, null
  br i1 %527, label %528, label %539

528:                                              ; preds = %524
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %531 unwind label %423

531:                                              ; preds = %528
  %532 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %530, i32 0, i32 3
  %533 = load ptr, ptr %532, align 8, !tbaa !56
  %534 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN2vl7parsing9analyzing13ParsingSymbol7GetNameEv(ptr noundef nonnull align 8 dereferenceable(304) %533)
  %535 = load ptr, ptr %529, align 8, !tbaa !13
  %536 = getelementptr inbounds ptr, ptr %535, i64 5
  %537 = load ptr, ptr %536, align 8
  invoke void %537(ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef nonnull align 8 dereferenceable(48) %534)
          to label %538 unwind label %423

538:                                              ; preds = %531
  br label %539

539:                                              ; preds = %538, %524
  %540 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %541 unwind label %423

541:                                              ; preds = %539
  %542 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %540, i32 0, i32 2
  %543 = load ptr, ptr %542, align 8, !tbaa !57
  %544 = icmp ne ptr %543, null
  br i1 %544, label %545, label %561

545:                                              ; preds = %541
  %546 = load ptr, ptr %4, align 8, !tbaa !5
  %547 = load ptr, ptr %546, align 8, !tbaa !13
  %548 = getelementptr inbounds ptr, ptr %547, i64 4
  %549 = load ptr, ptr %548, align 8
  invoke void %549(ptr noundef nonnull align 8 dereferenceable(8) %546, ptr noundef @.str.325)
          to label %550 unwind label %423

550:                                              ; preds = %545
  %551 = load ptr, ptr %4, align 8, !tbaa !5
  %552 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %553 unwind label %423

553:                                              ; preds = %550
  %554 = getelementptr inbounds %"class.vl::parsing::analyzing::Action", ptr %552, i32 0, i32 2
  %555 = load ptr, ptr %554, align 8, !tbaa !57
  %556 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN2vl7parsing9analyzing13ParsingSymbol7GetNameEv(ptr noundef nonnull align 8 dereferenceable(304) %555)
  %557 = load ptr, ptr %551, align 8, !tbaa !13
  %558 = getelementptr inbounds ptr, ptr %557, i64 5
  %559 = load ptr, ptr %558, align 8
  invoke void %559(ptr noundef nonnull align 8 dereferenceable(8) %551, ptr noundef nonnull align 8 dereferenceable(48) %556)
          to label %560 unwind label %423

560:                                              ; preds = %553
  br label %561

561:                                              ; preds = %560, %541
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = load ptr, ptr %562, align 8, !tbaa !13
  %564 = getelementptr inbounds ptr, ptr %563, i64 7
  %565 = load ptr, ptr %564, align 8
  invoke void %565(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef @.str.2)
          to label %566 unwind label %423

566:                                              ; preds = %561
  br label %411, !llvm.loop !58

567:                                              ; preds = %423, %419
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #4
  br label %570

568:                                              ; preds = %418
  br label %569

569:                                              ; preds = %568
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %401, !llvm.loop !59

570:                                              ; preds = %567, %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  br label %573

571:                                              ; preds = %404
  br label %572

572:                                              ; preds = %571, %390
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #4
  br label %286, !llvm.loop !60

573:                                              ; preds = %570, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #4
  br label %576

574:                                              ; preds = %293
  br label %575

575:                                              ; preds = %574
  store i8 0, ptr %23, align 1, !tbaa !9
  br label %277, !llvm.loop !61

576:                                              ; preds = %573, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  br label %584

577:                                              ; preds = %280
  br label %578

578:                                              ; preds = %577, %266
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = load ptr, ptr %579, align 8, !tbaa !13
  %581 = getelementptr inbounds ptr, ptr %580, i64 7
  %582 = load ptr, ptr %581, align 8
  invoke void %582(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef @.str.2)
          to label %583 unwind label %249

583:                                              ; preds = %578
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  br label %217, !llvm.loop !62

584:                                              ; preds = %576, %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  br label %591

585:                                              ; preds = %220
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = load ptr, ptr %586, align 8, !tbaa !13
  %588 = getelementptr inbounds ptr, ptr %587, i64 7
  %589 = load ptr, ptr %588, align 8
  invoke void %589(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef @.str.336)
          to label %590 unwind label %245

590:                                              ; preds = %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %193, !llvm.loop !63

591:                                              ; preds = %584, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %592

592:                                              ; preds = %591, %205
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #4
  br label %593

593:                                              ; preds = %592, %201
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #4
  br label %596

594:                                              ; preds = %200
  br label %595

595:                                              ; preds = %594
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %183, !llvm.loop !64

596:                                              ; preds = %593, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %16) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #4
  br label %599

597:                                              ; preds = %186
  br label %598

598:                                              ; preds = %597, %169
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %16) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #4
  ret void

599:                                              ; preds = %596, %165
  %600 = load ptr, ptr %10, align 8
  %601 = load i32, ptr %11, align 4
  %602 = insertvalue { ptr, i32 } poison, ptr %600, 0
  %603 = insertvalue { ptr, i32 } %602, i32 %601, 1
  resume { ptr, i32 } %603
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 = { 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 #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 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !6, i64 8}
!16 = !{!"_ZTSN2vl7parsing9analyzing8RuleInfoE", !17, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !18, i64 32, !23, i64 80}
!17 = !{!"_ZTSN2vl6ObjectE"}
!18 = !{!"_ZTSN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EE", !19, i64 0}
!19 = !{!"_ZTSN2vl11collections8ListBaseIPNS_7parsing9analyzing5StateES5_EE", !20, i64 0, !22, i64 24, !10, i64 32}
!20 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEEE", !21, i64 0, !6, i64 8, !22, i64 16}
!21 = !{!"_ZTSN2vl11collections9ListStoreIPNS_7parsing9analyzing5StateELb1EEE", !17, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"int", !7, i64 0}
!24 = !{!16, !6, i64 16}
!25 = !{!16, !6, i64 24}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = !{!22, !22, i64 0}
!32 = !{!33, !10, i64 104}
!33 = !{!"_ZTSN2vl7parsing9analyzing5StateE", !17, i64 0, !34, i64 8, !34, i64 56, !10, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !38, i64 144, !39, i64 152, !39, i64 200}
!34 = !{!"_ZTSN2vl11collections4ListIPNS_7parsing9analyzing10TransitionES5_EE", !35, i64 0}
!35 = !{!"_ZTSN2vl11collections8ListBaseIPNS_7parsing9analyzing10TransitionES5_EE", !36, i64 0, !22, i64 24, !10, i64 32}
!36 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEEE", !37, i64 0, !6, i64 8, !22, i64 16}
!37 = !{!"_ZTSN2vl11collections9ListStoreIPNS_7parsing9analyzing10TransitionELb1EEE", !17, i64 0}
!38 = !{!"_ZTSN2vl7parsing9analyzing5State13StatePositionE", !7, i64 0}
!39 = !{!"_ZTSN2vl12ObjectStringIwEE", !17, i64 0, !6, i64 8, !6, i64 16, !22, i64 24, !22, i64 32, !22, i64 40}
!40 = !{!41, !46, i64 72}
!41 = !{!"_ZTSN2vl7parsing9analyzing10TransitionE", !17, i64 0, !6, i64 8, !6, i64 16, !42, i64 24, !46, i64 72, !47, i64 76, !6, i64 80}
!42 = !{!"_ZTSN2vl11collections4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !43, i64 0}
!43 = !{!"_ZTSN2vl11collections8ListBaseINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !44, i64 0, !22, i64 24, !10, i64 32}
!44 = !{!"_ZTSN2vl11collections9ArrayBaseINS_3PtrINS_7parsing9analyzing6ActionEEEEE", !45, i64 0, !6, i64 8, !22, i64 16}
!45 = !{!"_ZTSN2vl11collections9ListStoreINS_3PtrINS_7parsing9analyzing6ActionEEELb0EEE", !17, i64 0}
!46 = !{!"_ZTSN2vl7parsing9analyzing10Transition14TransitionTypeE", !7, i64 0}
!47 = !{!"_ZTSN2vl7parsing9analyzing10Transition18StackOperationTypeE", !7, i64 0}
!48 = !{!41, !6, i64 80}
!49 = !{!41, !47, i64 76}
!50 = !{!41, !6, i64 16}
!51 = !{!52, !53, i64 8}
!52 = !{!"_ZTSN2vl7parsing9analyzing6ActionE", !17, i64 0, !53, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!53 = !{!"_ZTSN2vl7parsing9analyzing6Action10ActionTypeE", !7, i64 0}
!54 = !{!52, !6, i64 40}
!55 = !{!52, !6, i64 48}
!56 = !{!52, !6, i64 24}
!57 = !{!52, !6, i64 16}
!58 = distinct !{!58, !27}
!59 = distinct !{!59, !27}
!60 = distinct !{!60, !27}
!61 = distinct !{!61, !27}
!62 = distinct !{!62, !27}
!63 = distinct !{!63, !27}
!64 = distinct !{!64, !27}


; 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::collections::EnumerableForEachIterator.449" = type { %"class.vl::collections::ForEachIterator.450", %"class.vl::Ptr.451" }
%"class.vl::collections::ForEachIterator.450" = type { %"class.vl::Object" }
%"class.vl::Object" = type { ptr }
%"class.vl::Ptr.451" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.518" = type { %"class.vl::collections::ForEachIterator.519", %"class.vl::Ptr.520" }
%"class.vl::collections::ForEachIterator.519" = type { %"class.vl::Object" }
%"class.vl::Ptr.520" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.539" = type { %"class.vl::collections::ForEachIterator.540", %"class.vl::Ptr.541" }
%"class.vl::collections::ForEachIterator.540" = type { %"class.vl::Object" }
%"class.vl::Ptr.541" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::EnumerableForEachIterator.551" = type { %"class.vl::collections::ForEachIterator.552", %"class.vl::Ptr.553" }
%"class.vl::collections::ForEachIterator.552" = type { %"class.vl::Object" }
%"class.vl::Ptr.553" = type { ptr, ptr, ptr, ptr }
%"class.vl::Ptr.447" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::List.403" = type { %"class.vl::collections::ListBase.base.409", %"class.vl::collections::IEnumerable.407" }
%"class.vl::collections::ListBase.base.409" = type <{ %"class.vl::collections::ArrayBase.base.408", i64, i8 }>
%"class.vl::collections::ArrayBase.base.408" = type { %"class.vl::collections::ListStore.406", ptr, i64 }
%"class.vl::collections::ListStore.406" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.407" = type { %"class.vl::Interface" }
%"class.vl::Interface" = type { ptr }
%"class.vl::Ptr.394" = type { ptr, ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i32], align 4
@.str.159 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.313 = external hidden unnamed_addr constant [18 x i32], align 4
@.str.314 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.315 = external hidden unnamed_addr constant [13 x i32], align 4
@.str.316 = external hidden unnamed_addr constant [11 x i32], align 4
@.str.317 = external hidden unnamed_addr constant [11 x i32], align 4
@.str.318 = external hidden unnamed_addr constant [7 x i32], align 4
@.str.319 = external hidden unnamed_addr constant [12 x i32], align 4
@.str.320 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.321 = external hidden unnamed_addr constant [17 x i32], align 4
@.str.322 = external hidden unnamed_addr constant [18 x i32], align 4
@.str.323 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.324 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.325 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.326 = external hidden unnamed_addr constant [30 x i32], align 4
@.str.327 = external hidden unnamed_addr constant [22 x i32], align 4
@.str.328 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.329 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.330 = external hidden unnamed_addr constant [15 x i32], align 4
@.str.331 = external hidden unnamed_addr constant [13 x i32], align 4
@.str.332 = external hidden unnamed_addr constant [15 x i32], align 4
@.str.333 = external hidden unnamed_addr constant [16 x i32], align 4
@.str.334 = external hidden unnamed_addr constant [19 x i32], align 4
@.str.335 = external hidden unnamed_addr constant [3 x i32], align 4
@.str.336 = external hidden unnamed_addr constant [33 x i32], align 4
@switch.table._ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE = private unnamed_addr constant [3 x ptr] [ptr @.str.325, ptr @.str.326, ptr @.str.327], align 8
@switch.table._ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE.1 = private unnamed_addr constant [7 x ptr] [ptr @.str.328, ptr @.str.329, ptr @.str.330, ptr @.str.331, ptr @.str.332, ptr @.str.333, ptr @.str.334], align 8

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(8) %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
.critedge:
  %2 = alloca %"class.vl::collections::EnumerableForEachIterator.518", align 8
  %3 = alloca %"class.vl::Ptr.447", align 8
  %4 = alloca %"class.vl::collections::EnumerableForEachIterator.539", align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.vl::collections::List.403", align 8
  %7 = alloca %"class.vl::collections::EnumerableForEachIterator.518", align 8
  %8 = alloca %"class.vl::Ptr.447", align 8
  %9 = alloca %"class.vl::collections::EnumerableForEachIterator.449", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.vl::collections::EnumerableForEachIterator.551", align 8
  %12 = alloca %"class.vl::Ptr.394", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %2) #4
  %13 = tail call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %14 = getelementptr inbounds i8, ptr %13, i64 112
  %15 = tail call noundef nonnull align 8 dereferenceable(33) ptr @_ZNK2vl11collections10DictionaryIPNS_7parsing11definitions31ParsingDefinitionRuleDefinitionENS_3PtrINS2_9analyzing8RuleInfoEEES5_PS8_E6ValuesEv(ptr noundef nonnull align 8 dereferenceable(104) %14)
  %16 = load ptr, ptr %15, align 8, !tbaa !5
  %17 = getelementptr i8, ptr %16, i64 -24
  %18 = load i64, ptr %17, align 8
  %19 = getelementptr inbounds i8, ptr %15, i64 %18
  call void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.518") align 8 %2, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #4
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
  br label %20

20:                                               ; preds = %.critedge97, %.critedge
  %21 = load ptr, ptr %2, align 8, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %21, i64 16
  %23 = load ptr, ptr %22, align 8
  %24 = invoke noundef zeroext i1 %23(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %25 unwind label %34

25:                                               ; preds = %20
  br i1 %24, label %36, label %26

26:                                               ; preds = %25
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %2) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) #4
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EC1Ev(ptr noundef nonnull align 8 dereferenceable(33) %6)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #4
  %27 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %0)
  %28 = getelementptr inbounds i8, ptr %27, i64 112
  %29 = call noundef nonnull align 8 dereferenceable(33) ptr @_ZNK2vl11collections10DictionaryIPNS_7parsing11definitions31ParsingDefinitionRuleDefinitionENS_3PtrINS2_9analyzing8RuleInfoEEES5_PS8_E6ValuesEv(ptr noundef nonnull align 8 dereferenceable(104) %28)
  %30 = load ptr, ptr %29, align 8, !tbaa !5
  %31 = getelementptr i8, ptr %30, i64 -24
  %32 = load i64, ptr %31, align 8
  %33 = getelementptr inbounds i8, ptr %29, i64 %32
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.518") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %106 unwind label %104

34:                                               ; preds = %.critedge97, %64, %60, %52, %48, %40, %36, %20
  %35 = landingpad { ptr, i32 }
          cleanup
  br label %103

36:                                               ; preds = %25
  %37 = load ptr, ptr %1, align 8, !tbaa !5
  %38 = getelementptr inbounds i8, ptr %37, i64 32
  %39 = load ptr, ptr %38, align 8
  invoke void %39(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.313)
          to label %40 unwind label %34

40:                                               ; preds = %36
  %41 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %42 = getelementptr inbounds i8, ptr %41, i64 8
  %43 = load ptr, ptr %42, align 8, !tbaa !8
  %44 = getelementptr inbounds i8, ptr %43, i64 152
  %45 = load ptr, ptr %1, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %45, i64 64
  %47 = load ptr, ptr %46, align 8
  invoke void %47(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %44)
          to label %48 unwind label %34

48:                                               ; preds = %40
  %49 = load ptr, ptr %1, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %49, i64 32
  %51 = load ptr, ptr %50, align 8
  invoke void %51(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.314)
          to label %52 unwind label %34

52:                                               ; preds = %48
  %53 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %54 = getelementptr inbounds i8, ptr %53, i64 16
  %55 = load ptr, ptr %54, align 8, !tbaa !20
  %56 = getelementptr inbounds i8, ptr %55, i64 152
  %57 = load ptr, ptr %1, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %57, i64 64
  %59 = load ptr, ptr %58, align 8
  invoke void %59(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %60 unwind label %34

60:                                               ; preds = %52
  %61 = load ptr, ptr %1, align 8, !tbaa !5
  %62 = getelementptr inbounds i8, ptr %61, i64 32
  %63 = load ptr, ptr %62, align 8
  invoke void %63(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.315)
          to label %64 unwind label %34

64:                                               ; preds = %60
  %65 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %66 = getelementptr inbounds i8, ptr %65, i64 24
  %67 = load ptr, ptr %66, align 8, !tbaa !21
  %68 = getelementptr inbounds i8, ptr %67, i64 152
  %69 = load ptr, ptr %1, align 8, !tbaa !5
  %70 = getelementptr inbounds i8, ptr %69, i64 64
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %68)
          to label %72 unwind label %34

72:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #4
  %73 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %3)
  %74 = getelementptr inbounds i8, ptr %73, i64 32
  %75 = load ptr, ptr %74, align 8, !tbaa !5
  %76 = getelementptr i8, ptr %75, i64 -24
  %77 = load i64, ptr %76, align 8
  %78 = getelementptr inbounds i8, ptr %74, i64 %77
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing5StateEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.539") align 8 %4, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %81 unwind label %79

79:                                               ; preds = %72
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %103

81:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #4
  br label %82

82:                                               ; preds = %97, %81
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %83, i64 16
  %85 = load ptr, ptr %84, align 8
  %86 = invoke noundef zeroext i1 %85(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %87 unwind label %91

87:                                               ; preds = %82
  br i1 %86, label %93, label %.critedge97

.critedge97:                                      ; preds = %87
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing5StateEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #4
  %88 = load ptr, ptr %1, align 8, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %88, i64 56
  %90 = load ptr, ptr %89, align 8
  invoke void %90(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.2)
          to label %20 unwind label %34, !llvm.loop !22

91:                                               ; preds = %97, %93, %82
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing5StateEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #4
  br label %103

93:                                               ; preds = %87
  %94 = load ptr, ptr %1, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 32
  %96 = load ptr, ptr %95, align 8
  invoke void %96(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.316)
          to label %97 unwind label %91

97:                                               ; preds = %93
  %98 = load ptr, ptr %5, align 8, !tbaa !24
  %99 = getelementptr inbounds i8, ptr %98, i64 152
  %100 = load ptr, ptr %1, align 8, !tbaa !5
  %101 = getelementptr inbounds i8, ptr %100, i64 64
  %102 = load ptr, ptr %101, align 8
  invoke void %102(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %99)
          to label %82 unwind label %91, !llvm.loop !25

103:                                              ; preds = %79, %91, %34
  %.pn92.pn = phi { ptr, i32 } [ %35, %34 ], [ %92, %91 ], [ %80, %79 ]
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %2) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %2) #4
  br label %316

104:                                              ; preds = %26
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %315

106:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #4
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
  br label %107

107:                                              ; preds = %310, %106
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %108, i64 16
  %110 = load ptr, ptr %109, align 8
  %111 = invoke noundef zeroext i1 %110(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %112 unwind label %113

112:                                              ; preds = %107
  br i1 %111, label %115, label %.critedge99

.critedge99:                                      ; preds = %112
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %6) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #4
  ret void

113:                                              ; preds = %107
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %314

115:                                              ; preds = %112
  %116 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %6)
  %117 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing8RuleInfoEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %8)
  %118 = getelementptr inbounds i8, ptr %117, i64 8
  %119 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %6, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %.preheader unwind label %138

.preheader:                                       ; preds = %115, %.critedge101
  %.067 = phi i64 [ %123, %.critedge101 ], [ %116, %115 ]
  %120 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %6)
  %121 = icmp slt i64 %.067, %120
  br i1 %121, label %122, label %310

122:                                              ; preds = %.preheader
  %123 = add nsw i64 %.067, 1
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %6, i64 noundef %.067)
          to label %125 unwind label %140

125:                                              ; preds = %122
  %126 = load ptr, ptr %124, align 8, !tbaa !24
  %127 = getelementptr inbounds i8, ptr %126, i64 200
  %128 = load ptr, ptr %1, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %128, i64 64
  %130 = load ptr, ptr %129, align 8
  invoke void %130(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %127)
          to label %.invoke unwind label %140

.invoke:                                          ; preds = %125
  %131 = getelementptr inbounds i8, ptr %126, i64 104
  %132 = load i8, ptr %131, align 8, !tbaa !26, !range !34, !noundef !35
  %133 = trunc nuw i8 %132 to i1
  %134 = load ptr, ptr %1, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 32
  %136 = load ptr, ptr %135, align 8
  %137 = select i1 %133, ptr @.str.317, ptr @.str.318
  invoke void %136(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %137)
          to label %142 unwind label %140

138:                                              ; preds = %310, %115
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %314

140:                                              ; preds = %.invoke, %.critedge101, %142, %125, %122
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %314

142:                                              ; preds = %.invoke
  %143 = getelementptr inbounds i8, ptr %126, i64 152
  %144 = load ptr, ptr %1, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 64
  %146 = load ptr, ptr %145, align 8
  invoke void %146(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %143)
          to label %147 unwind label %140

147:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #4
  %148 = getelementptr inbounds i8, ptr %126, i64 8
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  %150 = getelementptr i8, ptr %149, i64 -24
  %151 = load i64, ptr %150, align 8
  %152 = getelementptr inbounds i8, ptr %148, i64 %151
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing10TransitionEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.449") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %152)
          to label %155 unwind label %153

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

155:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  br label %156

156:                                              ; preds = %.critedge103, %155
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 16
  %159 = load ptr, ptr %158, align 8
  %160 = invoke noundef zeroext i1 %159(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %161 unwind label %165

161:                                              ; preds = %156
  br i1 %160, label %167, label %.critedge101

.critedge101:                                     ; preds = %161
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #4
  %162 = load ptr, ptr %1, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 56
  %164 = load ptr, ptr %163, align 8
  invoke void %164(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.2)
          to label %.preheader unwind label %140, !llvm.loop !36

165:                                              ; preds = %.invoke105, %switch.lookup, %206, %196, %188, %172, %167, %156
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %309

167:                                              ; preds = %161
  %168 = load ptr, ptr %10, align 8, !tbaa !24
  %169 = getelementptr inbounds i8, ptr %168, i64 16
  %170 = invoke noundef zeroext i1 @_ZNK2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E8ContainsERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %6, ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %171 unwind label %165

171:                                              ; preds = %167
  br i1 %170, label %176, label %172

172:                                              ; preds = %171
  %173 = load ptr, ptr %10, align 8, !tbaa !24
  %174 = getelementptr inbounds i8, ptr %173, i64 16
  %175 = invoke noundef i64 @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_E3AddERKS5_(ptr noundef nonnull align 8 dereferenceable(33) %6, ptr noundef nonnull align 8 dereferenceable(8) %174)
          to label %176 unwind label %165

176:                                              ; preds = %172, %171
  %177 = load ptr, ptr %10, align 8, !tbaa !24
  %178 = getelementptr inbounds i8, ptr %177, i64 72
  %179 = load i32, ptr %178, align 8, !tbaa !37
  switch i32 %179, label %197 [
    i32 4, label %.invoke105
    i32 0, label %180
    i32 1, label %181
    i32 2, label %182
    i32 3, label %183
    i32 5, label %188
  ]

180:                                              ; preds = %176
  br label %.invoke105

181:                                              ; preds = %176
  br label %.invoke105

182:                                              ; preds = %176
  br label %.invoke105

183:                                              ; preds = %176
  br label %.invoke105

.invoke105:                                       ; preds = %176, %180, %181, %182, %183
  %184 = phi ptr [ @.str.323, %183 ], [ @.str.322, %182 ], [ @.str.321, %181 ], [ @.str.320, %180 ], [ @.str.319, %176 ]
  %185 = load ptr, ptr %1, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 32
  %187 = load ptr, ptr %186, align 8
  invoke void %187(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %184)
          to label %197 unwind label %165

188:                                              ; preds = %176
  %189 = load ptr, ptr %1, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 32
  %191 = load ptr, ptr %190, align 8
  invoke void %191(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.324)
          to label %192 unwind label %165

192:                                              ; preds = %188
  %193 = load ptr, ptr %10, align 8, !tbaa !24
  %194 = getelementptr inbounds i8, ptr %193, i64 80
  %195 = load ptr, ptr %194, align 8, !tbaa !45
  %.not = icmp eq ptr %195, null
  br i1 %.not, label %197, label %196

196:                                              ; preds = %192
  invoke void @_ZN2vl7parsing9analyzing19LogTransitionSymbolEPNS1_13ParsingSymbolERNS_6stream10TextWriterE(ptr noundef nonnull %195, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %197 unwind label %165

197:                                              ; preds = %.invoke105, %192, %196, %176
  %198 = load ptr, ptr %10, align 8, !tbaa !24
  %199 = getelementptr inbounds i8, ptr %198, i64 76
  %200 = load i32, ptr %199, align 4, !tbaa !46
  %201 = icmp ult i32 %200, 3
  br i1 %201, label %switch.lookup, label %206

switch.lookup:                                    ; preds = %197
  %202 = zext nneg i32 %200 to i64
  %switch.gep = getelementptr inbounds [3 x ptr], ptr @switch.table._ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE, i64 0, i64 %202
  %switch.load = load ptr, ptr %switch.gep, align 8
  %203 = load ptr, ptr %1, align 8, !tbaa !5
  %204 = getelementptr inbounds i8, ptr %203, i64 32
  %205 = load ptr, ptr %204, align 8
  invoke void %205(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %switch.load)
          to label %206 unwind label %165

206:                                              ; preds = %197, %switch.lookup
  %207 = load ptr, ptr %10, align 8, !tbaa !24
  %208 = getelementptr inbounds i8, ptr %207, i64 16
  %209 = load ptr, ptr %208, align 8, !tbaa !47
  %210 = getelementptr inbounds i8, ptr %209, i64 152
  %211 = load ptr, ptr %1, align 8, !tbaa !5
  %212 = getelementptr inbounds i8, ptr %211, i64 64
  %213 = load ptr, ptr %212, align 8
  invoke void %213(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %210)
          to label %214 unwind label %165

214:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #4
  %215 = load ptr, ptr %10, align 8, !tbaa !24
  %216 = getelementptr inbounds i8, ptr %215, i64 24
  %217 = load ptr, ptr %216, align 8, !tbaa !5
  %218 = getelementptr i8, ptr %217, i64 -24
  %219 = load i64, ptr %218, align 8
  %220 = getelementptr inbounds i8, ptr %216, i64 %219
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS8_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.551") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %223 unwind label %221

221:                                              ; preds = %214
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %309

223:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #4
  call void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12)
  br label %224

224:                                              ; preds = %305, %223
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i64 16
  %227 = load ptr, ptr %226, align 8
  %228 = invoke noundef zeroext i1 %227(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %229 unwind label %230

229:                                              ; preds = %224
  br i1 %228, label %232, label %.critedge103

.critedge103:                                     ; preds = %229
  call void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #4
  br label %156, !llvm.loop !48

230:                                              ; preds = %switch.lookup110, %305, %297, %293, %281, %273, %265, %261, %253, %249, %224
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing9analyzing6ActionEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing6ActionEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #4
  br label %309

232:                                              ; preds = %229
  %233 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %234 = getelementptr inbounds i8, ptr %233, i64 8
  %235 = load i32, ptr %234, align 8, !tbaa !49
  %236 = icmp ult i32 %235, 7
  br i1 %236, label %switch.lookup110, label %241

switch.lookup110:                                 ; preds = %232
  %237 = zext nneg i32 %235 to i64
  %switch.gep111 = getelementptr inbounds [7 x ptr], ptr @switch.table._ZN2vl7parsing9analyzing3LogENS_3PtrINS1_9AutomatonEEERNS_6stream10TextWriterE.1, i64 0, i64 %237
  %switch.load112 = load ptr, ptr %switch.gep111, align 8
  %238 = load ptr, ptr %1, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 32
  %240 = load ptr, ptr %239, align 8
  invoke void %240(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %switch.load112)
          to label %241 unwind label %230

241:                                              ; preds = %232, %switch.lookup110
  %242 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %243 = getelementptr inbounds i8, ptr %242, i64 40
  %244 = load ptr, ptr %243, align 8, !tbaa !52
  %.not81 = icmp eq ptr %244, null
  br i1 %.not81, label %277, label %245

245:                                              ; preds = %241
  %246 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %247 = getelementptr inbounds i8, ptr %246, i64 48
  %248 = load ptr, ptr %247, align 8, !tbaa !53
  %.not82 = icmp eq ptr %248, null
  br i1 %.not82, label %277, label %249

249:                                              ; preds = %245
  %250 = load ptr, ptr %1, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %250, i64 32
  %252 = load ptr, ptr %251, align 8
  invoke void %252(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.159)
          to label %253 unwind label %230

253:                                              ; preds = %249
  %254 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %255 = getelementptr inbounds i8, ptr %254, i64 40
  %256 = load ptr, ptr %255, align 8, !tbaa !52
  %257 = getelementptr inbounds i8, ptr %256, i64 152
  %258 = load ptr, ptr %1, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 40
  %260 = load ptr, ptr %259, align 8
  invoke void %260(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %257)
          to label %261 unwind label %230

261:                                              ; preds = %253
  %262 = load ptr, ptr %1, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %262, i64 32
  %264 = load ptr, ptr %263, align 8
  invoke void %264(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.325)
          to label %265 unwind label %230

265:                                              ; preds = %261
  %266 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %267 = getelementptr inbounds i8, ptr %266, i64 48
  %268 = load ptr, ptr %267, align 8, !tbaa !53
  %269 = getelementptr inbounds i8, ptr %268, i64 152
  %270 = load ptr, ptr %1, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %270, i64 40
  %272 = load ptr, ptr %271, align 8
  invoke void %272(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %269)
          to label %273 unwind label %230

273:                                              ; preds = %265
  %274 = load ptr, ptr %1, align 8, !tbaa !5
  %275 = getelementptr inbounds i8, ptr %274, i64 32
  %276 = load ptr, ptr %275, align 8
  invoke void %276(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.335)
          to label %277 unwind label %230

277:                                              ; preds = %273, %245, %241
  %278 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %279 = getelementptr inbounds i8, ptr %278, i64 24
  %280 = load ptr, ptr %279, align 8, !tbaa !54
  %.not83 = icmp eq ptr %280, null
  br i1 %.not83, label %289, label %281

281:                                              ; preds = %277
  %282 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %283 = getelementptr inbounds i8, ptr %282, i64 24
  %284 = load ptr, ptr %283, align 8, !tbaa !54
  %285 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN2vl7parsing9analyzing13ParsingSymbol7GetNameEv(ptr noundef nonnull align 8 dereferenceable(304) %284)
  %286 = load ptr, ptr %1, align 8, !tbaa !5
  %287 = getelementptr inbounds i8, ptr %286, i64 40
  %288 = load ptr, ptr %287, align 8
  invoke void %288(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %285)
          to label %289 unwind label %230

289:                                              ; preds = %281, %277
  %290 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %291 = getelementptr inbounds i8, ptr %290, i64 16
  %292 = load ptr, ptr %291, align 8, !tbaa !55
  %.not84 = icmp eq ptr %292, null
  br i1 %.not84, label %305, label %293

293:                                              ; preds = %289
  %294 = load ptr, ptr %1, align 8, !tbaa !5
  %295 = getelementptr inbounds i8, ptr %294, i64 32
  %296 = load ptr, ptr %295, align 8
  invoke void %296(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.325)
          to label %297 unwind label %230

297:                                              ; preds = %293
  %298 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing6ActionEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %12)
  %299 = getelementptr inbounds i8, ptr %298, i64 16
  %300 = load ptr, ptr %299, align 8, !tbaa !55
  %301 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN2vl7parsing9analyzing13ParsingSymbol7GetNameEv(ptr noundef nonnull align 8 dereferenceable(304) %300)
  %302 = load ptr, ptr %1, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i64 40
  %304 = load ptr, ptr %303, align 8
  invoke void %304(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %301)
          to label %305 unwind label %230

305:                                              ; preds = %297, %289
  %306 = load ptr, ptr %1, align 8, !tbaa !5
  %307 = getelementptr inbounds i8, ptr %306, i64 56
  %308 = load ptr, ptr %307, align 8
  invoke void %308(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.2)
          to label %224 unwind label %230, !llvm.loop !56

309:                                              ; preds = %221, %230, %165
  %.pn.pn = phi { ptr, i32 } [ %166, %165 ], [ %231, %230 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #4
  br label %314

310:                                              ; preds = %.preheader
  %311 = load ptr, ptr %1, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 56
  %313 = load ptr, ptr %312, align 8
  invoke void %313(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.336)
          to label %107 unwind label %138, !llvm.loop !57

314:                                              ; preds = %138, %153, %309, %140, %113
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %114, %113 ], [ %139, %138 ], [ %141, %140 ], [ %.pn.pn, %309 ], [ %154, %153 ]
  call void @_ZN2vl3PtrINS_7parsing9analyzing8RuleInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_3PtrINS_7parsing9analyzing8RuleInfoEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #4
  br label %315

315:                                              ; preds = %314, %104
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %314 ], [ %105, %104 ]
  call void @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %6) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #4
  br label %316

316:                                              ; preds = %315, %103
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %103 ], [ %.pn.pn.pn.pn.pn.pn.pn, %315 ]
  resume { ptr, i32 } %.pn92.pn.pn
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 = { 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 #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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !11, i64 8}
!9 = !{!"_ZTSN2vl7parsing9analyzing8RuleInfoE", !10, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !19, i64 80}
!10 = !{!"_ZTSN2vl6ObjectE"}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !7, i64 0}
!13 = !{!"_ZTSN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EE", !14, i64 0}
!14 = !{!"_ZTSN2vl11collections8ListBaseIPNS_7parsing9analyzing5StateES5_EE", !15, i64 0, !17, i64 24, !18, i64 32}
!15 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEEE", !16, i64 0, !11, i64 8, !17, i64 16}
!16 = !{!"_ZTSN2vl11collections9ListStoreIPNS_7parsing9analyzing5StateELb1EEE", !10, i64 0}
!17 = !{!"long", !12, i64 0}
!18 = !{!"bool", !12, i64 0}
!19 = !{!"int", !12, i64 0}
!20 = !{!9, !11, i64 16}
!21 = !{!9, !11, i64 24}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!11, !11, i64 0}
!25 = distinct !{!25, !23}
!26 = !{!27, !18, i64 104}
!27 = !{!"_ZTSN2vl7parsing9analyzing5StateE", !10, i64 0, !28, i64 8, !28, i64 56, !18, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !32, i64 144, !33, i64 152, !33, i64 200}
!28 = !{!"_ZTSN2vl11collections4ListIPNS_7parsing9analyzing10TransitionES5_EE", !29, i64 0}
!29 = !{!"_ZTSN2vl11collections8ListBaseIPNS_7parsing9analyzing10TransitionES5_EE", !30, i64 0, !17, i64 24, !18, i64 32}
!30 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEEE", !31, i64 0, !11, i64 8, !17, i64 16}
!31 = !{!"_ZTSN2vl11collections9ListStoreIPNS_7parsing9analyzing10TransitionELb1EEE", !10, i64 0}
!32 = !{!"_ZTSN2vl7parsing9analyzing5State13StatePositionE", !12, i64 0}
!33 = !{!"_ZTSN2vl12ObjectStringIwEE", !10, i64 0, !11, i64 8, !11, i64 16, !17, i64 24, !17, i64 32, !17, i64 40}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = distinct !{!36, !23}
!37 = !{!38, !43, i64 72}
!38 = !{!"_ZTSN2vl7parsing9analyzing10TransitionE", !10, i64 0, !11, i64 8, !11, i64 16, !39, i64 24, !43, i64 72, !44, i64 76, !11, i64 80}
!39 = !{!"_ZTSN2vl11collections4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !40, i64 0}
!40 = !{!"_ZTSN2vl11collections8ListBaseINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !41, i64 0, !17, i64 24, !18, i64 32}
!41 = !{!"_ZTSN2vl11collections9ArrayBaseINS_3PtrINS_7parsing9analyzing6ActionEEEEE", !42, i64 0, !11, i64 8, !17, i64 16}
!42 = !{!"_ZTSN2vl11collections9ListStoreINS_3PtrINS_7parsing9analyzing6ActionEEELb0EEE", !10, i64 0}
!43 = !{!"_ZTSN2vl7parsing9analyzing10Transition14TransitionTypeE", !12, i64 0}
!44 = !{!"_ZTSN2vl7parsing9analyzing10Transition18StackOperationTypeE", !12, i64 0}
!45 = !{!38, !11, i64 80}
!46 = !{!38, !44, i64 76}
!47 = !{!38, !11, i64 16}
!48 = distinct !{!48, !23}
!49 = !{!50, !51, i64 8}
!50 = !{!"_ZTSN2vl7parsing9analyzing6ActionE", !10, i64 0, !51, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48}
!51 = !{!"_ZTSN2vl7parsing9analyzing6Action10ActionTypeE", !12, i64 0}
!52 = !{!50, !11, i64 40}
!53 = !{!50, !11, i64 48}
!54 = !{!50, !11, i64 24}
!55 = !{!50, !11, i64 16}
!56 = distinct !{!56, !23}
!57 = distinct !{!57, !23}


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