; LLVM IR from thepowersgang/mrustc :: src/macro_rules (parse)

; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.ProtoSpan = type { %struct.Span, %class.RcString, i32, i32 }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%struct.MacroPatEnt = type <{ %struct.Span, %class.RcString, i32, [4 x i8], %class.Token, %"class.std::vector", i32, [4 x i8] }>
%class.anon = type { ptr }
%class.anon.19 = type { ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator.22" = type { i8 }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }

@__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState = external hidden unnamed_addr constant [21 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZTIN12CompileError7GenericE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.21 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState = external hidden unnamed_addr constant [115 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(80) %4) #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %class.TraceLog, align 8
  %12 = alloca %class.Token, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i1, align 1
  %16 = alloca i32, align 4
  %17 = alloca %struct.ProtoSpan, align 8
  %18 = alloca %class.Token, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %21 = alloca %class.Token, align 8
  %22 = alloca i1, align 1
  %23 = alloca %class.Token, align 8
  %24 = alloca %struct.MacroPatEnt, align 8
  %25 = alloca %struct.Span, align 8
  %26 = alloca %struct.ProtoSpan, align 8
  %27 = alloca %class.Token, align 8
  %28 = alloca %class.Token, align 8
  %29 = alloca %class.RcString, align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca i1, align 1
  %32 = alloca i1, align 1
  %33 = alloca %class.Token, align 8
  %34 = alloca %class.Token, align 8
  %35 = alloca i1, align 1
  %36 = alloca %class.Token, align 8
  %37 = alloca %class.Token, align 8
  %38 = alloca i1, align 1
  %39 = alloca %class.RcString, align 8
  %40 = alloca i32, align 4
  %41 = alloca %struct.Span, align 8
  %42 = alloca %struct.ProtoSpan, align 8
  %43 = alloca i32, align 4
  %44 = alloca %struct.Span, align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon, align 8
  %47 = alloca %struct.MacroPatEnt, align 8
  %48 = alloca %struct.Span, align 8
  %49 = alloca %class.RcString, align 8
  %50 = alloca i32, align 4
  %51 = alloca %"class.std::vector", align 8
  %52 = alloca i32, align 4
  %53 = alloca %class.Token, align 8
  %54 = alloca %struct.Span, align 8
  %55 = alloca %"class.std::function", align 8
  %56 = alloca %class.anon.19, align 8
  %57 = alloca %class.Token, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %struct.ProtoSpan, align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"class.std::vector.20", align 8
  %62 = alloca %"class.std::initializer_list", align 8
  %63 = alloca [3 x i32], align 4
  %64 = alloca %"class.std::allocator.22", align 1
  %65 = alloca i1, align 1
  %66 = alloca %"class.std::vector.20", align 8
  %67 = alloca %"class.std::initializer_list", align 8
  %68 = alloca [2 x i32], align 4
  %69 = alloca %"class.std::allocator.22", align 1
  %70 = alloca i1, align 1
  %71 = alloca %struct.MacroPatEnt, align 8
  %72 = alloca %struct.Span, align 8
  %73 = alloca %class.Token, align 8
  %74 = alloca %"class.std::vector", align 8
  %75 = alloca %struct.MacroPatEnt, align 8
  %76 = alloca %struct.Span, align 8
  %77 = alloca %struct.ProtoSpan, align 8
  %78 = alloca %class.Token, align 8
  %79 = alloca %struct.ProtoSpan, align 8
  store ptr %0, ptr %6, align 8
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %11) #8
  %80 = call noundef zeroext i1 @_Z13debug_enabledv()
  %81 = zext i1 %80 to i64
  %82 = select i1 %80, ptr @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef %82)
  call void @llvm.lifetime.start.p0(i64 88, ptr %12) #8
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %83 unwind label %116

83:                                               ; preds = %5
  store i1 false, ptr %15, align 1
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %84)
          to label %85 unwind label %120

85:                                               ; preds = %83
  br label %86

86:                                               ; preds = %894, %85
  call void @llvm.lifetime.start.p0(i64 88, ptr %18) #8
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %18, ptr noundef nonnull align 8 dereferenceable(176) %87)
          to label %88 unwind label %124

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %18)
          to label %90 unwind label %128

90:                                               ; preds = %88
  %91 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %89)
          to label %92 unwind label %128

92:                                               ; preds = %90
  %93 = load i32, ptr %9, align 4, !tbaa !9
  %94 = icmp ne i32 %91, %93
  br i1 %94, label %98, label %95

95:                                               ; preds = %92
  %96 = load i32, ptr %16, align 4, !tbaa !11
  %97 = icmp sgt i32 %96, 0
  br label %98

98:                                               ; preds = %95, %92
  %99 = phi i1 [ true, %92 ], [ %97, %95 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %18) #8
  br i1 %99, label %100, label %904

100:                                              ; preds = %98
  br label %101

101:                                              ; preds = %100
  %102 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %103 unwind label %133

103:                                              ; preds = %101
  br i1 %102, label %104, label %137

104:                                              ; preds = %103
  %105 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %105, ptr noundef @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %107 unwind label %133

107:                                              ; preds = %104
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef @.str)
          to label %109 unwind label %133

109:                                              ; preds = %107
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %111 unwind label %133

111:                                              ; preds = %109
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef @_ZSt3decRSt8ios_base)
          to label %113 unwind label %133

113:                                              ; preds = %111
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %115 unwind label %133

115:                                              ; preds = %113
  br label %137

116:                                              ; preds = %5
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %13, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %14, align 4
  br label %910

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

124:                                              ; preds = %86
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %13, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %14, align 4
  br label %132

128:                                              ; preds = %90, %88
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %13, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #8
  br label %132

132:                                              ; preds = %128, %124
  call void @llvm.lifetime.end.p0(i64 88, ptr %18) #8
  br label %906

133:                                              ; preds = %854, %272, %266, %264, %259, %224, %199, %147, %139, %113, %111, %109, %107, %104, %101
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %13, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %14, align 4
  br label %906

137:                                              ; preds = %115, %103
  br label %138

138:                                              ; preds = %137
  br label %139

139:                                              ; preds = %138
  %140 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %141 unwind label %133

141:                                              ; preds = %139
  %142 = load i32, ptr %8, align 4, !tbaa !9
  %143 = icmp eq i32 %140, %142
  br i1 %143, label %144, label %147

144:                                              ; preds = %141
  %145 = load i32, ptr %16, align 4, !tbaa !11
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %16, align 4, !tbaa !11
  br label %199

147:                                              ; preds = %141
  %148 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %149 unwind label %133

149:                                              ; preds = %147
  %150 = load i32, ptr %9, align 4, !tbaa !9
  %151 = icmp eq i32 %148, %150
  br i1 %151, label %152, label %198

152:                                              ; preds = %149
  %153 = load i32, ptr %16, align 4, !tbaa !11
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %195

155:                                              ; preds = %152
  store i1 true, ptr %22, align 1
  %156 = call ptr @__cxa_allocate_exception(i64 40) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr %20) #8
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %20)
          to label %157 unwind label %168

157:                                              ; preds = %155
  %158 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA11_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %20, ptr noundef nonnull align 1 dereferenceable(11) @.str.1)
          to label %159 unwind label %172

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 88, ptr %21) #8
  %160 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %21, i32 noundef %160)
          to label %161 unwind label %176

161:                                              ; preds = %159
  %162 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE5TokenEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %158, ptr noundef nonnull align 8 dereferenceable(88) %21)
          to label %163 unwind label %180

163:                                              ; preds = %161
  %164 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA18_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %162, ptr noundef nonnull align 1 dereferenceable(18) @.str.2)
          to label %165 unwind label %180

165:                                              ; preds = %163
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(112) %164)
          to label %166 unwind label %180

166:                                              ; preds = %165
  invoke void @_ZN12CompileError7GenericC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %156, ptr noundef %19)
          to label %167 unwind label %184

167:                                              ; preds = %166
  store i1 false, ptr %22, align 1
  invoke void @__cxa_throw(ptr %156, ptr @_ZTIN12CompileError7GenericE, ptr @_ZN12CompileError7GenericD2Ev) #9
          to label %916 unwind label %184

168:                                              ; preds = %155
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %13, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %14, align 4
  br label %191

172:                                              ; preds = %157
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %13, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %14, align 4
  br label %190

176:                                              ; preds = %159
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %13, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %14, align 4
  br label %189

180:                                              ; preds = %165, %163, %161
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %13, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %14, align 4
  br label %188

184:                                              ; preds = %167, %166
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %13, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %188

188:                                              ; preds = %184, %180
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #8
  br label %189

189:                                              ; preds = %188, %176
  call void @llvm.lifetime.end.p0(i64 88, ptr %21) #8
  br label %190

190:                                              ; preds = %189, %172
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %20) #8
  br label %191

191:                                              ; preds = %190, %168
  call void @llvm.lifetime.end.p0(i64 376, ptr %20) #8
  %192 = load i1, ptr %22, align 1
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  call void @__cxa_free_exception(ptr %156) #8
  br label %194

194:                                              ; preds = %193, %191
  br label %906

195:                                              ; preds = %152
  %196 = load i32, ptr %16, align 4, !tbaa !11
  %197 = add nsw i32 %196, -1
  store i32 %197, ptr %16, align 4, !tbaa !11
  br label %198

198:                                              ; preds = %195, %149
  br label %199

199:                                              ; preds = %198, %144
  %200 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %201 unwind label %133

201:                                              ; preds = %199
  switch i32 %200, label %859 [
    i32 68, label %202
    i32 1, label %851
  ]

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #8
  %203 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %23, ptr noundef nonnull align 8 dereferenceable(176) %203)
          to label %204 unwind label %209

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %23)
          to label %206 unwind label %213

206:                                              ; preds = %204
  %207 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %205)
          to label %208 unwind label %213

208:                                              ; preds = %206
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #8
  switch i32 %207, label %264 [
    i32 30, label %218
    i32 24, label %218
    i32 83, label %256
    i32 22, label %278
    i32 14, label %278
    i32 23, label %598
  ]

209:                                              ; preds = %202
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %13, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %14, align 4
  br label %217

213:                                              ; preds = %206, %204
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %13, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #8
  br label %217

217:                                              ; preds = %213, %209
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #8
  br label %906

218:                                              ; preds = %208, %208
  call void @llvm.lifetime.start.p0(i64 144, ptr %24) #8
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %220 unwind label %228

220:                                              ; preds = %218
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %25, ptr noundef nonnull align 8 dereferenceable(176) %219, ptr noundef %26)
          to label %221 unwind label %232

