; 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::Ptr.461" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::List.453" = type { %"class.vl::collections::ListBase.base.459", %"class.vl::collections::IEnumerable.457" }
%"class.vl::collections::ListBase.base.459" = type <{ %"class.vl::collections::ArrayBase.base.458", i64, i8 }>
%"class.vl::collections::ArrayBase.base.458" = type { %"class.vl::collections::ListStore.456", ptr, i64 }
%"class.vl::collections::ListStore.456" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.457" = type { %"class.vl::Interface" }
%"class.vl::Interface" = type { ptr }
%"class.vl::collections::EnumerableForEachIterator.467" = type { %"class.vl::collections::ForEachIterator.468", %"class.vl::Ptr.469" }
%"class.vl::collections::ForEachIterator.468" = type { %"class.vl::Object" }
%"class.vl::Ptr.469" = type { ptr, ptr, ptr, ptr }
%"struct.vl::parsing::analyzing::ClosureItem" = type <{ ptr, %"class.vl::Ptr.452", i8, [7 x i8] }>
%"class.vl::Ptr.452" = type { ptr, ptr, ptr, ptr }
%"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::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 }

; 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 uwtable
declare dso_local noundef ptr @_ZN2vl7parsing9analyzing9Automaton7EpsilonEPNS1_5StateES4_(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, ptr noundef) #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2vl7parsing9analyzing14EpsilonClosureEPNS1_10TransitionE(ptr noundef) #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)) #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 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 uwtable
declare dso_local void @_ZN2vl7parsing9analyzing13SearchClosureEPFNS1_11ClosureItem12SearchResultEPNS1_10TransitionEEPNS1_5StateERNS_11collections4ListIS2_S2_EE(ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(33)) #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing9analyzing24RemoveEpsilonTransitionsERNS_11collections10DictionaryIPNS1_5StateES5_S5_S5_EERNS2_4ListIS5_S5_EENS_3PtrINS1_9AutomatonEEE(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef nonnull align 8 dereferenceable(33) %1, ptr noundef %2) #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.vl::Ptr.461", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.vl::collections::List.453", align 8
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca %"class.vl::collections::EnumerableForEachIterator.467", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.vl::parsing::analyzing::ClosureItem", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.vl::Ptr.461", 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 ptr, align 8
  %28 = alloca %"class.vl::Ptr.461", align 8
  %29 = alloca ptr, align 8
  %30 = alloca i8, align 1
  %31 = alloca ptr, align 8
  %32 = alloca %"class.vl::collections::EnumerableForEachIterator.449", align 8
  %33 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  store i64 0, ptr %7, align 8, !tbaa !9
  br label %34

34:                                               ; preds = %293, %3
  %35 = load i64, ptr %7, align 8, !tbaa !9
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %36)
  %38 = icmp slt i64 %35, %37
  br i1 %38, label %39, label %296

39:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = load i64, ptr %7, align 8, !tbaa !9
  %42 = add nsw i64 %41, 1
  store i64 %42, ptr %7, align 8, !tbaa !9
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %40, i64 noundef %41)
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %44, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef %10, ptr noundef %45, ptr noundef nonnull align 8 dereferenceable(33) %46, ptr noundef nonnull align 8 dereferenceable(104) %47)
          to label %49 unwind label %64

49:                                               ; preds = %39
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  store ptr %48, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #4
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_EC1Ev(ptr noundef nonnull align 8 dereferenceable(33) %13)
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN2vl7parsing9analyzing13SearchClosureEPFNS1_11ClosureItem12SearchResultEPNS1_10TransitionEEPNS1_5StateERNS_11collections4ListIS2_S2_EE(ptr noundef @_ZN2vl7parsing9analyzing14EpsilonClosureEPNS1_10TransitionE, ptr noundef %50, ptr noundef nonnull align 8 dereferenceable(33) %13)
          to label %51 unwind label %68

51:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #4
  store i8 1, ptr %14, align 1, !tbaa !11
  %52 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %53 = trunc i8 %52 to i1
  br i1 %53, label %54, label %293

54:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #4
  %55 = load ptr, ptr %13, align 8, !tbaa !15
  %56 = getelementptr i8, ptr %55, i64 -24
  %57 = load i64, ptr %56, align 8
  %58 = getelementptr inbounds i8, ptr %13, i64 %57
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_7parsing9analyzing11ClosureItemEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS6_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.467") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %59 unwind label %72

59:                                               ; preds = %54
  store ptr %16, ptr %15, align 8, !tbaa !5
  br label %60

