• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package main
2
3// Code generated by ./peg/peg delocate.peg DO NOT EDIT.
4
5import (
6	"fmt"
7	"io"
8	"os"
9	"sort"
10	"strconv"
11	"strings"
12)
13
14const endSymbol rune = 1114112
15
16/* The rule types inferred from the grammar are below. */
17type pegRule uint8
18
19const (
20	ruleUnknown pegRule = iota
21	ruleAsmFile
22	ruleStatement
23	ruleGlobalDirective
24	ruleDirective
25	ruleDirectiveName
26	ruleLocationDirective
27	ruleFileDirective
28	ruleLocDirective
29	ruleArgs
30	ruleArg
31	ruleQuotedArg
32	ruleQuotedText
33	ruleLabelContainingDirective
34	ruleLabelContainingDirectiveName
35	ruleSymbolArgs
36	ruleSymbolArg
37	ruleSymbolExpr
38	ruleSymbolAtom
39	ruleSymbolOperator
40	ruleOpenParen
41	ruleCloseParen
42	ruleSymbolType
43	ruleDot
44	ruleTCMarker
45	ruleEscapedChar
46	ruleWS
47	ruleComment
48	ruleLabel
49	ruleSymbolName
50	ruleLocalSymbol
51	ruleLocalLabel
52	ruleLocalLabelRef
53	ruleInstruction
54	ruleInstructionName
55	ruleInstructionArg
56	ruleGOTLocation
57	ruleGOTAddress
58	ruleGOTSymbolOffset
59	ruleAVX512Token
60	ruleTOCRefHigh
61	ruleTOCRefLow
62	ruleIndirectionIndicator
63	ruleRegisterOrConstant
64	ruleARMConstantTweak
65	ruleARMRegister
66	ruleARMVectorRegister
67	ruleSVE2PredicateRegister
68	ruleSVE2SpecialValue
69	ruleMemoryRef
70	ruleSymbolRef
71	ruleLow12BitsSymbolRef
72	ruleARMBaseIndexScale
73	ruleARMGOTLow12
74	ruleARMPostincrement
75	ruleBaseIndexScale
76	ruleOperator
77	ruleOffset
78	ruleSection
79	ruleSegmentRegister
80)
81
82var rul3s = [...]string{
83	"Unknown",
84	"AsmFile",
85	"Statement",
86	"GlobalDirective",
87	"Directive",
88	"DirectiveName",
89	"LocationDirective",
90	"FileDirective",
91	"LocDirective",
92	"Args",
93	"Arg",
94	"QuotedArg",
95	"QuotedText",
96	"LabelContainingDirective",
97	"LabelContainingDirectiveName",
98	"SymbolArgs",
99	"SymbolArg",
100	"SymbolExpr",
101	"SymbolAtom",
102	"SymbolOperator",
103	"OpenParen",
104	"CloseParen",
105	"SymbolType",
106	"Dot",
107	"TCMarker",
108	"EscapedChar",
109	"WS",
110	"Comment",
111	"Label",
112	"SymbolName",
113	"LocalSymbol",
114	"LocalLabel",
115	"LocalLabelRef",
116	"Instruction",
117	"InstructionName",
118	"InstructionArg",
119	"GOTLocation",
120	"GOTAddress",
121	"GOTSymbolOffset",
122	"AVX512Token",
123	"TOCRefHigh",
124	"TOCRefLow",
125	"IndirectionIndicator",
126	"RegisterOrConstant",
127	"ARMConstantTweak",
128	"ARMRegister",
129	"ARMVectorRegister",
130	"SVE2PredicateRegister",
131	"SVE2SpecialValue",
132	"MemoryRef",
133	"SymbolRef",
134	"Low12BitsSymbolRef",
135	"ARMBaseIndexScale",
136	"ARMGOTLow12",
137	"ARMPostincrement",
138	"BaseIndexScale",
139	"Operator",
140	"Offset",
141	"Section",
142	"SegmentRegister",
143}
144
145type token32 struct {
146	pegRule
147	begin, end uint32
148}
149
150func (t *token32) String() string {
151	return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
152}
153
154type node32 struct {
155	token32
156	up, next *node32
157}
158
159func (node *node32) print(w io.Writer, pretty bool, buffer string) {
160	var print func(node *node32, depth int)
161	print = func(node *node32, depth int) {
162		for node != nil {
163			for c := 0; c < depth; c++ {
164				fmt.Fprintf(w, " ")
165			}
166			rule := rul3s[node.pegRule]
167			quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
168			if !pretty {
169				fmt.Fprintf(w, "%v %v\n", rule, quote)
170			} else {
171				fmt.Fprintf(w, "\x1B[36m%v\x1B[m %v\n", rule, quote)
172			}
173			if node.up != nil {
174				print(node.up, depth+1)
175			}
176			node = node.next
177		}
178	}
179	print(node, 0)
180}
181
182func (node *node32) Print(w io.Writer, buffer string) {
183	node.print(w, false, buffer)
184}
185
186func (node *node32) PrettyPrint(w io.Writer, buffer string) {
187	node.print(w, true, buffer)
188}
189
190type tokens32 struct {
191	tree []token32
192}
193
194func (t *tokens32) Trim(length uint32) {
195	t.tree = t.tree[:length]
196}
197
198func (t *tokens32) Print() {
199	for _, token := range t.tree {
200		fmt.Println(token.String())
201	}
202}
203
204func (t *tokens32) AST() *node32 {
205	type element struct {
206		node *node32
207		down *element
208	}
209	tokens := t.Tokens()
210	var stack *element
211	for _, token := range tokens {
212		if token.begin == token.end {
213			continue
214		}
215		node := &node32{token32: token}
216		for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
217			stack.node.next = node.up
218			node.up = stack.node
219			stack = stack.down
220		}
221		stack = &element{node: node, down: stack}
222	}
223	if stack != nil {
224		return stack.node
225	}
226	return nil
227}
228
229func (t *tokens32) PrintSyntaxTree(buffer string) {
230	t.AST().Print(os.Stdout, buffer)
231}
232
233func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) {
234	t.AST().Print(w, buffer)
235}
236
237func (t *tokens32) PrettyPrintSyntaxTree(buffer string) {
238	t.AST().PrettyPrint(os.Stdout, buffer)
239}
240
241func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
242	tree, i := t.tree, int(index)
243	if i >= len(tree) {
244		t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end})
245		return
246	}
247	tree[i] = token32{pegRule: rule, begin: begin, end: end}
248}
249
250func (t *tokens32) Tokens() []token32 {
251	return t.tree
252}
253
254type Asm struct {
255	Buffer string
256	buffer []rune
257	rules  [60]func() bool
258	parse  func(rule ...int) error
259	reset  func()
260	Pretty bool
261	tokens32
262}
263
264func (p *Asm) Parse(rule ...int) error {
265	return p.parse(rule...)
266}
267
268func (p *Asm) Reset() {
269	p.reset()
270}
271
272type textPosition struct {
273	line, symbol int
274}
275
276type textPositionMap map[int]textPosition
277
278func translatePositions(buffer []rune, positions []int) textPositionMap {
279	length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
280	sort.Ints(positions)
281
282search:
283	for i, c := range buffer {
284		if c == '\n' {
285			line, symbol = line+1, 0
286		} else {
287			symbol++
288		}
289		if i == positions[j] {
290			translations[positions[j]] = textPosition{line, symbol}
291			for j++; j < length; j++ {
292				if i != positions[j] {
293					continue search
294				}
295			}
296			break search
297		}
298	}
299
300	return translations
301}
302
303type parseError struct {
304	p   *Asm
305	max token32
306}
307
308func (e *parseError) Error() string {
309	tokens, err := []token32{e.max}, "\n"
310	positions, p := make([]int, 2*len(tokens)), 0
311	for _, token := range tokens {
312		positions[p], p = int(token.begin), p+1
313		positions[p], p = int(token.end), p+1
314	}
315	translations := translatePositions(e.p.buffer, positions)
316	format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
317	if e.p.Pretty {
318		format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
319	}
320	for _, token := range tokens {
321		begin, end := int(token.begin), int(token.end)
322		err += fmt.Sprintf(format,
323			rul3s[token.pegRule],
324			translations[begin].line, translations[begin].symbol,
325			translations[end].line, translations[end].symbol,
326			strconv.Quote(string(e.p.buffer[begin:end])))
327	}
328
329	return err
330}
331
332func (p *Asm) PrintSyntaxTree() {
333	if p.Pretty {
334		p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
335	} else {
336		p.tokens32.PrintSyntaxTree(p.Buffer)
337	}
338}
339
340func (p *Asm) WriteSyntaxTree(w io.Writer) {
341	p.tokens32.WriteSyntaxTree(w, p.Buffer)
342}
343
344func (p *Asm) SprintSyntaxTree() string {
345	var bldr strings.Builder
346	p.WriteSyntaxTree(&bldr)
347	return bldr.String()
348}
349
350func Pretty(pretty bool) func(*Asm) error {
351	return func(p *Asm) error {
352		p.Pretty = pretty
353		return nil
354	}
355}
356
357func Size(size int) func(*Asm) error {
358	return func(p *Asm) error {
359		p.tokens32 = tokens32{tree: make([]token32, 0, size)}
360		return nil
361	}
362}
363func (p *Asm) Init(options ...func(*Asm) error) error {
364	var (
365		max                  token32
366		position, tokenIndex uint32
367		buffer               []rune
368	)
369	for _, option := range options {
370		err := option(p)
371		if err != nil {
372			return err
373		}
374	}
375	p.reset = func() {
376		max = token32{}
377		position, tokenIndex = 0, 0
378
379		p.buffer = []rune(p.Buffer)
380		if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
381			p.buffer = append(p.buffer, endSymbol)
382		}
383		buffer = p.buffer
384	}
385	p.reset()
386
387	_rules := p.rules
388	tree := p.tokens32
389	p.parse = func(rule ...int) error {
390		r := 1
391		if len(rule) > 0 {
392			r = rule[0]
393		}
394		matches := p.rules[r]()
395		p.tokens32 = tree
396		if matches {
397			p.Trim(tokenIndex)
398			return nil
399		}
400		return &parseError{p, max}
401	}
402
403	add := func(rule pegRule, begin uint32) {
404		tree.Add(rule, begin, position, tokenIndex)
405		tokenIndex++
406		if begin != position && position > max.end {
407			max = token32{rule, begin, position}
408		}
409	}
410
411	matchDot := func() bool {
412		if buffer[position] != endSymbol {
413			position++
414			return true
415		}
416		return false
417	}
418
419	/*matchChar := func(c byte) bool {
420		if buffer[position] == c {
421			position++
422			return true
423		}
424		return false
425	}*/
426
427	/*matchRange := func(lower byte, upper byte) bool {
428		if c := buffer[position]; c >= lower && c <= upper {
429			position++
430			return true
431		}
432		return false
433	}*/
434
435	_rules = [...]func() bool{
436		nil,
437		/* 0 AsmFile <- <(Statement* !.)> */
438		func() bool {
439			position0, tokenIndex0 := position, tokenIndex
440			{
441				position1 := position
442			l2:
443				{
444					position3, tokenIndex3 := position, tokenIndex
445					if !_rules[ruleStatement]() {
446						goto l3
447					}
448					goto l2
449				l3:
450					position, tokenIndex = position3, tokenIndex3
451				}
452				{
453					position4, tokenIndex4 := position, tokenIndex
454					if !matchDot() {
455						goto l4
456					}
457					goto l0
458				l4:
459					position, tokenIndex = position4, tokenIndex4
460				}
461				add(ruleAsmFile, position1)
462			}
463			return true
464		l0:
465			position, tokenIndex = position0, tokenIndex0
466			return false
467		},
468		/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
469		func() bool {
470			position5, tokenIndex5 := position, tokenIndex
471			{
472				position6 := position
473				{
474					position7, tokenIndex7 := position, tokenIndex
475					if !_rules[ruleWS]() {
476						goto l7
477					}
478					goto l8
479				l7:
480					position, tokenIndex = position7, tokenIndex7
481				}
482			l8:
483				{
484					position9, tokenIndex9 := position, tokenIndex
485					if !_rules[ruleLabel]() {
486						goto l10
487					}
488					goto l9
489				l10:
490					position, tokenIndex = position9, tokenIndex9
491					{
492						position11, tokenIndex11 := position, tokenIndex
493						if !_rules[ruleGlobalDirective]() {
494							goto l12
495						}
496						goto l11
497					l12:
498						position, tokenIndex = position11, tokenIndex11
499						if !_rules[ruleLocationDirective]() {
500							goto l13
501						}
502						goto l11
503					l13:
504						position, tokenIndex = position11, tokenIndex11
505						if !_rules[ruleLabelContainingDirective]() {
506							goto l14
507						}
508						goto l11
509					l14:
510						position, tokenIndex = position11, tokenIndex11
511						if !_rules[ruleInstruction]() {
512							goto l15
513						}
514						goto l11
515					l15:
516						position, tokenIndex = position11, tokenIndex11
517						if !_rules[ruleDirective]() {
518							goto l16
519						}
520						goto l11
521					l16:
522						position, tokenIndex = position11, tokenIndex11
523						if !_rules[ruleComment]() {
524							goto l17
525						}
526						goto l11
527					l17:
528						position, tokenIndex = position11, tokenIndex11
529					}
530				l11:
531					{
532						position18, tokenIndex18 := position, tokenIndex
533						if !_rules[ruleWS]() {
534							goto l18
535						}
536						goto l19
537					l18:
538						position, tokenIndex = position18, tokenIndex18
539					}
540				l19:
541					{
542						position20, tokenIndex20 := position, tokenIndex
543						{
544							position22, tokenIndex22 := position, tokenIndex
545							if !_rules[ruleComment]() {
546								goto l22
547							}
548							goto l23
549						l22:
550							position, tokenIndex = position22, tokenIndex22
551						}
552					l23:
553						if buffer[position] != rune('\n') {
554							goto l21
555						}
556						position++
557						goto l20
558					l21:
559						position, tokenIndex = position20, tokenIndex20
560						if buffer[position] != rune(';') {
561							goto l5
562						}
563						position++
564					}
565				l20:
566				}
567			l9:
568				add(ruleStatement, position6)
569			}
570			return true
571		l5:
572			position, tokenIndex = position5, tokenIndex5
573			return false
574		},
575		/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
576		func() bool {
577			position24, tokenIndex24 := position, tokenIndex
578			{
579				position25 := position
580				{
581					position26, tokenIndex26 := position, tokenIndex
582					if buffer[position] != rune('.') {
583						goto l27
584					}
585					position++
586					{
587						position28, tokenIndex28 := position, tokenIndex
588						if buffer[position] != rune('g') {
589							goto l29
590						}
591						position++
592						goto l28
593					l29:
594						position, tokenIndex = position28, tokenIndex28
595						if buffer[position] != rune('G') {
596							goto l27
597						}
598						position++
599					}
600				l28:
601					{
602						position30, tokenIndex30 := position, tokenIndex
603						if buffer[position] != rune('l') {
604							goto l31
605						}
606						position++
607						goto l30
608					l31:
609						position, tokenIndex = position30, tokenIndex30
610						if buffer[position] != rune('L') {
611							goto l27
612						}
613						position++
614					}
615				l30:
616					{
617						position32, tokenIndex32 := position, tokenIndex
618						if buffer[position] != rune('o') {
619							goto l33
620						}
621						position++
622						goto l32
623					l33:
624						position, tokenIndex = position32, tokenIndex32
625						if buffer[position] != rune('O') {
626							goto l27
627						}
628						position++
629					}
630				l32:
631					{
632						position34, tokenIndex34 := position, tokenIndex
633						if buffer[position] != rune('b') {
634							goto l35
635						}
636						position++
637						goto l34
638					l35:
639						position, tokenIndex = position34, tokenIndex34
640						if buffer[position] != rune('B') {
641							goto l27
642						}
643						position++
644					}
645				l34:
646					{
647						position36, tokenIndex36 := position, tokenIndex
648						if buffer[position] != rune('a') {
649							goto l37
650						}
651						position++
652						goto l36
653					l37:
654						position, tokenIndex = position36, tokenIndex36
655						if buffer[position] != rune('A') {
656							goto l27
657						}
658						position++
659					}
660				l36:
661					{
662						position38, tokenIndex38 := position, tokenIndex
663						if buffer[position] != rune('l') {
664							goto l39
665						}
666						position++
667						goto l38
668					l39:
669						position, tokenIndex = position38, tokenIndex38
670						if buffer[position] != rune('L') {
671							goto l27
672						}
673						position++
674					}
675				l38:
676					goto l26
677				l27:
678					position, tokenIndex = position26, tokenIndex26
679					if buffer[position] != rune('.') {
680						goto l24
681					}
682					position++
683					{
684						position40, tokenIndex40 := position, tokenIndex
685						if buffer[position] != rune('g') {
686							goto l41
687						}
688						position++
689						goto l40
690					l41:
691						position, tokenIndex = position40, tokenIndex40
692						if buffer[position] != rune('G') {
693							goto l24
694						}
695						position++
696					}
697				l40:
698					{
699						position42, tokenIndex42 := position, tokenIndex
700						if buffer[position] != rune('l') {
701							goto l43
702						}
703						position++
704						goto l42
705					l43:
706						position, tokenIndex = position42, tokenIndex42
707						if buffer[position] != rune('L') {
708							goto l24
709						}
710						position++
711					}
712				l42:
713					{
714						position44, tokenIndex44 := position, tokenIndex
715						if buffer[position] != rune('o') {
716							goto l45
717						}
718						position++
719						goto l44
720					l45:
721						position, tokenIndex = position44, tokenIndex44
722						if buffer[position] != rune('O') {
723							goto l24
724						}
725						position++
726					}
727				l44:
728					{
729						position46, tokenIndex46 := position, tokenIndex
730						if buffer[position] != rune('b') {
731							goto l47
732						}
733						position++
734						goto l46
735					l47:
736						position, tokenIndex = position46, tokenIndex46
737						if buffer[position] != rune('B') {
738							goto l24
739						}
740						position++
741					}
742				l46:
743					{
744						position48, tokenIndex48 := position, tokenIndex
745						if buffer[position] != rune('l') {
746							goto l49
747						}
748						position++
749						goto l48
750					l49:
751						position, tokenIndex = position48, tokenIndex48
752						if buffer[position] != rune('L') {
753							goto l24
754						}
755						position++
756					}
757				l48:
758				}
759			l26:
760				if !_rules[ruleWS]() {
761					goto l24
762				}
763				if !_rules[ruleSymbolName]() {
764					goto l24
765				}
766				add(ruleGlobalDirective, position25)
767			}
768			return true
769		l24:
770			position, tokenIndex = position24, tokenIndex24
771			return false
772		},
773		/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
774		func() bool {
775			position50, tokenIndex50 := position, tokenIndex
776			{
777				position51 := position
778				if buffer[position] != rune('.') {
779					goto l50
780				}
781				position++
782				if !_rules[ruleDirectiveName]() {
783					goto l50
784				}
785				{
786					position52, tokenIndex52 := position, tokenIndex
787					if !_rules[ruleWS]() {
788						goto l52
789					}
790					if !_rules[ruleArgs]() {
791						goto l52
792					}
793					goto l53
794				l52:
795					position, tokenIndex = position52, tokenIndex52
796				}
797			l53:
798				add(ruleDirective, position51)
799			}
800			return true
801		l50:
802			position, tokenIndex = position50, tokenIndex50
803			return false
804		},
805		/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
806		func() bool {
807			position54, tokenIndex54 := position, tokenIndex
808			{
809				position55 := position
810				{
811					position58, tokenIndex58 := position, tokenIndex
812					if c := buffer[position]; c < rune('a') || c > rune('z') {
813						goto l59
814					}
815					position++
816					goto l58
817				l59:
818					position, tokenIndex = position58, tokenIndex58
819					if c := buffer[position]; c < rune('A') || c > rune('Z') {
820						goto l60
821					}
822					position++
823					goto l58
824				l60:
825					position, tokenIndex = position58, tokenIndex58
826					{
827						position62, tokenIndex62 := position, tokenIndex
828						if c := buffer[position]; c < rune('0') || c > rune('9') {
829							goto l63
830						}
831						position++
832						goto l62
833					l63:
834						position, tokenIndex = position62, tokenIndex62
835						if c := buffer[position]; c < rune('0') || c > rune('9') {
836							goto l61
837						}
838						position++
839					}
840				l62:
841					goto l58
842				l61:
843					position, tokenIndex = position58, tokenIndex58
844					if buffer[position] != rune('_') {
845						goto l54
846					}
847					position++
848				}
849			l58:
850			l56:
851				{
852					position57, tokenIndex57 := position, tokenIndex
853					{
854						position64, tokenIndex64 := position, tokenIndex
855						if c := buffer[position]; c < rune('a') || c > rune('z') {
856							goto l65
857						}
858						position++
859						goto l64
860					l65:
861						position, tokenIndex = position64, tokenIndex64
862						if c := buffer[position]; c < rune('A') || c > rune('Z') {
863							goto l66
864						}
865						position++
866						goto l64
867					l66:
868						position, tokenIndex = position64, tokenIndex64
869						{
870							position68, tokenIndex68 := position, tokenIndex
871							if c := buffer[position]; c < rune('0') || c > rune('9') {
872								goto l69
873							}
874							position++
875							goto l68
876						l69:
877							position, tokenIndex = position68, tokenIndex68
878							if c := buffer[position]; c < rune('0') || c > rune('9') {
879								goto l67
880							}
881							position++
882						}
883					l68:
884						goto l64
885					l67:
886						position, tokenIndex = position64, tokenIndex64
887						if buffer[position] != rune('_') {
888							goto l57
889						}
890						position++
891					}
892				l64:
893					goto l56
894				l57:
895					position, tokenIndex = position57, tokenIndex57
896				}
897				add(ruleDirectiveName, position55)
898			}
899			return true
900		l54:
901			position, tokenIndex = position54, tokenIndex54
902			return false
903		},
904		/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
905		func() bool {
906			position70, tokenIndex70 := position, tokenIndex
907			{
908				position71 := position
909				{
910					position72, tokenIndex72 := position, tokenIndex
911					if !_rules[ruleFileDirective]() {
912						goto l73
913					}
914					goto l72
915				l73:
916					position, tokenIndex = position72, tokenIndex72
917					if !_rules[ruleLocDirective]() {
918						goto l70
919					}
920				}
921			l72:
922				add(ruleLocationDirective, position71)
923			}
924			return true
925		l70:
926			position, tokenIndex = position70, tokenIndex70
927			return false
928		},
929		/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
930		func() bool {
931			position74, tokenIndex74 := position, tokenIndex
932			{
933				position75 := position
934				if buffer[position] != rune('.') {
935					goto l74
936				}
937				position++
938				{
939					position76, tokenIndex76 := position, tokenIndex
940					if buffer[position] != rune('f') {
941						goto l77
942					}
943					position++
944					goto l76
945				l77:
946					position, tokenIndex = position76, tokenIndex76
947					if buffer[position] != rune('F') {
948						goto l74
949					}
950					position++
951				}
952			l76:
953				{
954					position78, tokenIndex78 := position, tokenIndex
955					if buffer[position] != rune('i') {
956						goto l79
957					}
958					position++
959					goto l78
960				l79:
961					position, tokenIndex = position78, tokenIndex78
962					if buffer[position] != rune('I') {
963						goto l74
964					}
965					position++
966				}
967			l78:
968				{
969					position80, tokenIndex80 := position, tokenIndex
970					if buffer[position] != rune('l') {
971						goto l81
972					}
973					position++
974					goto l80
975				l81:
976					position, tokenIndex = position80, tokenIndex80
977					if buffer[position] != rune('L') {
978						goto l74
979					}
980					position++
981				}
982			l80:
983				{
984					position82, tokenIndex82 := position, tokenIndex
985					if buffer[position] != rune('e') {
986						goto l83
987					}
988					position++
989					goto l82
990				l83:
991					position, tokenIndex = position82, tokenIndex82
992					if buffer[position] != rune('E') {
993						goto l74
994					}
995					position++
996				}
997			l82:
998				if !_rules[ruleWS]() {
999					goto l74
1000				}
1001				{
1002					position86, tokenIndex86 := position, tokenIndex
1003					{
1004						position87, tokenIndex87 := position, tokenIndex
1005						if buffer[position] != rune('#') {
1006							goto l88
1007						}
1008						position++
1009						goto l87
1010					l88:
1011						position, tokenIndex = position87, tokenIndex87
1012						if buffer[position] != rune('\n') {
1013							goto l86
1014						}
1015						position++
1016					}
1017				l87:
1018					goto l74
1019				l86:
1020					position, tokenIndex = position86, tokenIndex86
1021				}
1022				if !matchDot() {
1023					goto l74
1024				}
1025			l84:
1026				{
1027					position85, tokenIndex85 := position, tokenIndex
1028					{
1029						position89, tokenIndex89 := position, tokenIndex
1030						{
1031							position90, tokenIndex90 := position, tokenIndex
1032							if buffer[position] != rune('#') {
1033								goto l91
1034							}
1035							position++
1036							goto l90
1037						l91:
1038							position, tokenIndex = position90, tokenIndex90
1039							if buffer[position] != rune('\n') {
1040								goto l89
1041							}
1042							position++
1043						}
1044					l90:
1045						goto l85
1046					l89:
1047						position, tokenIndex = position89, tokenIndex89
1048					}
1049					if !matchDot() {
1050						goto l85
1051					}
1052					goto l84
1053				l85:
1054					position, tokenIndex = position85, tokenIndex85
1055				}
1056				add(ruleFileDirective, position75)
1057			}
1058			return true
1059		l74:
1060			position, tokenIndex = position74, tokenIndex74
1061			return false
1062		},
1063		/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
1064		func() bool {
1065			position92, tokenIndex92 := position, tokenIndex
1066			{
1067				position93 := position
1068				if buffer[position] != rune('.') {
1069					goto l92
1070				}
1071				position++
1072				{
1073					position94, tokenIndex94 := position, tokenIndex
1074					if buffer[position] != rune('l') {
1075						goto l95
1076					}
1077					position++
1078					goto l94
1079				l95:
1080					position, tokenIndex = position94, tokenIndex94
1081					if buffer[position] != rune('L') {
1082						goto l92
1083					}
1084					position++
1085				}
1086			l94:
1087				{
1088					position96, tokenIndex96 := position, tokenIndex
1089					if buffer[position] != rune('o') {
1090						goto l97
1091					}
1092					position++
1093					goto l96
1094				l97:
1095					position, tokenIndex = position96, tokenIndex96
1096					if buffer[position] != rune('O') {
1097						goto l92
1098					}
1099					position++
1100				}
1101			l96:
1102				{
1103					position98, tokenIndex98 := position, tokenIndex
1104					if buffer[position] != rune('c') {
1105						goto l99
1106					}
1107					position++
1108					goto l98
1109				l99:
1110					position, tokenIndex = position98, tokenIndex98
1111					if buffer[position] != rune('C') {
1112						goto l92
1113					}
1114					position++
1115				}
1116			l98:
1117				if !_rules[ruleWS]() {
1118					goto l92
1119				}
1120				{
1121					position102, tokenIndex102 := position, tokenIndex
1122					{
1123						position103, tokenIndex103 := position, tokenIndex
1124						if buffer[position] != rune('#') {
1125							goto l104
1126						}
1127						position++
1128						goto l103
1129					l104:
1130						position, tokenIndex = position103, tokenIndex103
1131						if buffer[position] != rune('/') {
1132							goto l105
1133						}
1134						position++
1135						goto l103
1136					l105:
1137						position, tokenIndex = position103, tokenIndex103
1138						if buffer[position] != rune('\n') {
1139							goto l102
1140						}
1141						position++
1142					}
1143				l103:
1144					goto l92
1145				l102:
1146					position, tokenIndex = position102, tokenIndex102
1147				}
1148				if !matchDot() {
1149					goto l92
1150				}
1151			l100:
1152				{
1153					position101, tokenIndex101 := position, tokenIndex
1154					{
1155						position106, tokenIndex106 := position, tokenIndex
1156						{
1157							position107, tokenIndex107 := position, tokenIndex
1158							if buffer[position] != rune('#') {
1159								goto l108
1160							}
1161							position++
1162							goto l107
1163						l108:
1164							position, tokenIndex = position107, tokenIndex107
1165							if buffer[position] != rune('/') {
1166								goto l109
1167							}
1168							position++
1169							goto l107
1170						l109:
1171							position, tokenIndex = position107, tokenIndex107
1172							if buffer[position] != rune('\n') {
1173								goto l106
1174							}
1175							position++
1176						}
1177					l107:
1178						goto l101
1179					l106:
1180						position, tokenIndex = position106, tokenIndex106
1181					}
1182					if !matchDot() {
1183						goto l101
1184					}
1185					goto l100
1186				l101:
1187					position, tokenIndex = position101, tokenIndex101
1188				}
1189				add(ruleLocDirective, position93)
1190			}
1191			return true
1192		l92:
1193			position, tokenIndex = position92, tokenIndex92
1194			return false
1195		},
1196		/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
1197		func() bool {
1198			position110, tokenIndex110 := position, tokenIndex
1199			{
1200				position111 := position
1201				if !_rules[ruleArg]() {
1202					goto l110
1203				}
1204			l112:
1205				{
1206					position113, tokenIndex113 := position, tokenIndex
1207					{
1208						position114, tokenIndex114 := position, tokenIndex
1209						if !_rules[ruleWS]() {
1210							goto l114
1211						}
1212						goto l115
1213					l114:
1214						position, tokenIndex = position114, tokenIndex114
1215					}
1216				l115:
1217					if buffer[position] != rune(',') {
1218						goto l113
1219					}
1220					position++
1221					{
1222						position116, tokenIndex116 := position, tokenIndex
1223						if !_rules[ruleWS]() {
1224							goto l116
1225						}
1226						goto l117
1227					l116:
1228						position, tokenIndex = position116, tokenIndex116
1229					}
1230				l117:
1231					if !_rules[ruleArg]() {
1232						goto l113
1233					}
1234					goto l112
1235				l113:
1236					position, tokenIndex = position113, tokenIndex113
1237				}
1238				add(ruleArgs, position111)
1239			}
1240			return true
1241		l110:
1242			position, tokenIndex = position110, tokenIndex110
1243			return false
1244		},
1245		/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
1246		func() bool {
1247			{
1248				position119 := position
1249				{
1250					position120, tokenIndex120 := position, tokenIndex
1251					if !_rules[ruleQuotedArg]() {
1252						goto l121
1253					}
1254					goto l120
1255				l121:
1256					position, tokenIndex = position120, tokenIndex120
1257				l122:
1258					{
1259						position123, tokenIndex123 := position, tokenIndex
1260						{
1261							position124, tokenIndex124 := position, tokenIndex
1262							if c := buffer[position]; c < rune('0') || c > rune('9') {
1263								goto l125
1264							}
1265							position++
1266							goto l124
1267						l125:
1268							position, tokenIndex = position124, tokenIndex124
1269							if c := buffer[position]; c < rune('0') || c > rune('9') {
1270								goto l126
1271							}
1272							position++
1273							goto l124
1274						l126:
1275							position, tokenIndex = position124, tokenIndex124
1276							{
1277								position128, tokenIndex128 := position, tokenIndex
1278								if c := buffer[position]; c < rune('a') || c > rune('z') {
1279									goto l129
1280								}
1281								position++
1282								goto l128
1283							l129:
1284								position, tokenIndex = position128, tokenIndex128
1285								if c := buffer[position]; c < rune('A') || c > rune('Z') {
1286									goto l127
1287								}
1288								position++
1289							}
1290						l128:
1291							goto l124
1292						l127:
1293							position, tokenIndex = position124, tokenIndex124
1294							if buffer[position] != rune('%') {
1295								goto l130
1296							}
1297							position++
1298							goto l124
1299						l130:
1300							position, tokenIndex = position124, tokenIndex124
1301							if buffer[position] != rune('+') {
1302								goto l131
1303							}
1304							position++
1305							goto l124
1306						l131:
1307							position, tokenIndex = position124, tokenIndex124
1308							if buffer[position] != rune('-') {
1309								goto l132
1310							}
1311							position++
1312							goto l124
1313						l132:
1314							position, tokenIndex = position124, tokenIndex124
1315							if buffer[position] != rune('*') {
1316								goto l133
1317							}
1318							position++
1319							goto l124
1320						l133:
1321							position, tokenIndex = position124, tokenIndex124
1322							if buffer[position] != rune('_') {
1323								goto l134
1324							}
1325							position++
1326							goto l124
1327						l134:
1328							position, tokenIndex = position124, tokenIndex124
1329							if buffer[position] != rune('@') {
1330								goto l135
1331							}
1332							position++
1333							goto l124
1334						l135:
1335							position, tokenIndex = position124, tokenIndex124
1336							if buffer[position] != rune('.') {
1337								goto l123
1338							}
1339							position++
1340						}
1341					l124:
1342						goto l122
1343					l123:
1344						position, tokenIndex = position123, tokenIndex123
1345					}
1346				}
1347			l120:
1348				add(ruleArg, position119)
1349			}
1350			return true
1351		},
1352		/* 10 QuotedArg <- <('"' QuotedText '"')> */
1353		func() bool {
1354			position136, tokenIndex136 := position, tokenIndex
1355			{
1356				position137 := position
1357				if buffer[position] != rune('"') {
1358					goto l136
1359				}
1360				position++
1361				if !_rules[ruleQuotedText]() {
1362					goto l136
1363				}
1364				if buffer[position] != rune('"') {
1365					goto l136
1366				}
1367				position++
1368				add(ruleQuotedArg, position137)
1369			}
1370			return true
1371		l136:
1372			position, tokenIndex = position136, tokenIndex136
1373			return false
1374		},
1375		/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
1376		func() bool {
1377			{
1378				position139 := position
1379			l140:
1380				{
1381					position141, tokenIndex141 := position, tokenIndex
1382					{
1383						position142, tokenIndex142 := position, tokenIndex
1384						if !_rules[ruleEscapedChar]() {
1385							goto l143
1386						}
1387						goto l142
1388					l143:
1389						position, tokenIndex = position142, tokenIndex142
1390						{
1391							position144, tokenIndex144 := position, tokenIndex
1392							if buffer[position] != rune('"') {
1393								goto l144
1394							}
1395							position++
1396							goto l141
1397						l144:
1398							position, tokenIndex = position144, tokenIndex144
1399						}
1400						if !matchDot() {
1401							goto l141
1402						}
1403					}
1404				l142:
1405					goto l140
1406				l141:
1407					position, tokenIndex = position141, tokenIndex141
1408				}
1409				add(ruleQuotedText, position139)
1410			}
1411			return true
1412		},
1413		/* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
1414		func() bool {
1415			position145, tokenIndex145 := position, tokenIndex
1416			{
1417				position146 := position
1418				if !_rules[ruleLabelContainingDirectiveName]() {
1419					goto l145
1420				}
1421				if !_rules[ruleWS]() {
1422					goto l145
1423				}
1424				if !_rules[ruleSymbolArgs]() {
1425					goto l145
1426				}
1427				add(ruleLabelContainingDirective, position146)
1428			}
1429			return true
1430		l145:
1431			position, tokenIndex = position145, tokenIndex145
1432			return false
1433		},
1434		/* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('h' / 'H') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
1435		func() bool {
1436			position147, tokenIndex147 := position, tokenIndex
1437			{
1438				position148 := position
1439				{
1440					position149, tokenIndex149 := position, tokenIndex
1441					if buffer[position] != rune('.') {
1442						goto l150
1443					}
1444					position++
1445					{
1446						position151, tokenIndex151 := position, tokenIndex
1447						if buffer[position] != rune('x') {
1448							goto l152
1449						}
1450						position++
1451						goto l151
1452					l152:
1453						position, tokenIndex = position151, tokenIndex151
1454						if buffer[position] != rune('X') {
1455							goto l150
1456						}
1457						position++
1458					}
1459				l151:
1460					{
1461						position153, tokenIndex153 := position, tokenIndex
1462						if buffer[position] != rune('w') {
1463							goto l154
1464						}
1465						position++
1466						goto l153
1467					l154:
1468						position, tokenIndex = position153, tokenIndex153
1469						if buffer[position] != rune('W') {
1470							goto l150
1471						}
1472						position++
1473					}
1474				l153:
1475					{
1476						position155, tokenIndex155 := position, tokenIndex
1477						if buffer[position] != rune('o') {
1478							goto l156
1479						}
1480						position++
1481						goto l155
1482					l156:
1483						position, tokenIndex = position155, tokenIndex155
1484						if buffer[position] != rune('O') {
1485							goto l150
1486						}
1487						position++
1488					}
1489				l155:
1490					{
1491						position157, tokenIndex157 := position, tokenIndex
1492						if buffer[position] != rune('r') {
1493							goto l158
1494						}
1495						position++
1496						goto l157
1497					l158:
1498						position, tokenIndex = position157, tokenIndex157
1499						if buffer[position] != rune('R') {
1500							goto l150
1501						}
1502						position++
1503					}
1504				l157:
1505					{
1506						position159, tokenIndex159 := position, tokenIndex
1507						if buffer[position] != rune('d') {
1508							goto l160
1509						}
1510						position++
1511						goto l159
1512					l160:
1513						position, tokenIndex = position159, tokenIndex159
1514						if buffer[position] != rune('D') {
1515							goto l150
1516						}
1517						position++
1518					}
1519				l159:
1520					goto l149
1521				l150:
1522					position, tokenIndex = position149, tokenIndex149
1523					if buffer[position] != rune('.') {
1524						goto l161
1525					}
1526					position++
1527					{
1528						position162, tokenIndex162 := position, tokenIndex
1529						if buffer[position] != rune('w') {
1530							goto l163
1531						}
1532						position++
1533						goto l162
1534					l163:
1535						position, tokenIndex = position162, tokenIndex162
1536						if buffer[position] != rune('W') {
1537							goto l161
1538						}
1539						position++
1540					}
1541				l162:
1542					{
1543						position164, tokenIndex164 := position, tokenIndex
1544						if buffer[position] != rune('o') {
1545							goto l165
1546						}
1547						position++
1548						goto l164
1549					l165:
1550						position, tokenIndex = position164, tokenIndex164
1551						if buffer[position] != rune('O') {
1552							goto l161
1553						}
1554						position++
1555					}
1556				l164:
1557					{
1558						position166, tokenIndex166 := position, tokenIndex
1559						if buffer[position] != rune('r') {
1560							goto l167
1561						}
1562						position++
1563						goto l166
1564					l167:
1565						position, tokenIndex = position166, tokenIndex166
1566						if buffer[position] != rune('R') {
1567							goto l161
1568						}
1569						position++
1570					}
1571				l166:
1572					{
1573						position168, tokenIndex168 := position, tokenIndex
1574						if buffer[position] != rune('d') {
1575							goto l169
1576						}
1577						position++
1578						goto l168
1579					l169:
1580						position, tokenIndex = position168, tokenIndex168
1581						if buffer[position] != rune('D') {
1582							goto l161
1583						}
1584						position++
1585					}
1586				l168:
1587					goto l149
1588				l161:
1589					position, tokenIndex = position149, tokenIndex149
1590					if buffer[position] != rune('.') {
1591						goto l170
1592					}
1593					position++
1594					{
1595						position171, tokenIndex171 := position, tokenIndex
1596						if buffer[position] != rune('h') {
1597							goto l172
1598						}
1599						position++
1600						goto l171
1601					l172:
1602						position, tokenIndex = position171, tokenIndex171
1603						if buffer[position] != rune('H') {
1604							goto l170
1605						}
1606						position++
1607					}
1608				l171:
1609					{
1610						position173, tokenIndex173 := position, tokenIndex
1611						if buffer[position] != rune('w') {
1612							goto l174
1613						}
1614						position++
1615						goto l173
1616					l174:
1617						position, tokenIndex = position173, tokenIndex173
1618						if buffer[position] != rune('W') {
1619							goto l170
1620						}
1621						position++
1622					}
1623				l173:
1624					{
1625						position175, tokenIndex175 := position, tokenIndex
1626						if buffer[position] != rune('o') {
1627							goto l176
1628						}
1629						position++
1630						goto l175
1631					l176:
1632						position, tokenIndex = position175, tokenIndex175
1633						if buffer[position] != rune('O') {
1634							goto l170
1635						}
1636						position++
1637					}
1638				l175:
1639					{
1640						position177, tokenIndex177 := position, tokenIndex
1641						if buffer[position] != rune('r') {
1642							goto l178
1643						}
1644						position++
1645						goto l177
1646					l178:
1647						position, tokenIndex = position177, tokenIndex177
1648						if buffer[position] != rune('R') {
1649							goto l170
1650						}
1651						position++
1652					}
1653				l177:
1654					{
1655						position179, tokenIndex179 := position, tokenIndex
1656						if buffer[position] != rune('d') {
1657							goto l180
1658						}
1659						position++
1660						goto l179
1661					l180:
1662						position, tokenIndex = position179, tokenIndex179
1663						if buffer[position] != rune('D') {
1664							goto l170
1665						}
1666						position++
1667					}
1668				l179:
1669					goto l149
1670				l170:
1671					position, tokenIndex = position149, tokenIndex149
1672					if buffer[position] != rune('.') {
1673						goto l181
1674					}
1675					position++
1676					{
1677						position182, tokenIndex182 := position, tokenIndex
1678						if buffer[position] != rune('l') {
1679							goto l183
1680						}
1681						position++
1682						goto l182
1683					l183:
1684						position, tokenIndex = position182, tokenIndex182
1685						if buffer[position] != rune('L') {
1686							goto l181
1687						}
1688						position++
1689					}
1690				l182:
1691					{
1692						position184, tokenIndex184 := position, tokenIndex
1693						if buffer[position] != rune('o') {
1694							goto l185
1695						}
1696						position++
1697						goto l184
1698					l185:
1699						position, tokenIndex = position184, tokenIndex184
1700						if buffer[position] != rune('O') {
1701							goto l181
1702						}
1703						position++
1704					}
1705				l184:
1706					{
1707						position186, tokenIndex186 := position, tokenIndex
1708						if buffer[position] != rune('n') {
1709							goto l187
1710						}
1711						position++
1712						goto l186
1713					l187:
1714						position, tokenIndex = position186, tokenIndex186
1715						if buffer[position] != rune('N') {
1716							goto l181
1717						}
1718						position++
1719					}
1720				l186:
1721					{
1722						position188, tokenIndex188 := position, tokenIndex
1723						if buffer[position] != rune('g') {
1724							goto l189
1725						}
1726						position++
1727						goto l188
1728					l189:
1729						position, tokenIndex = position188, tokenIndex188
1730						if buffer[position] != rune('G') {
1731							goto l181
1732						}
1733						position++
1734					}
1735				l188:
1736					goto l149
1737				l181:
1738					position, tokenIndex = position149, tokenIndex149
1739					if buffer[position] != rune('.') {
1740						goto l190
1741					}
1742					position++
1743					{
1744						position191, tokenIndex191 := position, tokenIndex
1745						if buffer[position] != rune('s') {
1746							goto l192
1747						}
1748						position++
1749						goto l191
1750					l192:
1751						position, tokenIndex = position191, tokenIndex191
1752						if buffer[position] != rune('S') {
1753							goto l190
1754						}
1755						position++
1756					}
1757				l191:
1758					{
1759						position193, tokenIndex193 := position, tokenIndex
1760						if buffer[position] != rune('e') {
1761							goto l194
1762						}
1763						position++
1764						goto l193
1765					l194:
1766						position, tokenIndex = position193, tokenIndex193
1767						if buffer[position] != rune('E') {
1768							goto l190
1769						}
1770						position++
1771					}
1772				l193:
1773					{
1774						position195, tokenIndex195 := position, tokenIndex
1775						if buffer[position] != rune('t') {
1776							goto l196
1777						}
1778						position++
1779						goto l195
1780					l196:
1781						position, tokenIndex = position195, tokenIndex195
1782						if buffer[position] != rune('T') {
1783							goto l190
1784						}
1785						position++
1786					}
1787				l195:
1788					goto l149
1789				l190:
1790					position, tokenIndex = position149, tokenIndex149
1791					if buffer[position] != rune('.') {
1792						goto l197
1793					}
1794					position++
1795					{
1796						position198, tokenIndex198 := position, tokenIndex
1797						if buffer[position] != rune('b') {
1798							goto l199
1799						}
1800						position++
1801						goto l198
1802					l199:
1803						position, tokenIndex = position198, tokenIndex198
1804						if buffer[position] != rune('B') {
1805							goto l197
1806						}
1807						position++
1808					}
1809				l198:
1810					{
1811						position200, tokenIndex200 := position, tokenIndex
1812						if buffer[position] != rune('y') {
1813							goto l201
1814						}
1815						position++
1816						goto l200
1817					l201:
1818						position, tokenIndex = position200, tokenIndex200
1819						if buffer[position] != rune('Y') {
1820							goto l197
1821						}
1822						position++
1823					}
1824				l200:
1825					{
1826						position202, tokenIndex202 := position, tokenIndex
1827						if buffer[position] != rune('t') {
1828							goto l203
1829						}
1830						position++
1831						goto l202
1832					l203:
1833						position, tokenIndex = position202, tokenIndex202
1834						if buffer[position] != rune('T') {
1835							goto l197
1836						}
1837						position++
1838					}
1839				l202:
1840					{
1841						position204, tokenIndex204 := position, tokenIndex
1842						if buffer[position] != rune('e') {
1843							goto l205
1844						}
1845						position++
1846						goto l204
1847					l205:
1848						position, tokenIndex = position204, tokenIndex204
1849						if buffer[position] != rune('E') {
1850							goto l197
1851						}
1852						position++
1853					}
1854				l204:
1855					goto l149
1856				l197:
1857					position, tokenIndex = position149, tokenIndex149
1858					if buffer[position] != rune('.') {
1859						goto l206
1860					}
1861					position++
1862					if buffer[position] != rune('8') {
1863						goto l206
1864					}
1865					position++
1866					{
1867						position207, tokenIndex207 := position, tokenIndex
1868						if buffer[position] != rune('b') {
1869							goto l208
1870						}
1871						position++
1872						goto l207
1873					l208:
1874						position, tokenIndex = position207, tokenIndex207
1875						if buffer[position] != rune('B') {
1876							goto l206
1877						}
1878						position++
1879					}
1880				l207:
1881					{
1882						position209, tokenIndex209 := position, tokenIndex
1883						if buffer[position] != rune('y') {
1884							goto l210
1885						}
1886						position++
1887						goto l209
1888					l210:
1889						position, tokenIndex = position209, tokenIndex209
1890						if buffer[position] != rune('Y') {
1891							goto l206
1892						}
1893						position++
1894					}
1895				l209:
1896					{
1897						position211, tokenIndex211 := position, tokenIndex
1898						if buffer[position] != rune('t') {
1899							goto l212
1900						}
1901						position++
1902						goto l211
1903					l212:
1904						position, tokenIndex = position211, tokenIndex211
1905						if buffer[position] != rune('T') {
1906							goto l206
1907						}
1908						position++
1909					}
1910				l211:
1911					{
1912						position213, tokenIndex213 := position, tokenIndex
1913						if buffer[position] != rune('e') {
1914							goto l214
1915						}
1916						position++
1917						goto l213
1918					l214:
1919						position, tokenIndex = position213, tokenIndex213
1920						if buffer[position] != rune('E') {
1921							goto l206
1922						}
1923						position++
1924					}
1925				l213:
1926					goto l149
1927				l206:
1928					position, tokenIndex = position149, tokenIndex149
1929					if buffer[position] != rune('.') {
1930						goto l215
1931					}
1932					position++
1933					if buffer[position] != rune('4') {
1934						goto l215
1935					}
1936					position++
1937					{
1938						position216, tokenIndex216 := position, tokenIndex
1939						if buffer[position] != rune('b') {
1940							goto l217
1941						}
1942						position++
1943						goto l216
1944					l217:
1945						position, tokenIndex = position216, tokenIndex216
1946						if buffer[position] != rune('B') {
1947							goto l215
1948						}
1949						position++
1950					}
1951				l216:
1952					{
1953						position218, tokenIndex218 := position, tokenIndex
1954						if buffer[position] != rune('y') {
1955							goto l219
1956						}
1957						position++
1958						goto l218
1959					l219:
1960						position, tokenIndex = position218, tokenIndex218
1961						if buffer[position] != rune('Y') {
1962							goto l215
1963						}
1964						position++
1965					}
1966				l218:
1967					{
1968						position220, tokenIndex220 := position, tokenIndex
1969						if buffer[position] != rune('t') {
1970							goto l221
1971						}
1972						position++
1973						goto l220
1974					l221:
1975						position, tokenIndex = position220, tokenIndex220
1976						if buffer[position] != rune('T') {
1977							goto l215
1978						}
1979						position++
1980					}
1981				l220:
1982					{
1983						position222, tokenIndex222 := position, tokenIndex
1984						if buffer[position] != rune('e') {
1985							goto l223
1986						}
1987						position++
1988						goto l222
1989					l223:
1990						position, tokenIndex = position222, tokenIndex222
1991						if buffer[position] != rune('E') {
1992							goto l215
1993						}
1994						position++
1995					}
1996				l222:
1997					goto l149
1998				l215:
1999					position, tokenIndex = position149, tokenIndex149
2000					if buffer[position] != rune('.') {
2001						goto l224
2002					}
2003					position++
2004					{
2005						position225, tokenIndex225 := position, tokenIndex
2006						if buffer[position] != rune('q') {
2007							goto l226
2008						}
2009						position++
2010						goto l225
2011					l226:
2012						position, tokenIndex = position225, tokenIndex225
2013						if buffer[position] != rune('Q') {
2014							goto l224
2015						}
2016						position++
2017					}
2018				l225:
2019					{
2020						position227, tokenIndex227 := position, tokenIndex
2021						if buffer[position] != rune('u') {
2022							goto l228
2023						}
2024						position++
2025						goto l227
2026					l228:
2027						position, tokenIndex = position227, tokenIndex227
2028						if buffer[position] != rune('U') {
2029							goto l224
2030						}
2031						position++
2032					}
2033				l227:
2034					{
2035						position229, tokenIndex229 := position, tokenIndex
2036						if buffer[position] != rune('a') {
2037							goto l230
2038						}
2039						position++
2040						goto l229
2041					l230:
2042						position, tokenIndex = position229, tokenIndex229
2043						if buffer[position] != rune('A') {
2044							goto l224
2045						}
2046						position++
2047					}
2048				l229:
2049					{
2050						position231, tokenIndex231 := position, tokenIndex
2051						if buffer[position] != rune('d') {
2052							goto l232
2053						}
2054						position++
2055						goto l231
2056					l232:
2057						position, tokenIndex = position231, tokenIndex231
2058						if buffer[position] != rune('D') {
2059							goto l224
2060						}
2061						position++
2062					}
2063				l231:
2064					goto l149
2065				l224:
2066					position, tokenIndex = position149, tokenIndex149
2067					if buffer[position] != rune('.') {
2068						goto l233
2069					}
2070					position++
2071					{
2072						position234, tokenIndex234 := position, tokenIndex
2073						if buffer[position] != rune('t') {
2074							goto l235
2075						}
2076						position++
2077						goto l234
2078					l235:
2079						position, tokenIndex = position234, tokenIndex234
2080						if buffer[position] != rune('T') {
2081							goto l233
2082						}
2083						position++
2084					}
2085				l234:
2086					{
2087						position236, tokenIndex236 := position, tokenIndex
2088						if buffer[position] != rune('c') {
2089							goto l237
2090						}
2091						position++
2092						goto l236
2093					l237:
2094						position, tokenIndex = position236, tokenIndex236
2095						if buffer[position] != rune('C') {
2096							goto l233
2097						}
2098						position++
2099					}
2100				l236:
2101					goto l149
2102				l233:
2103					position, tokenIndex = position149, tokenIndex149
2104					if buffer[position] != rune('.') {
2105						goto l238
2106					}
2107					position++
2108					{
2109						position239, tokenIndex239 := position, tokenIndex
2110						if buffer[position] != rune('l') {
2111							goto l240
2112						}
2113						position++
2114						goto l239
2115					l240:
2116						position, tokenIndex = position239, tokenIndex239
2117						if buffer[position] != rune('L') {
2118							goto l238
2119						}
2120						position++
2121					}
2122				l239:
2123					{
2124						position241, tokenIndex241 := position, tokenIndex
2125						if buffer[position] != rune('o') {
2126							goto l242
2127						}
2128						position++
2129						goto l241
2130					l242:
2131						position, tokenIndex = position241, tokenIndex241
2132						if buffer[position] != rune('O') {
2133							goto l238
2134						}
2135						position++
2136					}
2137				l241:
2138					{
2139						position243, tokenIndex243 := position, tokenIndex
2140						if buffer[position] != rune('c') {
2141							goto l244
2142						}
2143						position++
2144						goto l243
2145					l244:
2146						position, tokenIndex = position243, tokenIndex243
2147						if buffer[position] != rune('C') {
2148							goto l238
2149						}
2150						position++
2151					}
2152				l243:
2153					{
2154						position245, tokenIndex245 := position, tokenIndex
2155						if buffer[position] != rune('a') {
2156							goto l246
2157						}
2158						position++
2159						goto l245
2160					l246:
2161						position, tokenIndex = position245, tokenIndex245
2162						if buffer[position] != rune('A') {
2163							goto l238
2164						}
2165						position++
2166					}
2167				l245:
2168					{
2169						position247, tokenIndex247 := position, tokenIndex
2170						if buffer[position] != rune('l') {
2171							goto l248
2172						}
2173						position++
2174						goto l247
2175					l248:
2176						position, tokenIndex = position247, tokenIndex247
2177						if buffer[position] != rune('L') {
2178							goto l238
2179						}
2180						position++
2181					}
2182				l247:
2183					{
2184						position249, tokenIndex249 := position, tokenIndex
2185						if buffer[position] != rune('e') {
2186							goto l250
2187						}
2188						position++
2189						goto l249
2190					l250:
2191						position, tokenIndex = position249, tokenIndex249
2192						if buffer[position] != rune('E') {
2193							goto l238
2194						}
2195						position++
2196					}
2197				l249:
2198					{
2199						position251, tokenIndex251 := position, tokenIndex
2200						if buffer[position] != rune('n') {
2201							goto l252
2202						}
2203						position++
2204						goto l251
2205					l252:
2206						position, tokenIndex = position251, tokenIndex251
2207						if buffer[position] != rune('N') {
2208							goto l238
2209						}
2210						position++
2211					}
2212				l251:
2213					{
2214						position253, tokenIndex253 := position, tokenIndex
2215						if buffer[position] != rune('t') {
2216							goto l254
2217						}
2218						position++
2219						goto l253
2220					l254:
2221						position, tokenIndex = position253, tokenIndex253
2222						if buffer[position] != rune('T') {
2223							goto l238
2224						}
2225						position++
2226					}
2227				l253:
2228					{
2229						position255, tokenIndex255 := position, tokenIndex
2230						if buffer[position] != rune('r') {
2231							goto l256
2232						}
2233						position++
2234						goto l255
2235					l256:
2236						position, tokenIndex = position255, tokenIndex255
2237						if buffer[position] != rune('R') {
2238							goto l238
2239						}
2240						position++
2241					}
2242				l255:
2243					{
2244						position257, tokenIndex257 := position, tokenIndex
2245						if buffer[position] != rune('y') {
2246							goto l258
2247						}
2248						position++
2249						goto l257
2250					l258:
2251						position, tokenIndex = position257, tokenIndex257
2252						if buffer[position] != rune('Y') {
2253							goto l238
2254						}
2255						position++
2256					}
2257				l257:
2258					goto l149
2259				l238:
2260					position, tokenIndex = position149, tokenIndex149
2261					if buffer[position] != rune('.') {
2262						goto l259
2263					}
2264					position++
2265					{
2266						position260, tokenIndex260 := position, tokenIndex
2267						if buffer[position] != rune('s') {
2268							goto l261
2269						}
2270						position++
2271						goto l260
2272					l261:
2273						position, tokenIndex = position260, tokenIndex260
2274						if buffer[position] != rune('S') {
2275							goto l259
2276						}
2277						position++
2278					}
2279				l260:
2280					{
2281						position262, tokenIndex262 := position, tokenIndex
2282						if buffer[position] != rune('i') {
2283							goto l263
2284						}
2285						position++
2286						goto l262
2287					l263:
2288						position, tokenIndex = position262, tokenIndex262
2289						if buffer[position] != rune('I') {
2290							goto l259
2291						}
2292						position++
2293					}
2294				l262:
2295					{
2296						position264, tokenIndex264 := position, tokenIndex
2297						if buffer[position] != rune('z') {
2298							goto l265
2299						}
2300						position++
2301						goto l264
2302					l265:
2303						position, tokenIndex = position264, tokenIndex264
2304						if buffer[position] != rune('Z') {
2305							goto l259
2306						}
2307						position++
2308					}
2309				l264:
2310					{
2311						position266, tokenIndex266 := position, tokenIndex
2312						if buffer[position] != rune('e') {
2313							goto l267
2314						}
2315						position++
2316						goto l266
2317					l267:
2318						position, tokenIndex = position266, tokenIndex266
2319						if buffer[position] != rune('E') {
2320							goto l259
2321						}
2322						position++
2323					}
2324				l266:
2325					goto l149
2326				l259:
2327					position, tokenIndex = position149, tokenIndex149
2328					if buffer[position] != rune('.') {
2329						goto l268
2330					}
2331					position++
2332					{
2333						position269, tokenIndex269 := position, tokenIndex
2334						if buffer[position] != rune('t') {
2335							goto l270
2336						}
2337						position++
2338						goto l269
2339					l270:
2340						position, tokenIndex = position269, tokenIndex269
2341						if buffer[position] != rune('T') {
2342							goto l268
2343						}
2344						position++
2345					}
2346				l269:
2347					{
2348						position271, tokenIndex271 := position, tokenIndex
2349						if buffer[position] != rune('y') {
2350							goto l272
2351						}
2352						position++
2353						goto l271
2354					l272:
2355						position, tokenIndex = position271, tokenIndex271
2356						if buffer[position] != rune('Y') {
2357							goto l268
2358						}
2359						position++
2360					}
2361				l271:
2362					{
2363						position273, tokenIndex273 := position, tokenIndex
2364						if buffer[position] != rune('p') {
2365							goto l274
2366						}
2367						position++
2368						goto l273
2369					l274:
2370						position, tokenIndex = position273, tokenIndex273
2371						if buffer[position] != rune('P') {
2372							goto l268
2373						}
2374						position++
2375					}
2376				l273:
2377					{
2378						position275, tokenIndex275 := position, tokenIndex
2379						if buffer[position] != rune('e') {
2380							goto l276
2381						}
2382						position++
2383						goto l275
2384					l276:
2385						position, tokenIndex = position275, tokenIndex275
2386						if buffer[position] != rune('E') {
2387							goto l268
2388						}
2389						position++
2390					}
2391				l275:
2392					goto l149
2393				l268:
2394					position, tokenIndex = position149, tokenIndex149
2395					if buffer[position] != rune('.') {
2396						goto l277
2397					}
2398					position++
2399					{
2400						position278, tokenIndex278 := position, tokenIndex
2401						if buffer[position] != rune('u') {
2402							goto l279
2403						}
2404						position++
2405						goto l278
2406					l279:
2407						position, tokenIndex = position278, tokenIndex278
2408						if buffer[position] != rune('U') {
2409							goto l277
2410						}
2411						position++
2412					}
2413				l278:
2414					{
2415						position280, tokenIndex280 := position, tokenIndex
2416						if buffer[position] != rune('l') {
2417							goto l281
2418						}
2419						position++
2420						goto l280
2421					l281:
2422						position, tokenIndex = position280, tokenIndex280
2423						if buffer[position] != rune('L') {
2424							goto l277
2425						}
2426						position++
2427					}
2428				l280:
2429					{
2430						position282, tokenIndex282 := position, tokenIndex
2431						if buffer[position] != rune('e') {
2432							goto l283
2433						}
2434						position++
2435						goto l282
2436					l283:
2437						position, tokenIndex = position282, tokenIndex282
2438						if buffer[position] != rune('E') {
2439							goto l277
2440						}
2441						position++
2442					}
2443				l282:
2444					{
2445						position284, tokenIndex284 := position, tokenIndex
2446						if buffer[position] != rune('b') {
2447							goto l285
2448						}
2449						position++
2450						goto l284
2451					l285:
2452						position, tokenIndex = position284, tokenIndex284
2453						if buffer[position] != rune('B') {
2454							goto l277
2455						}
2456						position++
2457					}
2458				l284:
2459					if buffer[position] != rune('1') {
2460						goto l277
2461					}
2462					position++
2463					if buffer[position] != rune('2') {
2464						goto l277
2465					}
2466					position++
2467					if buffer[position] != rune('8') {
2468						goto l277
2469					}
2470					position++
2471					goto l149
2472				l277:
2473					position, tokenIndex = position149, tokenIndex149
2474					if buffer[position] != rune('.') {
2475						goto l147
2476					}
2477					position++
2478					{
2479						position286, tokenIndex286 := position, tokenIndex
2480						if buffer[position] != rune('s') {
2481							goto l287
2482						}
2483						position++
2484						goto l286
2485					l287:
2486						position, tokenIndex = position286, tokenIndex286
2487						if buffer[position] != rune('S') {
2488							goto l147
2489						}
2490						position++
2491					}
2492				l286:
2493					{
2494						position288, tokenIndex288 := position, tokenIndex
2495						if buffer[position] != rune('l') {
2496							goto l289
2497						}
2498						position++
2499						goto l288
2500					l289:
2501						position, tokenIndex = position288, tokenIndex288
2502						if buffer[position] != rune('L') {
2503							goto l147
2504						}
2505						position++
2506					}
2507				l288:
2508					{
2509						position290, tokenIndex290 := position, tokenIndex
2510						if buffer[position] != rune('e') {
2511							goto l291
2512						}
2513						position++
2514						goto l290
2515					l291:
2516						position, tokenIndex = position290, tokenIndex290
2517						if buffer[position] != rune('E') {
2518							goto l147
2519						}
2520						position++
2521					}
2522				l290:
2523					{
2524						position292, tokenIndex292 := position, tokenIndex
2525						if buffer[position] != rune('b') {
2526							goto l293
2527						}
2528						position++
2529						goto l292
2530					l293:
2531						position, tokenIndex = position292, tokenIndex292
2532						if buffer[position] != rune('B') {
2533							goto l147
2534						}
2535						position++
2536					}
2537				l292:
2538					if buffer[position] != rune('1') {
2539						goto l147
2540					}
2541					position++
2542					if buffer[position] != rune('2') {
2543						goto l147
2544					}
2545					position++
2546					if buffer[position] != rune('8') {
2547						goto l147
2548					}
2549					position++
2550				}
2551			l149:
2552				add(ruleLabelContainingDirectiveName, position148)
2553			}
2554			return true
2555		l147:
2556			position, tokenIndex = position147, tokenIndex147
2557			return false
2558		},
2559		/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
2560		func() bool {
2561			position294, tokenIndex294 := position, tokenIndex
2562			{
2563				position295 := position
2564				if !_rules[ruleSymbolArg]() {
2565					goto l294
2566				}
2567			l296:
2568				{
2569					position297, tokenIndex297 := position, tokenIndex
2570					{
2571						position298, tokenIndex298 := position, tokenIndex
2572						if !_rules[ruleWS]() {
2573							goto l298
2574						}
2575						goto l299
2576					l298:
2577						position, tokenIndex = position298, tokenIndex298
2578					}
2579				l299:
2580					if buffer[position] != rune(',') {
2581						goto l297
2582					}
2583					position++
2584					{
2585						position300, tokenIndex300 := position, tokenIndex
2586						if !_rules[ruleWS]() {
2587							goto l300
2588						}
2589						goto l301
2590					l300:
2591						position, tokenIndex = position300, tokenIndex300
2592					}
2593				l301:
2594					if !_rules[ruleSymbolArg]() {
2595						goto l297
2596					}
2597					goto l296
2598				l297:
2599					position, tokenIndex = position297, tokenIndex297
2600				}
2601				add(ruleSymbolArgs, position295)
2602			}
2603			return true
2604		l294:
2605			position, tokenIndex = position294, tokenIndex294
2606			return false
2607		},
2608		/* 15 SymbolArg <- <SymbolExpr> */
2609		func() bool {
2610			position302, tokenIndex302 := position, tokenIndex
2611			{
2612				position303 := position
2613				if !_rules[ruleSymbolExpr]() {
2614					goto l302
2615				}
2616				add(ruleSymbolArg, position303)
2617			}
2618			return true
2619		l302:
2620			position, tokenIndex = position302, tokenIndex302
2621			return false
2622		},
2623		/* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
2624		func() bool {
2625			position304, tokenIndex304 := position, tokenIndex
2626			{
2627				position305 := position
2628				if !_rules[ruleSymbolAtom]() {
2629					goto l304
2630				}
2631				{
2632					position306, tokenIndex306 := position, tokenIndex
2633					{
2634						position308, tokenIndex308 := position, tokenIndex
2635						if !_rules[ruleWS]() {
2636							goto l308
2637						}
2638						goto l309
2639					l308:
2640						position, tokenIndex = position308, tokenIndex308
2641					}
2642				l309:
2643					if !_rules[ruleSymbolOperator]() {
2644						goto l306
2645					}
2646					{
2647						position310, tokenIndex310 := position, tokenIndex
2648						if !_rules[ruleWS]() {
2649							goto l310
2650						}
2651						goto l311
2652					l310:
2653						position, tokenIndex = position310, tokenIndex310
2654					}
2655				l311:
2656					if !_rules[ruleSymbolExpr]() {
2657						goto l306
2658					}
2659					goto l307
2660				l306:
2661					position, tokenIndex = position306, tokenIndex306
2662				}
2663			l307:
2664				add(ruleSymbolExpr, position305)
2665			}
2666			return true
2667		l304:
2668			position, tokenIndex = position304, tokenIndex304
2669			return false
2670		},
2671		/* 17 SymbolAtom <- <(Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
2672		func() bool {
2673			position312, tokenIndex312 := position, tokenIndex
2674			{
2675				position313 := position
2676				{
2677					position314, tokenIndex314 := position, tokenIndex
2678					if !_rules[ruleOffset]() {
2679						goto l315
2680					}
2681					goto l314
2682				l315:
2683					position, tokenIndex = position314, tokenIndex314
2684					if !_rules[ruleSymbolType]() {
2685						goto l316
2686					}
2687					goto l314
2688				l316:
2689					position, tokenIndex = position314, tokenIndex314
2690					if !_rules[ruleLocalSymbol]() {
2691						goto l317
2692					}
2693					{
2694						position318, tokenIndex318 := position, tokenIndex
2695						if !_rules[ruleTCMarker]() {
2696							goto l318
2697						}
2698						goto l319
2699					l318:
2700						position, tokenIndex = position318, tokenIndex318
2701					}
2702				l319:
2703					goto l314
2704				l317:
2705					position, tokenIndex = position314, tokenIndex314
2706					if !_rules[ruleSymbolName]() {
2707						goto l320
2708					}
2709					if !_rules[ruleOffset]() {
2710						goto l320
2711					}
2712					goto l314
2713				l320:
2714					position, tokenIndex = position314, tokenIndex314
2715					if !_rules[ruleSymbolName]() {
2716						goto l321
2717					}
2718					{
2719						position322, tokenIndex322 := position, tokenIndex
2720						if !_rules[ruleTCMarker]() {
2721							goto l322
2722						}
2723						goto l323
2724					l322:
2725						position, tokenIndex = position322, tokenIndex322
2726					}
2727				l323:
2728					goto l314
2729				l321:
2730					position, tokenIndex = position314, tokenIndex314
2731					if !_rules[ruleDot]() {
2732						goto l324
2733					}
2734					goto l314
2735				l324:
2736					position, tokenIndex = position314, tokenIndex314
2737					if !_rules[ruleOpenParen]() {
2738						goto l312
2739					}
2740					{
2741						position325, tokenIndex325 := position, tokenIndex
2742						if !_rules[ruleWS]() {
2743							goto l325
2744						}
2745						goto l326
2746					l325:
2747						position, tokenIndex = position325, tokenIndex325
2748					}
2749				l326:
2750					if !_rules[ruleSymbolExpr]() {
2751						goto l312
2752					}
2753					{
2754						position327, tokenIndex327 := position, tokenIndex
2755						if !_rules[ruleWS]() {
2756							goto l327
2757						}
2758						goto l328
2759					l327:
2760						position, tokenIndex = position327, tokenIndex327
2761					}
2762				l328:
2763					if !_rules[ruleCloseParen]() {
2764						goto l312
2765					}
2766				}
2767			l314:
2768				add(ruleSymbolAtom, position313)
2769			}
2770			return true
2771		l312:
2772			position, tokenIndex = position312, tokenIndex312
2773			return false
2774		},
2775		/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
2776		func() bool {
2777			position329, tokenIndex329 := position, tokenIndex
2778			{
2779				position330 := position
2780				{
2781					position331, tokenIndex331 := position, tokenIndex
2782					if buffer[position] != rune('+') {
2783						goto l332
2784					}
2785					position++
2786					goto l331
2787				l332:
2788					position, tokenIndex = position331, tokenIndex331
2789					if buffer[position] != rune('-') {
2790						goto l333
2791					}
2792					position++
2793					goto l331
2794				l333:
2795					position, tokenIndex = position331, tokenIndex331
2796					if buffer[position] != rune('|') {
2797						goto l334
2798					}
2799					position++
2800					goto l331
2801				l334:
2802					position, tokenIndex = position331, tokenIndex331
2803					if buffer[position] != rune('<') {
2804						goto l335
2805					}
2806					position++
2807					if buffer[position] != rune('<') {
2808						goto l335
2809					}
2810					position++
2811					goto l331
2812				l335:
2813					position, tokenIndex = position331, tokenIndex331
2814					if buffer[position] != rune('>') {
2815						goto l329
2816					}
2817					position++
2818					if buffer[position] != rune('>') {
2819						goto l329
2820					}
2821					position++
2822				}
2823			l331:
2824				add(ruleSymbolOperator, position330)
2825			}
2826			return true
2827		l329:
2828			position, tokenIndex = position329, tokenIndex329
2829			return false
2830		},
2831		/* 19 OpenParen <- <'('> */
2832		func() bool {
2833			position336, tokenIndex336 := position, tokenIndex
2834			{
2835				position337 := position
2836				if buffer[position] != rune('(') {
2837					goto l336
2838				}
2839				position++
2840				add(ruleOpenParen, position337)
2841			}
2842			return true
2843		l336:
2844			position, tokenIndex = position336, tokenIndex336
2845			return false
2846		},
2847		/* 20 CloseParen <- <')'> */
2848		func() bool {
2849			position338, tokenIndex338 := position, tokenIndex
2850			{
2851				position339 := position
2852				if buffer[position] != rune(')') {
2853					goto l338
2854				}
2855				position++
2856				add(ruleCloseParen, position339)
2857			}
2858			return true
2859		l338:
2860			position, tokenIndex = position338, tokenIndex338
2861			return false
2862		},
2863		/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
2864		func() bool {
2865			position340, tokenIndex340 := position, tokenIndex
2866			{
2867				position341 := position
2868				{
2869					position342, tokenIndex342 := position, tokenIndex
2870					if buffer[position] != rune('@') {
2871						goto l343
2872					}
2873					position++
2874					goto l342
2875				l343:
2876					position, tokenIndex = position342, tokenIndex342
2877					if buffer[position] != rune('%') {
2878						goto l340
2879					}
2880					position++
2881				}
2882			l342:
2883				{
2884					position344, tokenIndex344 := position, tokenIndex
2885					if buffer[position] != rune('f') {
2886						goto l345
2887					}
2888					position++
2889					if buffer[position] != rune('u') {
2890						goto l345
2891					}
2892					position++
2893					if buffer[position] != rune('n') {
2894						goto l345
2895					}
2896					position++
2897					if buffer[position] != rune('c') {
2898						goto l345
2899					}
2900					position++
2901					if buffer[position] != rune('t') {
2902						goto l345
2903					}
2904					position++
2905					if buffer[position] != rune('i') {
2906						goto l345
2907					}
2908					position++
2909					if buffer[position] != rune('o') {
2910						goto l345
2911					}
2912					position++
2913					if buffer[position] != rune('n') {
2914						goto l345
2915					}
2916					position++
2917					goto l344
2918				l345:
2919					position, tokenIndex = position344, tokenIndex344
2920					if buffer[position] != rune('o') {
2921						goto l340
2922					}
2923					position++
2924					if buffer[position] != rune('b') {
2925						goto l340
2926					}
2927					position++
2928					if buffer[position] != rune('j') {
2929						goto l340
2930					}
2931					position++
2932					if buffer[position] != rune('e') {
2933						goto l340
2934					}
2935					position++
2936					if buffer[position] != rune('c') {
2937						goto l340
2938					}
2939					position++
2940					if buffer[position] != rune('t') {
2941						goto l340
2942					}
2943					position++
2944				}
2945			l344:
2946				add(ruleSymbolType, position341)
2947			}
2948			return true
2949		l340:
2950			position, tokenIndex = position340, tokenIndex340
2951			return false
2952		},
2953		/* 22 Dot <- <'.'> */
2954		func() bool {
2955			position346, tokenIndex346 := position, tokenIndex
2956			{
2957				position347 := position
2958				if buffer[position] != rune('.') {
2959					goto l346
2960				}
2961				position++
2962				add(ruleDot, position347)
2963			}
2964			return true
2965		l346:
2966			position, tokenIndex = position346, tokenIndex346
2967			return false
2968		},
2969		/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
2970		func() bool {
2971			position348, tokenIndex348 := position, tokenIndex
2972			{
2973				position349 := position
2974				if buffer[position] != rune('[') {
2975					goto l348
2976				}
2977				position++
2978				if buffer[position] != rune('T') {
2979					goto l348
2980				}
2981				position++
2982				if buffer[position] != rune('C') {
2983					goto l348
2984				}
2985				position++
2986				if buffer[position] != rune(']') {
2987					goto l348
2988				}
2989				position++
2990				add(ruleTCMarker, position349)
2991			}
2992			return true
2993		l348:
2994			position, tokenIndex = position348, tokenIndex348
2995			return false
2996		},
2997		/* 24 EscapedChar <- <('\\' .)> */
2998		func() bool {
2999			position350, tokenIndex350 := position, tokenIndex
3000			{
3001				position351 := position
3002				if buffer[position] != rune('\\') {
3003					goto l350
3004				}
3005				position++
3006				if !matchDot() {
3007					goto l350
3008				}
3009				add(ruleEscapedChar, position351)
3010			}
3011			return true
3012		l350:
3013			position, tokenIndex = position350, tokenIndex350
3014			return false
3015		},
3016		/* 25 WS <- <(' ' / '\t')+> */
3017		func() bool {
3018			position352, tokenIndex352 := position, tokenIndex
3019			{
3020				position353 := position
3021				{
3022					position356, tokenIndex356 := position, tokenIndex
3023					if buffer[position] != rune(' ') {
3024						goto l357
3025					}
3026					position++
3027					goto l356
3028				l357:
3029					position, tokenIndex = position356, tokenIndex356
3030					if buffer[position] != rune('\t') {
3031						goto l352
3032					}
3033					position++
3034				}
3035			l356:
3036			l354:
3037				{
3038					position355, tokenIndex355 := position, tokenIndex
3039					{
3040						position358, tokenIndex358 := position, tokenIndex
3041						if buffer[position] != rune(' ') {
3042							goto l359
3043						}
3044						position++
3045						goto l358
3046					l359:
3047						position, tokenIndex = position358, tokenIndex358
3048						if buffer[position] != rune('\t') {
3049							goto l355
3050						}
3051						position++
3052					}
3053				l358:
3054					goto l354
3055				l355:
3056					position, tokenIndex = position355, tokenIndex355
3057				}
3058				add(ruleWS, position353)
3059			}
3060			return true
3061		l352:
3062			position, tokenIndex = position352, tokenIndex352
3063			return false
3064		},
3065		/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
3066		func() bool {
3067			position360, tokenIndex360 := position, tokenIndex
3068			{
3069				position361 := position
3070				{
3071					position362, tokenIndex362 := position, tokenIndex
3072					if buffer[position] != rune('/') {
3073						goto l363
3074					}
3075					position++
3076					if buffer[position] != rune('/') {
3077						goto l363
3078					}
3079					position++
3080					goto l362
3081				l363:
3082					position, tokenIndex = position362, tokenIndex362
3083					if buffer[position] != rune('#') {
3084						goto l360
3085					}
3086					position++
3087				}
3088			l362:
3089			l364:
3090				{
3091					position365, tokenIndex365 := position, tokenIndex
3092					{
3093						position366, tokenIndex366 := position, tokenIndex
3094						if buffer[position] != rune('\n') {
3095							goto l366
3096						}
3097						position++
3098						goto l365
3099					l366:
3100						position, tokenIndex = position366, tokenIndex366
3101					}
3102					if !matchDot() {
3103						goto l365
3104					}
3105					goto l364
3106				l365:
3107					position, tokenIndex = position365, tokenIndex365
3108				}
3109				add(ruleComment, position361)
3110			}
3111			return true
3112		l360:
3113			position, tokenIndex = position360, tokenIndex360
3114			return false
3115		},
3116		/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
3117		func() bool {
3118			position367, tokenIndex367 := position, tokenIndex
3119			{
3120				position368 := position
3121				{
3122					position369, tokenIndex369 := position, tokenIndex
3123					if !_rules[ruleLocalSymbol]() {
3124						goto l370
3125					}
3126					goto l369
3127				l370:
3128					position, tokenIndex = position369, tokenIndex369
3129					if !_rules[ruleLocalLabel]() {
3130						goto l371
3131					}
3132					goto l369
3133				l371:
3134					position, tokenIndex = position369, tokenIndex369
3135					if !_rules[ruleSymbolName]() {
3136						goto l367
3137					}
3138				}
3139			l369:
3140				if buffer[position] != rune(':') {
3141					goto l367
3142				}
3143				position++
3144				add(ruleLabel, position368)
3145			}
3146			return true
3147		l367:
3148			position, tokenIndex = position367, tokenIndex367
3149			return false
3150		},
3151		/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
3152		func() bool {
3153			position372, tokenIndex372 := position, tokenIndex
3154			{
3155				position373 := position
3156				{
3157					position374, tokenIndex374 := position, tokenIndex
3158					if c := buffer[position]; c < rune('a') || c > rune('z') {
3159						goto l375
3160					}
3161					position++
3162					goto l374
3163				l375:
3164					position, tokenIndex = position374, tokenIndex374
3165					if c := buffer[position]; c < rune('A') || c > rune('Z') {
3166						goto l376
3167					}
3168					position++
3169					goto l374
3170				l376:
3171					position, tokenIndex = position374, tokenIndex374
3172					if buffer[position] != rune('.') {
3173						goto l377
3174					}
3175					position++
3176					goto l374
3177				l377:
3178					position, tokenIndex = position374, tokenIndex374
3179					if buffer[position] != rune('_') {
3180						goto l372
3181					}
3182					position++
3183				}
3184			l374:
3185			l378:
3186				{
3187					position379, tokenIndex379 := position, tokenIndex
3188					{
3189						position380, tokenIndex380 := position, tokenIndex
3190						if c := buffer[position]; c < rune('a') || c > rune('z') {
3191							goto l381
3192						}
3193						position++
3194						goto l380
3195					l381:
3196						position, tokenIndex = position380, tokenIndex380
3197						if c := buffer[position]; c < rune('A') || c > rune('Z') {
3198							goto l382
3199						}
3200						position++
3201						goto l380
3202					l382:
3203						position, tokenIndex = position380, tokenIndex380
3204						if buffer[position] != rune('.') {
3205							goto l383
3206						}
3207						position++
3208						goto l380
3209					l383:
3210						position, tokenIndex = position380, tokenIndex380
3211						{
3212							position385, tokenIndex385 := position, tokenIndex
3213							if c := buffer[position]; c < rune('0') || c > rune('9') {
3214								goto l386
3215							}
3216							position++
3217							goto l385
3218						l386:
3219							position, tokenIndex = position385, tokenIndex385
3220							if c := buffer[position]; c < rune('0') || c > rune('9') {
3221								goto l384
3222							}
3223							position++
3224						}
3225					l385:
3226						goto l380
3227					l384:
3228						position, tokenIndex = position380, tokenIndex380
3229						if buffer[position] != rune('$') {
3230							goto l387
3231						}
3232						position++
3233						goto l380
3234					l387:
3235						position, tokenIndex = position380, tokenIndex380
3236						if buffer[position] != rune('_') {
3237							goto l379
3238						}
3239						position++
3240					}
3241				l380:
3242					goto l378
3243				l379:
3244					position, tokenIndex = position379, tokenIndex379
3245				}
3246				add(ruleSymbolName, position373)
3247			}
3248			return true
3249		l372:
3250			position, tokenIndex = position372, tokenIndex372
3251			return false
3252		},
3253		/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
3254		func() bool {
3255			position388, tokenIndex388 := position, tokenIndex
3256			{
3257				position389 := position
3258				if buffer[position] != rune('.') {
3259					goto l388
3260				}
3261				position++
3262				if buffer[position] != rune('L') {
3263					goto l388
3264				}
3265				position++
3266				{
3267					position392, tokenIndex392 := position, tokenIndex
3268					if c := buffer[position]; c < rune('a') || c > rune('z') {
3269						goto l393
3270					}
3271					position++
3272					goto l392
3273				l393:
3274					position, tokenIndex = position392, tokenIndex392
3275					if c := buffer[position]; c < rune('A') || c > rune('Z') {
3276						goto l394
3277					}
3278					position++
3279					goto l392
3280				l394:
3281					position, tokenIndex = position392, tokenIndex392
3282					{
3283						position396, tokenIndex396 := position, tokenIndex
3284						if c := buffer[position]; c < rune('a') || c > rune('z') {
3285							goto l397
3286						}
3287						position++
3288						goto l396
3289					l397:
3290						position, tokenIndex = position396, tokenIndex396
3291						if c := buffer[position]; c < rune('A') || c > rune('Z') {
3292							goto l395
3293						}
3294						position++
3295					}
3296				l396:
3297					goto l392
3298				l395:
3299					position, tokenIndex = position392, tokenIndex392
3300					if buffer[position] != rune('.') {
3301						goto l398
3302					}
3303					position++
3304					goto l392
3305				l398:
3306					position, tokenIndex = position392, tokenIndex392
3307					{
3308						position400, tokenIndex400 := position, tokenIndex
3309						if c := buffer[position]; c < rune('0') || c > rune('9') {
3310							goto l401
3311						}
3312						position++
3313						goto l400
3314					l401:
3315						position, tokenIndex = position400, tokenIndex400
3316						if c := buffer[position]; c < rune('0') || c > rune('9') {
3317							goto l399
3318						}
3319						position++
3320					}
3321				l400:
3322					goto l392
3323				l399:
3324					position, tokenIndex = position392, tokenIndex392
3325					if buffer[position] != rune('$') {
3326						goto l402
3327					}
3328					position++
3329					goto l392
3330				l402:
3331					position, tokenIndex = position392, tokenIndex392
3332					if buffer[position] != rune('_') {
3333						goto l388
3334					}
3335					position++
3336				}
3337			l392:
3338			l390:
3339				{
3340					position391, tokenIndex391 := position, tokenIndex
3341					{
3342						position403, tokenIndex403 := position, tokenIndex
3343						if c := buffer[position]; c < rune('a') || c > rune('z') {
3344							goto l404
3345						}
3346						position++
3347						goto l403
3348					l404:
3349						position, tokenIndex = position403, tokenIndex403
3350						if c := buffer[position]; c < rune('A') || c > rune('Z') {
3351							goto l405
3352						}
3353						position++
3354						goto l403
3355					l405:
3356						position, tokenIndex = position403, tokenIndex403
3357						{
3358							position407, tokenIndex407 := position, tokenIndex
3359							if c := buffer[position]; c < rune('a') || c > rune('z') {
3360								goto l408
3361							}
3362							position++
3363							goto l407
3364						l408:
3365							position, tokenIndex = position407, tokenIndex407
3366							if c := buffer[position]; c < rune('A') || c > rune('Z') {
3367								goto l406
3368							}
3369							position++
3370						}
3371					l407:
3372						goto l403
3373					l406:
3374						position, tokenIndex = position403, tokenIndex403
3375						if buffer[position] != rune('.') {
3376							goto l409
3377						}
3378						position++
3379						goto l403
3380					l409:
3381						position, tokenIndex = position403, tokenIndex403
3382						{
3383							position411, tokenIndex411 := position, tokenIndex
3384							if c := buffer[position]; c < rune('0') || c > rune('9') {
3385								goto l412
3386							}
3387							position++
3388							goto l411
3389						l412:
3390							position, tokenIndex = position411, tokenIndex411
3391							if c := buffer[position]; c < rune('0') || c > rune('9') {
3392								goto l410
3393							}
3394							position++
3395						}
3396					l411:
3397						goto l403
3398					l410:
3399						position, tokenIndex = position403, tokenIndex403
3400						if buffer[position] != rune('$') {
3401							goto l413
3402						}
3403						position++
3404						goto l403
3405					l413:
3406						position, tokenIndex = position403, tokenIndex403
3407						if buffer[position] != rune('_') {
3408							goto l391
3409						}
3410						position++
3411					}
3412				l403:
3413					goto l390
3414				l391:
3415					position, tokenIndex = position391, tokenIndex391
3416				}
3417				add(ruleLocalSymbol, position389)
3418			}
3419			return true
3420		l388:
3421			position, tokenIndex = position388, tokenIndex388
3422			return false
3423		},
3424		/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
3425		func() bool {
3426			position414, tokenIndex414 := position, tokenIndex
3427			{
3428				position415 := position
3429				if c := buffer[position]; c < rune('0') || c > rune('9') {
3430					goto l414
3431				}
3432				position++
3433			l416:
3434				{
3435					position417, tokenIndex417 := position, tokenIndex
3436					{
3437						position418, tokenIndex418 := position, tokenIndex
3438						if c := buffer[position]; c < rune('0') || c > rune('9') {
3439							goto l419
3440						}
3441						position++
3442						goto l418
3443					l419:
3444						position, tokenIndex = position418, tokenIndex418
3445						if buffer[position] != rune('$') {
3446							goto l417
3447						}
3448						position++
3449					}
3450				l418:
3451					goto l416
3452				l417:
3453					position, tokenIndex = position417, tokenIndex417
3454				}
3455				add(ruleLocalLabel, position415)
3456			}
3457			return true
3458		l414:
3459			position, tokenIndex = position414, tokenIndex414
3460			return false
3461		},
3462		/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
3463		func() bool {
3464			position420, tokenIndex420 := position, tokenIndex
3465			{
3466				position421 := position
3467				if c := buffer[position]; c < rune('0') || c > rune('9') {
3468					goto l420
3469				}
3470				position++
3471			l422:
3472				{
3473					position423, tokenIndex423 := position, tokenIndex
3474					{
3475						position424, tokenIndex424 := position, tokenIndex
3476						if c := buffer[position]; c < rune('0') || c > rune('9') {
3477							goto l425
3478						}
3479						position++
3480						goto l424
3481					l425:
3482						position, tokenIndex = position424, tokenIndex424
3483						if buffer[position] != rune('$') {
3484							goto l423
3485						}
3486						position++
3487					}
3488				l424:
3489					goto l422
3490				l423:
3491					position, tokenIndex = position423, tokenIndex423
3492				}
3493				{
3494					position426, tokenIndex426 := position, tokenIndex
3495					if buffer[position] != rune('b') {
3496						goto l427
3497					}
3498					position++
3499					goto l426
3500				l427:
3501					position, tokenIndex = position426, tokenIndex426
3502					if buffer[position] != rune('f') {
3503						goto l420
3504					}
3505					position++
3506				}
3507			l426:
3508				add(ruleLocalLabelRef, position421)
3509			}
3510			return true
3511		l420:
3512			position, tokenIndex = position420, tokenIndex420
3513			return false
3514		},
3515		/* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
3516		func() bool {
3517			position428, tokenIndex428 := position, tokenIndex
3518			{
3519				position429 := position
3520				if !_rules[ruleInstructionName]() {
3521					goto l428
3522				}
3523				{
3524					position430, tokenIndex430 := position, tokenIndex
3525					if !_rules[ruleWS]() {
3526						goto l430
3527					}
3528					if !_rules[ruleInstructionArg]() {
3529						goto l430
3530					}
3531				l432:
3532					{
3533						position433, tokenIndex433 := position, tokenIndex
3534						{
3535							position434, tokenIndex434 := position, tokenIndex
3536							if !_rules[ruleWS]() {
3537								goto l434
3538							}
3539							goto l435
3540						l434:
3541							position, tokenIndex = position434, tokenIndex434
3542						}
3543					l435:
3544						if buffer[position] != rune(',') {
3545							goto l433
3546						}
3547						position++
3548						{
3549							position436, tokenIndex436 := position, tokenIndex
3550							if !_rules[ruleWS]() {
3551								goto l436
3552							}
3553							goto l437
3554						l436:
3555							position, tokenIndex = position436, tokenIndex436
3556						}
3557					l437:
3558						if !_rules[ruleInstructionArg]() {
3559							goto l433
3560						}
3561						goto l432
3562					l433:
3563						position, tokenIndex = position433, tokenIndex433
3564					}
3565					goto l431
3566				l430:
3567					position, tokenIndex = position430, tokenIndex430
3568				}
3569			l431:
3570				add(ruleInstruction, position429)
3571			}
3572			return true
3573		l428:
3574			position, tokenIndex = position428, tokenIndex428
3575			return false
3576		},
3577		/* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
3578		func() bool {
3579			position438, tokenIndex438 := position, tokenIndex
3580			{
3581				position439 := position
3582				{
3583					position440, tokenIndex440 := position, tokenIndex
3584					if c := buffer[position]; c < rune('a') || c > rune('z') {
3585						goto l441
3586					}
3587					position++
3588					goto l440
3589				l441:
3590					position, tokenIndex = position440, tokenIndex440
3591					if c := buffer[position]; c < rune('A') || c > rune('Z') {
3592						goto l438
3593					}
3594					position++
3595				}
3596			l440:
3597			l442:
3598				{
3599					position443, tokenIndex443 := position, tokenIndex
3600					{
3601						position444, tokenIndex444 := position, tokenIndex
3602						if c := buffer[position]; c < rune('a') || c > rune('z') {
3603							goto l445
3604						}
3605						position++
3606						goto l444
3607					l445:
3608						position, tokenIndex = position444, tokenIndex444
3609						if c := buffer[position]; c < rune('A') || c > rune('Z') {
3610							goto l446
3611						}
3612						position++
3613						goto l444
3614					l446:
3615						position, tokenIndex = position444, tokenIndex444
3616						if buffer[position] != rune('.') {
3617							goto l447
3618						}
3619						position++
3620						goto l444
3621					l447:
3622						position, tokenIndex = position444, tokenIndex444
3623						{
3624							position448, tokenIndex448 := position, tokenIndex
3625							if c := buffer[position]; c < rune('0') || c > rune('9') {
3626								goto l449
3627							}
3628							position++
3629							goto l448
3630						l449:
3631							position, tokenIndex = position448, tokenIndex448
3632							if c := buffer[position]; c < rune('0') || c > rune('9') {
3633								goto l443
3634							}
3635							position++
3636						}
3637					l448:
3638					}
3639				l444:
3640					goto l442
3641				l443:
3642					position, tokenIndex = position443, tokenIndex443
3643				}
3644				{
3645					position450, tokenIndex450 := position, tokenIndex
3646					{
3647						position452, tokenIndex452 := position, tokenIndex
3648						if buffer[position] != rune('.') {
3649							goto l453
3650						}
3651						position++
3652						goto l452
3653					l453:
3654						position, tokenIndex = position452, tokenIndex452
3655						if buffer[position] != rune('+') {
3656							goto l454
3657						}
3658						position++
3659						goto l452
3660					l454:
3661						position, tokenIndex = position452, tokenIndex452
3662						if buffer[position] != rune('-') {
3663							goto l450
3664						}
3665						position++
3666					}
3667				l452:
3668					goto l451
3669				l450:
3670					position, tokenIndex = position450, tokenIndex450
3671				}
3672			l451:
3673				add(ruleInstructionName, position439)
3674			}
3675			return true
3676		l438:
3677			position, tokenIndex = position438, tokenIndex438
3678			return false
3679		},
3680		/* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
3681		func() bool {
3682			position455, tokenIndex455 := position, tokenIndex
3683			{
3684				position456 := position
3685				{
3686					position457, tokenIndex457 := position, tokenIndex
3687					if !_rules[ruleIndirectionIndicator]() {
3688						goto l457
3689					}
3690					goto l458
3691				l457:
3692					position, tokenIndex = position457, tokenIndex457
3693				}
3694			l458:
3695				{
3696					position459, tokenIndex459 := position, tokenIndex
3697					if !_rules[ruleARMConstantTweak]() {
3698						goto l460
3699					}
3700					goto l459
3701				l460:
3702					position, tokenIndex = position459, tokenIndex459
3703					if !_rules[ruleRegisterOrConstant]() {
3704						goto l461
3705					}
3706					goto l459
3707				l461:
3708					position, tokenIndex = position459, tokenIndex459
3709					if !_rules[ruleLocalLabelRef]() {
3710						goto l462
3711					}
3712					goto l459
3713				l462:
3714					position, tokenIndex = position459, tokenIndex459
3715					if !_rules[ruleTOCRefHigh]() {
3716						goto l463
3717					}
3718					goto l459
3719				l463:
3720					position, tokenIndex = position459, tokenIndex459
3721					if !_rules[ruleTOCRefLow]() {
3722						goto l464
3723					}
3724					goto l459
3725				l464:
3726					position, tokenIndex = position459, tokenIndex459
3727					if !_rules[ruleGOTLocation]() {
3728						goto l465
3729					}
3730					goto l459
3731				l465:
3732					position, tokenIndex = position459, tokenIndex459
3733					if !_rules[ruleGOTAddress]() {
3734						goto l466
3735					}
3736					goto l459
3737				l466:
3738					position, tokenIndex = position459, tokenIndex459
3739					if !_rules[ruleGOTSymbolOffset]() {
3740						goto l467
3741					}
3742					goto l459
3743				l467:
3744					position, tokenIndex = position459, tokenIndex459
3745					if !_rules[ruleMemoryRef]() {
3746						goto l455
3747					}
3748				}
3749			l459:
3750			l468:
3751				{
3752					position469, tokenIndex469 := position, tokenIndex
3753					if !_rules[ruleAVX512Token]() {
3754						goto l469
3755					}
3756					goto l468
3757				l469:
3758					position, tokenIndex = position469, tokenIndex469
3759				}
3760				add(ruleInstructionArg, position456)
3761			}
3762			return true
3763		l455:
3764			position, tokenIndex = position455, tokenIndex455
3765			return false
3766		},
3767		/* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
3768		func() bool {
3769			position470, tokenIndex470 := position, tokenIndex
3770			{
3771				position471 := position
3772				if buffer[position] != rune('$') {
3773					goto l470
3774				}
3775				position++
3776				if buffer[position] != rune('_') {
3777					goto l470
3778				}
3779				position++
3780				if buffer[position] != rune('G') {
3781					goto l470
3782				}
3783				position++
3784				if buffer[position] != rune('L') {
3785					goto l470
3786				}
3787				position++
3788				if buffer[position] != rune('O') {
3789					goto l470
3790				}
3791				position++
3792				if buffer[position] != rune('B') {
3793					goto l470
3794				}
3795				position++
3796				if buffer[position] != rune('A') {
3797					goto l470
3798				}
3799				position++
3800				if buffer[position] != rune('L') {
3801					goto l470
3802				}
3803				position++
3804				if buffer[position] != rune('_') {
3805					goto l470
3806				}
3807				position++
3808				if buffer[position] != rune('O') {
3809					goto l470
3810				}
3811				position++
3812				if buffer[position] != rune('F') {
3813					goto l470
3814				}
3815				position++
3816				if buffer[position] != rune('F') {
3817					goto l470
3818				}
3819				position++
3820				if buffer[position] != rune('S') {
3821					goto l470
3822				}
3823				position++
3824				if buffer[position] != rune('E') {
3825					goto l470
3826				}
3827				position++
3828				if buffer[position] != rune('T') {
3829					goto l470
3830				}
3831				position++
3832				if buffer[position] != rune('_') {
3833					goto l470
3834				}
3835				position++
3836				if buffer[position] != rune('T') {
3837					goto l470
3838				}
3839				position++
3840				if buffer[position] != rune('A') {
3841					goto l470
3842				}
3843				position++
3844				if buffer[position] != rune('B') {
3845					goto l470
3846				}
3847				position++
3848				if buffer[position] != rune('L') {
3849					goto l470
3850				}
3851				position++
3852				if buffer[position] != rune('E') {
3853					goto l470
3854				}
3855				position++
3856				if buffer[position] != rune('_') {
3857					goto l470
3858				}
3859				position++
3860				if buffer[position] != rune('-') {
3861					goto l470
3862				}
3863				position++
3864				if !_rules[ruleLocalSymbol]() {
3865					goto l470
3866				}
3867				add(ruleGOTLocation, position471)
3868			}
3869			return true
3870		l470:
3871			position, tokenIndex = position470, tokenIndex470
3872			return false
3873		},
3874		/* 36 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
3875		func() bool {
3876			position472, tokenIndex472 := position, tokenIndex
3877			{
3878				position473 := position
3879				if buffer[position] != rune('_') {
3880					goto l472
3881				}
3882				position++
3883				if buffer[position] != rune('G') {
3884					goto l472
3885				}
3886				position++
3887				if buffer[position] != rune('L') {
3888					goto l472
3889				}
3890				position++
3891				if buffer[position] != rune('O') {
3892					goto l472
3893				}
3894				position++
3895				if buffer[position] != rune('B') {
3896					goto l472
3897				}
3898				position++
3899				if buffer[position] != rune('A') {
3900					goto l472
3901				}
3902				position++
3903				if buffer[position] != rune('L') {
3904					goto l472
3905				}
3906				position++
3907				if buffer[position] != rune('_') {
3908					goto l472
3909				}
3910				position++
3911				if buffer[position] != rune('O') {
3912					goto l472
3913				}
3914				position++
3915				if buffer[position] != rune('F') {
3916					goto l472
3917				}
3918				position++
3919				if buffer[position] != rune('F') {
3920					goto l472
3921				}
3922				position++
3923				if buffer[position] != rune('S') {
3924					goto l472
3925				}
3926				position++
3927				if buffer[position] != rune('E') {
3928					goto l472
3929				}
3930				position++
3931				if buffer[position] != rune('T') {
3932					goto l472
3933				}
3934				position++
3935				if buffer[position] != rune('_') {
3936					goto l472
3937				}
3938				position++
3939				if buffer[position] != rune('T') {
3940					goto l472
3941				}
3942				position++
3943				if buffer[position] != rune('A') {
3944					goto l472
3945				}
3946				position++
3947				if buffer[position] != rune('B') {
3948					goto l472
3949				}
3950				position++
3951				if buffer[position] != rune('L') {
3952					goto l472
3953				}
3954				position++
3955				if buffer[position] != rune('E') {
3956					goto l472
3957				}
3958				position++
3959				if buffer[position] != rune('_') {
3960					goto l472
3961				}
3962				position++
3963				if buffer[position] != rune('(') {
3964					goto l472
3965				}
3966				position++
3967				if buffer[position] != rune('%') {
3968					goto l472
3969				}
3970				position++
3971				if buffer[position] != rune('r') {
3972					goto l472
3973				}
3974				position++
3975				if buffer[position] != rune('i') {
3976					goto l472
3977				}
3978				position++
3979				if buffer[position] != rune('p') {
3980					goto l472
3981				}
3982				position++
3983				if buffer[position] != rune(')') {
3984					goto l472
3985				}
3986				position++
3987				add(ruleGOTAddress, position473)
3988			}
3989			return true
3990		l472:
3991			position, tokenIndex = position472, tokenIndex472
3992			return false
3993		},
3994		/* 37 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
3995		func() bool {
3996			position474, tokenIndex474 := position, tokenIndex
3997			{
3998				position475 := position
3999				{
4000					position476, tokenIndex476 := position, tokenIndex
4001					if buffer[position] != rune('$') {
4002						goto l477
4003					}
4004					position++
4005					if !_rules[ruleSymbolName]() {
4006						goto l477
4007					}
4008					if buffer[position] != rune('@') {
4009						goto l477
4010					}
4011					position++
4012					if buffer[position] != rune('G') {
4013						goto l477
4014					}
4015					position++
4016					if buffer[position] != rune('O') {
4017						goto l477
4018					}
4019					position++
4020					if buffer[position] != rune('T') {
4021						goto l477
4022					}
4023					position++
4024					{
4025						position478, tokenIndex478 := position, tokenIndex
4026						if buffer[position] != rune('O') {
4027							goto l478
4028						}
4029						position++
4030						if buffer[position] != rune('F') {
4031							goto l478
4032						}
4033						position++
4034						if buffer[position] != rune('F') {
4035							goto l478
4036						}
4037						position++
4038						goto l479
4039					l478:
4040						position, tokenIndex = position478, tokenIndex478
4041					}
4042				l479:
4043					goto l476
4044				l477:
4045					position, tokenIndex = position476, tokenIndex476
4046					if buffer[position] != rune(':') {
4047						goto l474
4048					}
4049					position++
4050					{
4051						position480, tokenIndex480 := position, tokenIndex
4052						if buffer[position] != rune('g') {
4053							goto l481
4054						}
4055						position++
4056						goto l480
4057					l481:
4058						position, tokenIndex = position480, tokenIndex480
4059						if buffer[position] != rune('G') {
4060							goto l474
4061						}
4062						position++
4063					}
4064				l480:
4065					{
4066						position482, tokenIndex482 := position, tokenIndex
4067						if buffer[position] != rune('o') {
4068							goto l483
4069						}
4070						position++
4071						goto l482
4072					l483:
4073						position, tokenIndex = position482, tokenIndex482
4074						if buffer[position] != rune('O') {
4075							goto l474
4076						}
4077						position++
4078					}
4079				l482:
4080					{
4081						position484, tokenIndex484 := position, tokenIndex
4082						if buffer[position] != rune('t') {
4083							goto l485
4084						}
4085						position++
4086						goto l484
4087					l485:
4088						position, tokenIndex = position484, tokenIndex484
4089						if buffer[position] != rune('T') {
4090							goto l474
4091						}
4092						position++
4093					}
4094				l484:
4095					if buffer[position] != rune(':') {
4096						goto l474
4097					}
4098					position++
4099					if !_rules[ruleSymbolName]() {
4100						goto l474
4101					}
4102				}
4103			l476:
4104				add(ruleGOTSymbolOffset, position475)
4105			}
4106			return true
4107		l474:
4108			position, tokenIndex = position474, tokenIndex474
4109			return false
4110		},
4111		/* 38 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
4112		func() bool {
4113			position486, tokenIndex486 := position, tokenIndex
4114			{
4115				position487 := position
4116				{
4117					position488, tokenIndex488 := position, tokenIndex
4118					if !_rules[ruleWS]() {
4119						goto l488
4120					}
4121					goto l489
4122				l488:
4123					position, tokenIndex = position488, tokenIndex488
4124				}
4125			l489:
4126				if buffer[position] != rune('{') {
4127					goto l486
4128				}
4129				position++
4130				{
4131					position490, tokenIndex490 := position, tokenIndex
4132					if buffer[position] != rune('%') {
4133						goto l490
4134					}
4135					position++
4136					goto l491
4137				l490:
4138					position, tokenIndex = position490, tokenIndex490
4139				}
4140			l491:
4141			l492:
4142				{
4143					position493, tokenIndex493 := position, tokenIndex
4144					{
4145						position494, tokenIndex494 := position, tokenIndex
4146						if c := buffer[position]; c < rune('0') || c > rune('9') {
4147							goto l495
4148						}
4149						position++
4150						goto l494
4151					l495:
4152						position, tokenIndex = position494, tokenIndex494
4153						if c := buffer[position]; c < rune('a') || c > rune('z') {
4154							goto l493
4155						}
4156						position++
4157					}
4158				l494:
4159					goto l492
4160				l493:
4161					position, tokenIndex = position493, tokenIndex493
4162				}
4163				if buffer[position] != rune('}') {
4164					goto l486
4165				}
4166				position++
4167				add(ruleAVX512Token, position487)
4168			}
4169			return true
4170		l486:
4171			position, tokenIndex = position486, tokenIndex486
4172			return false
4173		},
4174		/* 39 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
4175		func() bool {
4176			position496, tokenIndex496 := position, tokenIndex
4177			{
4178				position497 := position
4179				if buffer[position] != rune('.') {
4180					goto l496
4181				}
4182				position++
4183				if buffer[position] != rune('T') {
4184					goto l496
4185				}
4186				position++
4187				if buffer[position] != rune('O') {
4188					goto l496
4189				}
4190				position++
4191				if buffer[position] != rune('C') {
4192					goto l496
4193				}
4194				position++
4195				if buffer[position] != rune('.') {
4196					goto l496
4197				}
4198				position++
4199				if buffer[position] != rune('-') {
4200					goto l496
4201				}
4202				position++
4203				{
4204					position498, tokenIndex498 := position, tokenIndex
4205					if buffer[position] != rune('0') {
4206						goto l499
4207					}
4208					position++
4209					if buffer[position] != rune('b') {
4210						goto l499
4211					}
4212					position++
4213					goto l498
4214				l499:
4215					position, tokenIndex = position498, tokenIndex498
4216					if buffer[position] != rune('.') {
4217						goto l496
4218					}
4219					position++
4220					if buffer[position] != rune('L') {
4221						goto l496
4222					}
4223					position++
4224					{
4225						position502, tokenIndex502 := position, tokenIndex
4226						if c := buffer[position]; c < rune('a') || c > rune('z') {
4227							goto l503
4228						}
4229						position++
4230						goto l502
4231					l503:
4232						position, tokenIndex = position502, tokenIndex502
4233						if c := buffer[position]; c < rune('A') || c > rune('Z') {
4234							goto l504
4235						}
4236						position++
4237						goto l502
4238					l504:
4239						position, tokenIndex = position502, tokenIndex502
4240						if buffer[position] != rune('_') {
4241							goto l505
4242						}
4243						position++
4244						goto l502
4245					l505:
4246						position, tokenIndex = position502, tokenIndex502
4247						if c := buffer[position]; c < rune('0') || c > rune('9') {
4248							goto l496
4249						}
4250						position++
4251					}
4252				l502:
4253				l500:
4254					{
4255						position501, tokenIndex501 := position, tokenIndex
4256						{
4257							position506, tokenIndex506 := position, tokenIndex
4258							if c := buffer[position]; c < rune('a') || c > rune('z') {
4259								goto l507
4260							}
4261							position++
4262							goto l506
4263						l507:
4264							position, tokenIndex = position506, tokenIndex506
4265							if c := buffer[position]; c < rune('A') || c > rune('Z') {
4266								goto l508
4267							}
4268							position++
4269							goto l506
4270						l508:
4271							position, tokenIndex = position506, tokenIndex506
4272							if buffer[position] != rune('_') {
4273								goto l509
4274							}
4275							position++
4276							goto l506
4277						l509:
4278							position, tokenIndex = position506, tokenIndex506
4279							if c := buffer[position]; c < rune('0') || c > rune('9') {
4280								goto l501
4281							}
4282							position++
4283						}
4284					l506:
4285						goto l500
4286					l501:
4287						position, tokenIndex = position501, tokenIndex501
4288					}
4289				}
4290			l498:
4291				if buffer[position] != rune('@') {
4292					goto l496
4293				}
4294				position++
4295				{
4296					position510, tokenIndex510 := position, tokenIndex
4297					if buffer[position] != rune('h') {
4298						goto l511
4299					}
4300					position++
4301					goto l510
4302				l511:
4303					position, tokenIndex = position510, tokenIndex510
4304					if buffer[position] != rune('H') {
4305						goto l496
4306					}
4307					position++
4308				}
4309			l510:
4310				{
4311					position512, tokenIndex512 := position, tokenIndex
4312					if buffer[position] != rune('a') {
4313						goto l513
4314					}
4315					position++
4316					goto l512
4317				l513:
4318					position, tokenIndex = position512, tokenIndex512
4319					if buffer[position] != rune('A') {
4320						goto l496
4321					}
4322					position++
4323				}
4324			l512:
4325				add(ruleTOCRefHigh, position497)
4326			}
4327			return true
4328		l496:
4329			position, tokenIndex = position496, tokenIndex496
4330			return false
4331		},
4332		/* 40 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
4333		func() bool {
4334			position514, tokenIndex514 := position, tokenIndex
4335			{
4336				position515 := position
4337				if buffer[position] != rune('.') {
4338					goto l514
4339				}
4340				position++
4341				if buffer[position] != rune('T') {
4342					goto l514
4343				}
4344				position++
4345				if buffer[position] != rune('O') {
4346					goto l514
4347				}
4348				position++
4349				if buffer[position] != rune('C') {
4350					goto l514
4351				}
4352				position++
4353				if buffer[position] != rune('.') {
4354					goto l514
4355				}
4356				position++
4357				if buffer[position] != rune('-') {
4358					goto l514
4359				}
4360				position++
4361				{
4362					position516, tokenIndex516 := position, tokenIndex
4363					if buffer[position] != rune('0') {
4364						goto l517
4365					}
4366					position++
4367					if buffer[position] != rune('b') {
4368						goto l517
4369					}
4370					position++
4371					goto l516
4372				l517:
4373					position, tokenIndex = position516, tokenIndex516
4374					if buffer[position] != rune('.') {
4375						goto l514
4376					}
4377					position++
4378					if buffer[position] != rune('L') {
4379						goto l514
4380					}
4381					position++
4382					{
4383						position520, tokenIndex520 := position, tokenIndex
4384						if c := buffer[position]; c < rune('a') || c > rune('z') {
4385							goto l521
4386						}
4387						position++
4388						goto l520
4389					l521:
4390						position, tokenIndex = position520, tokenIndex520
4391						if c := buffer[position]; c < rune('A') || c > rune('Z') {
4392							goto l522
4393						}
4394						position++
4395						goto l520
4396					l522:
4397						position, tokenIndex = position520, tokenIndex520
4398						if buffer[position] != rune('_') {
4399							goto l523
4400						}
4401						position++
4402						goto l520
4403					l523:
4404						position, tokenIndex = position520, tokenIndex520
4405						if c := buffer[position]; c < rune('0') || c > rune('9') {
4406							goto l514
4407						}
4408						position++
4409					}
4410				l520:
4411				l518:
4412					{
4413						position519, tokenIndex519 := position, tokenIndex
4414						{
4415							position524, tokenIndex524 := position, tokenIndex
4416							if c := buffer[position]; c < rune('a') || c > rune('z') {
4417								goto l525
4418							}
4419							position++
4420							goto l524
4421						l525:
4422							position, tokenIndex = position524, tokenIndex524
4423							if c := buffer[position]; c < rune('A') || c > rune('Z') {
4424								goto l526
4425							}
4426							position++
4427							goto l524
4428						l526:
4429							position, tokenIndex = position524, tokenIndex524
4430							if buffer[position] != rune('_') {
4431								goto l527
4432							}
4433							position++
4434							goto l524
4435						l527:
4436							position, tokenIndex = position524, tokenIndex524
4437							if c := buffer[position]; c < rune('0') || c > rune('9') {
4438								goto l519
4439							}
4440							position++
4441						}
4442					l524:
4443						goto l518
4444					l519:
4445						position, tokenIndex = position519, tokenIndex519
4446					}
4447				}
4448			l516:
4449				if buffer[position] != rune('@') {
4450					goto l514
4451				}
4452				position++
4453				{
4454					position528, tokenIndex528 := position, tokenIndex
4455					if buffer[position] != rune('l') {
4456						goto l529
4457					}
4458					position++
4459					goto l528
4460				l529:
4461					position, tokenIndex = position528, tokenIndex528
4462					if buffer[position] != rune('L') {
4463						goto l514
4464					}
4465					position++
4466				}
4467			l528:
4468				add(ruleTOCRefLow, position515)
4469			}
4470			return true
4471		l514:
4472			position, tokenIndex = position514, tokenIndex514
4473			return false
4474		},
4475		/* 41 IndirectionIndicator <- <'*'> */
4476		func() bool {
4477			position530, tokenIndex530 := position, tokenIndex
4478			{
4479				position531 := position
4480				if buffer[position] != rune('*') {
4481					goto l530
4482				}
4483				position++
4484				add(ruleIndirectionIndicator, position531)
4485			}
4486			return true
4487		l530:
4488			position, tokenIndex = position530, tokenIndex530
4489			return false
4490		},
4491		/* 42 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
4492		func() bool {
4493			position532, tokenIndex532 := position, tokenIndex
4494			{
4495				position533 := position
4496				{
4497					position534, tokenIndex534 := position, tokenIndex
4498					if buffer[position] != rune('%') {
4499						goto l535
4500					}
4501					position++
4502					{
4503						position536, tokenIndex536 := position, tokenIndex
4504						if c := buffer[position]; c < rune('a') || c > rune('z') {
4505							goto l537
4506						}
4507						position++
4508						goto l536
4509					l537:
4510						position, tokenIndex = position536, tokenIndex536
4511						if c := buffer[position]; c < rune('A') || c > rune('Z') {
4512							goto l535
4513						}
4514						position++
4515					}
4516				l536:
4517				l538:
4518					{
4519						position539, tokenIndex539 := position, tokenIndex
4520						{
4521							position540, tokenIndex540 := position, tokenIndex
4522							if c := buffer[position]; c < rune('a') || c > rune('z') {
4523								goto l541
4524							}
4525							position++
4526							goto l540
4527						l541:
4528							position, tokenIndex = position540, tokenIndex540
4529							if c := buffer[position]; c < rune('A') || c > rune('Z') {
4530								goto l542
4531							}
4532							position++
4533							goto l540
4534						l542:
4535							position, tokenIndex = position540, tokenIndex540
4536							{
4537								position543, tokenIndex543 := position, tokenIndex
4538								if c := buffer[position]; c < rune('0') || c > rune('9') {
4539									goto l544
4540								}
4541								position++
4542								goto l543
4543							l544:
4544								position, tokenIndex = position543, tokenIndex543
4545								if c := buffer[position]; c < rune('0') || c > rune('9') {
4546									goto l539
4547								}
4548								position++
4549							}
4550						l543:
4551						}
4552					l540:
4553						goto l538
4554					l539:
4555						position, tokenIndex = position539, tokenIndex539
4556					}
4557					goto l534
4558				l535:
4559					position, tokenIndex = position534, tokenIndex534
4560					{
4561						position546, tokenIndex546 := position, tokenIndex
4562						if buffer[position] != rune('$') {
4563							goto l546
4564						}
4565						position++
4566						goto l547
4567					l546:
4568						position, tokenIndex = position546, tokenIndex546
4569					}
4570				l547:
4571					{
4572						position548, tokenIndex548 := position, tokenIndex
4573						if !_rules[ruleOffset]() {
4574							goto l549
4575						}
4576						if !_rules[ruleOffset]() {
4577							goto l549
4578						}
4579						goto l548
4580					l549:
4581						position, tokenIndex = position548, tokenIndex548
4582						if !_rules[ruleOffset]() {
4583							goto l545
4584						}
4585					}
4586				l548:
4587					goto l534
4588				l545:
4589					position, tokenIndex = position534, tokenIndex534
4590					if buffer[position] != rune('#') {
4591						goto l550
4592					}
4593					position++
4594					if !_rules[ruleOffset]() {
4595						goto l550
4596					}
4597					{
4598						position551, tokenIndex551 := position, tokenIndex
4599						if buffer[position] != rune('*') {
4600							goto l551
4601						}
4602						position++
4603						if c := buffer[position]; c < rune('0') || c > rune('9') {
4604							goto l551
4605						}
4606						position++
4607					l553:
4608						{
4609							position554, tokenIndex554 := position, tokenIndex
4610							if c := buffer[position]; c < rune('0') || c > rune('9') {
4611								goto l554
4612							}
4613							position++
4614							goto l553
4615						l554:
4616							position, tokenIndex = position554, tokenIndex554
4617						}
4618						{
4619							position555, tokenIndex555 := position, tokenIndex
4620							if buffer[position] != rune('-') {
4621								goto l555
4622							}
4623							position++
4624							if c := buffer[position]; c < rune('0') || c > rune('9') {
4625								goto l555
4626							}
4627							position++
4628						l557:
4629							{
4630								position558, tokenIndex558 := position, tokenIndex
4631								if c := buffer[position]; c < rune('0') || c > rune('9') {
4632									goto l558
4633								}
4634								position++
4635								goto l557
4636							l558:
4637								position, tokenIndex = position558, tokenIndex558
4638							}
4639							goto l556
4640						l555:
4641							position, tokenIndex = position555, tokenIndex555
4642						}
4643					l556:
4644						goto l552
4645					l551:
4646						position, tokenIndex = position551, tokenIndex551
4647					}
4648				l552:
4649					goto l534
4650				l550:
4651					position, tokenIndex = position534, tokenIndex534
4652					if buffer[position] != rune('#') {
4653						goto l559
4654					}
4655					position++
4656					{
4657						position560, tokenIndex560 := position, tokenIndex
4658						if buffer[position] != rune('~') {
4659							goto l560
4660						}
4661						position++
4662						goto l561
4663					l560:
4664						position, tokenIndex = position560, tokenIndex560
4665					}
4666				l561:
4667					if buffer[position] != rune('(') {
4668						goto l559
4669					}
4670					position++
4671					if c := buffer[position]; c < rune('0') || c > rune('9') {
4672						goto l559
4673					}
4674					position++
4675					{
4676						position562, tokenIndex562 := position, tokenIndex
4677						if !_rules[ruleWS]() {
4678							goto l562
4679						}
4680						goto l563
4681					l562:
4682						position, tokenIndex = position562, tokenIndex562
4683					}
4684				l563:
4685					if buffer[position] != rune('<') {
4686						goto l559
4687					}
4688					position++
4689					if buffer[position] != rune('<') {
4690						goto l559
4691					}
4692					position++
4693					{
4694						position564, tokenIndex564 := position, tokenIndex
4695						if !_rules[ruleWS]() {
4696							goto l564
4697						}
4698						goto l565
4699					l564:
4700						position, tokenIndex = position564, tokenIndex564
4701					}
4702				l565:
4703					if c := buffer[position]; c < rune('0') || c > rune('9') {
4704						goto l559
4705					}
4706					position++
4707					if buffer[position] != rune(')') {
4708						goto l559
4709					}
4710					position++
4711					goto l534
4712				l559:
4713					position, tokenIndex = position534, tokenIndex534
4714					if !_rules[ruleARMRegister]() {
4715						goto l532
4716					}
4717				}
4718			l534:
4719				{
4720					position566, tokenIndex566 := position, tokenIndex
4721					{
4722						position567, tokenIndex567 := position, tokenIndex
4723						if buffer[position] != rune('f') {
4724							goto l568
4725						}
4726						position++
4727						goto l567
4728					l568:
4729						position, tokenIndex = position567, tokenIndex567
4730						if buffer[position] != rune('b') {
4731							goto l569
4732						}
4733						position++
4734						goto l567
4735					l569:
4736						position, tokenIndex = position567, tokenIndex567
4737						if buffer[position] != rune(':') {
4738							goto l570
4739						}
4740						position++
4741						goto l567
4742					l570:
4743						position, tokenIndex = position567, tokenIndex567
4744						if buffer[position] != rune('(') {
4745							goto l571
4746						}
4747						position++
4748						goto l567
4749					l571:
4750						position, tokenIndex = position567, tokenIndex567
4751						if buffer[position] != rune('+') {
4752							goto l572
4753						}
4754						position++
4755						goto l567
4756					l572:
4757						position, tokenIndex = position567, tokenIndex567
4758						if buffer[position] != rune('-') {
4759							goto l566
4760						}
4761						position++
4762					}
4763				l567:
4764					goto l532
4765				l566:
4766					position, tokenIndex = position566, tokenIndex566
4767				}
4768				add(ruleRegisterOrConstant, position533)
4769			}
4770			return true
4771		l532:
4772			position, tokenIndex = position532, tokenIndex532
4773			return false
4774		},
4775		/* 43 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
4776		func() bool {
4777			position573, tokenIndex573 := position, tokenIndex
4778			{
4779				position574 := position
4780				{
4781					position575, tokenIndex575 := position, tokenIndex
4782					{
4783						position577, tokenIndex577 := position, tokenIndex
4784						{
4785							position579, tokenIndex579 := position, tokenIndex
4786							if buffer[position] != rune('u') {
4787								goto l580
4788							}
4789							position++
4790							goto l579
4791						l580:
4792							position, tokenIndex = position579, tokenIndex579
4793							if buffer[position] != rune('s') {
4794								goto l578
4795							}
4796							position++
4797						}
4798					l579:
4799						{
4800							position581, tokenIndex581 := position, tokenIndex
4801							if buffer[position] != rune('x') {
4802								goto l582
4803							}
4804							position++
4805							goto l581
4806						l582:
4807							position, tokenIndex = position581, tokenIndex581
4808							if buffer[position] != rune('X') {
4809								goto l578
4810							}
4811							position++
4812						}
4813					l581:
4814						{
4815							position583, tokenIndex583 := position, tokenIndex
4816							if buffer[position] != rune('t') {
4817								goto l584
4818							}
4819							position++
4820							goto l583
4821						l584:
4822							position, tokenIndex = position583, tokenIndex583
4823							if buffer[position] != rune('T') {
4824								goto l578
4825							}
4826							position++
4827						}
4828					l583:
4829						{
4830							position585, tokenIndex585 := position, tokenIndex
4831							if buffer[position] != rune('x') {
4832								goto l586
4833							}
4834							position++
4835							goto l585
4836						l586:
4837							position, tokenIndex = position585, tokenIndex585
4838							if buffer[position] != rune('w') {
4839								goto l587
4840							}
4841							position++
4842							goto l585
4843						l587:
4844							position, tokenIndex = position585, tokenIndex585
4845							if buffer[position] != rune('h') {
4846								goto l588
4847							}
4848							position++
4849							goto l585
4850						l588:
4851							position, tokenIndex = position585, tokenIndex585
4852							if buffer[position] != rune('b') {
4853								goto l578
4854							}
4855							position++
4856						}
4857					l585:
4858						goto l577
4859					l578:
4860						position, tokenIndex = position577, tokenIndex577
4861						{
4862							position590, tokenIndex590 := position, tokenIndex
4863							if buffer[position] != rune('l') {
4864								goto l591
4865							}
4866							position++
4867							goto l590
4868						l591:
4869							position, tokenIndex = position590, tokenIndex590
4870							if buffer[position] != rune('L') {
4871								goto l589
4872							}
4873							position++
4874						}
4875					l590:
4876						{
4877							position592, tokenIndex592 := position, tokenIndex
4878							if buffer[position] != rune('s') {
4879								goto l593
4880							}
4881							position++
4882							goto l592
4883						l593:
4884							position, tokenIndex = position592, tokenIndex592
4885							if buffer[position] != rune('S') {
4886								goto l589
4887							}
4888							position++
4889						}
4890					l592:
4891						{
4892							position594, tokenIndex594 := position, tokenIndex
4893							if buffer[position] != rune('l') {
4894								goto l595
4895							}
4896							position++
4897							goto l594
4898						l595:
4899							position, tokenIndex = position594, tokenIndex594
4900							if buffer[position] != rune('L') {
4901								goto l589
4902							}
4903							position++
4904						}
4905					l594:
4906						goto l577
4907					l589:
4908						position, tokenIndex = position577, tokenIndex577
4909						{
4910							position597, tokenIndex597 := position, tokenIndex
4911							if buffer[position] != rune('l') {
4912								goto l598
4913							}
4914							position++
4915							goto l597
4916						l598:
4917							position, tokenIndex = position597, tokenIndex597
4918							if buffer[position] != rune('L') {
4919								goto l596
4920							}
4921							position++
4922						}
4923					l597:
4924						{
4925							position599, tokenIndex599 := position, tokenIndex
4926							if buffer[position] != rune('s') {
4927								goto l600
4928							}
4929							position++
4930							goto l599
4931						l600:
4932							position, tokenIndex = position599, tokenIndex599
4933							if buffer[position] != rune('S') {
4934								goto l596
4935							}
4936							position++
4937						}
4938					l599:
4939						{
4940							position601, tokenIndex601 := position, tokenIndex
4941							if buffer[position] != rune('r') {
4942								goto l602
4943							}
4944							position++
4945							goto l601
4946						l602:
4947							position, tokenIndex = position601, tokenIndex601
4948							if buffer[position] != rune('R') {
4949								goto l596
4950							}
4951							position++
4952						}
4953					l601:
4954						goto l577
4955					l596:
4956						position, tokenIndex = position577, tokenIndex577
4957						{
4958							position604, tokenIndex604 := position, tokenIndex
4959							if buffer[position] != rune('r') {
4960								goto l605
4961							}
4962							position++
4963							goto l604
4964						l605:
4965							position, tokenIndex = position604, tokenIndex604
4966							if buffer[position] != rune('R') {
4967								goto l603
4968							}
4969							position++
4970						}
4971					l604:
4972						{
4973							position606, tokenIndex606 := position, tokenIndex
4974							if buffer[position] != rune('o') {
4975								goto l607
4976							}
4977							position++
4978							goto l606
4979						l607:
4980							position, tokenIndex = position606, tokenIndex606
4981							if buffer[position] != rune('O') {
4982								goto l603
4983							}
4984							position++
4985						}
4986					l606:
4987						{
4988							position608, tokenIndex608 := position, tokenIndex
4989							if buffer[position] != rune('r') {
4990								goto l609
4991							}
4992							position++
4993							goto l608
4994						l609:
4995							position, tokenIndex = position608, tokenIndex608
4996							if buffer[position] != rune('R') {
4997								goto l603
4998							}
4999							position++
5000						}
5001					l608:
5002						goto l577
5003					l603:
5004						position, tokenIndex = position577, tokenIndex577
5005						{
5006							position610, tokenIndex610 := position, tokenIndex
5007							if buffer[position] != rune('a') {
5008								goto l611
5009							}
5010							position++
5011							goto l610
5012						l611:
5013							position, tokenIndex = position610, tokenIndex610
5014							if buffer[position] != rune('A') {
5015								goto l576
5016							}
5017							position++
5018						}
5019					l610:
5020						{
5021							position612, tokenIndex612 := position, tokenIndex
5022							if buffer[position] != rune('s') {
5023								goto l613
5024							}
5025							position++
5026							goto l612
5027						l613:
5028							position, tokenIndex = position612, tokenIndex612
5029							if buffer[position] != rune('S') {
5030								goto l576
5031							}
5032							position++
5033						}
5034					l612:
5035						{
5036							position614, tokenIndex614 := position, tokenIndex
5037							if buffer[position] != rune('r') {
5038								goto l615
5039							}
5040							position++
5041							goto l614
5042						l615:
5043							position, tokenIndex = position614, tokenIndex614
5044							if buffer[position] != rune('R') {
5045								goto l576
5046							}
5047							position++
5048						}
5049					l614:
5050					}
5051				l577:
5052					{
5053						position616, tokenIndex616 := position, tokenIndex
5054						if !_rules[ruleWS]() {
5055							goto l616
5056						}
5057						if buffer[position] != rune('#') {
5058							goto l616
5059						}
5060						position++
5061						if !_rules[ruleOffset]() {
5062							goto l616
5063						}
5064						goto l617
5065					l616:
5066						position, tokenIndex = position616, tokenIndex616
5067					}
5068				l617:
5069					goto l575
5070				l576:
5071					position, tokenIndex = position575, tokenIndex575
5072					{
5073						position619, tokenIndex619 := position, tokenIndex
5074						if buffer[position] != rune('m') {
5075							goto l620
5076						}
5077						position++
5078						goto l619
5079					l620:
5080						position, tokenIndex = position619, tokenIndex619
5081						if buffer[position] != rune('M') {
5082							goto l618
5083						}
5084						position++
5085					}
5086				l619:
5087					{
5088						position621, tokenIndex621 := position, tokenIndex
5089						if buffer[position] != rune('u') {
5090							goto l622
5091						}
5092						position++
5093						goto l621
5094					l622:
5095						position, tokenIndex = position621, tokenIndex621
5096						if buffer[position] != rune('U') {
5097							goto l618
5098						}
5099						position++
5100					}
5101				l621:
5102					{
5103						position623, tokenIndex623 := position, tokenIndex
5104						if buffer[position] != rune('l') {
5105							goto l624
5106						}
5107						position++
5108						goto l623
5109					l624:
5110						position, tokenIndex = position623, tokenIndex623
5111						if buffer[position] != rune('L') {
5112							goto l618
5113						}
5114						position++
5115					}
5116				l623:
5117					if buffer[position] != rune(' ') {
5118						goto l618
5119					}
5120					position++
5121					{
5122						position625, tokenIndex625 := position, tokenIndex
5123						if buffer[position] != rune('v') {
5124							goto l626
5125						}
5126						position++
5127						goto l625
5128					l626:
5129						position, tokenIndex = position625, tokenIndex625
5130						if buffer[position] != rune('V') {
5131							goto l618
5132						}
5133						position++
5134					}
5135				l625:
5136					{
5137						position627, tokenIndex627 := position, tokenIndex
5138						if buffer[position] != rune('l') {
5139							goto l628
5140						}
5141						position++
5142						goto l627
5143					l628:
5144						position, tokenIndex = position627, tokenIndex627
5145						if buffer[position] != rune('L') {
5146							goto l618
5147						}
5148						position++
5149					}
5150				l627:
5151					goto l575
5152				l618:
5153					position, tokenIndex = position575, tokenIndex575
5154					{
5155						position629, tokenIndex629 := position, tokenIndex
5156						if buffer[position] != rune('m') {
5157							goto l630
5158						}
5159						position++
5160						goto l629
5161					l630:
5162						position, tokenIndex = position629, tokenIndex629
5163						if buffer[position] != rune('M') {
5164							goto l573
5165						}
5166						position++
5167					}
5168				l629:
5169					{
5170						position631, tokenIndex631 := position, tokenIndex
5171						if buffer[position] != rune('u') {
5172							goto l632
5173						}
5174						position++
5175						goto l631
5176					l632:
5177						position, tokenIndex = position631, tokenIndex631
5178						if buffer[position] != rune('U') {
5179							goto l573
5180						}
5181						position++
5182					}
5183				l631:
5184					{
5185						position633, tokenIndex633 := position, tokenIndex
5186						if buffer[position] != rune('l') {
5187							goto l634
5188						}
5189						position++
5190						goto l633
5191					l634:
5192						position, tokenIndex = position633, tokenIndex633
5193						if buffer[position] != rune('L') {
5194							goto l573
5195						}
5196						position++
5197					}
5198				l633:
5199					if buffer[position] != rune(' ') {
5200						goto l573
5201					}
5202					position++
5203					if buffer[position] != rune('#') {
5204						goto l573
5205					}
5206					position++
5207					if c := buffer[position]; c < rune('0') || c > rune('9') {
5208						goto l573
5209					}
5210					position++
5211				}
5212			l575:
5213				add(ruleARMConstantTweak, position574)
5214			}
5215			return true
5216		l573:
5217			position, tokenIndex = position573, tokenIndex573
5218			return false
5219		},
5220		/* 44 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
5221		func() bool {
5222			position635, tokenIndex635 := position, tokenIndex
5223			{
5224				position636 := position
5225				{
5226					position637, tokenIndex637 := position, tokenIndex
5227					{
5228						position639, tokenIndex639 := position, tokenIndex
5229						if buffer[position] != rune('s') {
5230							goto l640
5231						}
5232						position++
5233						goto l639
5234					l640:
5235						position, tokenIndex = position639, tokenIndex639
5236						if buffer[position] != rune('S') {
5237							goto l638
5238						}
5239						position++
5240					}
5241				l639:
5242					{
5243						position641, tokenIndex641 := position, tokenIndex
5244						if buffer[position] != rune('p') {
5245							goto l642
5246						}
5247						position++
5248						goto l641
5249					l642:
5250						position, tokenIndex = position641, tokenIndex641
5251						if buffer[position] != rune('P') {
5252							goto l638
5253						}
5254						position++
5255					}
5256				l641:
5257					goto l637
5258				l638:
5259					position, tokenIndex = position637, tokenIndex637
5260					{
5261						position644, tokenIndex644 := position, tokenIndex
5262						if buffer[position] != rune('x') {
5263							goto l645
5264						}
5265						position++
5266						goto l644
5267					l645:
5268						position, tokenIndex = position644, tokenIndex644
5269						if buffer[position] != rune('w') {
5270							goto l646
5271						}
5272						position++
5273						goto l644
5274					l646:
5275						position, tokenIndex = position644, tokenIndex644
5276						if buffer[position] != rune('d') {
5277							goto l647
5278						}
5279						position++
5280						goto l644
5281					l647:
5282						position, tokenIndex = position644, tokenIndex644
5283						if buffer[position] != rune('q') {
5284							goto l648
5285						}
5286						position++
5287						goto l644
5288					l648:
5289						position, tokenIndex = position644, tokenIndex644
5290						if buffer[position] != rune('s') {
5291							goto l649
5292						}
5293						position++
5294						goto l644
5295					l649:
5296						position, tokenIndex = position644, tokenIndex644
5297						if buffer[position] != rune('h') {
5298							goto l650
5299						}
5300						position++
5301						goto l644
5302					l650:
5303						position, tokenIndex = position644, tokenIndex644
5304						if buffer[position] != rune('b') {
5305							goto l643
5306						}
5307						position++
5308					}
5309				l644:
5310					if c := buffer[position]; c < rune('0') || c > rune('9') {
5311						goto l643
5312					}
5313					position++
5314					{
5315						position651, tokenIndex651 := position, tokenIndex
5316						if c := buffer[position]; c < rune('0') || c > rune('9') {
5317							goto l651
5318						}
5319						position++
5320						goto l652
5321					l651:
5322						position, tokenIndex = position651, tokenIndex651
5323					}
5324				l652:
5325					goto l637
5326				l643:
5327					position, tokenIndex = position637, tokenIndex637
5328					{
5329						position654, tokenIndex654 := position, tokenIndex
5330						if buffer[position] != rune('x') {
5331							goto l655
5332						}
5333						position++
5334						goto l654
5335					l655:
5336						position, tokenIndex = position654, tokenIndex654
5337						if buffer[position] != rune('X') {
5338							goto l653
5339						}
5340						position++
5341					}
5342				l654:
5343					{
5344						position656, tokenIndex656 := position, tokenIndex
5345						if buffer[position] != rune('z') {
5346							goto l657
5347						}
5348						position++
5349						goto l656
5350					l657:
5351						position, tokenIndex = position656, tokenIndex656
5352						if buffer[position] != rune('Z') {
5353							goto l653
5354						}
5355						position++
5356					}
5357				l656:
5358					{
5359						position658, tokenIndex658 := position, tokenIndex
5360						if buffer[position] != rune('r') {
5361							goto l659
5362						}
5363						position++
5364						goto l658
5365					l659:
5366						position, tokenIndex = position658, tokenIndex658
5367						if buffer[position] != rune('R') {
5368							goto l653
5369						}
5370						position++
5371					}
5372				l658:
5373					goto l637
5374				l653:
5375					position, tokenIndex = position637, tokenIndex637
5376					{
5377						position661, tokenIndex661 := position, tokenIndex
5378						if buffer[position] != rune('w') {
5379							goto l662
5380						}
5381						position++
5382						goto l661
5383					l662:
5384						position, tokenIndex = position661, tokenIndex661
5385						if buffer[position] != rune('W') {
5386							goto l660
5387						}
5388						position++
5389					}
5390				l661:
5391					{
5392						position663, tokenIndex663 := position, tokenIndex
5393						if buffer[position] != rune('z') {
5394							goto l664
5395						}
5396						position++
5397						goto l663
5398					l664:
5399						position, tokenIndex = position663, tokenIndex663
5400						if buffer[position] != rune('Z') {
5401							goto l660
5402						}
5403						position++
5404					}
5405				l663:
5406					{
5407						position665, tokenIndex665 := position, tokenIndex
5408						if buffer[position] != rune('r') {
5409							goto l666
5410						}
5411						position++
5412						goto l665
5413					l666:
5414						position, tokenIndex = position665, tokenIndex665
5415						if buffer[position] != rune('R') {
5416							goto l660
5417						}
5418						position++
5419					}
5420				l665:
5421					goto l637
5422				l660:
5423					position, tokenIndex = position637, tokenIndex637
5424					{
5425						position668, tokenIndex668 := position, tokenIndex
5426						if buffer[position] != rune('n') {
5427							goto l669
5428						}
5429						position++
5430						goto l668
5431					l669:
5432						position, tokenIndex = position668, tokenIndex668
5433						if buffer[position] != rune('N') {
5434							goto l667
5435						}
5436						position++
5437					}
5438				l668:
5439					{
5440						position670, tokenIndex670 := position, tokenIndex
5441						if buffer[position] != rune('z') {
5442							goto l671
5443						}
5444						position++
5445						goto l670
5446					l671:
5447						position, tokenIndex = position670, tokenIndex670
5448						if buffer[position] != rune('Z') {
5449							goto l667
5450						}
5451						position++
5452					}
5453				l670:
5454					{
5455						position672, tokenIndex672 := position, tokenIndex
5456						if buffer[position] != rune('c') {
5457							goto l673
5458						}
5459						position++
5460						goto l672
5461					l673:
5462						position, tokenIndex = position672, tokenIndex672
5463						if buffer[position] != rune('C') {
5464							goto l667
5465						}
5466						position++
5467					}
5468				l672:
5469					{
5470						position674, tokenIndex674 := position, tokenIndex
5471						if buffer[position] != rune('v') {
5472							goto l675
5473						}
5474						position++
5475						goto l674
5476					l675:
5477						position, tokenIndex = position674, tokenIndex674
5478						if buffer[position] != rune('V') {
5479							goto l667
5480						}
5481						position++
5482					}
5483				l674:
5484					goto l637
5485				l667:
5486					position, tokenIndex = position637, tokenIndex637
5487					if !_rules[ruleSVE2PredicateRegister]() {
5488						goto l676
5489					}
5490					goto l637
5491				l676:
5492					position, tokenIndex = position637, tokenIndex637
5493					if !_rules[ruleARMVectorRegister]() {
5494						goto l677
5495					}
5496					goto l637
5497				l677:
5498					position, tokenIndex = position637, tokenIndex637
5499					if !_rules[ruleSVE2SpecialValue]() {
5500						goto l678
5501					}
5502					goto l637
5503				l678:
5504					position, tokenIndex = position637, tokenIndex637
5505					if buffer[position] != rune('{') {
5506						goto l635
5507					}
5508					position++
5509					{
5510						position679, tokenIndex679 := position, tokenIndex
5511						if !_rules[ruleWS]() {
5512							goto l679
5513						}
5514						goto l680
5515					l679:
5516						position, tokenIndex = position679, tokenIndex679
5517					}
5518				l680:
5519					if !_rules[ruleARMVectorRegister]() {
5520						goto l635
5521					}
5522				l681:
5523					{
5524						position682, tokenIndex682 := position, tokenIndex
5525						if buffer[position] != rune(',') {
5526							goto l682
5527						}
5528						position++
5529						{
5530							position683, tokenIndex683 := position, tokenIndex
5531							if !_rules[ruleWS]() {
5532								goto l683
5533							}
5534							goto l684
5535						l683:
5536							position, tokenIndex = position683, tokenIndex683
5537						}
5538					l684:
5539						if !_rules[ruleARMVectorRegister]() {
5540							goto l682
5541						}
5542						goto l681
5543					l682:
5544						position, tokenIndex = position682, tokenIndex682
5545					}
5546					{
5547						position685, tokenIndex685 := position, tokenIndex
5548						if !_rules[ruleWS]() {
5549							goto l685
5550						}
5551						goto l686
5552					l685:
5553						position, tokenIndex = position685, tokenIndex685
5554					}
5555				l686:
5556					if buffer[position] != rune('}') {
5557						goto l635
5558					}
5559					position++
5560					{
5561						position687, tokenIndex687 := position, tokenIndex
5562						if buffer[position] != rune('[') {
5563							goto l687
5564						}
5565						position++
5566						if c := buffer[position]; c < rune('0') || c > rune('9') {
5567							goto l687
5568						}
5569						position++
5570						{
5571							position689, tokenIndex689 := position, tokenIndex
5572							if c := buffer[position]; c < rune('0') || c > rune('9') {
5573								goto l689
5574							}
5575							position++
5576							goto l690
5577						l689:
5578							position, tokenIndex = position689, tokenIndex689
5579						}
5580					l690:
5581						if buffer[position] != rune(']') {
5582							goto l687
5583						}
5584						position++
5585						goto l688
5586					l687:
5587						position, tokenIndex = position687, tokenIndex687
5588					}
5589				l688:
5590				}
5591			l637:
5592				add(ruleARMRegister, position636)
5593			}
5594			return true
5595		l635:
5596			position, tokenIndex = position635, tokenIndex635
5597			return false
5598		},
5599		/* 45 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
5600		func() bool {
5601			position691, tokenIndex691 := position, tokenIndex
5602			{
5603				position692 := position
5604				{
5605					position693, tokenIndex693 := position, tokenIndex
5606					if buffer[position] != rune('p') {
5607						goto l694
5608					}
5609					position++
5610					goto l693
5611				l694:
5612					position, tokenIndex = position693, tokenIndex693
5613					if buffer[position] != rune('v') {
5614						goto l695
5615					}
5616					position++
5617					goto l693
5618				l695:
5619					position, tokenIndex = position693, tokenIndex693
5620					if buffer[position] != rune('z') {
5621						goto l691
5622					}
5623					position++
5624				}
5625			l693:
5626				if c := buffer[position]; c < rune('0') || c > rune('9') {
5627					goto l691
5628				}
5629				position++
5630				{
5631					position696, tokenIndex696 := position, tokenIndex
5632					if c := buffer[position]; c < rune('0') || c > rune('9') {
5633						goto l696
5634					}
5635					position++
5636					goto l697
5637				l696:
5638					position, tokenIndex = position696, tokenIndex696
5639				}
5640			l697:
5641				{
5642					position698, tokenIndex698 := position, tokenIndex
5643					{
5644						position699, tokenIndex699 := position, tokenIndex
5645						if c := buffer[position]; c < rune('0') || c > rune('9') {
5646							goto l700
5647						}
5648						position++
5649						goto l699
5650					l700:
5651						position, tokenIndex = position699, tokenIndex699
5652						if c := buffer[position]; c < rune('0') || c > rune('9') {
5653							goto l701
5654						}
5655						position++
5656						goto l699
5657					l701:
5658						position, tokenIndex = position699, tokenIndex699
5659						{
5660							position703, tokenIndex703 := position, tokenIndex
5661							if c := buffer[position]; c < rune('a') || c > rune('z') {
5662								goto l704
5663							}
5664							position++
5665							goto l703
5666						l704:
5667							position, tokenIndex = position703, tokenIndex703
5668							if c := buffer[position]; c < rune('A') || c > rune('Z') {
5669								goto l702
5670							}
5671							position++
5672						}
5673					l703:
5674						goto l699
5675					l702:
5676						position, tokenIndex = position699, tokenIndex699
5677						if buffer[position] != rune('_') {
5678							goto l698
5679						}
5680						position++
5681					}
5682				l699:
5683					goto l691
5684				l698:
5685					position, tokenIndex = position698, tokenIndex698
5686				}
5687				{
5688					position705, tokenIndex705 := position, tokenIndex
5689					if buffer[position] != rune('.') {
5690						goto l705
5691					}
5692					position++
5693				l707:
5694					{
5695						position708, tokenIndex708 := position, tokenIndex
5696						if c := buffer[position]; c < rune('0') || c > rune('9') {
5697							goto l708
5698						}
5699						position++
5700						goto l707
5701					l708:
5702						position, tokenIndex = position708, tokenIndex708
5703					}
5704					{
5705						position709, tokenIndex709 := position, tokenIndex
5706						if buffer[position] != rune('b') {
5707							goto l710
5708						}
5709						position++
5710						goto l709
5711					l710:
5712						position, tokenIndex = position709, tokenIndex709
5713						if buffer[position] != rune('s') {
5714							goto l711
5715						}
5716						position++
5717						goto l709
5718					l711:
5719						position, tokenIndex = position709, tokenIndex709
5720						if buffer[position] != rune('d') {
5721							goto l712
5722						}
5723						position++
5724						goto l709
5725					l712:
5726						position, tokenIndex = position709, tokenIndex709
5727						if buffer[position] != rune('h') {
5728							goto l713
5729						}
5730						position++
5731						goto l709
5732					l713:
5733						position, tokenIndex = position709, tokenIndex709
5734						if buffer[position] != rune('q') {
5735							goto l705
5736						}
5737						position++
5738					}
5739				l709:
5740					{
5741						position714, tokenIndex714 := position, tokenIndex
5742						if buffer[position] != rune('[') {
5743							goto l714
5744						}
5745						position++
5746						if c := buffer[position]; c < rune('0') || c > rune('9') {
5747							goto l714
5748						}
5749						position++
5750						{
5751							position716, tokenIndex716 := position, tokenIndex
5752							if c := buffer[position]; c < rune('0') || c > rune('9') {
5753								goto l716
5754							}
5755							position++
5756							goto l717
5757						l716:
5758							position, tokenIndex = position716, tokenIndex716
5759						}
5760					l717:
5761						if buffer[position] != rune(']') {
5762							goto l714
5763						}
5764						position++
5765						goto l715
5766					l714:
5767						position, tokenIndex = position714, tokenIndex714
5768					}
5769				l715:
5770					goto l706
5771				l705:
5772					position, tokenIndex = position705, tokenIndex705
5773				}
5774			l706:
5775				add(ruleARMVectorRegister, position692)
5776			}
5777			return true
5778		l691:
5779			position, tokenIndex = position691, tokenIndex691
5780			return false
5781		},
5782		/* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
5783		func() bool {
5784			position718, tokenIndex718 := position, tokenIndex
5785			{
5786				position719 := position
5787				{
5788					position720, tokenIndex720 := position, tokenIndex
5789					if buffer[position] != rune('p') {
5790						goto l721
5791					}
5792					position++
5793					goto l720
5794				l721:
5795					position, tokenIndex = position720, tokenIndex720
5796					if buffer[position] != rune('P') {
5797						goto l718
5798					}
5799					position++
5800				}
5801			l720:
5802				if c := buffer[position]; c < rune('0') || c > rune('9') {
5803					goto l718
5804				}
5805				position++
5806				{
5807					position722, tokenIndex722 := position, tokenIndex
5808					if c := buffer[position]; c < rune('0') || c > rune('9') {
5809						goto l722
5810					}
5811					position++
5812					goto l723
5813				l722:
5814					position, tokenIndex = position722, tokenIndex722
5815				}
5816			l723:
5817				if buffer[position] != rune('/') {
5818					goto l718
5819				}
5820				position++
5821				{
5822					position724, tokenIndex724 := position, tokenIndex
5823					if buffer[position] != rune('m') {
5824						goto l725
5825					}
5826					position++
5827					goto l724
5828				l725:
5829					position, tokenIndex = position724, tokenIndex724
5830					if buffer[position] != rune('M') {
5831						goto l726
5832					}
5833					position++
5834					goto l724
5835				l726:
5836					position, tokenIndex = position724, tokenIndex724
5837					{
5838						position727, tokenIndex727 := position, tokenIndex
5839						if buffer[position] != rune('z') {
5840							goto l728
5841						}
5842						position++
5843						goto l727
5844					l728:
5845						position, tokenIndex = position727, tokenIndex727
5846						if buffer[position] != rune('Z') {
5847							goto l718
5848						}
5849						position++
5850					}
5851				l727:
5852				}
5853			l724:
5854				add(ruleSVE2PredicateRegister, position719)
5855			}
5856			return true
5857		l718:
5858			position, tokenIndex = position718, tokenIndex718
5859			return false
5860		},
5861		/* 47 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
5862		func() bool {
5863			position729, tokenIndex729 := position, tokenIndex
5864			{
5865				position730 := position
5866				{
5867					position731, tokenIndex731 := position, tokenIndex
5868					{
5869						position733, tokenIndex733 := position, tokenIndex
5870						if buffer[position] != rune('p') {
5871							goto l734
5872						}
5873						position++
5874						goto l733
5875					l734:
5876						position, tokenIndex = position733, tokenIndex733
5877						if buffer[position] != rune('P') {
5878							goto l732
5879						}
5880						position++
5881					}
5882				l733:
5883					{
5884						position735, tokenIndex735 := position, tokenIndex
5885						if buffer[position] != rune('o') {
5886							goto l736
5887						}
5888						position++
5889						goto l735
5890					l736:
5891						position, tokenIndex = position735, tokenIndex735
5892						if buffer[position] != rune('O') {
5893							goto l732
5894						}
5895						position++
5896					}
5897				l735:
5898					{
5899						position737, tokenIndex737 := position, tokenIndex
5900						if buffer[position] != rune('w') {
5901							goto l738
5902						}
5903						position++
5904						goto l737
5905					l738:
5906						position, tokenIndex = position737, tokenIndex737
5907						if buffer[position] != rune('W') {
5908							goto l732
5909						}
5910						position++
5911					}
5912				l737:
5913					if buffer[position] != rune('2') {
5914						goto l732
5915					}
5916					position++
5917					goto l731
5918				l732:
5919					position, tokenIndex = position731, tokenIndex731
5920					{
5921						position740, tokenIndex740 := position, tokenIndex
5922						if buffer[position] != rune('v') {
5923							goto l741
5924						}
5925						position++
5926						goto l740
5927					l741:
5928						position, tokenIndex = position740, tokenIndex740
5929						if buffer[position] != rune('V') {
5930							goto l739
5931						}
5932						position++
5933					}
5934				l740:
5935					{
5936						position742, tokenIndex742 := position, tokenIndex
5937						if buffer[position] != rune('l') {
5938							goto l743
5939						}
5940						position++
5941						goto l742
5942					l743:
5943						position, tokenIndex = position742, tokenIndex742
5944						if buffer[position] != rune('L') {
5945							goto l739
5946						}
5947						position++
5948					}
5949				l742:
5950					{
5951						position744, tokenIndex744 := position, tokenIndex
5952						if buffer[position] != rune('1') {
5953							goto l745
5954						}
5955						position++
5956						goto l744
5957					l745:
5958						position, tokenIndex = position744, tokenIndex744
5959						if buffer[position] != rune('2') {
5960							goto l746
5961						}
5962						position++
5963						goto l744
5964					l746:
5965						position, tokenIndex = position744, tokenIndex744
5966						if buffer[position] != rune('3') {
5967							goto l747
5968						}
5969						position++
5970						goto l744
5971					l747:
5972						position, tokenIndex = position744, tokenIndex744
5973						if buffer[position] != rune('4') {
5974							goto l748
5975						}
5976						position++
5977						goto l744
5978					l748:
5979						position, tokenIndex = position744, tokenIndex744
5980						if buffer[position] != rune('5') {
5981							goto l749
5982						}
5983						position++
5984						goto l744
5985					l749:
5986						position, tokenIndex = position744, tokenIndex744
5987						if buffer[position] != rune('6') {
5988							goto l750
5989						}
5990						position++
5991						goto l744
5992					l750:
5993						position, tokenIndex = position744, tokenIndex744
5994						if buffer[position] != rune('7') {
5995							goto l751
5996						}
5997						position++
5998						goto l744
5999					l751:
6000						position, tokenIndex = position744, tokenIndex744
6001						if buffer[position] != rune('8') {
6002							goto l739
6003						}
6004						position++
6005					}
6006				l744:
6007					{
6008						position752, tokenIndex752 := position, tokenIndex
6009						if c := buffer[position]; c < rune('0') || c > rune('9') {
6010							goto l752
6011						}
6012						position++
6013						goto l739
6014					l752:
6015						position, tokenIndex = position752, tokenIndex752
6016					}
6017					goto l731
6018				l739:
6019					position, tokenIndex = position731, tokenIndex731
6020					{
6021						position754, tokenIndex754 := position, tokenIndex
6022						if buffer[position] != rune('v') {
6023							goto l755
6024						}
6025						position++
6026						goto l754
6027					l755:
6028						position, tokenIndex = position754, tokenIndex754
6029						if buffer[position] != rune('V') {
6030							goto l753
6031						}
6032						position++
6033					}
6034				l754:
6035					{
6036						position756, tokenIndex756 := position, tokenIndex
6037						if buffer[position] != rune('l') {
6038							goto l757
6039						}
6040						position++
6041						goto l756
6042					l757:
6043						position, tokenIndex = position756, tokenIndex756
6044						if buffer[position] != rune('L') {
6045							goto l753
6046						}
6047						position++
6048					}
6049				l756:
6050					if buffer[position] != rune('1') {
6051						goto l753
6052					}
6053					position++
6054					if buffer[position] != rune('6') {
6055						goto l753
6056					}
6057					position++
6058					goto l731
6059				l753:
6060					position, tokenIndex = position731, tokenIndex731
6061					{
6062						position759, tokenIndex759 := position, tokenIndex
6063						if buffer[position] != rune('v') {
6064							goto l760
6065						}
6066						position++
6067						goto l759
6068					l760:
6069						position, tokenIndex = position759, tokenIndex759
6070						if buffer[position] != rune('V') {
6071							goto l758
6072						}
6073						position++
6074					}
6075				l759:
6076					{
6077						position761, tokenIndex761 := position, tokenIndex
6078						if buffer[position] != rune('l') {
6079							goto l762
6080						}
6081						position++
6082						goto l761
6083					l762:
6084						position, tokenIndex = position761, tokenIndex761
6085						if buffer[position] != rune('L') {
6086							goto l758
6087						}
6088						position++
6089					}
6090				l761:
6091					if buffer[position] != rune('3') {
6092						goto l758
6093					}
6094					position++
6095					if buffer[position] != rune('2') {
6096						goto l758
6097					}
6098					position++
6099					goto l731
6100				l758:
6101					position, tokenIndex = position731, tokenIndex731
6102					{
6103						position764, tokenIndex764 := position, tokenIndex
6104						if buffer[position] != rune('v') {
6105							goto l765
6106						}
6107						position++
6108						goto l764
6109					l765:
6110						position, tokenIndex = position764, tokenIndex764
6111						if buffer[position] != rune('V') {
6112							goto l763
6113						}
6114						position++
6115					}
6116				l764:
6117					{
6118						position766, tokenIndex766 := position, tokenIndex
6119						if buffer[position] != rune('l') {
6120							goto l767
6121						}
6122						position++
6123						goto l766
6124					l767:
6125						position, tokenIndex = position766, tokenIndex766
6126						if buffer[position] != rune('L') {
6127							goto l763
6128						}
6129						position++
6130					}
6131				l766:
6132					if buffer[position] != rune('6') {
6133						goto l763
6134					}
6135					position++
6136					if buffer[position] != rune('4') {
6137						goto l763
6138					}
6139					position++
6140					goto l731
6141				l763:
6142					position, tokenIndex = position731, tokenIndex731
6143					{
6144						position769, tokenIndex769 := position, tokenIndex
6145						if buffer[position] != rune('v') {
6146							goto l770
6147						}
6148						position++
6149						goto l769
6150					l770:
6151						position, tokenIndex = position769, tokenIndex769
6152						if buffer[position] != rune('V') {
6153							goto l768
6154						}
6155						position++
6156					}
6157				l769:
6158					{
6159						position771, tokenIndex771 := position, tokenIndex
6160						if buffer[position] != rune('l') {
6161							goto l772
6162						}
6163						position++
6164						goto l771
6165					l772:
6166						position, tokenIndex = position771, tokenIndex771
6167						if buffer[position] != rune('L') {
6168							goto l768
6169						}
6170						position++
6171					}
6172				l771:
6173					if buffer[position] != rune('1') {
6174						goto l768
6175					}
6176					position++
6177					if buffer[position] != rune('2') {
6178						goto l768
6179					}
6180					position++
6181					if buffer[position] != rune('8') {
6182						goto l768
6183					}
6184					position++
6185					goto l731
6186				l768:
6187					position, tokenIndex = position731, tokenIndex731
6188					{
6189						position774, tokenIndex774 := position, tokenIndex
6190						if buffer[position] != rune('v') {
6191							goto l775
6192						}
6193						position++
6194						goto l774
6195					l775:
6196						position, tokenIndex = position774, tokenIndex774
6197						if buffer[position] != rune('V') {
6198							goto l773
6199						}
6200						position++
6201					}
6202				l774:
6203					{
6204						position776, tokenIndex776 := position, tokenIndex
6205						if buffer[position] != rune('l') {
6206							goto l777
6207						}
6208						position++
6209						goto l776
6210					l777:
6211						position, tokenIndex = position776, tokenIndex776
6212						if buffer[position] != rune('L') {
6213							goto l773
6214						}
6215						position++
6216					}
6217				l776:
6218					if buffer[position] != rune('2') {
6219						goto l773
6220					}
6221					position++
6222					if buffer[position] != rune('5') {
6223						goto l773
6224					}
6225					position++
6226					if buffer[position] != rune('6') {
6227						goto l773
6228					}
6229					position++
6230					goto l731
6231				l773:
6232					position, tokenIndex = position731, tokenIndex731
6233					{
6234						position779, tokenIndex779 := position, tokenIndex
6235						if buffer[position] != rune('m') {
6236							goto l780
6237						}
6238						position++
6239						goto l779
6240					l780:
6241						position, tokenIndex = position779, tokenIndex779
6242						if buffer[position] != rune('M') {
6243							goto l778
6244						}
6245						position++
6246					}
6247				l779:
6248					{
6249						position781, tokenIndex781 := position, tokenIndex
6250						if buffer[position] != rune('u') {
6251							goto l782
6252						}
6253						position++
6254						goto l781
6255					l782:
6256						position, tokenIndex = position781, tokenIndex781
6257						if buffer[position] != rune('U') {
6258							goto l778
6259						}
6260						position++
6261					}
6262				l781:
6263					{
6264						position783, tokenIndex783 := position, tokenIndex
6265						if buffer[position] != rune('l') {
6266							goto l784
6267						}
6268						position++
6269						goto l783
6270					l784:
6271						position, tokenIndex = position783, tokenIndex783
6272						if buffer[position] != rune('L') {
6273							goto l778
6274						}
6275						position++
6276					}
6277				l783:
6278					if buffer[position] != rune('3') {
6279						goto l778
6280					}
6281					position++
6282					goto l731
6283				l778:
6284					position, tokenIndex = position731, tokenIndex731
6285					{
6286						position786, tokenIndex786 := position, tokenIndex
6287						if buffer[position] != rune('m') {
6288							goto l787
6289						}
6290						position++
6291						goto l786
6292					l787:
6293						position, tokenIndex = position786, tokenIndex786
6294						if buffer[position] != rune('M') {
6295							goto l785
6296						}
6297						position++
6298					}
6299				l786:
6300					{
6301						position788, tokenIndex788 := position, tokenIndex
6302						if buffer[position] != rune('u') {
6303							goto l789
6304						}
6305						position++
6306						goto l788
6307					l789:
6308						position, tokenIndex = position788, tokenIndex788
6309						if buffer[position] != rune('U') {
6310							goto l785
6311						}
6312						position++
6313					}
6314				l788:
6315					{
6316						position790, tokenIndex790 := position, tokenIndex
6317						if buffer[position] != rune('l') {
6318							goto l791
6319						}
6320						position++
6321						goto l790
6322					l791:
6323						position, tokenIndex = position790, tokenIndex790
6324						if buffer[position] != rune('L') {
6325							goto l785
6326						}
6327						position++
6328					}
6329				l790:
6330					if buffer[position] != rune('4') {
6331						goto l785
6332					}
6333					position++
6334					goto l731
6335				l785:
6336					position, tokenIndex = position731, tokenIndex731
6337					{
6338						position792, tokenIndex792 := position, tokenIndex
6339						if buffer[position] != rune('a') {
6340							goto l793
6341						}
6342						position++
6343						goto l792
6344					l793:
6345						position, tokenIndex = position792, tokenIndex792
6346						if buffer[position] != rune('A') {
6347							goto l729
6348						}
6349						position++
6350					}
6351				l792:
6352					{
6353						position794, tokenIndex794 := position, tokenIndex
6354						if buffer[position] != rune('l') {
6355							goto l795
6356						}
6357						position++
6358						goto l794
6359					l795:
6360						position, tokenIndex = position794, tokenIndex794
6361						if buffer[position] != rune('L') {
6362							goto l729
6363						}
6364						position++
6365					}
6366				l794:
6367					{
6368						position796, tokenIndex796 := position, tokenIndex
6369						if buffer[position] != rune('l') {
6370							goto l797
6371						}
6372						position++
6373						goto l796
6374					l797:
6375						position, tokenIndex = position796, tokenIndex796
6376						if buffer[position] != rune('L') {
6377							goto l729
6378						}
6379						position++
6380					}
6381				l796:
6382				}
6383			l731:
6384				{
6385					position798, tokenIndex798 := position, tokenIndex
6386					{
6387						position799, tokenIndex799 := position, tokenIndex
6388						if c := buffer[position]; c < rune('0') || c > rune('9') {
6389							goto l800
6390						}
6391						position++
6392						goto l799
6393					l800:
6394						position, tokenIndex = position799, tokenIndex799
6395						if c := buffer[position]; c < rune('0') || c > rune('9') {
6396							goto l801
6397						}
6398						position++
6399						goto l799
6400					l801:
6401						position, tokenIndex = position799, tokenIndex799
6402						{
6403							position803, tokenIndex803 := position, tokenIndex
6404							if c := buffer[position]; c < rune('a') || c > rune('z') {
6405								goto l804
6406							}
6407							position++
6408							goto l803
6409						l804:
6410							position, tokenIndex = position803, tokenIndex803
6411							if c := buffer[position]; c < rune('A') || c > rune('Z') {
6412								goto l802
6413							}
6414							position++
6415						}
6416					l803:
6417						goto l799
6418					l802:
6419						position, tokenIndex = position799, tokenIndex799
6420						if buffer[position] != rune('_') {
6421							goto l798
6422						}
6423						position++
6424					}
6425				l799:
6426					goto l729
6427				l798:
6428					position, tokenIndex = position798, tokenIndex798
6429				}
6430				add(ruleSVE2SpecialValue, position730)
6431			}
6432			return true
6433		l729:
6434			position, tokenIndex = position729, tokenIndex729
6435			return false
6436		},
6437		/* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
6438		func() bool {
6439			position805, tokenIndex805 := position, tokenIndex
6440			{
6441				position806 := position
6442				{
6443					position807, tokenIndex807 := position, tokenIndex
6444					if !_rules[ruleSymbolRef]() {
6445						goto l808
6446					}
6447					if !_rules[ruleBaseIndexScale]() {
6448						goto l808
6449					}
6450					goto l807
6451				l808:
6452					position, tokenIndex = position807, tokenIndex807
6453					if !_rules[ruleSymbolRef]() {
6454						goto l809
6455					}
6456					goto l807
6457				l809:
6458					position, tokenIndex = position807, tokenIndex807
6459					if !_rules[ruleLow12BitsSymbolRef]() {
6460						goto l810
6461					}
6462					goto l807
6463				l810:
6464					position, tokenIndex = position807, tokenIndex807
6465				l812:
6466					{
6467						position813, tokenIndex813 := position, tokenIndex
6468						if !_rules[ruleOffset]() {
6469							goto l813
6470						}
6471						goto l812
6472					l813:
6473						position, tokenIndex = position813, tokenIndex813
6474					}
6475					if !_rules[ruleBaseIndexScale]() {
6476						goto l811
6477					}
6478					goto l807
6479				l811:
6480					position, tokenIndex = position807, tokenIndex807
6481					if !_rules[ruleSegmentRegister]() {
6482						goto l814
6483					}
6484					if !_rules[ruleOffset]() {
6485						goto l814
6486					}
6487					if !_rules[ruleBaseIndexScale]() {
6488						goto l814
6489					}
6490					goto l807
6491				l814:
6492					position, tokenIndex = position807, tokenIndex807
6493					if !_rules[ruleSegmentRegister]() {
6494						goto l815
6495					}
6496					if !_rules[ruleBaseIndexScale]() {
6497						goto l815
6498					}
6499					goto l807
6500				l815:
6501					position, tokenIndex = position807, tokenIndex807
6502					if !_rules[ruleSegmentRegister]() {
6503						goto l816
6504					}
6505					if !_rules[ruleOffset]() {
6506						goto l816
6507					}
6508					goto l807
6509				l816:
6510					position, tokenIndex = position807, tokenIndex807
6511					if !_rules[ruleARMBaseIndexScale]() {
6512						goto l817
6513					}
6514					goto l807
6515				l817:
6516					position, tokenIndex = position807, tokenIndex807
6517					if !_rules[ruleBaseIndexScale]() {
6518						goto l805
6519					}
6520				}
6521			l807:
6522				add(ruleMemoryRef, position806)
6523			}
6524			return true
6525		l805:
6526			position, tokenIndex = position805, tokenIndex805
6527			return false
6528		},
6529		/* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
6530		func() bool {
6531			position818, tokenIndex818 := position, tokenIndex
6532			{
6533				position819 := position
6534				{
6535					position820, tokenIndex820 := position, tokenIndex
6536				l822:
6537					{
6538						position823, tokenIndex823 := position, tokenIndex
6539						if !_rules[ruleOffset]() {
6540							goto l823
6541						}
6542						goto l822
6543					l823:
6544						position, tokenIndex = position823, tokenIndex823
6545					}
6546					if buffer[position] != rune('+') {
6547						goto l820
6548					}
6549					position++
6550					goto l821
6551				l820:
6552					position, tokenIndex = position820, tokenIndex820
6553				}
6554			l821:
6555				{
6556					position824, tokenIndex824 := position, tokenIndex
6557					if !_rules[ruleLocalSymbol]() {
6558						goto l825
6559					}
6560					goto l824
6561				l825:
6562					position, tokenIndex = position824, tokenIndex824
6563					if !_rules[ruleSymbolName]() {
6564						goto l818
6565					}
6566				}
6567			l824:
6568			l826:
6569				{
6570					position827, tokenIndex827 := position, tokenIndex
6571					if !_rules[ruleOffset]() {
6572						goto l827
6573					}
6574					goto l826
6575				l827:
6576					position, tokenIndex = position827, tokenIndex827
6577				}
6578				{
6579					position828, tokenIndex828 := position, tokenIndex
6580					if buffer[position] != rune('@') {
6581						goto l828
6582					}
6583					position++
6584					if !_rules[ruleSection]() {
6585						goto l828
6586					}
6587				l830:
6588					{
6589						position831, tokenIndex831 := position, tokenIndex
6590						if !_rules[ruleOffset]() {
6591							goto l831
6592						}
6593						goto l830
6594					l831:
6595						position, tokenIndex = position831, tokenIndex831
6596					}
6597					goto l829
6598				l828:
6599					position, tokenIndex = position828, tokenIndex828
6600				}
6601			l829:
6602				add(ruleSymbolRef, position819)
6603			}
6604			return true
6605		l818:
6606			position, tokenIndex = position818, tokenIndex818
6607			return false
6608		},
6609		/* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
6610		func() bool {
6611			position832, tokenIndex832 := position, tokenIndex
6612			{
6613				position833 := position
6614				if buffer[position] != rune(':') {
6615					goto l832
6616				}
6617				position++
6618				{
6619					position834, tokenIndex834 := position, tokenIndex
6620					if buffer[position] != rune('l') {
6621						goto l835
6622					}
6623					position++
6624					goto l834
6625				l835:
6626					position, tokenIndex = position834, tokenIndex834
6627					if buffer[position] != rune('L') {
6628						goto l832
6629					}
6630					position++
6631				}
6632			l834:
6633				{
6634					position836, tokenIndex836 := position, tokenIndex
6635					if buffer[position] != rune('o') {
6636						goto l837
6637					}
6638					position++
6639					goto l836
6640				l837:
6641					position, tokenIndex = position836, tokenIndex836
6642					if buffer[position] != rune('O') {
6643						goto l832
6644					}
6645					position++
6646				}
6647			l836:
6648				if buffer[position] != rune('1') {
6649					goto l832
6650				}
6651				position++
6652				if buffer[position] != rune('2') {
6653					goto l832
6654				}
6655				position++
6656				if buffer[position] != rune(':') {
6657					goto l832
6658				}
6659				position++
6660				{
6661					position838, tokenIndex838 := position, tokenIndex
6662					if !_rules[ruleLocalSymbol]() {
6663						goto l839
6664					}
6665					goto l838
6666				l839:
6667					position, tokenIndex = position838, tokenIndex838
6668					if !_rules[ruleSymbolName]() {
6669						goto l832
6670					}
6671				}
6672			l838:
6673				{
6674					position840, tokenIndex840 := position, tokenIndex
6675					if !_rules[ruleOffset]() {
6676						goto l840
6677					}
6678					goto l841
6679				l840:
6680					position, tokenIndex = position840, tokenIndex840
6681				}
6682			l841:
6683				add(ruleLow12BitsSymbolRef, position833)
6684			}
6685			return true
6686		l832:
6687			position, tokenIndex = position832, tokenIndex832
6688			return false
6689		},
6690		/* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
6691		func() bool {
6692			position842, tokenIndex842 := position, tokenIndex
6693			{
6694				position843 := position
6695				if buffer[position] != rune('[') {
6696					goto l842
6697				}
6698				position++
6699				if !_rules[ruleARMRegister]() {
6700					goto l842
6701				}
6702				{
6703					position844, tokenIndex844 := position, tokenIndex
6704					if buffer[position] != rune(',') {
6705						goto l844
6706					}
6707					position++
6708					{
6709						position846, tokenIndex846 := position, tokenIndex
6710						if !_rules[ruleWS]() {
6711							goto l846
6712						}
6713						goto l847
6714					l846:
6715						position, tokenIndex = position846, tokenIndex846
6716					}
6717				l847:
6718					{
6719						position848, tokenIndex848 := position, tokenIndex
6720						if buffer[position] != rune('#') {
6721							goto l849
6722						}
6723						position++
6724						if !_rules[ruleOffset]() {
6725							goto l849
6726						}
6727						{
6728							position850, tokenIndex850 := position, tokenIndex
6729							{
6730								position852, tokenIndex852 := position, tokenIndex
6731								if buffer[position] != rune('*') {
6732									goto l853
6733								}
6734								position++
6735								if c := buffer[position]; c < rune('0') || c > rune('9') {
6736									goto l853
6737								}
6738								position++
6739							l854:
6740								{
6741									position855, tokenIndex855 := position, tokenIndex
6742									if c := buffer[position]; c < rune('0') || c > rune('9') {
6743										goto l855
6744									}
6745									position++
6746									goto l854
6747								l855:
6748									position, tokenIndex = position855, tokenIndex855
6749								}
6750								goto l852
6751							l853:
6752								position, tokenIndex = position852, tokenIndex852
6753								if buffer[position] != rune('*') {
6754									goto l856
6755								}
6756								position++
6757								if buffer[position] != rune('(') {
6758									goto l856
6759								}
6760								position++
6761								if c := buffer[position]; c < rune('0') || c > rune('9') {
6762									goto l856
6763								}
6764								position++
6765							l857:
6766								{
6767									position858, tokenIndex858 := position, tokenIndex
6768									if c := buffer[position]; c < rune('0') || c > rune('9') {
6769										goto l858
6770									}
6771									position++
6772									goto l857
6773								l858:
6774									position, tokenIndex = position858, tokenIndex858
6775								}
6776								if !_rules[ruleOperator]() {
6777									goto l856
6778								}
6779								if c := buffer[position]; c < rune('0') || c > rune('9') {
6780									goto l856
6781								}
6782								position++
6783							l859:
6784								{
6785									position860, tokenIndex860 := position, tokenIndex
6786									if c := buffer[position]; c < rune('0') || c > rune('9') {
6787										goto l860
6788									}
6789									position++
6790									goto l859
6791								l860:
6792									position, tokenIndex = position860, tokenIndex860
6793								}
6794								if buffer[position] != rune(')') {
6795									goto l856
6796								}
6797								position++
6798								goto l852
6799							l856:
6800								position, tokenIndex = position852, tokenIndex852
6801							l861:
6802								{
6803									position862, tokenIndex862 := position, tokenIndex
6804									if buffer[position] != rune('+') {
6805										goto l862
6806									}
6807									position++
6808									if c := buffer[position]; c < rune('0') || c > rune('9') {
6809										goto l862
6810									}
6811									position++
6812								l863:
6813									{
6814										position864, tokenIndex864 := position, tokenIndex
6815										if c := buffer[position]; c < rune('0') || c > rune('9') {
6816											goto l864
6817										}
6818										position++
6819										goto l863
6820									l864:
6821										position, tokenIndex = position864, tokenIndex864
6822									}
6823									goto l861
6824								l862:
6825									position, tokenIndex = position862, tokenIndex862
6826								}
6827							}
6828						l852:
6829							goto l851
6830
6831							position, tokenIndex = position850, tokenIndex850
6832						}
6833					l851:
6834						goto l848
6835					l849:
6836						position, tokenIndex = position848, tokenIndex848
6837						if !_rules[ruleARMGOTLow12]() {
6838							goto l865
6839						}
6840						goto l848
6841					l865:
6842						position, tokenIndex = position848, tokenIndex848
6843						if !_rules[ruleLow12BitsSymbolRef]() {
6844							goto l866
6845						}
6846						goto l848
6847					l866:
6848						position, tokenIndex = position848, tokenIndex848
6849						if !_rules[ruleARMRegister]() {
6850							goto l844
6851						}
6852					}
6853				l848:
6854					{
6855						position867, tokenIndex867 := position, tokenIndex
6856						if buffer[position] != rune(',') {
6857							goto l867
6858						}
6859						position++
6860						{
6861							position869, tokenIndex869 := position, tokenIndex
6862							if !_rules[ruleWS]() {
6863								goto l869
6864							}
6865							goto l870
6866						l869:
6867							position, tokenIndex = position869, tokenIndex869
6868						}
6869					l870:
6870						if !_rules[ruleARMConstantTweak]() {
6871							goto l867
6872						}
6873						goto l868
6874					l867:
6875						position, tokenIndex = position867, tokenIndex867
6876					}
6877				l868:
6878					goto l845
6879				l844:
6880					position, tokenIndex = position844, tokenIndex844
6881				}
6882			l845:
6883				if buffer[position] != rune(']') {
6884					goto l842
6885				}
6886				position++
6887				{
6888					position871, tokenIndex871 := position, tokenIndex
6889					if !_rules[ruleARMPostincrement]() {
6890						goto l871
6891					}
6892					goto l872
6893				l871:
6894					position, tokenIndex = position871, tokenIndex871
6895				}
6896			l872:
6897				add(ruleARMBaseIndexScale, position843)
6898			}
6899			return true
6900		l842:
6901			position, tokenIndex = position842, tokenIndex842
6902			return false
6903		},
6904		/* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
6905		func() bool {
6906			position873, tokenIndex873 := position, tokenIndex
6907			{
6908				position874 := position
6909				if buffer[position] != rune(':') {
6910					goto l873
6911				}
6912				position++
6913				{
6914					position875, tokenIndex875 := position, tokenIndex
6915					if buffer[position] != rune('g') {
6916						goto l876
6917					}
6918					position++
6919					goto l875
6920				l876:
6921					position, tokenIndex = position875, tokenIndex875
6922					if buffer[position] != rune('G') {
6923						goto l873
6924					}
6925					position++
6926				}
6927			l875:
6928				{
6929					position877, tokenIndex877 := position, tokenIndex
6930					if buffer[position] != rune('o') {
6931						goto l878
6932					}
6933					position++
6934					goto l877
6935				l878:
6936					position, tokenIndex = position877, tokenIndex877
6937					if buffer[position] != rune('O') {
6938						goto l873
6939					}
6940					position++
6941				}
6942			l877:
6943				{
6944					position879, tokenIndex879 := position, tokenIndex
6945					if buffer[position] != rune('t') {
6946						goto l880
6947					}
6948					position++
6949					goto l879
6950				l880:
6951					position, tokenIndex = position879, tokenIndex879
6952					if buffer[position] != rune('T') {
6953						goto l873
6954					}
6955					position++
6956				}
6957			l879:
6958				if buffer[position] != rune('_') {
6959					goto l873
6960				}
6961				position++
6962				{
6963					position881, tokenIndex881 := position, tokenIndex
6964					if buffer[position] != rune('l') {
6965						goto l882
6966					}
6967					position++
6968					goto l881
6969				l882:
6970					position, tokenIndex = position881, tokenIndex881
6971					if buffer[position] != rune('L') {
6972						goto l873
6973					}
6974					position++
6975				}
6976			l881:
6977				{
6978					position883, tokenIndex883 := position, tokenIndex
6979					if buffer[position] != rune('o') {
6980						goto l884
6981					}
6982					position++
6983					goto l883
6984				l884:
6985					position, tokenIndex = position883, tokenIndex883
6986					if buffer[position] != rune('O') {
6987						goto l873
6988					}
6989					position++
6990				}
6991			l883:
6992				if buffer[position] != rune('1') {
6993					goto l873
6994				}
6995				position++
6996				if buffer[position] != rune('2') {
6997					goto l873
6998				}
6999				position++
7000				if buffer[position] != rune(':') {
7001					goto l873
7002				}
7003				position++
7004				if !_rules[ruleSymbolName]() {
7005					goto l873
7006				}
7007				add(ruleARMGOTLow12, position874)
7008			}
7009			return true
7010		l873:
7011			position, tokenIndex = position873, tokenIndex873
7012			return false
7013		},
7014		/* 53 ARMPostincrement <- <'!'> */
7015		func() bool {
7016			position885, tokenIndex885 := position, tokenIndex
7017			{
7018				position886 := position
7019				if buffer[position] != rune('!') {
7020					goto l885
7021				}
7022				position++
7023				add(ruleARMPostincrement, position886)
7024			}
7025			return true
7026		l885:
7027			position, tokenIndex = position885, tokenIndex885
7028			return false
7029		},
7030		/* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
7031		func() bool {
7032			position887, tokenIndex887 := position, tokenIndex
7033			{
7034				position888 := position
7035				if buffer[position] != rune('(') {
7036					goto l887
7037				}
7038				position++
7039				{
7040					position889, tokenIndex889 := position, tokenIndex
7041					if !_rules[ruleRegisterOrConstant]() {
7042						goto l889
7043					}
7044					goto l890
7045				l889:
7046					position, tokenIndex = position889, tokenIndex889
7047				}
7048			l890:
7049				{
7050					position891, tokenIndex891 := position, tokenIndex
7051					if !_rules[ruleWS]() {
7052						goto l891
7053					}
7054					goto l892
7055				l891:
7056					position, tokenIndex = position891, tokenIndex891
7057				}
7058			l892:
7059				{
7060					position893, tokenIndex893 := position, tokenIndex
7061					if buffer[position] != rune(',') {
7062						goto l893
7063					}
7064					position++
7065					{
7066						position895, tokenIndex895 := position, tokenIndex
7067						if !_rules[ruleWS]() {
7068							goto l895
7069						}
7070						goto l896
7071					l895:
7072						position, tokenIndex = position895, tokenIndex895
7073					}
7074				l896:
7075					if !_rules[ruleRegisterOrConstant]() {
7076						goto l893
7077					}
7078					{
7079						position897, tokenIndex897 := position, tokenIndex
7080						if !_rules[ruleWS]() {
7081							goto l897
7082						}
7083						goto l898
7084					l897:
7085						position, tokenIndex = position897, tokenIndex897
7086					}
7087				l898:
7088					{
7089						position899, tokenIndex899 := position, tokenIndex
7090						if buffer[position] != rune(',') {
7091							goto l899
7092						}
7093						position++
7094						if c := buffer[position]; c < rune('0') || c > rune('9') {
7095							goto l899
7096						}
7097						position++
7098					l901:
7099						{
7100							position902, tokenIndex902 := position, tokenIndex
7101							if c := buffer[position]; c < rune('0') || c > rune('9') {
7102								goto l902
7103							}
7104							position++
7105							goto l901
7106						l902:
7107							position, tokenIndex = position902, tokenIndex902
7108						}
7109						goto l900
7110					l899:
7111						position, tokenIndex = position899, tokenIndex899
7112					}
7113				l900:
7114					goto l894
7115				l893:
7116					position, tokenIndex = position893, tokenIndex893
7117				}
7118			l894:
7119				if buffer[position] != rune(')') {
7120					goto l887
7121				}
7122				position++
7123				add(ruleBaseIndexScale, position888)
7124			}
7125			return true
7126		l887:
7127			position, tokenIndex = position887, tokenIndex887
7128			return false
7129		},
7130		/* 55 Operator <- <('+' / '-')> */
7131		func() bool {
7132			position903, tokenIndex903 := position, tokenIndex
7133			{
7134				position904 := position
7135				{
7136					position905, tokenIndex905 := position, tokenIndex
7137					if buffer[position] != rune('+') {
7138						goto l906
7139					}
7140					position++
7141					goto l905
7142				l906:
7143					position, tokenIndex = position905, tokenIndex905
7144					if buffer[position] != rune('-') {
7145						goto l903
7146					}
7147					position++
7148				}
7149			l905:
7150				add(ruleOperator, position904)
7151			}
7152			return true
7153		l903:
7154			position, tokenIndex = position903, tokenIndex903
7155			return false
7156		},
7157		/* 56 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
7158		func() bool {
7159			position907, tokenIndex907 := position, tokenIndex
7160			{
7161				position908 := position
7162				{
7163					position909, tokenIndex909 := position, tokenIndex
7164					if buffer[position] != rune('+') {
7165						goto l909
7166					}
7167					position++
7168					goto l910
7169				l909:
7170					position, tokenIndex = position909, tokenIndex909
7171				}
7172			l910:
7173				{
7174					position911, tokenIndex911 := position, tokenIndex
7175					if buffer[position] != rune('-') {
7176						goto l911
7177					}
7178					position++
7179					goto l912
7180				l911:
7181					position, tokenIndex = position911, tokenIndex911
7182				}
7183			l912:
7184				{
7185					position913, tokenIndex913 := position, tokenIndex
7186					if buffer[position] != rune('0') {
7187						goto l914
7188					}
7189					position++
7190					{
7191						position915, tokenIndex915 := position, tokenIndex
7192						if buffer[position] != rune('b') {
7193							goto l916
7194						}
7195						position++
7196						goto l915
7197					l916:
7198						position, tokenIndex = position915, tokenIndex915
7199						if buffer[position] != rune('B') {
7200							goto l914
7201						}
7202						position++
7203					}
7204				l915:
7205					{
7206						position919, tokenIndex919 := position, tokenIndex
7207						if buffer[position] != rune('0') {
7208							goto l920
7209						}
7210						position++
7211						goto l919
7212					l920:
7213						position, tokenIndex = position919, tokenIndex919
7214						if buffer[position] != rune('1') {
7215							goto l914
7216						}
7217						position++
7218					}
7219				l919:
7220				l917:
7221					{
7222						position918, tokenIndex918 := position, tokenIndex
7223						{
7224							position921, tokenIndex921 := position, tokenIndex
7225							if buffer[position] != rune('0') {
7226								goto l922
7227							}
7228							position++
7229							goto l921
7230						l922:
7231							position, tokenIndex = position921, tokenIndex921
7232							if buffer[position] != rune('1') {
7233								goto l918
7234							}
7235							position++
7236						}
7237					l921:
7238						goto l917
7239					l918:
7240						position, tokenIndex = position918, tokenIndex918
7241					}
7242					goto l913
7243				l914:
7244					position, tokenIndex = position913, tokenIndex913
7245					if buffer[position] != rune('0') {
7246						goto l923
7247					}
7248					position++
7249					{
7250						position924, tokenIndex924 := position, tokenIndex
7251						if buffer[position] != rune('x') {
7252							goto l925
7253						}
7254						position++
7255						goto l924
7256					l925:
7257						position, tokenIndex = position924, tokenIndex924
7258						if buffer[position] != rune('X') {
7259							goto l923
7260						}
7261						position++
7262					}
7263				l924:
7264					{
7265						position928, tokenIndex928 := position, tokenIndex
7266						if c := buffer[position]; c < rune('0') || c > rune('9') {
7267							goto l929
7268						}
7269						position++
7270						goto l928
7271					l929:
7272						position, tokenIndex = position928, tokenIndex928
7273						if c := buffer[position]; c < rune('0') || c > rune('9') {
7274							goto l930
7275						}
7276						position++
7277						goto l928
7278					l930:
7279						position, tokenIndex = position928, tokenIndex928
7280						{
7281							position931, tokenIndex931 := position, tokenIndex
7282							if c := buffer[position]; c < rune('a') || c > rune('f') {
7283								goto l932
7284							}
7285							position++
7286							goto l931
7287						l932:
7288							position, tokenIndex = position931, tokenIndex931
7289							if c := buffer[position]; c < rune('A') || c > rune('F') {
7290								goto l923
7291							}
7292							position++
7293						}
7294					l931:
7295					}
7296				l928:
7297				l926:
7298					{
7299						position927, tokenIndex927 := position, tokenIndex
7300						{
7301							position933, tokenIndex933 := position, tokenIndex
7302							if c := buffer[position]; c < rune('0') || c > rune('9') {
7303								goto l934
7304							}
7305							position++
7306							goto l933
7307						l934:
7308							position, tokenIndex = position933, tokenIndex933
7309							if c := buffer[position]; c < rune('0') || c > rune('9') {
7310								goto l935
7311							}
7312							position++
7313							goto l933
7314						l935:
7315							position, tokenIndex = position933, tokenIndex933
7316							{
7317								position936, tokenIndex936 := position, tokenIndex
7318								if c := buffer[position]; c < rune('a') || c > rune('f') {
7319									goto l937
7320								}
7321								position++
7322								goto l936
7323							l937:
7324								position, tokenIndex = position936, tokenIndex936
7325								if c := buffer[position]; c < rune('A') || c > rune('F') {
7326									goto l927
7327								}
7328								position++
7329							}
7330						l936:
7331						}
7332					l933:
7333						goto l926
7334					l927:
7335						position, tokenIndex = position927, tokenIndex927
7336					}
7337					goto l913
7338				l923:
7339					position, tokenIndex = position913, tokenIndex913
7340					if c := buffer[position]; c < rune('0') || c > rune('9') {
7341						goto l907
7342					}
7343					position++
7344				l938:
7345					{
7346						position939, tokenIndex939 := position, tokenIndex
7347						if c := buffer[position]; c < rune('0') || c > rune('9') {
7348							goto l939
7349						}
7350						position++
7351						goto l938
7352					l939:
7353						position, tokenIndex = position939, tokenIndex939
7354					}
7355				}
7356			l913:
7357				add(ruleOffset, position908)
7358			}
7359			return true
7360		l907:
7361			position, tokenIndex = position907, tokenIndex907
7362			return false
7363		},
7364		/* 57 Section <- <([a-z] / [A-Z] / '@')+> */
7365		func() bool {
7366			position940, tokenIndex940 := position, tokenIndex
7367			{
7368				position941 := position
7369				{
7370					position944, tokenIndex944 := position, tokenIndex
7371					if c := buffer[position]; c < rune('a') || c > rune('z') {
7372						goto l945
7373					}
7374					position++
7375					goto l944
7376				l945:
7377					position, tokenIndex = position944, tokenIndex944
7378					if c := buffer[position]; c < rune('A') || c > rune('Z') {
7379						goto l946
7380					}
7381					position++
7382					goto l944
7383				l946:
7384					position, tokenIndex = position944, tokenIndex944
7385					if buffer[position] != rune('@') {
7386						goto l940
7387					}
7388					position++
7389				}
7390			l944:
7391			l942:
7392				{
7393					position943, tokenIndex943 := position, tokenIndex
7394					{
7395						position947, tokenIndex947 := position, tokenIndex
7396						if c := buffer[position]; c < rune('a') || c > rune('z') {
7397							goto l948
7398						}
7399						position++
7400						goto l947
7401					l948:
7402						position, tokenIndex = position947, tokenIndex947
7403						if c := buffer[position]; c < rune('A') || c > rune('Z') {
7404							goto l949
7405						}
7406						position++
7407						goto l947
7408					l949:
7409						position, tokenIndex = position947, tokenIndex947
7410						if buffer[position] != rune('@') {
7411							goto l943
7412						}
7413						position++
7414					}
7415				l947:
7416					goto l942
7417				l943:
7418					position, tokenIndex = position943, tokenIndex943
7419				}
7420				add(ruleSection, position941)
7421			}
7422			return true
7423		l940:
7424			position, tokenIndex = position940, tokenIndex940
7425			return false
7426		},
7427		/* 58 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
7428		func() bool {
7429			position950, tokenIndex950 := position, tokenIndex
7430			{
7431				position951 := position
7432				if buffer[position] != rune('%') {
7433					goto l950
7434				}
7435				position++
7436				{
7437					position952, tokenIndex952 := position, tokenIndex
7438					if c := buffer[position]; c < rune('c') || c > rune('g') {
7439						goto l953
7440					}
7441					position++
7442					goto l952
7443				l953:
7444					position, tokenIndex = position952, tokenIndex952
7445					if buffer[position] != rune('s') {
7446						goto l950
7447					}
7448					position++
7449				}
7450			l952:
7451				if buffer[position] != rune('s') {
7452					goto l950
7453				}
7454				position++
7455				if buffer[position] != rune(':') {
7456					goto l950
7457				}
7458				position++
7459				add(ruleSegmentRegister, position951)
7460			}
7461			return true
7462		l950:
7463			position, tokenIndex = position950, tokenIndex950
7464			return false
7465		},
7466	}
7467	p.rules = _rules
7468	return nil
7469}
7470