221:                                              ; preds = %220
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %27, i32 noundef 68)
          to label %222 unwind label %236

222:                                              ; preds = %221
  invoke void @_ZN11MacroPatEntC2E4Span5Token(ptr noundef nonnull align 8 dereferenceable(140) %24, ptr noundef %25, ptr noundef %27)
          to label %223 unwind label %240

223:                                              ; preds = %222
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %24)
          to label %224 unwind label %244

224:                                              ; preds = %223
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %24) #8
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %24) #8
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %28, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %226 unwind label %133

226:                                              ; preds = %224
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %225, ptr noundef %28)
          to label %227 unwind label %252

227:                                              ; preds = %226
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #8
  br label %850

228:                                              ; preds = %218
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %13, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %14, align 4
  br label %251

232:                                              ; preds = %220
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %13, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %14, align 4
  br label %250

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

240:                                              ; preds = %222
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %13, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %14, align 4
  br label %248

244:                                              ; preds = %223
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %13, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %14, align 4
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %24) #8
  br label %248

248:                                              ; preds = %244, %240
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #8
  br label %249

249:                                              ; preds = %248, %236
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %250

250:                                              ; preds = %249, %232
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  br label %251

251:                                              ; preds = %250, %228
  call void @llvm.lifetime.end.p0(i64 144, ptr %24) #8
  br label %906

252:                                              ; preds = %226
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %13, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #8
  br label %906

256:                                              ; preds = %208
  %257 = call ptr @__cxa_allocate_exception(i64 96) #8
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %257, ptr noundef nonnull align 8 dereferenceable(176) %258, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %259 unwind label %260

259:                                              ; preds = %256
  invoke void @__cxa_throw(ptr %257, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %133

260:                                              ; preds = %256
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %13, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %14, align 4
  call void @__cxa_free_exception(ptr %257) #8
  br label %906

264:                                              ; preds = %208
  %265 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %266 unwind label %133

266:                                              ; preds = %264
  %267 = invoke noundef zeroext i1 @_ZN5Token13type_is_rwordE10eTokenType(i32 noundef %265)
          to label %268 unwind label %133

268:                                              ; preds = %266
  br i1 %267, label %277, label %269

269:                                              ; preds = %268
  %270 = call ptr @__cxa_allocate_exception(i64 96) #8
  %271 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %270, ptr noundef nonnull align 8 dereferenceable(176) %271, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %272 unwind label %273

272:                                              ; preds = %269
  invoke void @__cxa_throw(ptr %270, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %133

273:                                              ; preds = %269
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %13, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %14, align 4
  call void @__cxa_free_exception(ptr %270) #8
  br label %906

277:                                              ; preds = %268
  br label %278

278:                                              ; preds = %277, %208, %208
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store i1 false, ptr %31, align 1
  store i1 false, ptr %32, align 1
  %279 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %280 unwind label %332

280:                                              ; preds = %278
  %281 = icmp eq i32 %279, 14
  br i1 %281, label %282, label %287

282:                                              ; preds = %280
  %283 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %284 unwind label %332

284:                                              ; preds = %282
  %285 = getelementptr inbounds %struct.Ident, ptr %283, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %286 unwind label %332

286:                                              ; preds = %284
  br label %297

287:                                              ; preds = %280
  %288 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %289 unwind label %332

289:                                              ; preds = %287
  %290 = icmp eq i32 %288, 22
  br i1 %290, label %291, label %293

291:                                              ; preds = %289
  invoke void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %292 unwind label %332

292:                                              ; preds = %291
  br label %296

293:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  store i1 true, ptr %31, align 1
  invoke void @_ZNK5Token6to_strB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %294 unwind label %336

294:                                              ; preds = %293
  store i1 true, ptr %32, align 1
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %295 unwind label %340

295:                                              ; preds = %294
  br label %296

296:                                              ; preds = %295, %292
  br label %297

297:                                              ; preds = %296, %286
  %298 = load i1, ptr %32, align 1
  br i1 %298, label %299, label %300

299:                                              ; preds = %297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %300

300:                                              ; preds = %299, %297
  %301 = load i1, ptr %31, align 1
  br i1 %301, label %302, label %303

302:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %303

303:                                              ; preds = %302, %300
  br label %304

304:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 88, ptr %33) #8
  %305 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %33, ptr noundef nonnull align 8 dereferenceable(176) %305)
          to label %306 unwind label %351

306:                                              ; preds = %304
  %307 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %33)
          to label %308 unwind label %355

308:                                              ; preds = %306
  %309 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %307)
          to label %310 unwind label %355

310:                                              ; preds = %308
  %311 = icmp ne i32 %309, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #8
  br i1 %311, label %312, label %383

312:                                              ; preds = %310
  br label %313

313:                                              ; preds = %312
  %314 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %315 unwind label %360

315:                                              ; preds = %313
  br i1 %314, label %316, label %364

316:                                              ; preds = %315
  %317 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %317, ptr noundef @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %319 unwind label %360

319:                                              ; preds = %316
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef @.str.3)
          to label %321 unwind label %360

321:                                              ; preds = %319
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %320, ptr noundef @.str.4)
          to label %323 unwind label %360

323:                                              ; preds = %321
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef @.str.5)
          to label %325 unwind label %360

325:                                              ; preds = %323
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %324, i32 noundef 133)
          to label %327 unwind label %360

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef @_ZSt3decRSt8ios_base)
          to label %329 unwind label %360

329:                                              ; preds = %327
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %331 unwind label %360

331:                                              ; preds = %329
  br label %364

332:                                              ; preds = %291, %287, %284, %282, %278
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %13, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %14, align 4
  br label %597

336:                                              ; preds = %293
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %13, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %14, align 4
  br label %347

340:                                              ; preds = %294
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %13, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %14, align 4
  %344 = load i1, ptr %32, align 1
  br i1 %344, label %345, label %346

345:                                              ; preds = %340
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %346

346:                                              ; preds = %345, %340
  br label %347

347:                                              ; preds = %346, %336
  %348 = load i1, ptr %31, align 1
  br i1 %348, label %349, label %350

349:                                              ; preds = %347
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %350

350:                                              ; preds = %349, %347
  br label %597

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

355:                                              ; preds = %308, %306
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %13, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #8
  br label %359

359:                                              ; preds = %355, %351
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #8
  br label %596

360:                                              ; preds = %411, %409, %407, %405, %403, %401, %398, %395, %329, %327, %325, %323, %321, %319, %316, %313
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %13, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %14, align 4
  br label %596

364:                                              ; preds = %331, %315
  br label %365

365:                                              ; preds = %364
  br label %366

366:                                              ; preds = %365
  store i1 true, ptr %35, align 1
  %367 = call ptr @__cxa_allocate_exception(i64 96) #8
  %368 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %34, i32 noundef 33)
          to label %369 unwind label %371

369:                                              ; preds = %366
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %367, ptr noundef nonnull align 8 dereferenceable(176) %368, ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef %34)
          to label %370 unwind label %375

370:                                              ; preds = %369
  store i1 false, ptr %35, align 1
  invoke void @__cxa_throw(ptr %367, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %375

371:                                              ; preds = %366
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %13, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %14, align 4
  br label %379

375:                                              ; preds = %370, %369
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %13, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %34) #8
  br label %379

379:                                              ; preds = %375, %371
  %380 = load i1, ptr %35, align 1
  br i1 %380, label %381, label %382

381:                                              ; preds = %379
  call void @__cxa_free_exception(ptr %367) #8
  br label %382

382:                                              ; preds = %381, %379
  br label %596

383:                                              ; preds = %310
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  br label %386

386:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 88, ptr %36) #8
  %387 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %387)
          to label %388 unwind label %414

388:                                              ; preds = %386
  %389 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %36)
          to label %390 unwind label %418

390:                                              ; preds = %388
  %391 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %389)
          to label %392 unwind label %418

392:                                              ; preds = %390
  %393 = icmp ne i32 %391, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %36) #8
  br i1 %393, label %394, label %442

394:                                              ; preds = %392
  br label %395

395:                                              ; preds = %394
  %396 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %397 unwind label %360

397:                                              ; preds = %395
  br i1 %396, label %398, label %423

398:                                              ; preds = %397
  %399 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %399, ptr noundef @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %401 unwind label %360

401:                                              ; preds = %398
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef @.str.3)
          to label %403 unwind label %360

403:                                              ; preds = %401
  %404 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %402, ptr noundef @.str.4)
          to label %405 unwind label %360

405:                                              ; preds = %403
  %406 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %404, ptr noundef @.str.5)
          to label %407 unwind label %360

407:                                              ; preds = %405
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %406, i32 noundef 134)
          to label %409 unwind label %360

409:                                              ; preds = %407
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef @_ZSt3decRSt8ios_base)
          to label %411 unwind label %360

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %413 unwind label %360

413:                                              ; preds = %411
  br label %423

414:                                              ; preds = %386
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %13, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %14, align 4
  br label %422

418:                                              ; preds = %390, %388
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %13, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #8
  br label %422

422:                                              ; preds = %418, %414
  call void @llvm.lifetime.end.p0(i64 88, ptr %36) #8
  br label %596

423:                                              ; preds = %413, %397
  br label %424

424:                                              ; preds = %423
  br label %425

425:                                              ; preds = %424
  store i1 true, ptr %38, align 1
  %426 = call ptr @__cxa_allocate_exception(i64 96) #8
  %427 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %37, i32 noundef 14)
          to label %428 unwind label %430

428:                                              ; preds = %425
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %426, ptr noundef nonnull align 8 dereferenceable(176) %427, ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef %37)
          to label %429 unwind label %434

429:                                              ; preds = %428
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %426, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %434

430:                                              ; preds = %425
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %13, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %14, align 4
  br label %438

434:                                              ; preds = %429, %428
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %13, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #8
  br label %438

438:                                              ; preds = %434, %430
  %439 = load i1, ptr %38, align 1
  br i1 %439, label %440, label %441

440:                                              ; preds = %438
  call void @__cxa_free_exception(ptr %426) #8
  br label %441

441:                                              ; preds = %440, %438
  br label %596

442:                                              ; preds = %392
  br label %443

443:                                              ; preds = %442
  br label %444

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %445 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %446 unwind label %458

446:                                              ; preds = %444
  %447 = getelementptr inbounds %struct.Ident, ptr %445, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %447)
          to label %448 unwind label %458

448:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = invoke noundef i32 @_ZN14RuleParseState8add_nameERK8RcString(ptr noundef nonnull align 8 dereferenceable(80) %449, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %451 unwind label %462

451:                                              ; preds = %448
  store i32 %450, ptr %40, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %452 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %453 unwind label %466

453:                                              ; preds = %451
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %41, ptr noundef nonnull align 8 dereferenceable(176) %452, ptr noundef %42)
          to label %454 unwind label %470

454:                                              ; preds = %453
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %455 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.6)
          to label %456 unwind label %474

456:                                              ; preds = %454
  br i1 %455, label %457, label %478

457:                                              ; preds = %456
  store i32 2, ptr %43, align 4, !tbaa !13
  br label %566

458:                                              ; preds = %446, %444
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %13, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %14, align 4
  br label %595

462:                                              ; preds = %448
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %13, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %14, align 4
  br label %594

466:                                              ; preds = %451
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %13, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %14, align 4
  br label %593

470:                                              ; preds = %453
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %13, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %14, align 4
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #8
  br label %593

474:                                              ; preds = %537, %526, %522, %518, %514, %510, %506, %502, %498, %494, %490, %486, %482, %478, %454
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %13, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %14, align 4
  br label %592

478:                                              ; preds = %456
  %479 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.7)
          to label %480 unwind label %474

480:                                              ; preds = %478
  br i1 %479, label %481, label %482

481:                                              ; preds = %480
  store i32 3, ptr %43, align 4, !tbaa !13
  br label %565

482:                                              ; preds = %480
  %483 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.8)
          to label %484 unwind label %474

484:                                              ; preds = %482
  br i1 %483, label %485, label %486

485:                                              ; preds = %484
  store i32 3, ptr %43, align 4, !tbaa !13
  br label %564

486:                                              ; preds = %484
  %487 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.9)
          to label %488 unwind label %474

488:                                              ; preds = %486
  br i1 %487, label %489, label %490

489:                                              ; preds = %488
  store i32 4, ptr %43, align 4, !tbaa !13
  br label %563

490:                                              ; preds = %488
  %491 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.10)
          to label %492 unwind label %474

492:                                              ; preds = %490
  br i1 %491, label %493, label %494

493:                                              ; preds = %492
  store i32 5, ptr %43, align 4, !tbaa !13
  br label %562

494:                                              ; preds = %492
  %495 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.11)
          to label %496 unwind label %474

496:                                              ; preds = %494
  br i1 %495, label %497, label %498

497:                                              ; preds = %496
  store i32 7, ptr %43, align 4, !tbaa !13
  br label %561

498:                                              ; preds = %496
  %499 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.12)
          to label %500 unwind label %474

500:                                              ; preds = %498
  br i1 %499, label %501, label %502

501:                                              ; preds = %500
  store i32 8, ptr %43, align 4, !tbaa !13
  br label %560

502:                                              ; preds = %500
  %503 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.13)
          to label %504 unwind label %474

504:                                              ; preds = %502
  br i1 %503, label %505, label %506

505:                                              ; preds = %504
  store i32 6, ptr %43, align 4, !tbaa !13
  br label %559

506:                                              ; preds = %504
  %507 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.14)
          to label %508 unwind label %474

508:                                              ; preds = %506
  br i1 %507, label %509, label %510

509:                                              ; preds = %508
  store i32 10, ptr %43, align 4, !tbaa !13
  br label %558

510:                                              ; preds = %508
  %511 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.15)
          to label %512 unwind label %474

512:                                              ; preds = %510
  br i1 %511, label %513, label %514

513:                                              ; preds = %512
  store i32 9, ptr %43, align 4, !tbaa !13
  br label %557

514:                                              ; preds = %512
  %515 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.16)
          to label %516 unwind label %474

516:                                              ; preds = %514
  br i1 %515, label %517, label %518

517:                                              ; preds = %516
  store i32 11, ptr %43, align 4, !tbaa !13
  br label %556

518:                                              ; preds = %516
  %519 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.17)
          to label %520 unwind label %474

520:                                              ; preds = %518
  br i1 %519, label %521, label %522

521:                                              ; preds = %520
  store i32 12, ptr %43, align 4, !tbaa !13
  br label %555

522:                                              ; preds = %520
  %523 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.18)
          to label %524 unwind label %474

524:                                              ; preds = %522
  br i1 %523, label %525, label %526

525:                                              ; preds = %524
  store i32 13, ptr %43, align 4, !tbaa !13
  br label %554

526:                                              ; preds = %524
  %527 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.19)
          to label %528 unwind label %474

528:                                              ; preds = %526
  br i1 %527, label %529, label %530

529:                                              ; preds = %528
  store i32 14, ptr %43, align 4, !tbaa !13
  br label %553

530:                                              ; preds = %528
  br label %531

531:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %532 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %44, ptr noundef nonnull align 8 dereferenceable(176) %532)
          to label %533 unwind label %538

533:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %534 = getelementptr inbounds %class.anon, ptr %46, i32 0, i32 0
  store ptr %39, ptr %534, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ20Parse_MacroRules_PatR11TokenStream10eTokenTypeS6_R14RuleParseStateE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %44, i32 noundef 0, ptr noundef %45)
          to label %535 unwind label %542

535:                                              ; preds = %533
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  %536 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %536, ptr noundef @.str.20)
          to label %537 unwind label %547

537:                                              ; preds = %535
  invoke void @__cxa_throw(ptr %536, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %916 unwind label %474

538:                                              ; preds = %531
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %13, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %14, align 4
  br label %546

542:                                              ; preds = %533
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %13, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br label %546

546:                                              ; preds = %542, %538
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %592

547:                                              ; preds = %535
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %13, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %14, align 4
  call void @__cxa_free_exception(ptr %536) #8
  br label %592

551:                                              ; No predecessors!
  br label %552

552:                                              ; preds = %551
  br label %553

553:                                              ; preds = %552, %529
  br label %554

554:                                              ; preds = %553, %525
  br label %555

555:                                              ; preds = %554, %521
  br label %556

556:                                              ; preds = %555, %517
  br label %557

557:                                              ; preds = %556, %513
  br label %558

558:                                              ; preds = %557, %509
  br label %559

559:                                              ; preds = %558, %505
  br label %560

560:                                              ; preds = %559, %501
  br label %561

561:                                              ; preds = %560, %497
  br label %562

562:                                              ; preds = %561, %493
  br label %563

563:                                              ; preds = %562, %489
  br label %564

564:                                              ; preds = %563, %485
  br label %565

565:                                              ; preds = %564, %481
  br label %566

566:                                              ; preds = %565, %457
  call void @llvm.lifetime.start.p0(i64 144, ptr %47) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %567 unwind label %573

567:                                              ; preds = %566
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %568 unwind label %577

568:                                              ; preds = %567
  %569 = load i32, ptr %40, align 4, !tbaa !11
  %570 = load i32, ptr %43, align 4, !tbaa !13
  invoke void @_ZN11MacroPatEntC2E4Span8RcStringjNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(140) %47, ptr noundef %48, ptr noundef %49, i32 noundef %569, i32 noundef %570)
          to label %571 unwind label %581

571:                                              ; preds = %568
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %47)
          to label %572 unwind label %585

572:                                              ; preds = %571
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %47) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %850

573:                                              ; preds = %566
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %13, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %14, align 4
  br label %591

577:                                              ; preds = %567
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %13, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %14, align 4
  br label %590

581:                                              ; preds = %568
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %13, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %14, align 4
  br label %589

585:                                              ; preds = %571
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %13, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %14, align 4
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %47) #8
  br label %589

589:                                              ; preds = %585, %581
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %590

590:                                              ; preds = %589, %577
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %591

591:                                              ; preds = %590, %573
  call void @llvm.lifetime.end.p0(i64 144, ptr %47) #8
  br label %592

592:                                              ; preds = %591, %547, %546, %474
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %593

593:                                              ; preds = %592, %470, %466
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %594

594:                                              ; preds = %593, %462
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %595

595:                                              ; preds = %594, %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %596

596:                                              ; preds = %595, %441, %422, %382, %360, %359
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %597

597:                                              ; preds = %596, %350, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %906

598:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %599 = load ptr, ptr %10, align 8, !tbaa !5
  %600 = invoke noundef i32 @_ZN14RuleParseState9open_loopEv(ptr noundef nonnull align 8 dereferenceable(80) %599)
          to label %601 unwind label %617

601:                                              ; preds = %598
  store i32 %600, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #8
  %602 = load ptr, ptr %7, align 8, !tbaa !5
  %603 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %51, ptr noundef nonnull align 8 dereferenceable(176) %602, i32 noundef 23, i32 noundef 24, ptr noundef nonnull align 8 dereferenceable(80) %603)
          to label %604 unwind label %621

604:                                              ; preds = %601
  %605 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN14RuleParseState10close_loopEv(ptr noundef nonnull align 8 dereferenceable(80) %605)
          to label %606 unwind label %625

606:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  store i32 0, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 88, ptr %53) #8
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %53, ptr noundef nonnull align 8 dereferenceable(176) %607)
          to label %608 unwind label %629

608:                                              ; preds = %606
  %609 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %53)
          to label %610 unwind label %633

610:                                              ; preds = %608
  %611 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %609)
          to label %612 unwind label %633

612:                                              ; preds = %610
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %53) #8
  %613 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %614 unwind label %638

614:                                              ; preds = %612
  %615 = icmp eq i32 %613, 69
  br i1 %615, label %616, label %642

616:                                              ; preds = %614
  br label %714

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

621:                                              ; preds = %601
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %13, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %14, align 4
  br label %848

625:                                              ; preds = %604
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %13, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %14, align 4
  br label %847

629:                                              ; preds = %606
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %13, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %14, align 4
  br label %637

633:                                              ; preds = %610, %608
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %13, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #8
  br label %637

637:                                              ; preds = %633, %629
  call void @llvm.lifetime.end.p0(i64 88, ptr %53) #8
  br label %846

638:                                              ; preds = %695, %679, %669, %664, %662, %660, %658, %655, %652, %646, %642, %612
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %13, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %14, align 4
  br label %846

642:                                              ; preds = %614
  %643 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %644 unwind label %638

644:                                              ; preds = %642
  %645 = icmp eq i32 %643, 41
  br i1 %645, label %650, label %646

646:                                              ; preds = %644
  %647 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %648 unwind label %638

648:                                              ; preds = %646
  %649 = icmp eq i32 %647, 35
  br i1 %649, label %650, label %651

650:                                              ; preds = %648, %644
  br label %713

651:                                              ; preds = %648
  br label %652

652:                                              ; preds = %651
  %653 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %654 unwind label %638

654:                                              ; preds = %652
  br i1 %653, label %655, label %667