60:                                               ; preds = %290, %59
  %61 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %62 = trunc i8 %61 to i1
  br i1 %62, label %76, label %63

63:                                               ; preds = %60
  store i32 4, ptr %17, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_7parsing9analyzing11ClosureItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  br label %292

64:                                               ; preds = %39
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %11, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %12, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  br label %295

68:                                               ; preds = %49
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %11, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %12, align 4
  br label %294

72:                                               ; preds = %54
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %11, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %12, align 4
  br label %291

76:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #4
  invoke void @_ZN2vl7parsing9analyzing11ClosureItemC2Ev(ptr noundef nonnull align 8 dereferenceable(41) %18)
          to label %77 unwind label %86

77:                                               ; preds = %76
  br label %78

78:                                               ; preds = %285, %77
  %79 = load ptr, ptr %15, align 8, !tbaa !5
  %80 = load ptr, ptr %79, align 8, !tbaa !15
  %81 = getelementptr inbounds ptr, ptr %80, i64 2
  %82 = load ptr, ptr %81, align 8
  %83 = invoke noundef zeroext i1 %82(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(41) %18)
          to label %84 unwind label %90

84:                                               ; preds = %78
  br i1 %83, label %94, label %85

85:                                               ; preds = %84
  store i32 7, ptr %17, align 4
  call void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41) %18) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #4
  br label %289

86:                                               ; preds = %76
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %11, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %12, align 4
  br label %288

90:                                               ; preds = %78
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %11, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %12, align 4
  br label %287

94:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %95 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 1
  %96 = invoke noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %97 unwind label %159

97:                                               ; preds = %94
  %98 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 1
  %99 = invoke noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %98)
          to label %100 unwind label %159

100:                                              ; preds = %97
  %101 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %102 unwind label %159

102:                                              ; preds = %100
  %103 = sub nsw i64 %101, 1
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE3GetEl(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %103)
          to label %105 unwind label %159

105:                                              ; preds = %102
  %106 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %106, ptr %19, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 2
  %108 = load i8, ptr %107, align 8, !tbaa !17, !range !13, !noundef !14
  %109 = trunc i8 %108 to i1
  br i1 %109, label %110, label %115

110:                                              ; preds = %105
  %111 = load ptr, ptr %19, align 8, !tbaa !5
  %112 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %111, i32 0, i32 4
  %113 = load i32, ptr %112, align 8, !tbaa !20
  %114 = icmp ne i32 %113, 4
  br i1 %114, label %115, label %285

115:                                              ; preds = %110, %105
  %116 = load ptr, ptr %19, align 8, !tbaa !5
  %117 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %116, i32 0, i32 1
  %118 = load ptr, ptr %117, align 8, !tbaa !29
  %119 = getelementptr inbounds %"class.vl::parsing::analyzing::State", ptr %118, i32 0, i32 3
  %120 = load i8, ptr %119, align 8, !tbaa !30, !range !13, !noundef !14
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %211

122:                                              ; preds = %115
  %123 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 1
  %124 = invoke noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %125 unwind label %159

125:                                              ; preds = %122
  %126 = invoke noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %127 unwind label %159

127:                                              ; preds = %125
  %128 = icmp sgt i64 %126, 1
  br i1 %128, label %129, label %211

129:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %130 unwind label %163

130:                                              ; preds = %129
  %131 = load ptr, ptr %19, align 8, !tbaa !5
  %132 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %131, i32 0, i32 1
  %133 = load ptr, ptr %132, align 8, !tbaa !29
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef %21, ptr noundef %133, ptr noundef nonnull align 8 dereferenceable(33) %134, ptr noundef nonnull align 8 dereferenceable(104) %135)
          to label %137 unwind label %167

137:                                              ; preds = %130
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #4
  store ptr %136, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  %138 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %139 unwind label %171

139:                                              ; preds = %137
  %140 = load ptr, ptr %9, align 8, !tbaa !5
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = invoke noundef ptr @_ZN2vl7parsing9analyzing9Automaton7EpsilonEPNS1_5StateES4_(ptr noundef nonnull align 8 dereferenceable(224) %138, ptr noundef %140, ptr noundef %141)
          to label %143 unwind label %171

143:                                              ; preds = %139
  store ptr %142, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #4
  store i8 1, ptr %23, align 1, !tbaa !11
  %144 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %145 = trunc i8 %144 to i1
  br i1 %145, label %146, label %208

146:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #4
  %147 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 1
  %148 = invoke noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEE3ObjEv(ptr noundef nonnull align 8 dereferenceable(32) %147)
          to label %149 unwind label %175

149:                                              ; preds = %146
  %150 = load ptr, ptr %148, align 8, !tbaa !15
  %151 = getelementptr i8, ptr %150, i64 -24
  %152 = load i64, ptr %151, align 8
  %153 = getelementptr inbounds i8, ptr %148, i64 %152
  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) %153)
          to label %154 unwind label %175

154:                                              ; preds = %149
  store ptr %25, ptr %24, align 8, !tbaa !5
  br label %155

155:                                              ; preds = %205, %154
  %156 = load i8, ptr %23, align 1, !tbaa !11, !range !13, !noundef !14
  %157 = trunc i8 %156 to i1
  br i1 %157, label %179, label %158

158:                                              ; preds = %155
  store i32 9, ptr %17, 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 %207

159:                                              ; preds = %125, %122, %102, %100, %97, %94
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %11, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %12, align 4
  br label %286

163:                                              ; preds = %129
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %11, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %12, align 4
  br label %210

167:                                              ; preds = %130
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %11, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %12, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #4
  br label %210

171:                                              ; preds = %139, %137
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %11, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %12, align 4
  br label %209

175:                                              ; preds = %149, %146
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %11, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %12, align 4
  br label %206

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

180:                                              ; preds = %202, %179
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = load ptr, ptr %181, align 8, !tbaa !15
  %183 = getelementptr inbounds ptr, ptr %182, i64 2
  %184 = load ptr, ptr %183, align 8
  %185 = invoke noundef zeroext i1 %184(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %186 unwind label %188

186:                                              ; preds = %180
  br i1 %185, label %192, label %187

187:                                              ; preds = %186
  store i32 12, ptr %17, align 4
  br label %203

188:                                              ; preds = %197, %180
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %11, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %12, align 4
  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 %206

192:                                              ; preds = %186
  %193 = load ptr, ptr %26, align 8, !tbaa !5
  %194 = load ptr, ptr %19, align 8, !tbaa !5
  %195 = icmp eq ptr %193, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %192
  store i32 12, ptr %17, align 4
  br label %203

197:                                              ; preds = %192
  %198 = load ptr, ptr %22, align 8, !tbaa !5
  %199 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %198, i32 0, i32 3
  %200 = load ptr, ptr %26, align 8, !tbaa !5
  %201 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %200, i32 0, i32 3
  invoke void @_ZN2vl11collections8CopyFromINS0_4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS6_EES9_EEvRT_RKT0_b(ptr noundef nonnull align 8 dereferenceable(33) %199, ptr noundef nonnull align 8 dereferenceable(33) %201, i1 noundef zeroext true)
          to label %202 unwind label %188

202:                                              ; preds = %197
  br label %180, !llvm.loop !38

203:                                              ; preds = %196, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  br label %204

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204
  store i8 0, ptr %23, align 1, !tbaa !11
  br label %155, !llvm.loop !40

206:                                              ; preds = %188, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  br label %209

207:                                              ; preds = %158
  br label %208

208:                                              ; preds = %207, %143
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  br label %284

209:                                              ; preds = %206, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  br label %210

210:                                              ; preds = %209, %167, %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  br label %286

211:                                              ; preds = %127, %115
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %212 unwind label %242

212:                                              ; preds = %211
  %213 = load ptr, ptr %19, align 8, !tbaa !5
  %214 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %213, i32 0, i32 2
  %215 = load ptr, ptr %214, align 8, !tbaa !41
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef %28, ptr noundef %215, ptr noundef nonnull align 8 dereferenceable(33) %216, ptr noundef nonnull align 8 dereferenceable(104) %217)
          to label %219 unwind label %246

219:                                              ; preds = %212
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #4
  store ptr %218, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  %220 = invoke noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %221 unwind label %250

221:                                              ; preds = %219
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = load ptr, ptr %27, align 8, !tbaa !5
  %224 = load ptr, ptr %19, align 8, !tbaa !5
  %225 = invoke noundef ptr @_ZN2vl7parsing9analyzing9Automaton14CopyTransitionEPNS1_5StateES4_PNS1_10TransitionE(ptr noundef nonnull align 8 dereferenceable(224) %220, ptr noundef %222, ptr noundef %223, ptr noundef %224)
          to label %226 unwind label %250

226:                                              ; preds = %221
  store ptr %225, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #4
  store i8 1, ptr %30, align 1, !tbaa !11
  %227 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %228 = trunc i8 %227 to i1
  br i1 %228, label %229, label %281

229:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 40, ptr %32) #4
  %230 = getelementptr inbounds %"struct.vl::parsing::analyzing::ClosureItem", ptr %18, i32 0, i32 1
  %231 = invoke noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEE3ObjEv(ptr noundef nonnull align 8 dereferenceable(32) %230)
          to label %232 unwind label %254

232:                                              ; preds = %229
  %233 = load ptr, ptr %231, align 8, !tbaa !15
  %234 = getelementptr i8, ptr %233, i64 -24
  %235 = load i64, ptr %234, align 8
  %236 = getelementptr inbounds i8, ptr %231, i64 %235
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing10TransitionEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind writable sret(%"class.vl::collections::EnumerableForEachIterator.449") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %237 unwind label %254

237:                                              ; preds = %232
  store ptr %32, ptr %31, align 8, !tbaa !5
  br label %238

238:                                              ; preds = %278, %237
  %239 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %240 = trunc i8 %239 to i1
  br i1 %240, label %258, label %241

241:                                              ; preds = %238
  store i32 14, ptr %17, align 4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  br label %280

242:                                              ; preds = %211
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %11, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %12, align 4
  br label %283

246:                                              ; preds = %212
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %11, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %12, align 4
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #4
  br label %283

250:                                              ; preds = %221, %219
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %11, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %12, align 4
  br label %282

254:                                              ; preds = %232, %229
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %11, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %12, align 4
  br label %279

258:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  br label %259

259:                                              ; preds = %276, %258
  %260 = load ptr, ptr %31, align 8, !tbaa !5
  %261 = load ptr, ptr %260, align 8, !tbaa !15
  %262 = getelementptr inbounds ptr, ptr %261, i64 2
  %263 = load ptr, ptr %262, align 8
  %264 = invoke noundef zeroext i1 %263(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %265 unwind label %267

265:                                              ; preds = %259
  br i1 %264, label %271, label %266

266:                                              ; preds = %265
  store i32 17, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  br label %277

267:                                              ; preds = %271, %259
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %11, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #4
  br label %279

271:                                              ; preds = %265
  %272 = load ptr, ptr %29, align 8, !tbaa !5
  %273 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %272, i32 0, i32 3
  %274 = load ptr, ptr %33, align 8, !tbaa !5
  %275 = getelementptr inbounds %"class.vl::parsing::analyzing::Transition", ptr %274, i32 0, i32 3
  invoke void @_ZN2vl11collections8CopyFromINS0_4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS6_EES9_EEvRT_RKT0_b(ptr noundef nonnull align 8 dereferenceable(33) %273, ptr noundef nonnull align 8 dereferenceable(33) %275, i1 noundef zeroext true)
          to label %276 unwind label %267

276:                                              ; preds = %271
  br label %259, !llvm.loop !42

277:                                              ; preds = %266
  br label %278

278:                                              ; preds = %277
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %238, !llvm.loop !43

279:                                              ; preds = %267, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  br label %282

280:                                              ; preds = %241
  br label %281

281:                                              ; preds = %280, %226
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  br label %284

282:                                              ; preds = %279, %250
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  br label %283

283:                                              ; preds = %282, %246, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  br label %286

284:                                              ; preds = %281, %208
  br label %285

285:                                              ; preds = %284, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  br label %78, !llvm.loop !44

286:                                              ; preds = %283, %210, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  br label %287

287:                                              ; preds = %286, %90
  call void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41) %18) #4
  br label %288

288:                                              ; preds = %287, %86
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_7parsing9analyzing11ClosureItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #4
  br label %291

289:                                              ; preds = %85
  br label %290

290:                                              ; preds = %289
  store i8 0, ptr %14, align 1, !tbaa !11
  br label %60, !llvm.loop !45

291:                                              ; preds = %288, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #4
  br label %294

292:                                              ; preds = %63
  br label %293

293:                                              ; preds = %292, %51
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #4
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %13) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  br label %34, !llvm.loop !46

294:                                              ; preds = %291, %68
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %13) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #4
  br label %295

295:                                              ; preds = %294, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  br label %297

296:                                              ; preds = %34
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  ret void

297:                                              ; preds = %295
  %298 = load ptr, ptr %11, align 8
  %299 = load i32, ptr %12, align 4
  %300 = insertvalue { ptr, i32 } poison, ptr %298, 0
  %301 = insertvalue { ptr, i32 } %300, i32 %299, 1
  resume { ptr, i32 } %301
}

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

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

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

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

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

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

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

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

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

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

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

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


