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