655:                                              ; preds = %654
  %656 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %656, ptr noundef @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %658 unwind label %638

658:                                              ; preds = %655
  %659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %657, ptr noundef @.str.21)
          to label %660 unwind label %638

660:                                              ; preds = %658
  %661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %659, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %662 unwind label %638

662:                                              ; preds = %660
  %663 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %661, ptr noundef @_ZSt3decRSt8ios_base)
          to label %664 unwind label %638

664:                                              ; preds = %662
  %665 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %663, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %666 unwind label %638

666:                                              ; preds = %664
  br label %667

667:                                              ; preds = %666, %654
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668
  %670 = invoke noundef zeroext i1 @_ZNK5Token8has_dataEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %671 unwind label %638

671:                                              ; preds = %669
  br i1 %670, label %672, label %695

672:                                              ; preds = %671
  br label %673

673:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %674 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %54, ptr noundef nonnull align 8 dereferenceable(176) %674)
          to label %675 unwind label %680

675:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %676 = getelementptr inbounds %class.anon.19, ptr %56, i32 0, i32 0
  store ptr %12, ptr %676, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ20Parse_MacroRules_PatR11TokenStream10eTokenTypeS6_R14RuleParseStateE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef 0, ptr noundef %55)
          to label %677 unwind label %684

677:                                              ; preds = %675
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  %678 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %678, ptr noundef @.str.20)
          to label %679 unwind label %689

679:                                              ; preds = %677
  invoke void @__cxa_throw(ptr %678, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %916 unwind label %638

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

684:                                              ; preds = %675
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %13, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %688

688:                                              ; preds = %684, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %846

689:                                              ; preds = %677
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %13, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %14, align 4
  call void @__cxa_free_exception(ptr %678) #8
  br label %846

693:                                              ; No predecessors!
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694, %671
  %696 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %697 unwind label %638

697:                                              ; preds = %695
  store i32 %696, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 88, ptr %57) #8
  %698 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %57, ptr noundef nonnull align 8 dereferenceable(176) %698)
          to label %699 unwind label %704

699:                                              ; preds = %697
  %700 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %57)
          to label %701 unwind label %708

701:                                              ; preds = %699
  %702 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %700)
          to label %703 unwind label %708

703:                                              ; preds = %701
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %57) #8
  br label %713

704:                                              ; preds = %697
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %13, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %14, align 4
  br label %712

708:                                              ; preds = %701, %699
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %13, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %14, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #8
  br label %712

712:                                              ; preds = %708, %704
  call void @llvm.lifetime.end.p0(i64 88, ptr %57) #8
  br label %846

713:                                              ; preds = %703, %650
  br label %714

714:                                              ; preds = %713, %616
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %715 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %716 unwind label %720

716:                                              ; preds = %714
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %58, ptr noundef nonnull align 8 dereferenceable(176) %715, ptr noundef %59)
          to label %717 unwind label %724

717:                                              ; preds = %716
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  store ptr null, ptr %60, align 8, !tbaa !5
  %718 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %719 unwind label %728

719:                                              ; preds = %717
  switch i32 %718, label %735 [
    i32 41, label %732
    i32 35, label %733
    i32 69, label %734
  ]

720:                                              ; preds = %714
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %13, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %14, align 4
  br label %845

724:                                              ; preds = %716
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %13, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %14, align 4
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  br label %845

728:                                              ; preds = %812, %810, %808, %806, %803, %801, %798, %795, %735, %717
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %13, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %14, align 4
  br label %844

732:                                              ; preds = %719
  store ptr @.str.22, ptr %60, align 8, !tbaa !5
  br label %788

733:                                              ; preds = %719
  store ptr @.str.23, ptr %60, align 8, !tbaa !5
  br label %788

734:                                              ; preds = %719
  store ptr @.str.24, ptr %60, align 8, !tbaa !5
  br label %788

735:                                              ; preds = %719
  %736 = load ptr, ptr %7, align 8, !tbaa !5
  %737 = invoke noundef zeroext i1 @_ZNK11TokenStream13edition_afterEN3AST7EditionE(ptr noundef nonnull align 8 dereferenceable(176) %736, i32 noundef 1)
          to label %738 unwind label %728

738:                                              ; preds = %735
  br i1 %737, label %739, label %764

739:                                              ; preds = %738
  store i1 true, ptr %65, align 1
  %740 = call ptr @__cxa_allocate_exception(i64 96) #8
  %741 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %63) #8
  store i32 41, ptr %63, align 4, !tbaa !9
  %742 = getelementptr inbounds i32, ptr %63, i64 1
  store i32 35, ptr %742, align 4, !tbaa !9
  %743 = getelementptr inbounds i32, ptr %63, i64 2
  store i32 69, ptr %743, align 4, !tbaa !9
  %744 = getelementptr inbounds %"class.std::initializer_list", ptr %62, i32 0, i32 0
  store ptr %63, ptr %744, align 8, !tbaa !15
  %745 = getelementptr inbounds %"class.std::initializer_list", ptr %62, i32 0, i32 1
  store i64 3, ptr %745, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #8
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  %746 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 0
  %747 = load ptr, ptr %746, align 8
  %748 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 1
  %749 = load i64, ptr %748, align 8
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr %747, i64 %749, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %750 unwind label %752

750:                                              ; preds = %739
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %740, ptr noundef nonnull align 8 dereferenceable(176) %741, ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef %61)
          to label %751 unwind label %756

751:                                              ; preds = %750
  store i1 false, ptr %65, align 1
  invoke void @__cxa_throw(ptr %740, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %756

752:                                              ; preds = %739
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %13, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %14, align 4
  br label %760

756:                                              ; preds = %751, %750
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %13, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %14, align 4
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #8
  br label %760

760:                                              ; preds = %756, %752
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %63) #8
  %761 = load i1, ptr %65, align 1
  br i1 %761, label %762, label %763

762:                                              ; preds = %760
  call void @__cxa_free_exception(ptr %740) #8
  br label %763

763:                                              ; preds = %762, %760
  br label %844

764:                                              ; preds = %738
  store i1 true, ptr %70, align 1
  %765 = call ptr @__cxa_allocate_exception(i64 96) #8
  %766 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  store i32 41, ptr %68, align 4, !tbaa !9
  %767 = getelementptr inbounds i32, ptr %68, i64 1
  store i32 35, ptr %767, align 4, !tbaa !9
  %768 = getelementptr inbounds %"class.std::initializer_list", ptr %67, i32 0, i32 0
  store ptr %68, ptr %768, align 8, !tbaa !15
  %769 = getelementptr inbounds %"class.std::initializer_list", ptr %67, i32 0, i32 1
  store i64 2, ptr %769, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #8
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #8
  %770 = getelementptr inbounds { ptr, i64 }, ptr %67, i32 0, i32 0
  %771 = load ptr, ptr %770, align 8
  %772 = getelementptr inbounds { ptr, i64 }, ptr %67, i32 0, i32 1
  %773 = load i64, ptr %772, align 8
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr %771, i64 %773, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %774 unwind label %776

774:                                              ; preds = %764
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %765, ptr noundef nonnull align 8 dereferenceable(176) %766, ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef %66)
          to label %775 unwind label %780

775:                                              ; preds = %774
  store i1 false, ptr %70, align 1
  invoke void @__cxa_throw(ptr %765, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %780

776:                                              ; preds = %764
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %13, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %14, align 4
  br label %784

780:                                              ; preds = %775, %774
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %13, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %14, align 4
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #8
  br label %784

784:                                              ; preds = %780, %776
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  %785 = load i1, ptr %70, align 1
  br i1 %785, label %786, label %787

786:                                              ; preds = %784
  call void @__cxa_free_exception(ptr %765) #8
  br label %787

787:                                              ; preds = %786, %784
  br label %844

788:                                              ; preds = %734, %733, %732
  %789 = load ptr, ptr %60, align 8, !tbaa !5
  %790 = icmp ne ptr %789, null
  br i1 %790, label %791, label %792

791:                                              ; preds = %788
  br label %794

792:                                              ; preds = %788
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.4, i32 noundef 217, ptr noundef @__PRETTY_FUNCTION__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState) #10
  unreachable

793:                                              ; No predecessors!
  br label %794

794:                                              ; preds = %793, %791
  br label %795

795:                                              ; preds = %794
  %796 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %797 unwind label %728

797:                                              ; preds = %795
  br i1 %796, label %798, label %815

798:                                              ; preds = %797
  %799 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %800 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %799, ptr noundef @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %801 unwind label %728

801:                                              ; preds = %798
  %802 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %800, ptr noundef @.str.26)
          to label %803 unwind label %728

803:                                              ; preds = %801
  %804 = load ptr, ptr %60, align 8, !tbaa !5
  %805 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %802, ptr noundef %804)
          to label %806 unwind label %728

806:                                              ; preds = %803
  %807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %805, ptr noundef @.str.27)
          to label %808 unwind label %728

808:                                              ; preds = %806
  %809 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsI11MacroPatEntERSoS1_RKSt6vectorIT_SaIS3_EE(ptr noundef nonnull align 8 dereferenceable(8) %807, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %810 unwind label %728

810:                                              ; preds = %808
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %809, ptr noundef @_ZSt3decRSt8ios_base)
          to label %812 unwind label %728

812:                                              ; preds = %810
  %813 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %811, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %814 unwind label %728

814:                                              ; preds = %812
  br label %815

815:                                              ; preds = %814, %797
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 144, ptr %71) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %818 unwind label %825

818:                                              ; preds = %817
  %819 = load i32, ptr %52, align 4, !tbaa !9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %73, i32 noundef %819)
          to label %820 unwind label %829

820:                                              ; preds = %818
  %821 = load ptr, ptr %60, align 8, !tbaa !5
  %822 = load i32, ptr %50, align 4, !tbaa !11
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  invoke void @_ZN11MacroPatEntC2E4Span5TokenPKcjSt6vectorIS_SaIS_EE(ptr noundef nonnull align 8 dereferenceable(140) %71, ptr noundef %72, ptr noundef %73, ptr noundef %821, i32 noundef %822, ptr noundef %74)
          to label %823 unwind label %833

823:                                              ; preds = %820
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %71)
          to label %824 unwind label %837

824:                                              ; preds = %823
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %71) #8
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #8
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %850

825:                                              ; preds = %817
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %13, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %14, align 4
  br label %843

829:                                              ; preds = %818
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %13, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %14, align 4
  br label %842

833:                                              ; preds = %820
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %13, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %14, align 4
  br label %841

837:                                              ; preds = %823
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %13, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %14, align 4
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %71) #8
  br label %841