; 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::Ptr.461" = type { ptr, ptr, ptr, ptr }
%"class.vl::collections::List.453" = type { %"class.vl::collections::ListBase.base.459", %"class.vl::collections::IEnumerable.457" }
%"class.vl::collections::ListBase.base.459" = type <{ %"class.vl::collections::ArrayBase.base.458", i64, i8 }>
%"class.vl::collections::ArrayBase.base.458" = type { %"class.vl::collections::ListStore.456", ptr, i64 }
%"class.vl::collections::ListStore.456" = type { %"class.vl::Object" }
%"class.vl::collections::IEnumerable.457" = type { %"class.vl::Interface" }
%"class.vl::Interface" = type { ptr }
%"class.vl::collections::EnumerableForEachIterator.467" = type { %"class.vl::collections::ForEachIterator.468", %"class.vl::Ptr.469" }
%"class.vl::collections::ForEachIterator.468" = type { %"class.vl::Object" }
%"class.vl::Ptr.469" = type { ptr, ptr, ptr, ptr }
%"struct.vl::parsing::analyzing::ClosureItem" = type <{ ptr, %"class.vl::Ptr.452", i8, [7 x i8] }>
%"class.vl::Ptr.452" = type { ptr, ptr, ptr, ptr }

; 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 uwtable
declare dso_local noundef ptr @_ZN2vl7parsing9analyzing9Automaton7EpsilonEPNS1_5StateES4_(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, ptr noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2vl7parsing9analyzing14EpsilonClosureEPNS1_10TransitionE(ptr noundef) #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 #1

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 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 uwtable
declare dso_local void @_ZN2vl7parsing9analyzing13SearchClosureEPFNS1_11ClosureItem12SearchResultEPNS1_10TransitionEEPNS1_5StateERNS_11collections4ListIS2_S2_EE(ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2vl7parsing9analyzing24RemoveEpsilonTransitionsERNS_11collections10DictionaryIPNS1_5StateES5_S5_S5_EERNS2_4ListIS5_S5_EENS_3PtrINS1_9AutomatonEEE(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef nonnull align 8 dereferenceable(33) %1, ptr noundef %2) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.vl::Ptr.461", align 8
  %5 = alloca %"class.vl::collections::List.453", align 8
  %6 = alloca %"class.vl::collections::EnumerableForEachIterator.467", align 8
  %7 = alloca %"struct.vl::parsing::analyzing::ClosureItem", align 8
  %8 = alloca %"class.vl::Ptr.461", align 8
  %9 = alloca %"class.vl::collections::EnumerableForEachIterator.449", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.vl::Ptr.461", align 8
  %12 = alloca %"class.vl::collections::EnumerableForEachIterator.449", align 8
  %13 = alloca ptr, align 8
  %14 = tail call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %1)
  %15 = icmp sgt i64 %14, 0
  br i1 %15, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %3
  %16 = getelementptr inbounds i8, ptr %7, i64 8
  %17 = getelementptr inbounds i8, ptr %7, i64 40
  br label %18

18:                                               ; preds = %.lr.ph, %.critedge
  %.068 = phi i64 [ 0, %.lr.ph ], [ %19, %.critedge ]
  %19 = add nuw nsw i64 %.068, 1
  %20 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2vl11collections4ListIPNS_7parsing9analyzing5StateES5_EixEl(ptr noundef nonnull align 8 dereferenceable(33) %1, i64 noundef %.068)
  %21 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %22 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef nonnull %4, ptr noundef %21, ptr noundef nonnull align 8 dereferenceable(33) %1, ptr noundef nonnull align 8 dereferenceable(104) %0)
          to label %23 unwind label %29

23:                                               ; preds = %18
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) #4
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_EC1Ev(ptr noundef nonnull align 8 dereferenceable(33) %5)
  invoke void @_ZN2vl7parsing9analyzing13SearchClosureEPFNS1_11ClosureItem12SearchResultEPNS1_10TransitionEEPNS1_5StateERNS_11collections4ListIS2_S2_EE(ptr noundef nonnull @_ZN2vl7parsing9analyzing14EpsilonClosureEPNS1_10TransitionE, ptr noundef %21, ptr noundef nonnull align 8 dereferenceable(33) %5)
          to label %24 unwind label %31

24:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #4
  %25 = load ptr, ptr %5, align 8, !tbaa !9
  %26 = getelementptr i8, ptr %25, i64 -24
  %27 = load i64, ptr %26, align 8
  %28 = getelementptr inbounds i8, ptr %5, i64 %27
  invoke void @_ZN2vl11collections21CreateForEachIteratorINS_7parsing9analyzing11ClosureItemEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS6_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.467") align 8 %6, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %35 unwind label %33

29:                                               ; preds = %18
  %30 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  br label %146

31:                                               ; preds = %23
  %32 = landingpad { ptr, i32 }
          cleanup
  br label %145

33:                                               ; preds = %24
  %34 = landingpad { ptr, i32 }
          cleanup
  br label %145

35:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #4
  invoke void @_ZN2vl7parsing9analyzing11ClosureItemC2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7)
          to label %.preheader unwind label %43

.preheader:                                       ; preds = %35, %.preheader.backedge
  %36 = load ptr, ptr %6, align 8, !tbaa !9
  %37 = getelementptr inbounds i8, ptr %36, i64 16
  %38 = load ptr, ptr %37, align 8
  %39 = invoke noundef zeroext i1 %38(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(41) %7)
          to label %40 unwind label %45

40:                                               ; preds = %.preheader
  br i1 %39, label %47, label %.critedge

.critedge:                                        ; preds = %40
  call void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_7parsing9analyzing11ClosureItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #4
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %5) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #4
  %41 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing5StateEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %1)
  %42 = icmp slt i64 %19, %41
  br i1 %42, label %18, label %._crit_edge, !llvm.loop !11

43:                                               ; preds = %35
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %144

45:                                               ; preds = %.preheader
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %143

47:                                               ; preds = %40
  %48 = call noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %16)
  %49 = call noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %16)
  %50 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %49)
  %51 = add nsw i64 %50, -1
  %52 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE3GetEl(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %51)
          to label %53 unwind label %83

53:                                               ; preds = %47
  %54 = load ptr, ptr %52, align 8, !tbaa !5
  %55 = load i8, ptr %17, align 8, !tbaa !13, !range !17, !noundef !18
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %60

57:                                               ; preds = %53
  %58 = getelementptr inbounds i8, ptr %54, i64 72
  %59 = load i32, ptr %58, align 8, !tbaa !19
  %.not = icmp eq i32 %59, 4
  br i1 %.not, label %.preheader.backedge, label %60

60:                                               ; preds = %57, %53
  %61 = getelementptr inbounds i8, ptr %54, i64 8
  %62 = load ptr, ptr %61, align 8, !tbaa !29
  %63 = getelementptr inbounds i8, ptr %62, i64 104
  %64 = load i8, ptr %63, align 8, !tbaa !30, !range !17, !noundef !18
  %65 = trunc nuw i8 %64 to i1
  br i1 %65, label %66, label %108

66:                                               ; preds = %60
  %67 = call noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %16)
  %68 = call noundef i64 @_ZNK2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEE5CountEv(ptr noundef nonnull align 8 dereferenceable(24) %67)
  %69 = icmp sgt i64 %68, 1
  br i1 %69, label %70, label %108

70:                                               ; preds = %66
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %71 unwind label %85

71:                                               ; preds = %70
  %72 = load ptr, ptr %61, align 8, !tbaa !29
  %73 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef nonnull %8, ptr noundef %72, ptr noundef nonnull align 8 dereferenceable(33) %1, ptr noundef nonnull align 8 dereferenceable(104) %0)
          to label %74 unwind label %87

74:                                               ; preds = %71
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  %75 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %76 = invoke noundef ptr @_ZN2vl7parsing9analyzing9Automaton7EpsilonEPNS1_5StateES4_(ptr noundef nonnull align 8 dereferenceable(224) %75, ptr noundef %22, ptr noundef %73)
          to label %77 unwind label %89

77:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #4
  %78 = call noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEE3ObjEv(ptr noundef nonnull align 8 dereferenceable(32) %16)
  %79 = load ptr, ptr %78, align 8, !tbaa !9
  %80 = getelementptr i8, ptr %79, i64 -24
  %81 = load i64, ptr %80, align 8
  %82 = getelementptr inbounds i8, ptr %78, i64 %81
  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) %82)
          to label %93 unwind label %91

83:                                               ; preds = %47
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %143

85:                                               ; preds = %70
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %143

87:                                               ; preds = %71
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #4
  br label %143

89:                                               ; preds = %74
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %143

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

93:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  %94 = getelementptr inbounds i8, ptr %76, i64 24
  br label %95

95:                                               ; preds = %106, %93
  %96 = load ptr, ptr %9, align 8, !tbaa !9
  %97 = getelementptr inbounds i8, ptr %96, i64 16
  %98 = load ptr, ptr %97, align 8
  %99 = invoke noundef zeroext i1 %98(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %100 unwind label %101

100:                                              ; preds = %95
  br i1 %99, label %103, label %.critedge65

101:                                              ; preds = %106, %95
  %102 = landingpad { ptr, i32 }
          cleanup
  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 %143

103:                                              ; preds = %100
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = icmp eq ptr %104, %54
  br i1 %105, label %.critedge65, label %106

106:                                              ; preds = %103
  %107 = getelementptr inbounds i8, ptr %104, i64 24
  invoke void @_ZN2vl11collections8CopyFromINS0_4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS6_EES9_EEvRT_RKT0_b(ptr noundef nonnull align 8 dereferenceable(33) %94, ptr noundef nonnull align 8 dereferenceable(33) %107, i1 noundef zeroext true)
          to label %95 unwind label %101, !llvm.loop !38

.critedge65:                                      ; preds = %103, %100
  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 %.preheader.backedge

.preheader.backedge:                              ; preds = %.critedge65, %.critedge67, %57
  br label %.preheader, !llvm.loop !39

108:                                              ; preds = %66, %60
  invoke void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %109 unwind label %122

109:                                              ; preds = %108
  %110 = getelementptr inbounds i8, ptr %54, i64 16
  %111 = load ptr, ptr %110, align 8, !tbaa !40
  %112 = invoke noundef ptr @_ZN2vl7parsing9analyzing14GetMappedStateENS_3PtrINS1_9AutomatonEEEPNS1_5StateERNS_11collections4ListIS6_S6_EERNS7_10DictionaryIS6_S6_S6_S6_EE(ptr noundef nonnull %11, ptr noundef %111, ptr noundef nonnull align 8 dereferenceable(33) %1, ptr noundef nonnull align 8 dereferenceable(104) %0)
          to label %113 unwind label %124

113:                                              ; preds = %109
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  %114 = call noundef ptr @_ZNK2vl3PtrINS_7parsing9analyzing9AutomatonEEptEv(ptr noundef nonnull align 8 dereferenceable(32) %2)
  %115 = invoke noundef ptr @_ZN2vl7parsing9analyzing9Automaton14CopyTransitionEPNS1_5StateES4_PNS1_10TransitionE(ptr noundef nonnull align 8 dereferenceable(224) %114, ptr noundef %22, ptr noundef %112, ptr noundef nonnull %54)
          to label %116 unwind label %126

116:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #4
  %117 = call noundef ptr @_ZNK2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEE3ObjEv(ptr noundef nonnull align 8 dereferenceable(32) %16)
  %118 = load ptr, ptr %117, align 8, !tbaa !9
  %119 = getelementptr i8, ptr %118, i64 -24
  %120 = load i64, ptr %119, align 8
  %121 = getelementptr inbounds i8, ptr %117, i64 %120
  invoke void @_ZN2vl11collections21CreateForEachIteratorIPNS_7parsing9analyzing10TransitionEEENS0_25EnumerableForEachIteratorIT_EERKNS0_11IEnumerableIS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.vl::collections::EnumerableForEachIterator.449") align 8 %12, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %130 unwind label %128

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

124:                                              ; preds = %109
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2vl3PtrINS_7parsing9analyzing9AutomatonEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  br label %143

126:                                              ; preds = %113
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %143

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

130:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  %131 = getelementptr inbounds i8, ptr %115, i64 24
  br label %132

132:                                              ; preds = %140, %130
  %133 = load ptr, ptr %12, align 8, !tbaa !9
  %134 = getelementptr inbounds i8, ptr %133, i64 16
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef zeroext i1 %135(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %137 unwind label %138

137:                                              ; preds = %132
  br i1 %136, label %140, label %.critedge67

.critedge67:                                      ; preds = %137
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #4
  br label %.preheader.backedge

138:                                              ; preds = %140, %132
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorIPNS_7parsing9analyzing10TransitionEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #4
  br label %143

140:                                              ; preds = %137
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 24
  invoke void @_ZN2vl11collections8CopyFromINS0_4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS6_EES9_EEvRT_RKT0_b(ptr noundef nonnull align 8 dereferenceable(33) %131, ptr noundef nonnull align 8 dereferenceable(33) %142, i1 noundef zeroext true)
          to label %132 unwind label %138, !llvm.loop !41

143:                                              ; preds = %83, %89, %101, %91, %87, %85, %126, %138, %128, %124, %122, %45
  %.pn54.pn.pn.pn.pn = phi { ptr, i32 } [ %46, %45 ], [ %84, %83 ], [ %88, %87 ], [ %86, %85 ], [ %90, %89 ], [ %102, %101 ], [ %92, %91 ], [ %125, %124 ], [ %123, %122 ], [ %127, %126 ], [ %139, %138 ], [ %129, %128 ]
  call void @_ZN2vl7parsing9analyzing11ClosureItemD2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7) #4
  br label %144

144:                                              ; preds = %143, %43
  %.pn54.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn54.pn.pn.pn.pn, %143 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #4
  call void @_ZN2vl11collections25EnumerableForEachIteratorINS_7parsing9analyzing11ClosureItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #4
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #4
  br label %145

145:                                              ; preds = %33, %144, %31
  %.pn54.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %32, %31 ], [ %.pn54.pn.pn.pn.pn.pn, %144 ], [ %34, %33 ]
  call void @_ZN2vl11collections4ListINS_7parsing9analyzing11ClosureItemES4_ED1Ev(ptr noundef nonnull align 8 dereferenceable(33) %5) #4
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #4
  br label %146