841:                                              ; preds = %837, %833
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #8
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #8
  br label %842

842:                                              ; preds = %841, %829
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br label %843

843:                                              ; preds = %842, %825
  call void @llvm.lifetime.end.p0(i64 144, ptr %71) #8
  br label %844

844:                                              ; preds = %843, %787, %763, %728
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %845

845:                                              ; preds = %844, %724, %720
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %846

846:                                              ; preds = %845, %712, %689, %688, %638, %637
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %847

847:                                              ; preds = %846, %625
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #8
  br label %848

848:                                              ; preds = %847, %621
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #8
  br label %849

849:                                              ; preds = %848, %617
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %906

850:                                              ; preds = %824, %572, %227
  br label %890

851:                                              ; preds = %201
  %852 = call ptr @__cxa_allocate_exception(i64 96) #8
  %853 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %852, ptr noundef nonnull align 8 dereferenceable(176) %853, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %854 unwind label %855

854:                                              ; preds = %851
  invoke void @__cxa_throw(ptr %852, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %916 unwind label %133

855:                                              ; preds = %851
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %13, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %14, align 4
  call void @__cxa_free_exception(ptr %852) #8
  br label %906

859:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 144, ptr %75) #8
  %860 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %861 unwind label %866

861:                                              ; preds = %859
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %76, ptr noundef nonnull align 8 dereferenceable(176) %860, ptr noundef %77)
          to label %862 unwind label %870

862:                                              ; preds = %861
  invoke void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88) %78, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %863 unwind label %874

863:                                              ; preds = %862
  invoke void @_ZN11MacroPatEntC2E4Span5Token(ptr noundef nonnull align 8 dereferenceable(140) %75, ptr noundef %76, ptr noundef %78)
          to label %864 unwind label %878

864:                                              ; preds = %863
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %75)
          to label %865 unwind label %882

865:                                              ; preds = %864
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %75) #8
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %78) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %75) #8
  br label %890

866:                                              ; preds = %859
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %13, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %14, align 4
  br label %889

870:                                              ; preds = %861
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %13, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %14, align 4
  br label %888

874:                                              ; preds = %862
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %13, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %14, align 4
  br label %887

878:                                              ; preds = %863
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %13, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %14, align 4
  br label %886

882:                                              ; preds = %864
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %13, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %14, align 4
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %75) #8
  br label %886

886:                                              ; preds = %882, %878
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %78) #8
  br label %887

887:                                              ; preds = %886, %874
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %888

888:                                              ; preds = %887, %870
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #8
  br label %889

889:                                              ; preds = %888, %866
  call void @llvm.lifetime.end.p0(i64 144, ptr %75) #8
  br label %906

890:                                              ; preds = %865, %850
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #8
  %891 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8 %79, ptr noundef nonnull align 8 dereferenceable(176) %891)
          to label %892 unwind label %895

892:                                              ; preds = %890
  %893 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9ProtoSpanaSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %894 unwind label %899

894:                                              ; preds = %892
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #8
  br label %86, !llvm.loop !19

895:                                              ; preds = %890
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %13, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %14, align 4
  br label %903

899:                                              ; preds = %892
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %13, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %14, align 4
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #8
  br label %903

903:                                              ; preds = %899, %895
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #8
  br label %906

904:                                              ; preds = %98
  store i1 true, ptr %15, align 1
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  %905 = load i1, ptr %15, align 1
  br i1 %905, label %909, label %908

906:                                              ; preds = %903, %889, %855, %849, %597, %273, %260, %252, %251, %217, %194, %133, %132
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  br label %907

907:                                              ; preds = %906, %120
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #8
  br label %910

908:                                              ; preds = %904
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %909

909:                                              ; preds = %908, %904
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %12) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #8
  ret void

910:                                              ; preds = %907, %116
  call void @llvm.lifetime.end.p0(i64 88, ptr %12) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #8
  br label %911

911:                                              ; preds = %910
  %912 = load ptr, ptr %13, align 8
  %913 = load i32, ptr %14, align 4
  %914 = insertvalue { ptr, i32 } poison, ptr %912, 0
  %915 = insertvalue { ptr, i32 } %914, i32 %913, 1
  resume { ptr, i32 } %915

916:                                              ; preds = %854, %775, %751, %679, %537, %429, %370, %272, %259, %167
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

declare void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

declare void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

declare void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA18_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(18)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE5TokenEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(88)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA11_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(11)) #5

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

declare void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #0 align 2

declare void @_ZN12CompileError7GenericC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

declare void @__cxa_free_exception(ptr)

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

declare void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

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

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

declare void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) #2

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

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5Token13type_is_rwordE10eTokenType(i32 noundef) #3 align 2

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

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

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

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

declare void @_ZNK5Token6to_strB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

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

declare void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5Token8has_dataEv(ptr noundef nonnull align 8 dereferenceable(88)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11TokenStream13edition_afterEN3AST7EditionE(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #3 align 2

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

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

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsI11MacroPatEntERSoS1_RKSt6vectorIT_SaIS3_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #5

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

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

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

declare void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN9ProtoSpanaSEOS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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 = !{!"_ZTS10eTokenType", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN11MacroPatEnt4TypeE", !7, i64 0}
!15 = !{!16, !6, i64 0}
!16 = !{!"_ZTSSt16initializer_listI10eTokenTypeE", !6, i64 0, !17, i64 8}
!17 = !{!"long", !7, i64 0}
!18 = !{!16, !17, i64 8}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}


; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MacroPatEnt, std::allocator<MacroPatEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.ProtoSpan = type { %struct.Span, %class.RcString, i32, i32 }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%struct.MacroPatEnt = type <{ %struct.Span, %class.RcString, i32, [4 x i8], %class.Token, %"class.std::vector", i32, [4 x i8] }>
%class.anon = type { ptr }
%class.anon.19 = type { ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.22" = type { i8 }

@__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState = external hidden unnamed_addr constant [21 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZTIN12CompileError7GenericE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.21 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(80) %4) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %class.Token, align 8
  %8 = alloca %struct.ProtoSpan, align 8
  %9 = alloca %class.Token, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %12 = alloca %class.Token, align 8
  %13 = alloca %class.Token, align 8
  %14 = alloca %struct.MacroPatEnt, align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %struct.ProtoSpan, align 8
  %17 = alloca %class.Token, align 8
  %18 = alloca %class.Token, align 8
  %19 = alloca %class.RcString, align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %class.Token, align 8
  %22 = alloca %class.Token, align 8
  %23 = alloca %class.Token, align 8
  %24 = alloca %class.Token, align 8
  %25 = alloca %class.RcString, align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %struct.ProtoSpan, align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon, align 8
  %31 = alloca %struct.MacroPatEnt, align 8
  %32 = alloca %struct.Span, align 8
  %33 = alloca %class.RcString, align 8
  %34 = alloca %"class.std::vector", align 8
  %35 = alloca %class.Token, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.19, align 8
  %39 = alloca %class.Token, align 8
  %40 = alloca %struct.Span, align 8
  %41 = alloca %struct.ProtoSpan, align 8
  %42 = alloca %"class.std::vector.20", align 8
  %43 = alloca [3 x i32], align 4
  %44 = alloca %"class.std::allocator.22", align 1
  %45 = alloca %"class.std::vector.20", align 8
  %46 = alloca [2 x i32], align 4
  %47 = alloca %"class.std::allocator.22", align 1
  %48 = alloca %struct.MacroPatEnt, align 8
  %49 = alloca %struct.Span, align 8
  %50 = alloca %class.Token, align 8
  %51 = alloca %"class.std::vector", align 8
  %52 = alloca %struct.MacroPatEnt, align 8
  %53 = alloca %struct.Span, align 8
  %54 = alloca %struct.ProtoSpan, align 8
  %55 = alloca %class.Token, align 8
  %56 = alloca %struct.ProtoSpan, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #7
  %57 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %58 = select i1 %57, ptr @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %58)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %7) #7
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %59 unwind label %81

59:                                               ; preds = %5
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.ProtoSpan) align 8 %8, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %.preheader unwind label %83

.preheader:                                       ; preds = %59, %516
  %.0105 = phi i32 [ %.1106, %516 ], [ 0, %59 ]
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %9) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %9, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %60 unwind label %85

60:                                               ; preds = %.preheader
  %61 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %9)
          to label %62 unwind label %87

62:                                               ; preds = %60
  %63 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %61)
  %64 = icmp ne i32 %63, %3
  %65 = icmp sgt i32 %.0105, 0
  %66 = select i1 %64, i1 true, i1 %65
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #7
  br i1 %66, label %67, label %522

67:                                               ; preds = %62
  %68 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %69 unwind label %.loopexit

69:                                               ; preds = %67
  br i1 %68, label %70, label %90

70:                                               ; preds = %69
  %71 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %71, ptr noundef nonnull @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %73 unwind label %.loopexit

73:                                               ; preds = %70
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull @.str)
          to label %75 unwind label %.loopexit

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %77 unwind label %.loopexit

77:                                               ; preds = %75
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %79 unwind label %.loopexit

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %90 unwind label %.loopexit

81:                                               ; preds = %5
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %525

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

85:                                               ; preds = %.preheader
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

87:                                               ; preds = %60
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  br label %89

89:                                               ; preds = %87, %85
  %.pn = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #7
  br label %523

.loopexit:                                        ; preds = %67, %70, %73, %75, %77, %79, %140
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %523

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

90:                                               ; preds = %79, %69
  %91 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %92 = icmp eq i32 %91, %2
  br i1 %92, label %93, label %95

93:                                               ; preds = %90
  %94 = add nsw i32 %.0105, 1
  br label %123

95:                                               ; preds = %90
  %96 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %97 = icmp eq i32 %96, %3
  br i1 %97, label %98, label %123

98:                                               ; preds = %95
  %99 = icmp eq i32 %.0105, 0
  br i1 %99, label %100, label %121

100:                                              ; preds = %98
  %101 = call ptr @__cxa_allocate_exception(i64 40) #7
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %11) #7
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11)
          to label %102 unwind label %.thread

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA11_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %11, ptr noundef nonnull align 1 dereferenceable(11) @.str.1)
          to label %104 unwind label %.thread190

104:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %12) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %12, i32 noundef %3)
          to label %105 unwind label %.thread193

105:                                              ; preds = %104
  %106 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE5TokenEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %103, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %107 unwind label %115

107:                                              ; preds = %105
  %108 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA18_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %106, ptr noundef nonnull align 1 dereferenceable(18) @.str.2)
          to label %109 unwind label %115

109:                                              ; preds = %107
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(112) %108)
          to label %110 unwind label %115

110:                                              ; preds = %109
  invoke void @_ZN12CompileError7GenericC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %101, ptr noundef nonnull %10)
          to label %111 unwind label %117

111:                                              ; preds = %110
  invoke void @__cxa_throw(ptr nonnull %101, ptr nonnull @_ZTIN12CompileError7GenericE, ptr nonnull @_ZN12CompileError7GenericD2Ev) #8
          to label %526 unwind label %117

.thread:                                          ; preds = %100
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #7
  br label %120

.thread190:                                       ; preds = %102
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #7
  br label %120

.thread193:                                       ; preds = %104
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #7
  br label %120

115:                                              ; preds = %109, %107, %105
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %119

117:                                              ; preds = %111, %110
  %.0109 = phi i1 [ false, %111 ], [ true, %110 ]
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %119

119:                                              ; preds = %115, %117
  %.1110 = phi i1 [ %.0109, %117 ], [ true, %115 ]
  %.pn123 = phi { ptr, i32 } [ %118, %117 ], [ %116, %115 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %11) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %11) #7
  br i1 %.1110, label %120, label %523

120:                                              ; preds = %.thread193, %.thread190, %.thread, %119
  %.pn123.pn.pn.pn189 = phi { ptr, i32 } [ %112, %.thread ], [ %.pn123, %119 ], [ %113, %.thread190 ], [ %114, %.thread193 ]
  call void @__cxa_free_exception(ptr %101) #7
  br label %523

121:                                              ; preds = %98
  %122 = add nsw i32 %.0105, -1
  br label %123

123:                                              ; preds = %95, %121, %93
  %.1106 = phi i32 [ %94, %93 ], [ %122, %121 ], [ %.0105, %95 ]
  %124 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  switch i32 %124, label %493 [
    i32 68, label %125
    i32 1, label %489
  ]

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %13) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %126 unwind label %130

126:                                              ; preds = %125
  %127 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %13)
          to label %128 unwind label %132

128:                                              ; preds = %126
  %129 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %127)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %13) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %13) #7
  switch i32 %129, label %164 [
    i32 30, label %135
    i32 24, label %135
    i32 83, label %159
    i32 22, label %171
    i32 14, label %171
    i32 23, label %354
  ]

130:                                              ; preds = %125
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %134

132:                                              ; preds = %126
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %13) #7
  br label %134

134:                                              ; preds = %132, %130
  %.pn128 = phi { ptr, i32 } [ %133, %132 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %13) #7
  br label %523

135:                                              ; preds = %128, %128
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %14) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %136 unwind label %143

136:                                              ; preds = %135
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %16)
          to label %137 unwind label %145

137:                                              ; preds = %136
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %17, i32 noundef 68)
          to label %138 unwind label %147

138:                                              ; preds = %137
  invoke void @_ZN11MacroPatEntC2E4Span5Token(ptr noundef nonnull align 8 dereferenceable(140) %14, ptr noundef nonnull %15, ptr noundef nonnull %17)
          to label %139 unwind label %149

139:                                              ; preds = %138
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %14)
          to label %140 unwind label %151

140:                                              ; preds = %139
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %14) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %14) #7
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %18, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %141 unwind label %.loopexit

141:                                              ; preds = %140
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %18)
          to label %142 unwind label %157

142:                                              ; preds = %141
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #7
  br label %513

143:                                              ; preds = %135
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %156

145:                                              ; preds = %136
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %155

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

149:                                              ; preds = %138
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %153

151:                                              ; preds = %139
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %14) #7
  br label %153

153:                                              ; preds = %151, %149
  %.pn149 = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #7
  br label %154

154:                                              ; preds = %153, %147
  %.pn149.pn = phi { ptr, i32 } [ %.pn149, %153 ], [ %148, %147 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %155

155:                                              ; preds = %154, %145
  %.pn149.pn.pn = phi { ptr, i32 } [ %.pn149.pn, %154 ], [ %146, %145 ]
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  br label %156

156:                                              ; preds = %155, %143
  %.pn149.pn.pn.pn = phi { ptr, i32 } [ %.pn149.pn.pn, %155 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %14) #7
  br label %523

157:                                              ; preds = %141
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #7
  br label %523

159:                                              ; preds = %128
  %160 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %160, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %.invoke unwind label %162

.invoke:                                          ; preds = %489, %167, %159
  %161 = phi ptr [ %160, %159 ], [ %168, %167 ], [ %490, %489 ]
  invoke void @__cxa_throw(ptr nonnull %161, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %.cont unwind label %.loopexit.split-lp

.cont:                                            ; preds = %.invoke
  unreachable

162:                                              ; preds = %159
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %160) #7
  br label %523

164:                                              ; preds = %128
  %165 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %166 = call noundef zeroext i1 @_ZN5Token13type_is_rwordE10eTokenType(i32 noundef %165)
  br i1 %166, label %171, label %167

167:                                              ; preds = %164
  %168 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %168, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %.invoke unwind label %169

169:                                              ; preds = %167
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %168) #7
  br label %523

171:                                              ; preds = %164, %128, %128
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %172 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %173 = icmp eq i32 %172, 14
  br i1 %173, label %174, label %178

174:                                              ; preds = %171
  %175 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %176 unwind label %207

176:                                              ; preds = %174
  %177 = getelementptr inbounds i8, ptr %175, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %177)
  br label %.critedge

178:                                              ; preds = %171
  %179 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %180 = icmp eq i32 %179, 22
  br i1 %180, label %181, label %182

181:                                              ; preds = %178
  call void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
  br label %.critedge

182:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  invoke void @_ZNK5Token6to_strB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %183 unwind label %209

183:                                              ; preds = %182
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %184 unwind label %211

184:                                              ; preds = %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %.critedge

.critedge:                                        ; preds = %176, %181, %184
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %21) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %185 unwind label %214

185:                                              ; preds = %.critedge
  %186 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %21)
          to label %187 unwind label %216

187:                                              ; preds = %185
  %188 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %186)
  %.not = icmp eq i32 %188, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %21) #7
  br i1 %.not, label %230, label %189

189:                                              ; preds = %187
  %190 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %191 unwind label %219

191:                                              ; preds = %189
  br i1 %190, label %192, label %221

192:                                              ; preds = %191
  %193 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %193, ptr noundef nonnull @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %195 unwind label %219

195:                                              ; preds = %192
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull @.str.3)
          to label %197 unwind label %219

197:                                              ; preds = %195
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull @.str.4)
          to label %199 unwind label %219

199:                                              ; preds = %197
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull @.str.5)
          to label %201 unwind label %219

201:                                              ; preds = %199
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %200, i32 noundef 133)
          to label %203 unwind label %219

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %205 unwind label %219

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %221 unwind label %219

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

209:                                              ; preds = %182
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %213

211:                                              ; preds = %183
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %213

213:                                              ; preds = %209, %211
  %.pn154 = phi { ptr, i32 } [ %212, %211 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %353

214:                                              ; preds = %.critedge
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %185
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #7
  br label %218

218:                                              ; preds = %216, %214
  %.pn156 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %21) #7
  br label %352

219:                                              ; preds = %251, %249, %247, %245, %243, %241, %238, %235, %205, %203, %201, %199, %197, %195, %192, %189
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %352

221:                                              ; preds = %205, %191
  %222 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %22, i32 noundef 33)
          to label %223 unwind label %.thread196

223:                                              ; preds = %221
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %222, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull %22)
          to label %225 unwind label %.thread200

.thread200:                                       ; preds = %223
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #7
  br label %229

225:                                              ; preds = %223
  invoke void @__cxa_throw(ptr nonnull %222, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %526 unwind label %227

.thread196:                                       ; preds = %221
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %229

227:                                              ; preds = %225
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #7
  br label %352

229:                                              ; preds = %.thread200, %.thread196
  %.pn172199 = phi { ptr, i32 } [ %226, %.thread196 ], [ %224, %.thread200 ]
  call void @__cxa_free_exception(ptr %222) #7
  br label %352

230:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %23) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %23, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %231 unwind label %253

231:                                              ; preds = %230
  %232 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %23)
          to label %233 unwind label %255

233:                                              ; preds = %231
  %234 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %232)
  %.not160 = icmp eq i32 %234, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %23) #7
  br i1 %.not160, label %267, label %235

235:                                              ; preds = %233
  %236 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %237 unwind label %219

237:                                              ; preds = %235
  br i1 %236, label %238, label %258

238:                                              ; preds = %237
  %239 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %239, ptr noundef nonnull @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %241 unwind label %219

241:                                              ; preds = %238
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull @.str.3)
          to label %243 unwind label %219

243:                                              ; preds = %241
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull @.str.4)
          to label %245 unwind label %219

245:                                              ; preds = %243
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull @.str.5)
          to label %247 unwind label %219

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %246, i32 noundef 134)
          to label %249 unwind label %219

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %251 unwind label %219

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %258 unwind label %219

253:                                              ; preds = %230
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %257

255:                                              ; preds = %231
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #7
  br label %257

257:                                              ; preds = %255, %253
  %.pn158 = phi { ptr, i32 } [ %256, %255 ], [ %254, %253 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %23) #7
  br label %352

258:                                              ; preds = %251, %237
  %259 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %24, i32 noundef 14)
          to label %260 unwind label %.thread202

260:                                              ; preds = %258
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %259, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull %24)
          to label %262 unwind label %.thread206

.thread206:                                       ; preds = %260
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #7
  br label %266

262:                                              ; preds = %260
  invoke void @__cxa_throw(ptr nonnull %259, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %526 unwind label %264

.thread202:                                       ; preds = %258
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %262
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #7
  br label %352

266:                                              ; preds = %.thread206, %.thread202
  %.pn170205 = phi { ptr, i32 } [ %263, %.thread202 ], [ %261, %.thread206 ]
  call void @__cxa_free_exception(ptr %259) #7
  br label %352

267:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %268 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %269 unwind label %277

269:                                              ; preds = %267
  %270 = getelementptr inbounds i8, ptr %268, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %270)
  %271 = invoke noundef i32 @_ZN14RuleParseState8add_nameERK8RcString(ptr noundef nonnull align 8 dereferenceable(80) %4, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %272 unwind label %279

272:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %273 unwind label %281

273:                                              ; preds = %272
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %26, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %27)
          to label %274 unwind label %283

274:                                              ; preds = %273
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  %275 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.6)
          to label %276 unwind label %.loopexit221

276:                                              ; preds = %274
  br i1 %275, label %336, label %285