146:                                              ; preds = %145, %29
  %.pn54.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn54.pn.pn.pn.pn.pn.pn.pn, %145 ], [ %30, %29 ]
  resume { ptr, i32 } %.pn54.pn.pn.pn.pn.pn.pn.pn.pn

._crit_edge:                                      ; preds = %.critedge, %3
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"vtable pointer", !8, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !16, i64 40}
!14 = !{!"_ZTSN2vl7parsing9analyzing11ClosureItemE", !6, i64 0, !15, i64 8, !16, i64 40}
!15 = !{!"_ZTSN2vl3PtrINS_11collections4ListIPNS_7parsing9analyzing10TransitionES6_EEEE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!20, !27, i64 72}
!20 = !{!"_ZTSN2vl7parsing9analyzing10TransitionE", !21, i64 0, !6, i64 8, !6, i64 16, !22, i64 24, !27, i64 72, !28, i64 76, !6, i64 80}
!21 = !{!"_ZTSN2vl6ObjectE"}
!22 = !{!"_ZTSN2vl11collections4ListINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !23, i64 0}
!23 = !{!"_ZTSN2vl11collections8ListBaseINS_3PtrINS_7parsing9analyzing6ActionEEEPS5_EE", !24, i64 0, !26, i64 24, !16, i64 32}
!24 = !{!"_ZTSN2vl11collections9ArrayBaseINS_3PtrINS_7parsing9analyzing6ActionEEEEE", !25, i64 0, !6, i64 8, !26, i64 16}
!25 = !{!"_ZTSN2vl11collections9ListStoreINS_3PtrINS_7parsing9analyzing6ActionEEELb0EEE", !21, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN2vl7parsing9analyzing10Transition14TransitionTypeE", !7, i64 0}
!28 = !{!"_ZTSN2vl7parsing9analyzing10Transition18StackOperationTypeE", !7, i64 0}
!29 = !{!20, !6, i64 8}
!30 = !{!31, !16, i64 104}
!31 = !{!"_ZTSN2vl7parsing9analyzing5StateE", !21, i64 0, !32, i64 8, !32, i64 56, !16, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !36, i64 144, !37, i64 152, !37, i64 200}
!32 = !{!"_ZTSN2vl11collections4ListIPNS_7parsing9analyzing10TransitionES5_EE", !33, i64 0}
!33 = !{!"_ZTSN2vl11collections8ListBaseIPNS_7parsing9analyzing10TransitionES5_EE", !34, i64 0, !26, i64 24, !16, i64 32}
!34 = !{!"_ZTSN2vl11collections9ArrayBaseIPNS_7parsing9analyzing10TransitionEEE", !35, i64 0, !6, i64 8, !26, i64 16}
!35 = !{!"_ZTSN2vl11collections9ListStoreIPNS_7parsing9analyzing10TransitionELb1EEE", !21, i64 0}
!36 = !{!"_ZTSN2vl7parsing9analyzing5State13StatePositionE", !7, i64 0}
!37 = !{!"_ZTSN2vl12ObjectStringIwEE", !21, i64 0, !6, i64 8, !6, i64 16, !26, i64 24, !26, i64 32, !26, i64 40}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = !{!20, !6, i64 16}
!41 = distinct !{!41, !12}


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