277:                                              ; preds = %267
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %351

279:                                              ; preds = %269
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %350

281:                                              ; preds = %272
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %349

283:                                              ; preds = %273
  %284 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  br label %349

.loopexit221:                                     ; preds = %274, %285, %288, %291, %294, %297, %300, %303, %306, %309, %312, %315, %318, %321
  %lpad.loopexit223 = landingpad { ptr, i32 }
          cleanup
  br label %348

.loopexit.split-lp222:                            ; preds = %328
  %lpad.loopexit.split-lp224 = landingpad { ptr, i32 }
          cleanup
  br label %348

285:                                              ; preds = %276
  %286 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.7)
          to label %287 unwind label %.loopexit221

287:                                              ; preds = %285
  br i1 %286, label %336, label %288

288:                                              ; preds = %287
  %289 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.8)
          to label %290 unwind label %.loopexit221

290:                                              ; preds = %288
  br i1 %289, label %336, label %291

291:                                              ; preds = %290
  %292 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.9)
          to label %293 unwind label %.loopexit221

293:                                              ; preds = %291
  br i1 %292, label %336, label %294

294:                                              ; preds = %293
  %295 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.10)
          to label %296 unwind label %.loopexit221

296:                                              ; preds = %294
  br i1 %295, label %336, label %297

297:                                              ; preds = %296
  %298 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.11)
          to label %299 unwind label %.loopexit221

299:                                              ; preds = %297
  br i1 %298, label %336, label %300

300:                                              ; preds = %299
  %301 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.12)
          to label %302 unwind label %.loopexit221

302:                                              ; preds = %300
  br i1 %301, label %336, label %303

303:                                              ; preds = %302
  %304 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.13)
          to label %305 unwind label %.loopexit221

305:                                              ; preds = %303
  br i1 %304, label %336, label %306

306:                                              ; preds = %305
  %307 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.14)
          to label %308 unwind label %.loopexit221

308:                                              ; preds = %306
  br i1 %307, label %336, label %309

309:                                              ; preds = %308
  %310 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.15)
          to label %311 unwind label %.loopexit221

311:                                              ; preds = %309
  br i1 %310, label %336, label %312

312:                                              ; preds = %311
  %313 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.16)
          to label %314 unwind label %.loopexit221

314:                                              ; preds = %312
  br i1 %313, label %336, label %315

315:                                              ; preds = %314
  %316 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.17)
          to label %317 unwind label %.loopexit221

317:                                              ; preds = %315
  br i1 %316, label %336, label %318

318:                                              ; preds = %317
  %319 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.18)
          to label %320 unwind label %.loopexit221

320:                                              ; preds = %318
  br i1 %319, label %336, label %321

321:                                              ; preds = %320
  %322 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.19)
          to label %323 unwind label %.loopexit221

323:                                              ; preds = %321
  br i1 %322, label %336, label %324

324:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %28, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %325 unwind label %329

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  store ptr %25, ptr %30, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ20Parse_MacroRules_PatR11TokenStream10eTokenTypeS6_R14RuleParseStateE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 0, ptr noundef nonnull %29)
          to label %326 unwind label %331

326:                                              ; preds = %325
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  %327 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %327, ptr noundef nonnull @.str.20)
          to label %328 unwind label %334

328:                                              ; preds = %326
  invoke void @__cxa_throw(ptr nonnull %327, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %526 unwind label %.loopexit.split-lp222

329:                                              ; preds = %324
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %333

331:                                              ; preds = %325
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br label %333

333:                                              ; preds = %331, %329
  %.pn161 = phi { ptr, i32 } [ %332, %331 ], [ %330, %329 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  br label %348

334:                                              ; preds = %326
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %327) #7
  br label %348

336:                                              ; preds = %323, %320, %317, %314, %311, %308, %305, %302, %299, %296, %293, %290, %287, %276
  %.0114 = phi i32 [ 2, %276 ], [ 3, %287 ], [ 3, %290 ], [ 4, %293 ], [ 5, %296 ], [ 7, %299 ], [ 8, %302 ], [ 6, %305 ], [ 10, %308 ], [ 9, %311 ], [ 11, %314 ], [ 12, %317 ], [ 13, %320 ], [ 14, %323 ]
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %31) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %337 unwind label %340

337:                                              ; preds = %336
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %19)
  invoke void @_ZN11MacroPatEntC2E4Span8RcStringjNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(140) %31, ptr noundef nonnull %32, ptr noundef nonnull %33, i32 noundef %271, i32 noundef %.0114)
          to label %338 unwind label %342

338:                                              ; preds = %337
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %31)
          to label %339 unwind label %344

339:                                              ; preds = %338
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %31) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %31) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %513

340:                                              ; preds = %336
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %347

342:                                              ; preds = %337
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %346

344:                                              ; preds = %338
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %31) #7
  br label %346

346:                                              ; preds = %344, %342
  %.pn163 = phi { ptr, i32 } [ %345, %344 ], [ %343, %342 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %347

347:                                              ; preds = %346, %340
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %346 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %31) #7
  br label %348

348:                                              ; preds = %.loopexit221, %.loopexit.split-lp222, %347, %334, %333
  %.pn163.pn.pn = phi { ptr, i32 } [ %.pn163.pn, %347 ], [ %335, %334 ], [ %.pn161, %333 ], [ %lpad.loopexit223, %.loopexit221 ], [ %lpad.loopexit.split-lp224, %.loopexit.split-lp222 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br label %349

349:                                              ; preds = %348, %283, %281
  %.pn163.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn, %348 ], [ %284, %283 ], [ %282, %281 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %350

350:                                              ; preds = %349, %279
  %.pn163.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn, %349 ], [ %280, %279 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %351

351:                                              ; preds = %350, %277
  %.pn163.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn, %350 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  br label %352

352:                                              ; preds = %264, %227, %266, %229, %351, %257, %219, %218
  %.pn172.pn = phi { ptr, i32 } [ %.pn172199, %229 ], [ %228, %227 ], [ %220, %219 ], [ %.pn170205, %266 ], [ %265, %264 ], [ %.pn163.pn.pn.pn.pn.pn, %351 ], [ %.pn158, %257 ], [ %.pn156, %218 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %353

353:                                              ; preds = %213, %352, %207
  %.pn172.pn.pn = phi { ptr, i32 } [ %.pn172.pn, %352 ], [ %208, %207 ], [ %.pn154, %213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br label %523

354:                                              ; preds = %128
  %355 = invoke noundef i32 @_ZN14RuleParseState9open_loopEv(ptr noundef nonnull align 8 dereferenceable(80) %4)
          to label %356 unwind label %364

356:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #7
  invoke void @_Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %34, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 23, i32 noundef 24, ptr noundef nonnull align 8 dereferenceable(80) %4)
          to label %357 unwind label %366

357:                                              ; preds = %356
  call void @_ZN14RuleParseState10close_loopEv(ptr noundef nonnull align 8 dereferenceable(80) %4)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %35) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %35, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %358 unwind label %368

358:                                              ; preds = %357
  %359 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %360 unwind label %370

360:                                              ; preds = %358
  %361 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %359)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #7
  %362 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %363 = icmp eq i32 %362, 69
  br i1 %363, label %419, label %373

364:                                              ; preds = %354
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %523

366:                                              ; preds = %356
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %488

368:                                              ; preds = %357
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %372

370:                                              ; preds = %358
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #7
  br label %372

372:                                              ; preds = %370, %368
  %.pn130 = phi { ptr, i32 } [ %371, %370 ], [ %369, %368 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #7
  br label %487

.loopexit216:                                     ; preds = %379, %382, %385, %387, %389, %391, %393
  %lpad.loopexit218 = landingpad { ptr, i32 }
          cleanup
  br label %487

.loopexit.split-lp217:                            ; preds = %400
  %lpad.loopexit.split-lp219 = landingpad { ptr, i32 }
          cleanup
  br label %487

373:                                              ; preds = %360
  %374 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %375 = icmp eq i32 %374, 41
  br i1 %375, label %419, label %376

376:                                              ; preds = %373
  %377 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  %378 = icmp eq i32 %377, 35
  br i1 %378, label %419, label %379

379:                                              ; preds = %376
  %380 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %381 unwind label %.loopexit216

381:                                              ; preds = %379
  br i1 %380, label %382, label %393

382:                                              ; preds = %381
  %383 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %383, ptr noundef nonnull @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %385 unwind label %.loopexit216

385:                                              ; preds = %382
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull @.str.21)
          to label %387 unwind label %.loopexit216

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %389 unwind label %.loopexit216

389:                                              ; preds = %387
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %391 unwind label %.loopexit216

391:                                              ; preds = %389
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %393 unwind label %.loopexit216

393:                                              ; preds = %391, %381
  %394 = invoke noundef zeroext i1 @_ZNK5Token8has_dataEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %395 unwind label %.loopexit216

395:                                              ; preds = %393
  br i1 %394, label %396, label %408

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %397 unwind label %401

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  store ptr %7, ptr %38, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ20Parse_MacroRules_PatR11TokenStream10eTokenTypeS6_R14RuleParseStateE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef 0, ptr noundef nonnull %37)
          to label %398 unwind label %403

398:                                              ; preds = %397
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  %399 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %399, ptr noundef nonnull @.str.20)
          to label %400 unwind label %406

400:                                              ; preds = %398
  invoke void @__cxa_throw(ptr nonnull %399, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %526 unwind label %.loopexit.split-lp217

401:                                              ; preds = %396
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %405

403:                                              ; preds = %397
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br label %405

405:                                              ; preds = %403, %401
  %.pn134 = phi { ptr, i32 } [ %404, %403 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %487

406:                                              ; preds = %398
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %399) #7
  br label %487

408:                                              ; preds = %395
  %409 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %39) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %39, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %410 unwind label %414

410:                                              ; preds = %408
  %411 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %39)
          to label %412 unwind label %416

412:                                              ; preds = %410
  %413 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %411)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %39) #7
  br label %419

414:                                              ; preds = %408
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %418

416:                                              ; preds = %410
  %417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #7
  br label %418

418:                                              ; preds = %416, %414
  %.pn132 = phi { ptr, i32 } [ %417, %416 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %39) #7
  br label %487

419:                                              ; preds = %412, %376, %373, %360
  %.0108 = phi i32 [ 0, %360 ], [ 0, %373 ], [ 0, %376 ], [ %409, %412 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %420 unwind label %423

420:                                              ; preds = %419
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %40, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %41)
          to label %421 unwind label %425

421:                                              ; preds = %420
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  %422 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
  switch i32 %422, label %431 [
    i32 41, label %451
    i32 35, label %429
    i32 69, label %430
  ]

423:                                              ; preds = %419
  %424 = landingpad { ptr, i32 }
          cleanup
  br label %486

425:                                              ; preds = %420
  %426 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  br label %486

427:                                              ; preds = %467, %465, %463, %461, %459, %457, %454, %451
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %485

429:                                              ; preds = %421
  br label %451

430:                                              ; preds = %421
  br label %451

431:                                              ; preds = %421
  %432 = call noundef zeroext i1 @_ZNK11TokenStream13edition_afterEN3AST7EditionE(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1)
  %433 = call ptr @__cxa_allocate_exception(i64 96) #7
  br i1 %432, label %434, label %443

434:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %43) #7
  store i32 41, ptr %43, align 4, !tbaa !11
  %435 = getelementptr inbounds i8, ptr %43, i64 4
  store i32 35, ptr %435, align 4, !tbaa !11
  %436 = getelementptr inbounds i8, ptr %43, i64 8
  store i32 69, ptr %436, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr nonnull %43, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %437 unwind label %.thread208

437:                                              ; preds = %434
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %433, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull %42)
          to label %438 unwind label %440

438:                                              ; preds = %437
  invoke void @__cxa_throw(ptr nonnull %433, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %526 unwind label %440

.thread208:                                       ; preds = %434
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #7
  br label %442

440:                                              ; preds = %437, %438
  %.0103 = phi i1 [ false, %438 ], [ true, %437 ]
  %441 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #7
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #7
  br i1 %.0103, label %442, label %485

442:                                              ; preds = %.thread208, %440
  %.pn142211 = phi { ptr, i32 } [ %439, %.thread208 ], [ %441, %440 ]
  call void @__cxa_free_exception(ptr %433) #7
  br label %485

443:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  store i32 41, ptr %46, align 4, !tbaa !11
  %444 = getelementptr inbounds i8, ptr %46, i64 4
  store i32 35, ptr %444, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #7
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr nonnull %46, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %445 unwind label %.thread212

445:                                              ; preds = %443
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %433, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull %45)
          to label %446 unwind label %448

446:                                              ; preds = %445
  invoke void @__cxa_throw(ptr nonnull %433, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %526 unwind label %448

.thread212:                                       ; preds = %443
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %450

448:                                              ; preds = %445, %446
  %.0 = phi i1 [ false, %446 ], [ true, %445 ]
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br i1 %.0, label %450, label %485

450:                                              ; preds = %.thread212, %448
  %.pn140215 = phi { ptr, i32 } [ %447, %.thread212 ], [ %449, %448 ]
  call void @__cxa_free_exception(ptr %433) #7
  br label %485

451:                                              ; preds = %429, %430, %421
  %.0107 = phi ptr [ @.str.24, %430 ], [ @.str.23, %429 ], [ @.str.22, %421 ]
  %452 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %453 unwind label %427

453:                                              ; preds = %451
  br i1 %452, label %454, label %469

454:                                              ; preds = %453
  %455 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %455, ptr noundef nonnull @__func__._Z20Parse_MacroRules_PatR11TokenStream10eTokenTypeS1_R14RuleParseState)
          to label %457 unwind label %427

457:                                              ; preds = %454
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef nonnull @.str.26)
          to label %459 unwind label %427

459:                                              ; preds = %457
  %460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull %.0107)
          to label %461 unwind label %427

461:                                              ; preds = %459
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %460, ptr noundef nonnull @.str.27)
          to label %463 unwind label %427

463:                                              ; preds = %461
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsI11MacroPatEntERSoS1_RKSt6vectorIT_SaIS3_EE(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %465 unwind label %427

465:                                              ; preds = %463
  %466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %467 unwind label %427

467:                                              ; preds = %465
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %469 unwind label %427

469:                                              ; preds = %467, %453
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %48) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %470 unwind label %474

470:                                              ; preds = %469
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %50, i32 noundef %.0108)
          to label %471 unwind label %476

471:                                              ; preds = %470
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  invoke void @_ZN11MacroPatEntC2E4Span5TokenPKcjSt6vectorIS_SaIS_EE(ptr noundef nonnull align 8 dereferenceable(140) %48, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %.0107, i32 noundef %355, ptr noundef nonnull %51)
          to label %472 unwind label %478

472:                                              ; preds = %471
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %48)
          to label %473 unwind label %480

473:                                              ; preds = %472
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %48) #7
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %48) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #7
  br label %513

474:                                              ; preds = %469
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %484

476:                                              ; preds = %470
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %483

478:                                              ; preds = %471
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %482

480:                                              ; preds = %472
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %48) #7
  br label %482

482:                                              ; preds = %480, %478
  %.pn136 = phi { ptr, i32 } [ %481, %480 ], [ %479, %478 ]
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #7
  br label %483

483:                                              ; preds = %482, %476
  %.pn136.pn = phi { ptr, i32 } [ %.pn136, %482 ], [ %477, %476 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %484

484:                                              ; preds = %483, %474
  %.pn136.pn.pn = phi { ptr, i32 } [ %.pn136.pn, %483 ], [ %475, %474 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %48) #7
  br label %485

485:                                              ; preds = %448, %450, %440, %442, %484, %427
  %.pn142.pn = phi { ptr, i32 } [ %.pn142211, %442 ], [ %441, %440 ], [ %.pn140215, %450 ], [ %449, %448 ], [ %.pn136.pn.pn, %484 ], [ %428, %427 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br label %486

486:                                              ; preds = %485, %425, %423
  %.pn142.pn.pn = phi { ptr, i32 } [ %.pn142.pn, %485 ], [ %426, %425 ], [ %424, %423 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  br label %487

487:                                              ; preds = %.loopexit216, %.loopexit.split-lp217, %486, %418, %406, %405, %372
  %.pn142.pn.pn.pn = phi { ptr, i32 } [ %.pn142.pn.pn, %486 ], [ %407, %406 ], [ %.pn134, %405 ], [ %.pn132, %418 ], [ %.pn130, %372 ], [ %lpad.loopexit218, %.loopexit216 ], [ %lpad.loopexit.split-lp219, %.loopexit.split-lp217 ]
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  br label %488

488:                                              ; preds = %487, %366
  %.pn142.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn142.pn.pn.pn, %487 ], [ %367, %366 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #7
  br label %523

489:                                              ; preds = %123
  %490 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %490, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %.invoke unwind label %491

491:                                              ; preds = %489
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %490) #7
  br label %523

493:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %52) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %494 unwind label %499

494:                                              ; preds = %493
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %53, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %54)
          to label %495 unwind label %501

495:                                              ; preds = %494
  invoke void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88) %55, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %496 unwind label %503

496:                                              ; preds = %495
  invoke void @_ZN11MacroPatEntC2E4Span5Token(ptr noundef nonnull align 8 dereferenceable(140) %52, ptr noundef nonnull %53, ptr noundef nonnull %55)
          to label %497 unwind label %505

497:                                              ; preds = %496
  invoke void @_ZNSt6vectorI11MacroPatEntSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(140) %52)
          to label %498 unwind label %507

498:                                              ; preds = %497
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %52) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %52) #7
  br label %513

499:                                              ; preds = %493
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %512

501:                                              ; preds = %494
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %511

503:                                              ; preds = %495
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %510

505:                                              ; preds = %496
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %509

507:                                              ; preds = %497
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11MacroPatEntD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %52) #7
  br label %509

509:                                              ; preds = %507, %505
  %.pn176 = phi { ptr, i32 } [ %508, %507 ], [ %506, %505 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #7
  br label %510

510:                                              ; preds = %509, %503
  %.pn176.pn = phi { ptr, i32 } [ %.pn176, %509 ], [ %504, %503 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %511

511:                                              ; preds = %510, %501
  %.pn176.pn.pn = phi { ptr, i32 } [ %.pn176.pn, %510 ], [ %502, %501 ]
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  br label %512

512:                                              ; preds = %511, %499
  %.pn176.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn, %511 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %52) #7
  br label %523

513:                                              ; preds = %142, %339, %473, %498
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #7
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.ProtoSpan) align 8 %56, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %514 unwind label %517

514:                                              ; preds = %513
  %515 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN9ProtoSpanaSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %56)
          to label %516 unwind label %519

516:                                              ; preds = %514
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #7
  br label %.preheader, !llvm.loop !13

517:                                              ; preds = %513
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %521

519:                                              ; preds = %514
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #7
  br label %521

521:                                              ; preds = %519, %517
  %.pn181 = phi { ptr, i32 } [ %520, %519 ], [ %518, %517 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #7
  br label %523

522:                                              ; preds = %62
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %7) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #7
  ret void

523:                                              ; preds = %.loopexit, %.loopexit.split-lp, %364, %488, %119, %120, %521, %512, %491, %353, %169, %162, %157, %156, %134, %89
  %.pn181.pn = phi { ptr, i32 } [ %.pn181, %521 ], [ %.pn176.pn.pn.pn, %512 ], [ %492, %491 ], [ %.pn172.pn.pn, %353 ], [ %170, %169 ], [ %163, %162 ], [ %158, %157 ], [ %.pn149.pn.pn.pn, %156 ], [ %.pn128, %134 ], [ %.pn123.pn.pn.pn189, %120 ], [ %.pn123, %119 ], [ %.pn, %89 ], [ %.pn142.pn.pn.pn.pn, %488 ], [ %365, %364 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br label %524

524:                                              ; preds = %523, %83
  %.pn181.pn.pn = phi { ptr, i32 } [ %.pn181.pn, %523 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt6vectorI11MacroPatEntSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #7
  br label %525

525:                                              ; preds = %524, %81
  %.pn181.pn.pn.pn = phi { ptr, i32 } [ %.pn181.pn.pn, %524 ], [ %82, %81 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %7) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn181.pn.pn.pn

526:                                              ; preds = %446, %438, %400, %328, %262, %225, %111
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

declare void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

declare void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

declare void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA18_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(18)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE5TokenEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA11_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(11)) local_unnamed_addr #5

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

declare void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #0 align 2

declare void @_ZN12CompileError7GenericC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

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

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

declare void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) local_unnamed_addr #2

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

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5Token13type_is_rwordE10eTokenType(i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

declare void @_ZNK5Token6to_strB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

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

declare void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14RuleParseState10close_loopEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5Token8has_dataEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #0 align 2

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

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

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

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

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsI11MacroPatEntERSoS1_RKSt6vectorIT_SaIS3_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

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

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

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

declare void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN9ProtoSpanaSEOS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

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

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

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS10eTokenType", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}


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