func()

in util/fipstools/delocate/delocate.peg.go [367:8064]


func (p *Asm) Init(options ...func(*Asm) error) error {
	var (
		max                  token32
		position, tokenIndex uint32
		buffer               []rune
	)
	for _, option := range options {
		err := option(p)
		if err != nil {
			return err
		}
	}
	p.reset = func() {
		max = token32{}
		position, tokenIndex = 0, 0

		p.buffer = []rune(p.Buffer)
		if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
			p.buffer = append(p.buffer, endSymbol)
		}
		buffer = p.buffer
	}
	p.reset()

	_rules := p.rules
	tree := p.tokens32
	p.parse = func(rule ...int) error {
		r := 1
		if len(rule) > 0 {
			r = rule[0]
		}
		matches := p.rules[r]()
		p.tokens32 = tree
		if matches {
			p.Trim(tokenIndex)
			return nil
		}
		return &parseError{p, max}
	}

	add := func(rule pegRule, begin uint32) {
		tree.Add(rule, begin, position, tokenIndex)
		tokenIndex++
		if begin != position && position > max.end {
			max = token32{rule, begin, position}
		}
	}

	matchDot := func() bool {
		if buffer[position] != endSymbol {
			position++
			return true
		}
		return false
	}

	/*matchChar := func(c byte) bool {
		if buffer[position] == c {
			position++
			return true
		}
		return false
	}*/

	/*matchRange := func(lower byte, upper byte) bool {
		if c := buffer[position]; c >= lower && c <= upper {
			position++
			return true
		}
		return false
	}*/

	_rules = [...]func() bool{
		nil,
		/* 0 AsmFile <- <(Statement* !.)> */
		func() bool {
			position0, tokenIndex0 := position, tokenIndex
			{
				position1 := position
			l2:
				{
					position3, tokenIndex3 := position, tokenIndex
					if !_rules[ruleStatement]() {
						goto l3
					}
					goto l2
				l3:
					position, tokenIndex = position3, tokenIndex3
				}
				{
					position4, tokenIndex4 := position, tokenIndex
					if !matchDot() {
						goto l4
					}
					goto l0
				l4:
					position, tokenIndex = position4, tokenIndex4
				}
				add(ruleAsmFile, position1)
			}
			return true
		l0:
			position, tokenIndex = position0, tokenIndex0
			return false
		},
		/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / ZeroDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
		func() bool {
			position5, tokenIndex5 := position, tokenIndex
			{
				position6 := position
				{
					position7, tokenIndex7 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l7
					}
					goto l8
				l7:
					position, tokenIndex = position7, tokenIndex7
				}
			l8:
				{
					position9, tokenIndex9 := position, tokenIndex
					if !_rules[ruleLabel]() {
						goto l10
					}
					goto l9
				l10:
					position, tokenIndex = position9, tokenIndex9
					{
						position11, tokenIndex11 := position, tokenIndex
						if !_rules[ruleGlobalDirective]() {
							goto l12
						}
						goto l11
					l12:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleLocationDirective]() {
							goto l13
						}
						goto l11
					l13:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleLabelContainingDirective]() {
							goto l14
						}
						goto l11
					l14:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleZeroDirective]() {
							goto l15
						}
						goto l11
					l15:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleInstruction]() {
							goto l16
						}
						goto l11
					l16:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleDirective]() {
							goto l17
						}
						goto l11
					l17:
						position, tokenIndex = position11, tokenIndex11
						if !_rules[ruleComment]() {
							goto l18
						}
						goto l11
					l18:
						position, tokenIndex = position11, tokenIndex11
					}
				l11:
					{
						position19, tokenIndex19 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l19
						}
						goto l20
					l19:
						position, tokenIndex = position19, tokenIndex19
					}
				l20:
					{
						position21, tokenIndex21 := position, tokenIndex
						{
							position23, tokenIndex23 := position, tokenIndex
							if !_rules[ruleComment]() {
								goto l23
							}
							goto l24
						l23:
							position, tokenIndex = position23, tokenIndex23
						}
					l24:
						if buffer[position] != rune('\n') {
							goto l22
						}
						position++
						goto l21
					l22:
						position, tokenIndex = position21, tokenIndex21
						if buffer[position] != rune(';') {
							goto l5
						}
						position++
					}
				l21:
				}
			l9:
				add(ruleStatement, position6)
			}
			return true
		l5:
			position, tokenIndex = position5, tokenIndex5
			return false
		},
		/* 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)> */
		func() bool {
			position25, tokenIndex25 := position, tokenIndex
			{
				position26 := position
				{
					position27, tokenIndex27 := position, tokenIndex
					if buffer[position] != rune('.') {
						goto l28
					}
					position++
					{
						position29, tokenIndex29 := position, tokenIndex
						if buffer[position] != rune('g') {
							goto l30
						}
						position++
						goto l29
					l30:
						position, tokenIndex = position29, tokenIndex29
						if buffer[position] != rune('G') {
							goto l28
						}
						position++
					}
				l29:
					{
						position31, tokenIndex31 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l32
						}
						position++
						goto l31
					l32:
						position, tokenIndex = position31, tokenIndex31
						if buffer[position] != rune('L') {
							goto l28
						}
						position++
					}
				l31:
					{
						position33, tokenIndex33 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l34
						}
						position++
						goto l33
					l34:
						position, tokenIndex = position33, tokenIndex33
						if buffer[position] != rune('O') {
							goto l28
						}
						position++
					}
				l33:
					{
						position35, tokenIndex35 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l36
						}
						position++
						goto l35
					l36:
						position, tokenIndex = position35, tokenIndex35
						if buffer[position] != rune('B') {
							goto l28
						}
						position++
					}
				l35:
					{
						position37, tokenIndex37 := position, tokenIndex
						if buffer[position] != rune('a') {
							goto l38
						}
						position++
						goto l37
					l38:
						position, tokenIndex = position37, tokenIndex37
						if buffer[position] != rune('A') {
							goto l28
						}
						position++
					}
				l37:
					{
						position39, tokenIndex39 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l40
						}
						position++
						goto l39
					l40:
						position, tokenIndex = position39, tokenIndex39
						if buffer[position] != rune('L') {
							goto l28
						}
						position++
					}
				l39:
					goto l27
				l28:
					position, tokenIndex = position27, tokenIndex27
					if buffer[position] != rune('.') {
						goto l25
					}
					position++
					{
						position41, tokenIndex41 := position, tokenIndex
						if buffer[position] != rune('g') {
							goto l42
						}
						position++
						goto l41
					l42:
						position, tokenIndex = position41, tokenIndex41
						if buffer[position] != rune('G') {
							goto l25
						}
						position++
					}
				l41:
					{
						position43, tokenIndex43 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l44
						}
						position++
						goto l43
					l44:
						position, tokenIndex = position43, tokenIndex43
						if buffer[position] != rune('L') {
							goto l25
						}
						position++
					}
				l43:
					{
						position45, tokenIndex45 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l46
						}
						position++
						goto l45
					l46:
						position, tokenIndex = position45, tokenIndex45
						if buffer[position] != rune('O') {
							goto l25
						}
						position++
					}
				l45:
					{
						position47, tokenIndex47 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l48
						}
						position++
						goto l47
					l48:
						position, tokenIndex = position47, tokenIndex47
						if buffer[position] != rune('B') {
							goto l25
						}
						position++
					}
				l47:
					{
						position49, tokenIndex49 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l50
						}
						position++
						goto l49
					l50:
						position, tokenIndex = position49, tokenIndex49
						if buffer[position] != rune('L') {
							goto l25
						}
						position++
					}
				l49:
				}
			l27:
				if !_rules[ruleWS]() {
					goto l25
				}
				if !_rules[ruleSymbolName]() {
					goto l25
				}
				add(ruleGlobalDirective, position26)
			}
			return true
		l25:
			position, tokenIndex = position25, tokenIndex25
			return false
		},
		/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
		func() bool {
			position51, tokenIndex51 := position, tokenIndex
			{
				position52 := position
				if buffer[position] != rune('.') {
					goto l51
				}
				position++
				if !_rules[ruleDirectiveName]() {
					goto l51
				}
				{
					position53, tokenIndex53 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l53
					}
					if !_rules[ruleArgs]() {
						goto l53
					}
					goto l54
				l53:
					position, tokenIndex = position53, tokenIndex53
				}
			l54:
				add(ruleDirective, position52)
			}
			return true
		l51:
			position, tokenIndex = position51, tokenIndex51
			return false
		},
		/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
		func() bool {
			position55, tokenIndex55 := position, tokenIndex
			{
				position56 := position
				{
					position59, tokenIndex59 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l60
					}
					position++
					goto l59
				l60:
					position, tokenIndex = position59, tokenIndex59
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l61
					}
					position++
					goto l59
				l61:
					position, tokenIndex = position59, tokenIndex59
					{
						position63, tokenIndex63 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l64
						}
						position++
						goto l63
					l64:
						position, tokenIndex = position63, tokenIndex63
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l62
						}
						position++
					}
				l63:
					goto l59
				l62:
					position, tokenIndex = position59, tokenIndex59
					if buffer[position] != rune('_') {
						goto l55
					}
					position++
				}
			l59:
			l57:
				{
					position58, tokenIndex58 := position, tokenIndex
					{
						position65, tokenIndex65 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l66
						}
						position++
						goto l65
					l66:
						position, tokenIndex = position65, tokenIndex65
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l67
						}
						position++
						goto l65
					l67:
						position, tokenIndex = position65, tokenIndex65
						{
							position69, tokenIndex69 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l70
							}
							position++
							goto l69
						l70:
							position, tokenIndex = position69, tokenIndex69
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l68
							}
							position++
						}
					l69:
						goto l65
					l68:
						position, tokenIndex = position65, tokenIndex65
						if buffer[position] != rune('_') {
							goto l58
						}
						position++
					}
				l65:
					goto l57
				l58:
					position, tokenIndex = position58, tokenIndex58
				}
				add(ruleDirectiveName, position56)
			}
			return true
		l55:
			position, tokenIndex = position55, tokenIndex55
			return false
		},
		/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
		func() bool {
			position71, tokenIndex71 := position, tokenIndex
			{
				position72 := position
				{
					position73, tokenIndex73 := position, tokenIndex
					if !_rules[ruleFileDirective]() {
						goto l74
					}
					goto l73
				l74:
					position, tokenIndex = position73, tokenIndex73
					if !_rules[ruleLocDirective]() {
						goto l71
					}
				}
			l73:
				add(ruleLocationDirective, position72)
			}
			return true
		l71:
			position, tokenIndex = position71, tokenIndex71
			return false
		},
		/* 6 ZeroDirective <- <('.' ('z' / 'Z') ('e' / 'E') ('r' / 'R') ('o' / 'O') WS (!('#' / '\n') .)+)> */
		func() bool {
			position75, tokenIndex75 := position, tokenIndex
			{
				position76 := position
				if buffer[position] != rune('.') {
					goto l75
				}
				position++
				{
					position77, tokenIndex77 := position, tokenIndex
					if buffer[position] != rune('z') {
						goto l78
					}
					position++
					goto l77
				l78:
					position, tokenIndex = position77, tokenIndex77
					if buffer[position] != rune('Z') {
						goto l75
					}
					position++
				}
			l77:
				{
					position79, tokenIndex79 := position, tokenIndex
					if buffer[position] != rune('e') {
						goto l80
					}
					position++
					goto l79
				l80:
					position, tokenIndex = position79, tokenIndex79
					if buffer[position] != rune('E') {
						goto l75
					}
					position++
				}
			l79:
				{
					position81, tokenIndex81 := position, tokenIndex
					if buffer[position] != rune('r') {
						goto l82
					}
					position++
					goto l81
				l82:
					position, tokenIndex = position81, tokenIndex81
					if buffer[position] != rune('R') {
						goto l75
					}
					position++
				}
			l81:
				{
					position83, tokenIndex83 := position, tokenIndex
					if buffer[position] != rune('o') {
						goto l84
					}
					position++
					goto l83
				l84:
					position, tokenIndex = position83, tokenIndex83
					if buffer[position] != rune('O') {
						goto l75
					}
					position++
				}
			l83:
				if !_rules[ruleWS]() {
					goto l75
				}
				{
					position87, tokenIndex87 := position, tokenIndex
					{
						position88, tokenIndex88 := position, tokenIndex
						if buffer[position] != rune('#') {
							goto l89
						}
						position++
						goto l88
					l89:
						position, tokenIndex = position88, tokenIndex88
						if buffer[position] != rune('\n') {
							goto l87
						}
						position++
					}
				l88:
					goto l75
				l87:
					position, tokenIndex = position87, tokenIndex87
				}
				if !matchDot() {
					goto l75
				}
			l85:
				{
					position86, tokenIndex86 := position, tokenIndex
					{
						position90, tokenIndex90 := position, tokenIndex
						{
							position91, tokenIndex91 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l92
							}
							position++
							goto l91
						l92:
							position, tokenIndex = position91, tokenIndex91
							if buffer[position] != rune('\n') {
								goto l90
							}
							position++
						}
					l91:
						goto l86
					l90:
						position, tokenIndex = position90, tokenIndex90
					}
					if !matchDot() {
						goto l86
					}
					goto l85
				l86:
					position, tokenIndex = position86, tokenIndex86
				}
				add(ruleZeroDirective, position76)
			}
			return true
		l75:
			position, tokenIndex = position75, tokenIndex75
			return false
		},
		/* 7 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
		func() bool {
			position93, tokenIndex93 := position, tokenIndex
			{
				position94 := position
				if buffer[position] != rune('.') {
					goto l93
				}
				position++
				{
					position95, tokenIndex95 := position, tokenIndex
					if buffer[position] != rune('f') {
						goto l96
					}
					position++
					goto l95
				l96:
					position, tokenIndex = position95, tokenIndex95
					if buffer[position] != rune('F') {
						goto l93
					}
					position++
				}
			l95:
				{
					position97, tokenIndex97 := position, tokenIndex
					if buffer[position] != rune('i') {
						goto l98
					}
					position++
					goto l97
				l98:
					position, tokenIndex = position97, tokenIndex97
					if buffer[position] != rune('I') {
						goto l93
					}
					position++
				}
			l97:
				{
					position99, tokenIndex99 := position, tokenIndex
					if buffer[position] != rune('l') {
						goto l100
					}
					position++
					goto l99
				l100:
					position, tokenIndex = position99, tokenIndex99
					if buffer[position] != rune('L') {
						goto l93
					}
					position++
				}
			l99:
				{
					position101, tokenIndex101 := position, tokenIndex
					if buffer[position] != rune('e') {
						goto l102
					}
					position++
					goto l101
				l102:
					position, tokenIndex = position101, tokenIndex101
					if buffer[position] != rune('E') {
						goto l93
					}
					position++
				}
			l101:
				if !_rules[ruleWS]() {
					goto l93
				}
				{
					position105, tokenIndex105 := position, tokenIndex
					{
						position106, tokenIndex106 := position, tokenIndex
						if buffer[position] != rune('#') {
							goto l107
						}
						position++
						goto l106
					l107:
						position, tokenIndex = position106, tokenIndex106
						if buffer[position] != rune('\n') {
							goto l105
						}
						position++
					}
				l106:
					goto l93
				l105:
					position, tokenIndex = position105, tokenIndex105
				}
				if !matchDot() {
					goto l93
				}
			l103:
				{
					position104, tokenIndex104 := position, tokenIndex
					{
						position108, tokenIndex108 := position, tokenIndex
						{
							position109, tokenIndex109 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l110
							}
							position++
							goto l109
						l110:
							position, tokenIndex = position109, tokenIndex109
							if buffer[position] != rune('\n') {
								goto l108
							}
							position++
						}
					l109:
						goto l104
					l108:
						position, tokenIndex = position108, tokenIndex108
					}
					if !matchDot() {
						goto l104
					}
					goto l103
				l104:
					position, tokenIndex = position104, tokenIndex104
				}
				add(ruleFileDirective, position94)
			}
			return true
		l93:
			position, tokenIndex = position93, tokenIndex93
			return false
		},
		/* 8 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
		func() bool {
			position111, tokenIndex111 := position, tokenIndex
			{
				position112 := position
				if buffer[position] != rune('.') {
					goto l111
				}
				position++
				{
					position113, tokenIndex113 := position, tokenIndex
					if buffer[position] != rune('l') {
						goto l114
					}
					position++
					goto l113
				l114:
					position, tokenIndex = position113, tokenIndex113
					if buffer[position] != rune('L') {
						goto l111
					}
					position++
				}
			l113:
				{
					position115, tokenIndex115 := position, tokenIndex
					if buffer[position] != rune('o') {
						goto l116
					}
					position++
					goto l115
				l116:
					position, tokenIndex = position115, tokenIndex115
					if buffer[position] != rune('O') {
						goto l111
					}
					position++
				}
			l115:
				{
					position117, tokenIndex117 := position, tokenIndex
					if buffer[position] != rune('c') {
						goto l118
					}
					position++
					goto l117
				l118:
					position, tokenIndex = position117, tokenIndex117
					if buffer[position] != rune('C') {
						goto l111
					}
					position++
				}
			l117:
				if !_rules[ruleWS]() {
					goto l111
				}
				{
					position121, tokenIndex121 := position, tokenIndex
					{
						position122, tokenIndex122 := position, tokenIndex
						if buffer[position] != rune('#') {
							goto l123
						}
						position++
						goto l122
					l123:
						position, tokenIndex = position122, tokenIndex122
						if buffer[position] != rune('/') {
							goto l124
						}
						position++
						goto l122
					l124:
						position, tokenIndex = position122, tokenIndex122
						if buffer[position] != rune('\n') {
							goto l121
						}
						position++
					}
				l122:
					goto l111
				l121:
					position, tokenIndex = position121, tokenIndex121
				}
				if !matchDot() {
					goto l111
				}
			l119:
				{
					position120, tokenIndex120 := position, tokenIndex
					{
						position125, tokenIndex125 := position, tokenIndex
						{
							position126, tokenIndex126 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l127
							}
							position++
							goto l126
						l127:
							position, tokenIndex = position126, tokenIndex126
							if buffer[position] != rune('/') {
								goto l128
							}
							position++
							goto l126
						l128:
							position, tokenIndex = position126, tokenIndex126
							if buffer[position] != rune('\n') {
								goto l125
							}
							position++
						}
					l126:
						goto l120
					l125:
						position, tokenIndex = position125, tokenIndex125
					}
					if !matchDot() {
						goto l120
					}
					goto l119
				l120:
					position, tokenIndex = position120, tokenIndex120
				}
				add(ruleLocDirective, position112)
			}
			return true
		l111:
			position, tokenIndex = position111, tokenIndex111
			return false
		},
		/* 9 Args <- <(Arg (WS? ',' WS? Arg)*)> */
		func() bool {
			position129, tokenIndex129 := position, tokenIndex
			{
				position130 := position
				if !_rules[ruleArg]() {
					goto l129
				}
			l131:
				{
					position132, tokenIndex132 := position, tokenIndex
					{
						position133, tokenIndex133 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l133
						}
						goto l134
					l133:
						position, tokenIndex = position133, tokenIndex133
					}
				l134:
					if buffer[position] != rune(',') {
						goto l132
					}
					position++
					{
						position135, tokenIndex135 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l135
						}
						goto l136
					l135:
						position, tokenIndex = position135, tokenIndex135
					}
				l136:
					if !_rules[ruleArg]() {
						goto l132
					}
					goto l131
				l132:
					position, tokenIndex = position132, tokenIndex132
				}
				add(ruleArgs, position130)
			}
			return true
		l129:
			position, tokenIndex = position129, tokenIndex129
			return false
		},
		/* 10 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
		func() bool {
			{
				position138 := position
				{
					position139, tokenIndex139 := position, tokenIndex
					if !_rules[ruleQuotedArg]() {
						goto l140
					}
					goto l139
				l140:
					position, tokenIndex = position139, tokenIndex139
				l141:
					{
						position142, tokenIndex142 := position, tokenIndex
						{
							position143, tokenIndex143 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l144
							}
							position++
							goto l143
						l144:
							position, tokenIndex = position143, tokenIndex143
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l145
							}
							position++
							goto l143
						l145:
							position, tokenIndex = position143, tokenIndex143
							{
								position147, tokenIndex147 := position, tokenIndex
								if c := buffer[position]; c < rune('a') || c > rune('z') {
									goto l148
								}
								position++
								goto l147
							l148:
								position, tokenIndex = position147, tokenIndex147
								if c := buffer[position]; c < rune('A') || c > rune('Z') {
									goto l146
								}
								position++
							}
						l147:
							goto l143
						l146:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('%') {
								goto l149
							}
							position++
							goto l143
						l149:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('+') {
								goto l150
							}
							position++
							goto l143
						l150:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('-') {
								goto l151
							}
							position++
							goto l143
						l151:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('*') {
								goto l152
							}
							position++
							goto l143
						l152:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('_') {
								goto l153
							}
							position++
							goto l143
						l153:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('@') {
								goto l154
							}
							position++
							goto l143
						l154:
							position, tokenIndex = position143, tokenIndex143
							if buffer[position] != rune('.') {
								goto l142
							}
							position++
						}
					l143:
						goto l141
					l142:
						position, tokenIndex = position142, tokenIndex142
					}
				}
			l139:
				add(ruleArg, position138)
			}
			return true
		},
		/* 11 QuotedArg <- <('"' QuotedText '"')> */
		func() bool {
			position155, tokenIndex155 := position, tokenIndex
			{
				position156 := position
				if buffer[position] != rune('"') {
					goto l155
				}
				position++
				if !_rules[ruleQuotedText]() {
					goto l155
				}
				if buffer[position] != rune('"') {
					goto l155
				}
				position++
				add(ruleQuotedArg, position156)
			}
			return true
		l155:
			position, tokenIndex = position155, tokenIndex155
			return false
		},
		/* 12 QuotedText <- <(EscapedChar / (!'"' .))*> */
		func() bool {
			{
				position158 := position
			l159:
				{
					position160, tokenIndex160 := position, tokenIndex
					{
						position161, tokenIndex161 := position, tokenIndex
						if !_rules[ruleEscapedChar]() {
							goto l162
						}
						goto l161
					l162:
						position, tokenIndex = position161, tokenIndex161
						{
							position163, tokenIndex163 := position, tokenIndex
							if buffer[position] != rune('"') {
								goto l163
							}
							position++
							goto l160
						l163:
							position, tokenIndex = position163, tokenIndex163
						}
						if !matchDot() {
							goto l160
						}
					}
				l161:
					goto l159
				l160:
					position, tokenIndex = position160, tokenIndex160
				}
				add(ruleQuotedText, position158)
			}
			return true
		},
		/* 13 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
		func() bool {
			position164, tokenIndex164 := position, tokenIndex
			{
				position165 := position
				if !_rules[ruleLabelContainingDirectiveName]() {
					goto l164
				}
				if !_rules[ruleWS]() {
					goto l164
				}
				if !_rules[ruleSymbolArgs]() {
					goto l164
				}
				add(ruleLabelContainingDirective, position165)
			}
			return true
		l164:
			position, tokenIndex = position164, tokenIndex164
			return false
		},
		/* 14 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'))> */
		func() bool {
			position166, tokenIndex166 := position, tokenIndex
			{
				position167 := position
				{
					position168, tokenIndex168 := position, tokenIndex
					if buffer[position] != rune('.') {
						goto l169
					}
					position++
					{
						position170, tokenIndex170 := position, tokenIndex
						if buffer[position] != rune('x') {
							goto l171
						}
						position++
						goto l170
					l171:
						position, tokenIndex = position170, tokenIndex170
						if buffer[position] != rune('X') {
							goto l169
						}
						position++
					}
				l170:
					{
						position172, tokenIndex172 := position, tokenIndex
						if buffer[position] != rune('w') {
							goto l173
						}
						position++
						goto l172
					l173:
						position, tokenIndex = position172, tokenIndex172
						if buffer[position] != rune('W') {
							goto l169
						}
						position++
					}
				l172:
					{
						position174, tokenIndex174 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l175
						}
						position++
						goto l174
					l175:
						position, tokenIndex = position174, tokenIndex174
						if buffer[position] != rune('O') {
							goto l169
						}
						position++
					}
				l174:
					{
						position176, tokenIndex176 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l177
						}
						position++
						goto l176
					l177:
						position, tokenIndex = position176, tokenIndex176
						if buffer[position] != rune('R') {
							goto l169
						}
						position++
					}
				l176:
					{
						position178, tokenIndex178 := position, tokenIndex
						if buffer[position] != rune('d') {
							goto l179
						}
						position++
						goto l178
					l179:
						position, tokenIndex = position178, tokenIndex178
						if buffer[position] != rune('D') {
							goto l169
						}
						position++
					}
				l178:
					goto l168
				l169:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l180
					}
					position++
					{
						position181, tokenIndex181 := position, tokenIndex
						if buffer[position] != rune('w') {
							goto l182
						}
						position++
						goto l181
					l182:
						position, tokenIndex = position181, tokenIndex181
						if buffer[position] != rune('W') {
							goto l180
						}
						position++
					}
				l181:
					{
						position183, tokenIndex183 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l184
						}
						position++
						goto l183
					l184:
						position, tokenIndex = position183, tokenIndex183
						if buffer[position] != rune('O') {
							goto l180
						}
						position++
					}
				l183:
					{
						position185, tokenIndex185 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l186
						}
						position++
						goto l185
					l186:
						position, tokenIndex = position185, tokenIndex185
						if buffer[position] != rune('R') {
							goto l180
						}
						position++
					}
				l185:
					{
						position187, tokenIndex187 := position, tokenIndex
						if buffer[position] != rune('d') {
							goto l188
						}
						position++
						goto l187
					l188:
						position, tokenIndex = position187, tokenIndex187
						if buffer[position] != rune('D') {
							goto l180
						}
						position++
					}
				l187:
					goto l168
				l180:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l189
					}
					position++
					{
						position190, tokenIndex190 := position, tokenIndex
						if buffer[position] != rune('h') {
							goto l191
						}
						position++
						goto l190
					l191:
						position, tokenIndex = position190, tokenIndex190
						if buffer[position] != rune('H') {
							goto l189
						}
						position++
					}
				l190:
					{
						position192, tokenIndex192 := position, tokenIndex
						if buffer[position] != rune('w') {
							goto l193
						}
						position++
						goto l192
					l193:
						position, tokenIndex = position192, tokenIndex192
						if buffer[position] != rune('W') {
							goto l189
						}
						position++
					}
				l192:
					{
						position194, tokenIndex194 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l195
						}
						position++
						goto l194
					l195:
						position, tokenIndex = position194, tokenIndex194
						if buffer[position] != rune('O') {
							goto l189
						}
						position++
					}
				l194:
					{
						position196, tokenIndex196 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l197
						}
						position++
						goto l196
					l197:
						position, tokenIndex = position196, tokenIndex196
						if buffer[position] != rune('R') {
							goto l189
						}
						position++
					}
				l196:
					{
						position198, tokenIndex198 := position, tokenIndex
						if buffer[position] != rune('d') {
							goto l199
						}
						position++
						goto l198
					l199:
						position, tokenIndex = position198, tokenIndex198
						if buffer[position] != rune('D') {
							goto l189
						}
						position++
					}
				l198:
					goto l168
				l189:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l200
					}
					position++
					{
						position201, tokenIndex201 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l202
						}
						position++
						goto l201
					l202:
						position, tokenIndex = position201, tokenIndex201
						if buffer[position] != rune('L') {
							goto l200
						}
						position++
					}
				l201:
					{
						position203, tokenIndex203 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l204
						}
						position++
						goto l203
					l204:
						position, tokenIndex = position203, tokenIndex203
						if buffer[position] != rune('O') {
							goto l200
						}
						position++
					}
				l203:
					{
						position205, tokenIndex205 := position, tokenIndex
						if buffer[position] != rune('n') {
							goto l206
						}
						position++
						goto l205
					l206:
						position, tokenIndex = position205, tokenIndex205
						if buffer[position] != rune('N') {
							goto l200
						}
						position++
					}
				l205:
					{
						position207, tokenIndex207 := position, tokenIndex
						if buffer[position] != rune('g') {
							goto l208
						}
						position++
						goto l207
					l208:
						position, tokenIndex = position207, tokenIndex207
						if buffer[position] != rune('G') {
							goto l200
						}
						position++
					}
				l207:
					goto l168
				l200:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l209
					}
					position++
					{
						position210, tokenIndex210 := position, tokenIndex
						if buffer[position] != rune('s') {
							goto l211
						}
						position++
						goto l210
					l211:
						position, tokenIndex = position210, tokenIndex210
						if buffer[position] != rune('S') {
							goto l209
						}
						position++
					}
				l210:
					{
						position212, tokenIndex212 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l213
						}
						position++
						goto l212
					l213:
						position, tokenIndex = position212, tokenIndex212
						if buffer[position] != rune('E') {
							goto l209
						}
						position++
					}
				l212:
					{
						position214, tokenIndex214 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l215
						}
						position++
						goto l214
					l215:
						position, tokenIndex = position214, tokenIndex214
						if buffer[position] != rune('T') {
							goto l209
						}
						position++
					}
				l214:
					goto l168
				l209:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l216
					}
					position++
					{
						position217, tokenIndex217 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l218
						}
						position++
						goto l217
					l218:
						position, tokenIndex = position217, tokenIndex217
						if buffer[position] != rune('B') {
							goto l216
						}
						position++
					}
				l217:
					{
						position219, tokenIndex219 := position, tokenIndex
						if buffer[position] != rune('y') {
							goto l220
						}
						position++
						goto l219
					l220:
						position, tokenIndex = position219, tokenIndex219
						if buffer[position] != rune('Y') {
							goto l216
						}
						position++
					}
				l219:
					{
						position221, tokenIndex221 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l222
						}
						position++
						goto l221
					l222:
						position, tokenIndex = position221, tokenIndex221
						if buffer[position] != rune('T') {
							goto l216
						}
						position++
					}
				l221:
					{
						position223, tokenIndex223 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l224
						}
						position++
						goto l223
					l224:
						position, tokenIndex = position223, tokenIndex223
						if buffer[position] != rune('E') {
							goto l216
						}
						position++
					}
				l223:
					goto l168
				l216:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l225
					}
					position++
					if buffer[position] != rune('8') {
						goto l225
					}
					position++
					{
						position226, tokenIndex226 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l227
						}
						position++
						goto l226
					l227:
						position, tokenIndex = position226, tokenIndex226
						if buffer[position] != rune('B') {
							goto l225
						}
						position++
					}
				l226:
					{
						position228, tokenIndex228 := position, tokenIndex
						if buffer[position] != rune('y') {
							goto l229
						}
						position++
						goto l228
					l229:
						position, tokenIndex = position228, tokenIndex228
						if buffer[position] != rune('Y') {
							goto l225
						}
						position++
					}
				l228:
					{
						position230, tokenIndex230 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l231
						}
						position++
						goto l230
					l231:
						position, tokenIndex = position230, tokenIndex230
						if buffer[position] != rune('T') {
							goto l225
						}
						position++
					}
				l230:
					{
						position232, tokenIndex232 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l233
						}
						position++
						goto l232
					l233:
						position, tokenIndex = position232, tokenIndex232
						if buffer[position] != rune('E') {
							goto l225
						}
						position++
					}
				l232:
					goto l168
				l225:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l234
					}
					position++
					if buffer[position] != rune('4') {
						goto l234
					}
					position++
					{
						position235, tokenIndex235 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l236
						}
						position++
						goto l235
					l236:
						position, tokenIndex = position235, tokenIndex235
						if buffer[position] != rune('B') {
							goto l234
						}
						position++
					}
				l235:
					{
						position237, tokenIndex237 := position, tokenIndex
						if buffer[position] != rune('y') {
							goto l238
						}
						position++
						goto l237
					l238:
						position, tokenIndex = position237, tokenIndex237
						if buffer[position] != rune('Y') {
							goto l234
						}
						position++
					}
				l237:
					{
						position239, tokenIndex239 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l240
						}
						position++
						goto l239
					l240:
						position, tokenIndex = position239, tokenIndex239
						if buffer[position] != rune('T') {
							goto l234
						}
						position++
					}
				l239:
					{
						position241, tokenIndex241 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l242
						}
						position++
						goto l241
					l242:
						position, tokenIndex = position241, tokenIndex241
						if buffer[position] != rune('E') {
							goto l234
						}
						position++
					}
				l241:
					goto l168
				l234:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l243
					}
					position++
					{
						position244, tokenIndex244 := position, tokenIndex
						if buffer[position] != rune('q') {
							goto l245
						}
						position++
						goto l244
					l245:
						position, tokenIndex = position244, tokenIndex244
						if buffer[position] != rune('Q') {
							goto l243
						}
						position++
					}
				l244:
					{
						position246, tokenIndex246 := position, tokenIndex
						if buffer[position] != rune('u') {
							goto l247
						}
						position++
						goto l246
					l247:
						position, tokenIndex = position246, tokenIndex246
						if buffer[position] != rune('U') {
							goto l243
						}
						position++
					}
				l246:
					{
						position248, tokenIndex248 := position, tokenIndex
						if buffer[position] != rune('a') {
							goto l249
						}
						position++
						goto l248
					l249:
						position, tokenIndex = position248, tokenIndex248
						if buffer[position] != rune('A') {
							goto l243
						}
						position++
					}
				l248:
					{
						position250, tokenIndex250 := position, tokenIndex
						if buffer[position] != rune('d') {
							goto l251
						}
						position++
						goto l250
					l251:
						position, tokenIndex = position250, tokenIndex250
						if buffer[position] != rune('D') {
							goto l243
						}
						position++
					}
				l250:
					goto l168
				l243:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l252
					}
					position++
					{
						position253, tokenIndex253 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l254
						}
						position++
						goto l253
					l254:
						position, tokenIndex = position253, tokenIndex253
						if buffer[position] != rune('T') {
							goto l252
						}
						position++
					}
				l253:
					{
						position255, tokenIndex255 := position, tokenIndex
						if buffer[position] != rune('c') {
							goto l256
						}
						position++
						goto l255
					l256:
						position, tokenIndex = position255, tokenIndex255
						if buffer[position] != rune('C') {
							goto l252
						}
						position++
					}
				l255:
					goto l168
				l252:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l257
					}
					position++
					{
						position258, tokenIndex258 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l259
						}
						position++
						goto l258
					l259:
						position, tokenIndex = position258, tokenIndex258
						if buffer[position] != rune('L') {
							goto l257
						}
						position++
					}
				l258:
					{
						position260, tokenIndex260 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l261
						}
						position++
						goto l260
					l261:
						position, tokenIndex = position260, tokenIndex260
						if buffer[position] != rune('O') {
							goto l257
						}
						position++
					}
				l260:
					{
						position262, tokenIndex262 := position, tokenIndex
						if buffer[position] != rune('c') {
							goto l263
						}
						position++
						goto l262
					l263:
						position, tokenIndex = position262, tokenIndex262
						if buffer[position] != rune('C') {
							goto l257
						}
						position++
					}
				l262:
					{
						position264, tokenIndex264 := position, tokenIndex
						if buffer[position] != rune('a') {
							goto l265
						}
						position++
						goto l264
					l265:
						position, tokenIndex = position264, tokenIndex264
						if buffer[position] != rune('A') {
							goto l257
						}
						position++
					}
				l264:
					{
						position266, tokenIndex266 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l267
						}
						position++
						goto l266
					l267:
						position, tokenIndex = position266, tokenIndex266
						if buffer[position] != rune('L') {
							goto l257
						}
						position++
					}
				l266:
					{
						position268, tokenIndex268 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l269
						}
						position++
						goto l268
					l269:
						position, tokenIndex = position268, tokenIndex268
						if buffer[position] != rune('E') {
							goto l257
						}
						position++
					}
				l268:
					{
						position270, tokenIndex270 := position, tokenIndex
						if buffer[position] != rune('n') {
							goto l271
						}
						position++
						goto l270
					l271:
						position, tokenIndex = position270, tokenIndex270
						if buffer[position] != rune('N') {
							goto l257
						}
						position++
					}
				l270:
					{
						position272, tokenIndex272 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l273
						}
						position++
						goto l272
					l273:
						position, tokenIndex = position272, tokenIndex272
						if buffer[position] != rune('T') {
							goto l257
						}
						position++
					}
				l272:
					{
						position274, tokenIndex274 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l275
						}
						position++
						goto l274
					l275:
						position, tokenIndex = position274, tokenIndex274
						if buffer[position] != rune('R') {
							goto l257
						}
						position++
					}
				l274:
					{
						position276, tokenIndex276 := position, tokenIndex
						if buffer[position] != rune('y') {
							goto l277
						}
						position++
						goto l276
					l277:
						position, tokenIndex = position276, tokenIndex276
						if buffer[position] != rune('Y') {
							goto l257
						}
						position++
					}
				l276:
					goto l168
				l257:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l278
					}
					position++
					{
						position279, tokenIndex279 := position, tokenIndex
						if buffer[position] != rune('s') {
							goto l280
						}
						position++
						goto l279
					l280:
						position, tokenIndex = position279, tokenIndex279
						if buffer[position] != rune('S') {
							goto l278
						}
						position++
					}
				l279:
					{
						position281, tokenIndex281 := position, tokenIndex
						if buffer[position] != rune('i') {
							goto l282
						}
						position++
						goto l281
					l282:
						position, tokenIndex = position281, tokenIndex281
						if buffer[position] != rune('I') {
							goto l278
						}
						position++
					}
				l281:
					{
						position283, tokenIndex283 := position, tokenIndex
						if buffer[position] != rune('z') {
							goto l284
						}
						position++
						goto l283
					l284:
						position, tokenIndex = position283, tokenIndex283
						if buffer[position] != rune('Z') {
							goto l278
						}
						position++
					}
				l283:
					{
						position285, tokenIndex285 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l286
						}
						position++
						goto l285
					l286:
						position, tokenIndex = position285, tokenIndex285
						if buffer[position] != rune('E') {
							goto l278
						}
						position++
					}
				l285:
					goto l168
				l278:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l287
					}
					position++
					{
						position288, tokenIndex288 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l289
						}
						position++
						goto l288
					l289:
						position, tokenIndex = position288, tokenIndex288
						if buffer[position] != rune('T') {
							goto l287
						}
						position++
					}
				l288:
					{
						position290, tokenIndex290 := position, tokenIndex
						if buffer[position] != rune('y') {
							goto l291
						}
						position++
						goto l290
					l291:
						position, tokenIndex = position290, tokenIndex290
						if buffer[position] != rune('Y') {
							goto l287
						}
						position++
					}
				l290:
					{
						position292, tokenIndex292 := position, tokenIndex
						if buffer[position] != rune('p') {
							goto l293
						}
						position++
						goto l292
					l293:
						position, tokenIndex = position292, tokenIndex292
						if buffer[position] != rune('P') {
							goto l287
						}
						position++
					}
				l292:
					{
						position294, tokenIndex294 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l295
						}
						position++
						goto l294
					l295:
						position, tokenIndex = position294, tokenIndex294
						if buffer[position] != rune('E') {
							goto l287
						}
						position++
					}
				l294:
					goto l168
				l287:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l296
					}
					position++
					{
						position297, tokenIndex297 := position, tokenIndex
						if buffer[position] != rune('u') {
							goto l298
						}
						position++
						goto l297
					l298:
						position, tokenIndex = position297, tokenIndex297
						if buffer[position] != rune('U') {
							goto l296
						}
						position++
					}
				l297:
					{
						position299, tokenIndex299 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l300
						}
						position++
						goto l299
					l300:
						position, tokenIndex = position299, tokenIndex299
						if buffer[position] != rune('L') {
							goto l296
						}
						position++
					}
				l299:
					{
						position301, tokenIndex301 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l302
						}
						position++
						goto l301
					l302:
						position, tokenIndex = position301, tokenIndex301
						if buffer[position] != rune('E') {
							goto l296
						}
						position++
					}
				l301:
					{
						position303, tokenIndex303 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l304
						}
						position++
						goto l303
					l304:
						position, tokenIndex = position303, tokenIndex303
						if buffer[position] != rune('B') {
							goto l296
						}
						position++
					}
				l303:
					if buffer[position] != rune('1') {
						goto l296
					}
					position++
					if buffer[position] != rune('2') {
						goto l296
					}
					position++
					if buffer[position] != rune('8') {
						goto l296
					}
					position++
					goto l168
				l296:
					position, tokenIndex = position168, tokenIndex168
					if buffer[position] != rune('.') {
						goto l166
					}
					position++
					{
						position305, tokenIndex305 := position, tokenIndex
						if buffer[position] != rune('s') {
							goto l306
						}
						position++
						goto l305
					l306:
						position, tokenIndex = position305, tokenIndex305
						if buffer[position] != rune('S') {
							goto l166
						}
						position++
					}
				l305:
					{
						position307, tokenIndex307 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l308
						}
						position++
						goto l307
					l308:
						position, tokenIndex = position307, tokenIndex307
						if buffer[position] != rune('L') {
							goto l166
						}
						position++
					}
				l307:
					{
						position309, tokenIndex309 := position, tokenIndex
						if buffer[position] != rune('e') {
							goto l310
						}
						position++
						goto l309
					l310:
						position, tokenIndex = position309, tokenIndex309
						if buffer[position] != rune('E') {
							goto l166
						}
						position++
					}
				l309:
					{
						position311, tokenIndex311 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l312
						}
						position++
						goto l311
					l312:
						position, tokenIndex = position311, tokenIndex311
						if buffer[position] != rune('B') {
							goto l166
						}
						position++
					}
				l311:
					if buffer[position] != rune('1') {
						goto l166
					}
					position++
					if buffer[position] != rune('2') {
						goto l166
					}
					position++
					if buffer[position] != rune('8') {
						goto l166
					}
					position++
				}
			l168:
				add(ruleLabelContainingDirectiveName, position167)
			}
			return true
		l166:
			position, tokenIndex = position166, tokenIndex166
			return false
		},
		/* 15 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
		func() bool {
			position313, tokenIndex313 := position, tokenIndex
			{
				position314 := position
				if !_rules[ruleSymbolArg]() {
					goto l313
				}
			l315:
				{
					position316, tokenIndex316 := position, tokenIndex
					{
						position317, tokenIndex317 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l317
						}
						goto l318
					l317:
						position, tokenIndex = position317, tokenIndex317
					}
				l318:
					if buffer[position] != rune(',') {
						goto l316
					}
					position++
					{
						position319, tokenIndex319 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l319
						}
						goto l320
					l319:
						position, tokenIndex = position319, tokenIndex319
					}
				l320:
					if !_rules[ruleSymbolArg]() {
						goto l316
					}
					goto l315
				l316:
					position, tokenIndex = position316, tokenIndex316
				}
				add(ruleSymbolArgs, position314)
			}
			return true
		l313:
			position, tokenIndex = position313, tokenIndex313
			return false
		},
		/* 16 SymbolArg <- <SymbolExpr> */
		func() bool {
			position321, tokenIndex321 := position, tokenIndex
			{
				position322 := position
				if !_rules[ruleSymbolExpr]() {
					goto l321
				}
				add(ruleSymbolArg, position322)
			}
			return true
		l321:
			position, tokenIndex = position321, tokenIndex321
			return false
		},
		/* 17 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
		func() bool {
			position323, tokenIndex323 := position, tokenIndex
			{
				position324 := position
				if !_rules[ruleSymbolAtom]() {
					goto l323
				}
				{
					position325, tokenIndex325 := position, tokenIndex
					{
						position327, tokenIndex327 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l327
						}
						goto l328
					l327:
						position, tokenIndex = position327, tokenIndex327
					}
				l328:
					if !_rules[ruleSymbolOperator]() {
						goto l325
					}
					{
						position329, tokenIndex329 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l329
						}
						goto l330
					l329:
						position, tokenIndex = position329, tokenIndex329
					}
				l330:
					if !_rules[ruleSymbolExpr]() {
						goto l325
					}
					goto l326
				l325:
					position, tokenIndex = position325, tokenIndex325
				}
			l326:
				add(ruleSymbolExpr, position324)
			}
			return true
		l323:
			position, tokenIndex = position323, tokenIndex323
			return false
		},
		/* 18 SymbolAtom <- <(Offset / SymbolType / LocalLabelRef / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
		func() bool {
			position331, tokenIndex331 := position, tokenIndex
			{
				position332 := position
				{
					position333, tokenIndex333 := position, tokenIndex
					if !_rules[ruleOffset]() {
						goto l334
					}
					goto l333
				l334:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleSymbolType]() {
						goto l335
					}
					goto l333
				l335:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleLocalLabelRef]() {
						goto l336
					}
					goto l333
				l336:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleLocalSymbol]() {
						goto l337
					}
					{
						position338, tokenIndex338 := position, tokenIndex
						if !_rules[ruleTCMarker]() {
							goto l338
						}
						goto l339
					l338:
						position, tokenIndex = position338, tokenIndex338
					}
				l339:
					goto l333
				l337:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleSymbolName]() {
						goto l340
					}
					if !_rules[ruleOffset]() {
						goto l340
					}
					goto l333
				l340:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleSymbolName]() {
						goto l341
					}
					{
						position342, tokenIndex342 := position, tokenIndex
						if !_rules[ruleTCMarker]() {
							goto l342
						}
						goto l343
					l342:
						position, tokenIndex = position342, tokenIndex342
					}
				l343:
					goto l333
				l341:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleDot]() {
						goto l344
					}
					goto l333
				l344:
					position, tokenIndex = position333, tokenIndex333
					if !_rules[ruleOpenParen]() {
						goto l331
					}
					{
						position345, tokenIndex345 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l345
						}
						goto l346
					l345:
						position, tokenIndex = position345, tokenIndex345
					}
				l346:
					if !_rules[ruleSymbolExpr]() {
						goto l331
					}
					{
						position347, tokenIndex347 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l347
						}
						goto l348
					l347:
						position, tokenIndex = position347, tokenIndex347
					}
				l348:
					if !_rules[ruleCloseParen]() {
						goto l331
					}
				}
			l333:
				add(ruleSymbolAtom, position332)
			}
			return true
		l331:
			position, tokenIndex = position331, tokenIndex331
			return false
		},
		/* 19 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
		func() bool {
			position349, tokenIndex349 := position, tokenIndex
			{
				position350 := position
				{
					position351, tokenIndex351 := position, tokenIndex
					if buffer[position] != rune('+') {
						goto l352
					}
					position++
					goto l351
				l352:
					position, tokenIndex = position351, tokenIndex351
					if buffer[position] != rune('-') {
						goto l353
					}
					position++
					goto l351
				l353:
					position, tokenIndex = position351, tokenIndex351
					if buffer[position] != rune('|') {
						goto l354
					}
					position++
					goto l351
				l354:
					position, tokenIndex = position351, tokenIndex351
					if buffer[position] != rune('<') {
						goto l355
					}
					position++
					if buffer[position] != rune('<') {
						goto l355
					}
					position++
					goto l351
				l355:
					position, tokenIndex = position351, tokenIndex351
					if buffer[position] != rune('>') {
						goto l349
					}
					position++
					if buffer[position] != rune('>') {
						goto l349
					}
					position++
				}
			l351:
				add(ruleSymbolOperator, position350)
			}
			return true
		l349:
			position, tokenIndex = position349, tokenIndex349
			return false
		},
		/* 20 OpenParen <- <'('> */
		func() bool {
			position356, tokenIndex356 := position, tokenIndex
			{
				position357 := position
				if buffer[position] != rune('(') {
					goto l356
				}
				position++
				add(ruleOpenParen, position357)
			}
			return true
		l356:
			position, tokenIndex = position356, tokenIndex356
			return false
		},
		/* 21 CloseParen <- <')'> */
		func() bool {
			position358, tokenIndex358 := position, tokenIndex
			{
				position359 := position
				if buffer[position] != rune(')') {
					goto l358
				}
				position++
				add(ruleCloseParen, position359)
			}
			return true
		l358:
			position, tokenIndex = position358, tokenIndex358
			return false
		},
		/* 22 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
		func() bool {
			position360, tokenIndex360 := position, tokenIndex
			{
				position361 := position
				{
					position362, tokenIndex362 := position, tokenIndex
					if buffer[position] != rune('@') {
						goto l363
					}
					position++
					goto l362
				l363:
					position, tokenIndex = position362, tokenIndex362
					if buffer[position] != rune('%') {
						goto l360
					}
					position++
				}
			l362:
				{
					position364, tokenIndex364 := position, tokenIndex
					if buffer[position] != rune('f') {
						goto l365
					}
					position++
					if buffer[position] != rune('u') {
						goto l365
					}
					position++
					if buffer[position] != rune('n') {
						goto l365
					}
					position++
					if buffer[position] != rune('c') {
						goto l365
					}
					position++
					if buffer[position] != rune('t') {
						goto l365
					}
					position++
					if buffer[position] != rune('i') {
						goto l365
					}
					position++
					if buffer[position] != rune('o') {
						goto l365
					}
					position++
					if buffer[position] != rune('n') {
						goto l365
					}
					position++
					goto l364
				l365:
					position, tokenIndex = position364, tokenIndex364
					if buffer[position] != rune('o') {
						goto l360
					}
					position++
					if buffer[position] != rune('b') {
						goto l360
					}
					position++
					if buffer[position] != rune('j') {
						goto l360
					}
					position++
					if buffer[position] != rune('e') {
						goto l360
					}
					position++
					if buffer[position] != rune('c') {
						goto l360
					}
					position++
					if buffer[position] != rune('t') {
						goto l360
					}
					position++
				}
			l364:
				add(ruleSymbolType, position361)
			}
			return true
		l360:
			position, tokenIndex = position360, tokenIndex360
			return false
		},
		/* 23 Dot <- <'.'> */
		func() bool {
			position366, tokenIndex366 := position, tokenIndex
			{
				position367 := position
				if buffer[position] != rune('.') {
					goto l366
				}
				position++
				add(ruleDot, position367)
			}
			return true
		l366:
			position, tokenIndex = position366, tokenIndex366
			return false
		},
		/* 24 TCMarker <- <('[' 'T' 'C' ']')> */
		func() bool {
			position368, tokenIndex368 := position, tokenIndex
			{
				position369 := position
				if buffer[position] != rune('[') {
					goto l368
				}
				position++
				if buffer[position] != rune('T') {
					goto l368
				}
				position++
				if buffer[position] != rune('C') {
					goto l368
				}
				position++
				if buffer[position] != rune(']') {
					goto l368
				}
				position++
				add(ruleTCMarker, position369)
			}
			return true
		l368:
			position, tokenIndex = position368, tokenIndex368
			return false
		},
		/* 25 EscapedChar <- <('\\' .)> */
		func() bool {
			position370, tokenIndex370 := position, tokenIndex
			{
				position371 := position
				if buffer[position] != rune('\\') {
					goto l370
				}
				position++
				if !matchDot() {
					goto l370
				}
				add(ruleEscapedChar, position371)
			}
			return true
		l370:
			position, tokenIndex = position370, tokenIndex370
			return false
		},
		/* 26 WS <- <(' ' / '\t')+> */
		func() bool {
			position372, tokenIndex372 := position, tokenIndex
			{
				position373 := position
				{
					position376, tokenIndex376 := position, tokenIndex
					if buffer[position] != rune(' ') {
						goto l377
					}
					position++
					goto l376
				l377:
					position, tokenIndex = position376, tokenIndex376
					if buffer[position] != rune('\t') {
						goto l372
					}
					position++
				}
			l376:
			l374:
				{
					position375, tokenIndex375 := position, tokenIndex
					{
						position378, tokenIndex378 := position, tokenIndex
						if buffer[position] != rune(' ') {
							goto l379
						}
						position++
						goto l378
					l379:
						position, tokenIndex = position378, tokenIndex378
						if buffer[position] != rune('\t') {
							goto l375
						}
						position++
					}
				l378:
					goto l374
				l375:
					position, tokenIndex = position375, tokenIndex375
				}
				add(ruleWS, position373)
			}
			return true
		l372:
			position, tokenIndex = position372, tokenIndex372
			return false
		},
		/* 27 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
		func() bool {
			position380, tokenIndex380 := position, tokenIndex
			{
				position381 := position
				{
					position382, tokenIndex382 := position, tokenIndex
					if buffer[position] != rune('/') {
						goto l383
					}
					position++
					if buffer[position] != rune('/') {
						goto l383
					}
					position++
					goto l382
				l383:
					position, tokenIndex = position382, tokenIndex382
					if buffer[position] != rune('#') {
						goto l380
					}
					position++
				}
			l382:
			l384:
				{
					position385, tokenIndex385 := position, tokenIndex
					{
						position386, tokenIndex386 := position, tokenIndex
						if buffer[position] != rune('\n') {
							goto l386
						}
						position++
						goto l385
					l386:
						position, tokenIndex = position386, tokenIndex386
					}
					if !matchDot() {
						goto l385
					}
					goto l384
				l385:
					position, tokenIndex = position385, tokenIndex385
				}
				add(ruleComment, position381)
			}
			return true
		l380:
			position, tokenIndex = position380, tokenIndex380
			return false
		},
		/* 28 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
		func() bool {
			position387, tokenIndex387 := position, tokenIndex
			{
				position388 := position
				{
					position389, tokenIndex389 := position, tokenIndex
					if !_rules[ruleLocalSymbol]() {
						goto l390
					}
					goto l389
				l390:
					position, tokenIndex = position389, tokenIndex389
					if !_rules[ruleLocalLabel]() {
						goto l391
					}
					goto l389
				l391:
					position, tokenIndex = position389, tokenIndex389
					if !_rules[ruleSymbolName]() {
						goto l387
					}
				}
			l389:
				if buffer[position] != rune(':') {
					goto l387
				}
				position++
				add(ruleLabel, position388)
			}
			return true
		l387:
			position, tokenIndex = position387, tokenIndex387
			return false
		},
		/* 29 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
		func() bool {
			position392, tokenIndex392 := position, tokenIndex
			{
				position393 := position
				{
					position394, tokenIndex394 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l395
					}
					position++
					goto l394
				l395:
					position, tokenIndex = position394, tokenIndex394
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l396
					}
					position++
					goto l394
				l396:
					position, tokenIndex = position394, tokenIndex394
					if buffer[position] != rune('.') {
						goto l397
					}
					position++
					goto l394
				l397:
					position, tokenIndex = position394, tokenIndex394
					if buffer[position] != rune('_') {
						goto l392
					}
					position++
				}
			l394:
			l398:
				{
					position399, tokenIndex399 := position, tokenIndex
					{
						position400, tokenIndex400 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l401
						}
						position++
						goto l400
					l401:
						position, tokenIndex = position400, tokenIndex400
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l402
						}
						position++
						goto l400
					l402:
						position, tokenIndex = position400, tokenIndex400
						if buffer[position] != rune('.') {
							goto l403
						}
						position++
						goto l400
					l403:
						position, tokenIndex = position400, tokenIndex400
						{
							position405, tokenIndex405 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l406
							}
							position++
							goto l405
						l406:
							position, tokenIndex = position405, tokenIndex405
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l404
							}
							position++
						}
					l405:
						goto l400
					l404:
						position, tokenIndex = position400, tokenIndex400
						if buffer[position] != rune('$') {
							goto l407
						}
						position++
						goto l400
					l407:
						position, tokenIndex = position400, tokenIndex400
						if buffer[position] != rune('_') {
							goto l399
						}
						position++
					}
				l400:
					goto l398
				l399:
					position, tokenIndex = position399, tokenIndex399
				}
				add(ruleSymbolName, position393)
			}
			return true
		l392:
			position, tokenIndex = position392, tokenIndex392
			return false
		},
		/* 30 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
		func() bool {
			position408, tokenIndex408 := position, tokenIndex
			{
				position409 := position
				if buffer[position] != rune('.') {
					goto l408
				}
				position++
				if buffer[position] != rune('L') {
					goto l408
				}
				position++
				{
					position412, tokenIndex412 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l413
					}
					position++
					goto l412
				l413:
					position, tokenIndex = position412, tokenIndex412
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l414
					}
					position++
					goto l412
				l414:
					position, tokenIndex = position412, tokenIndex412
					{
						position416, tokenIndex416 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l417
						}
						position++
						goto l416
					l417:
						position, tokenIndex = position416, tokenIndex416
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l415
						}
						position++
					}
				l416:
					goto l412
				l415:
					position, tokenIndex = position412, tokenIndex412
					if buffer[position] != rune('.') {
						goto l418
					}
					position++
					goto l412
				l418:
					position, tokenIndex = position412, tokenIndex412
					{
						position420, tokenIndex420 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l421
						}
						position++
						goto l420
					l421:
						position, tokenIndex = position420, tokenIndex420
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l419
						}
						position++
					}
				l420:
					goto l412
				l419:
					position, tokenIndex = position412, tokenIndex412
					if buffer[position] != rune('$') {
						goto l422
					}
					position++
					goto l412
				l422:
					position, tokenIndex = position412, tokenIndex412
					if buffer[position] != rune('_') {
						goto l408
					}
					position++
				}
			l412:
			l410:
				{
					position411, tokenIndex411 := position, tokenIndex
					{
						position423, tokenIndex423 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l424
						}
						position++
						goto l423
					l424:
						position, tokenIndex = position423, tokenIndex423
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l425
						}
						position++
						goto l423
					l425:
						position, tokenIndex = position423, tokenIndex423
						{
							position427, tokenIndex427 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('z') {
								goto l428
							}
							position++
							goto l427
						l428:
							position, tokenIndex = position427, tokenIndex427
							if c := buffer[position]; c < rune('A') || c > rune('Z') {
								goto l426
							}
							position++
						}
					l427:
						goto l423
					l426:
						position, tokenIndex = position423, tokenIndex423
						if buffer[position] != rune('.') {
							goto l429
						}
						position++
						goto l423
					l429:
						position, tokenIndex = position423, tokenIndex423
						{
							position431, tokenIndex431 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l432
							}
							position++
							goto l431
						l432:
							position, tokenIndex = position431, tokenIndex431
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l430
							}
							position++
						}
					l431:
						goto l423
					l430:
						position, tokenIndex = position423, tokenIndex423
						if buffer[position] != rune('$') {
							goto l433
						}
						position++
						goto l423
					l433:
						position, tokenIndex = position423, tokenIndex423
						if buffer[position] != rune('_') {
							goto l411
						}
						position++
					}
				l423:
					goto l410
				l411:
					position, tokenIndex = position411, tokenIndex411
				}
				add(ruleLocalSymbol, position409)
			}
			return true
		l408:
			position, tokenIndex = position408, tokenIndex408
			return false
		},
		/* 31 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
		func() bool {
			position434, tokenIndex434 := position, tokenIndex
			{
				position435 := position
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l434
				}
				position++
			l436:
				{
					position437, tokenIndex437 := position, tokenIndex
					{
						position438, tokenIndex438 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l439
						}
						position++
						goto l438
					l439:
						position, tokenIndex = position438, tokenIndex438
						if buffer[position] != rune('$') {
							goto l437
						}
						position++
					}
				l438:
					goto l436
				l437:
					position, tokenIndex = position437, tokenIndex437
				}
				add(ruleLocalLabel, position435)
			}
			return true
		l434:
			position, tokenIndex = position434, tokenIndex434
			return false
		},
		/* 32 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
		func() bool {
			position440, tokenIndex440 := position, tokenIndex
			{
				position441 := position
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l440
				}
				position++
			l442:
				{
					position443, tokenIndex443 := position, tokenIndex
					{
						position444, tokenIndex444 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l445
						}
						position++
						goto l444
					l445:
						position, tokenIndex = position444, tokenIndex444
						if buffer[position] != rune('$') {
							goto l443
						}
						position++
					}
				l444:
					goto l442
				l443:
					position, tokenIndex = position443, tokenIndex443
				}
				{
					position446, tokenIndex446 := position, tokenIndex
					if buffer[position] != rune('b') {
						goto l447
					}
					position++
					goto l446
				l447:
					position, tokenIndex = position446, tokenIndex446
					if buffer[position] != rune('f') {
						goto l440
					}
					position++
				}
			l446:
				add(ruleLocalLabelRef, position441)
			}
			return true
		l440:
			position, tokenIndex = position440, tokenIndex440
			return false
		},
		/* 33 Instruction <- <(InstructionName (WS InstructionArg (WS? ','? WS? InstructionArg)*)?)> */
		func() bool {
			position448, tokenIndex448 := position, tokenIndex
			{
				position449 := position
				if !_rules[ruleInstructionName]() {
					goto l448
				}
				{
					position450, tokenIndex450 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l450
					}
					if !_rules[ruleInstructionArg]() {
						goto l450
					}
				l452:
					{
						position453, tokenIndex453 := position, tokenIndex
						{
							position454, tokenIndex454 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l454
							}
							goto l455
						l454:
							position, tokenIndex = position454, tokenIndex454
						}
					l455:
						{
							position456, tokenIndex456 := position, tokenIndex
							if buffer[position] != rune(',') {
								goto l456
							}
							position++
							goto l457
						l456:
							position, tokenIndex = position456, tokenIndex456
						}
					l457:
						{
							position458, tokenIndex458 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l458
							}
							goto l459
						l458:
							position, tokenIndex = position458, tokenIndex458
						}
					l459:
						if !_rules[ruleInstructionArg]() {
							goto l453
						}
						goto l452
					l453:
						position, tokenIndex = position453, tokenIndex453
					}
					goto l451
				l450:
					position, tokenIndex = position450, tokenIndex450
				}
			l451:
				add(ruleInstruction, position449)
			}
			return true
		l448:
			position, tokenIndex = position448, tokenIndex448
			return false
		},
		/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
		func() bool {
			position460, tokenIndex460 := position, tokenIndex
			{
				position461 := position
				{
					position462, tokenIndex462 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l463
					}
					position++
					goto l462
				l463:
					position, tokenIndex = position462, tokenIndex462
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l460
					}
					position++
				}
			l462:
			l464:
				{
					position465, tokenIndex465 := position, tokenIndex
					{
						position466, tokenIndex466 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l467
						}
						position++
						goto l466
					l467:
						position, tokenIndex = position466, tokenIndex466
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l468
						}
						position++
						goto l466
					l468:
						position, tokenIndex = position466, tokenIndex466
						if buffer[position] != rune('.') {
							goto l469
						}
						position++
						goto l466
					l469:
						position, tokenIndex = position466, tokenIndex466
						{
							position470, tokenIndex470 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l471
							}
							position++
							goto l470
						l471:
							position, tokenIndex = position470, tokenIndex470
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l465
							}
							position++
						}
					l470:
					}
				l466:
					goto l464
				l465:
					position, tokenIndex = position465, tokenIndex465
				}
				{
					position472, tokenIndex472 := position, tokenIndex
					{
						position474, tokenIndex474 := position, tokenIndex
						if buffer[position] != rune('.') {
							goto l475
						}
						position++
						goto l474
					l475:
						position, tokenIndex = position474, tokenIndex474
						if buffer[position] != rune('+') {
							goto l476
						}
						position++
						goto l474
					l476:
						position, tokenIndex = position474, tokenIndex474
						if buffer[position] != rune('-') {
							goto l472
						}
						position++
					}
				l474:
					goto l473
				l472:
					position, tokenIndex = position472, tokenIndex472
				}
			l473:
				add(ruleInstructionName, position461)
			}
			return true
		l460:
			position, tokenIndex = position460, tokenIndex460
			return false
		},
		/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef / AVX512Token))> */
		func() bool {
			position477, tokenIndex477 := position, tokenIndex
			{
				position478 := position
				{
					position479, tokenIndex479 := position, tokenIndex
					if !_rules[ruleIndirectionIndicator]() {
						goto l479
					}
					goto l480
				l479:
					position, tokenIndex = position479, tokenIndex479
				}
			l480:
				{
					position481, tokenIndex481 := position, tokenIndex
					if !_rules[ruleARMConstantTweak]() {
						goto l482
					}
					goto l481
				l482:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleRegisterOrConstant]() {
						goto l483
					}
					goto l481
				l483:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleLocalLabelRef]() {
						goto l484
					}
					goto l481
				l484:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleTOCRefHigh]() {
						goto l485
					}
					goto l481
				l485:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleTOCRefLow]() {
						goto l486
					}
					goto l481
				l486:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleGOTLocation]() {
						goto l487
					}
					goto l481
				l487:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleGOTSymbolOffset]() {
						goto l488
					}
					goto l481
				l488:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleMemoryRef]() {
						goto l489
					}
					goto l481
				l489:
					position, tokenIndex = position481, tokenIndex481
					if !_rules[ruleAVX512Token]() {
						goto l477
					}
				}
			l481:
				add(ruleInstructionArg, position478)
			}
			return true
		l477:
			position, tokenIndex = position477, tokenIndex477
			return false
		},
		/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
		func() bool {
			position490, tokenIndex490 := position, tokenIndex
			{
				position491 := position
				if buffer[position] != rune('$') {
					goto l490
				}
				position++
				if buffer[position] != rune('_') {
					goto l490
				}
				position++
				if buffer[position] != rune('G') {
					goto l490
				}
				position++
				if buffer[position] != rune('L') {
					goto l490
				}
				position++
				if buffer[position] != rune('O') {
					goto l490
				}
				position++
				if buffer[position] != rune('B') {
					goto l490
				}
				position++
				if buffer[position] != rune('A') {
					goto l490
				}
				position++
				if buffer[position] != rune('L') {
					goto l490
				}
				position++
				if buffer[position] != rune('_') {
					goto l490
				}
				position++
				if buffer[position] != rune('O') {
					goto l490
				}
				position++
				if buffer[position] != rune('F') {
					goto l490
				}
				position++
				if buffer[position] != rune('F') {
					goto l490
				}
				position++
				if buffer[position] != rune('S') {
					goto l490
				}
				position++
				if buffer[position] != rune('E') {
					goto l490
				}
				position++
				if buffer[position] != rune('T') {
					goto l490
				}
				position++
				if buffer[position] != rune('_') {
					goto l490
				}
				position++
				if buffer[position] != rune('T') {
					goto l490
				}
				position++
				if buffer[position] != rune('A') {
					goto l490
				}
				position++
				if buffer[position] != rune('B') {
					goto l490
				}
				position++
				if buffer[position] != rune('L') {
					goto l490
				}
				position++
				if buffer[position] != rune('E') {
					goto l490
				}
				position++
				if buffer[position] != rune('_') {
					goto l490
				}
				position++
				if buffer[position] != rune('-') {
					goto l490
				}
				position++
				if !_rules[ruleLocalSymbol]() {
					goto l490
				}
				add(ruleGOTLocation, position491)
			}
			return true
		l490:
			position, tokenIndex = position490, tokenIndex490
			return false
		},
		/* 37 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
		func() bool {
			position492, tokenIndex492 := position, tokenIndex
			{
				position493 := position
				{
					position494, tokenIndex494 := position, tokenIndex
					if buffer[position] != rune('$') {
						goto l495
					}
					position++
					if !_rules[ruleSymbolName]() {
						goto l495
					}
					if buffer[position] != rune('@') {
						goto l495
					}
					position++
					if buffer[position] != rune('G') {
						goto l495
					}
					position++
					if buffer[position] != rune('O') {
						goto l495
					}
					position++
					if buffer[position] != rune('T') {
						goto l495
					}
					position++
					{
						position496, tokenIndex496 := position, tokenIndex
						if buffer[position] != rune('O') {
							goto l496
						}
						position++
						if buffer[position] != rune('F') {
							goto l496
						}
						position++
						if buffer[position] != rune('F') {
							goto l496
						}
						position++
						goto l497
					l496:
						position, tokenIndex = position496, tokenIndex496
					}
				l497:
					goto l494
				l495:
					position, tokenIndex = position494, tokenIndex494
					if buffer[position] != rune(':') {
						goto l492
					}
					position++
					{
						position498, tokenIndex498 := position, tokenIndex
						if buffer[position] != rune('g') {
							goto l499
						}
						position++
						goto l498
					l499:
						position, tokenIndex = position498, tokenIndex498
						if buffer[position] != rune('G') {
							goto l492
						}
						position++
					}
				l498:
					{
						position500, tokenIndex500 := position, tokenIndex
						if buffer[position] != rune('o') {
							goto l501
						}
						position++
						goto l500
					l501:
						position, tokenIndex = position500, tokenIndex500
						if buffer[position] != rune('O') {
							goto l492
						}
						position++
					}
				l500:
					{
						position502, tokenIndex502 := position, tokenIndex
						if buffer[position] != rune('t') {
							goto l503
						}
						position++
						goto l502
					l503:
						position, tokenIndex = position502, tokenIndex502
						if buffer[position] != rune('T') {
							goto l492
						}
						position++
					}
				l502:
					if buffer[position] != rune(':') {
						goto l492
					}
					position++
					if !_rules[ruleSymbolName]() {
						goto l492
					}
				}
			l494:
				add(ruleGOTSymbolOffset, position493)
			}
			return true
		l492:
			position, tokenIndex = position492, tokenIndex492
			return false
		},
		/* 38 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
		func() bool {
			position504, tokenIndex504 := position, tokenIndex
			{
				position505 := position
				{
					position506, tokenIndex506 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l506
					}
					goto l507
				l506:
					position, tokenIndex = position506, tokenIndex506
				}
			l507:
				if buffer[position] != rune('{') {
					goto l504
				}
				position++
				{
					position508, tokenIndex508 := position, tokenIndex
					if buffer[position] != rune('%') {
						goto l508
					}
					position++
					goto l509
				l508:
					position, tokenIndex = position508, tokenIndex508
				}
			l509:
			l510:
				{
					position511, tokenIndex511 := position, tokenIndex
					{
						position512, tokenIndex512 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l513
						}
						position++
						goto l512
					l513:
						position, tokenIndex = position512, tokenIndex512
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l511
						}
						position++
					}
				l512:
					goto l510
				l511:
					position, tokenIndex = position511, tokenIndex511
				}
				if buffer[position] != rune('}') {
					goto l504
				}
				position++
				add(ruleAVX512Token, position505)
			}
			return true
		l504:
			position, tokenIndex = position504, tokenIndex504
			return false
		},
		/* 39 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
		func() bool {
			position514, tokenIndex514 := position, tokenIndex
			{
				position515 := position
				if buffer[position] != rune('.') {
					goto l514
				}
				position++
				if buffer[position] != rune('T') {
					goto l514
				}
				position++
				if buffer[position] != rune('O') {
					goto l514
				}
				position++
				if buffer[position] != rune('C') {
					goto l514
				}
				position++
				if buffer[position] != rune('.') {
					goto l514
				}
				position++
				if buffer[position] != rune('-') {
					goto l514
				}
				position++
				{
					position516, tokenIndex516 := position, tokenIndex
					if buffer[position] != rune('0') {
						goto l517
					}
					position++
					if buffer[position] != rune('b') {
						goto l517
					}
					position++
					goto l516
				l517:
					position, tokenIndex = position516, tokenIndex516
					if buffer[position] != rune('.') {
						goto l514
					}
					position++
					if buffer[position] != rune('L') {
						goto l514
					}
					position++
					{
						position520, tokenIndex520 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l521
						}
						position++
						goto l520
					l521:
						position, tokenIndex = position520, tokenIndex520
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l522
						}
						position++
						goto l520
					l522:
						position, tokenIndex = position520, tokenIndex520
						if buffer[position] != rune('_') {
							goto l523
						}
						position++
						goto l520
					l523:
						position, tokenIndex = position520, tokenIndex520
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l514
						}
						position++
					}
				l520:
				l518:
					{
						position519, tokenIndex519 := position, tokenIndex
						{
							position524, tokenIndex524 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('z') {
								goto l525
							}
							position++
							goto l524
						l525:
							position, tokenIndex = position524, tokenIndex524
							if c := buffer[position]; c < rune('A') || c > rune('Z') {
								goto l526
							}
							position++
							goto l524
						l526:
							position, tokenIndex = position524, tokenIndex524
							if buffer[position] != rune('_') {
								goto l527
							}
							position++
							goto l524
						l527:
							position, tokenIndex = position524, tokenIndex524
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l519
							}
							position++
						}
					l524:
						goto l518
					l519:
						position, tokenIndex = position519, tokenIndex519
					}
				}
			l516:
				if buffer[position] != rune('@') {
					goto l514
				}
				position++
				{
					position528, tokenIndex528 := position, tokenIndex
					if buffer[position] != rune('h') {
						goto l529
					}
					position++
					goto l528
				l529:
					position, tokenIndex = position528, tokenIndex528
					if buffer[position] != rune('H') {
						goto l514
					}
					position++
				}
			l528:
				{
					position530, tokenIndex530 := position, tokenIndex
					if buffer[position] != rune('a') {
						goto l531
					}
					position++
					goto l530
				l531:
					position, tokenIndex = position530, tokenIndex530
					if buffer[position] != rune('A') {
						goto l514
					}
					position++
				}
			l530:
				add(ruleTOCRefHigh, position515)
			}
			return true
		l514:
			position, tokenIndex = position514, tokenIndex514
			return false
		},
		/* 40 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
		func() bool {
			position532, tokenIndex532 := position, tokenIndex
			{
				position533 := position
				if buffer[position] != rune('.') {
					goto l532
				}
				position++
				if buffer[position] != rune('T') {
					goto l532
				}
				position++
				if buffer[position] != rune('O') {
					goto l532
				}
				position++
				if buffer[position] != rune('C') {
					goto l532
				}
				position++
				if buffer[position] != rune('.') {
					goto l532
				}
				position++
				if buffer[position] != rune('-') {
					goto l532
				}
				position++
				{
					position534, tokenIndex534 := position, tokenIndex
					if buffer[position] != rune('0') {
						goto l535
					}
					position++
					if buffer[position] != rune('b') {
						goto l535
					}
					position++
					goto l534
				l535:
					position, tokenIndex = position534, tokenIndex534
					if buffer[position] != rune('.') {
						goto l532
					}
					position++
					if buffer[position] != rune('L') {
						goto l532
					}
					position++
					{
						position538, tokenIndex538 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l539
						}
						position++
						goto l538
					l539:
						position, tokenIndex = position538, tokenIndex538
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l540
						}
						position++
						goto l538
					l540:
						position, tokenIndex = position538, tokenIndex538
						if buffer[position] != rune('_') {
							goto l541
						}
						position++
						goto l538
					l541:
						position, tokenIndex = position538, tokenIndex538
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l532
						}
						position++
					}
				l538:
				l536:
					{
						position537, tokenIndex537 := position, tokenIndex
						{
							position542, tokenIndex542 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('z') {
								goto l543
							}
							position++
							goto l542
						l543:
							position, tokenIndex = position542, tokenIndex542
							if c := buffer[position]; c < rune('A') || c > rune('Z') {
								goto l544
							}
							position++
							goto l542
						l544:
							position, tokenIndex = position542, tokenIndex542
							if buffer[position] != rune('_') {
								goto l545
							}
							position++
							goto l542
						l545:
							position, tokenIndex = position542, tokenIndex542
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l537
							}
							position++
						}
					l542:
						goto l536
					l537:
						position, tokenIndex = position537, tokenIndex537
					}
				}
			l534:
				if buffer[position] != rune('@') {
					goto l532
				}
				position++
				{
					position546, tokenIndex546 := position, tokenIndex
					if buffer[position] != rune('l') {
						goto l547
					}
					position++
					goto l546
				l547:
					position, tokenIndex = position546, tokenIndex546
					if buffer[position] != rune('L') {
						goto l532
					}
					position++
				}
			l546:
				add(ruleTOCRefLow, position533)
			}
			return true
		l532:
			position, tokenIndex = position532, tokenIndex532
			return false
		},
		/* 41 IndirectionIndicator <- <'*'> */
		func() bool {
			position548, tokenIndex548 := position, tokenIndex
			{
				position549 := position
				if buffer[position] != rune('*') {
					goto l548
				}
				position++
				add(ruleIndirectionIndicator, position549)
			}
			return true
		l548:
			position, tokenIndex = position548, tokenIndex548
			return false
		},
		/* 42 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$' [0-9]+ WS? '*' WS? '(' [0-9]+ WS? '-' WS? [0-9]+ ')') / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] [0-9]? ')') / (('#' / '$') '~'? ('0' 'x')? ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ('$' '(' '-' [0-9]+ ')') / ('#' '(' [0-9]+ ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
		func() bool {
			position550, tokenIndex550 := position, tokenIndex
			{
				position551 := position
				{
					position552, tokenIndex552 := position, tokenIndex
					if buffer[position] != rune('%') {
						goto l553
					}
					position++
					{
						position554, tokenIndex554 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l555
						}
						position++
						goto l554
					l555:
						position, tokenIndex = position554, tokenIndex554
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l553
						}
						position++
					}
				l554:
				l556:
					{
						position557, tokenIndex557 := position, tokenIndex
						{
							position558, tokenIndex558 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('z') {
								goto l559
							}
							position++
							goto l558
						l559:
							position, tokenIndex = position558, tokenIndex558
							if c := buffer[position]; c < rune('A') || c > rune('Z') {
								goto l560
							}
							position++
							goto l558
						l560:
							position, tokenIndex = position558, tokenIndex558
							{
								position561, tokenIndex561 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l562
								}
								position++
								goto l561
							l562:
								position, tokenIndex = position561, tokenIndex561
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l557
								}
								position++
							}
						l561:
						}
					l558:
						goto l556
					l557:
						position, tokenIndex = position557, tokenIndex557
					}
					goto l552
				l553:
					position, tokenIndex = position552, tokenIndex552
					if buffer[position] != rune('$') {
						goto l563
					}
					position++
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l563
					}
					position++
				l564:
					{
						position565, tokenIndex565 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l565
						}
						position++
						goto l564
					l565:
						position, tokenIndex = position565, tokenIndex565
					}
					{
						position566, tokenIndex566 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l566
						}
						goto l567
					l566:
						position, tokenIndex = position566, tokenIndex566
					}
				l567:
					if buffer[position] != rune('*') {
						goto l563
					}
					position++
					{
						position568, tokenIndex568 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l568
						}
						goto l569
					l568:
						position, tokenIndex = position568, tokenIndex568
					}
				l569:
					if buffer[position] != rune('(') {
						goto l563
					}
					position++
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l563
					}
					position++
				l570:
					{
						position571, tokenIndex571 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l571
						}
						position++
						goto l570
					l571:
						position, tokenIndex = position571, tokenIndex571
					}
					{
						position572, tokenIndex572 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l572
						}
						goto l573
					l572:
						position, tokenIndex = position572, tokenIndex572
					}
				l573:
					if buffer[position] != rune('-') {
						goto l563
					}
					position++
					{
						position574, tokenIndex574 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l574
						}
						goto l575
					l574:
						position, tokenIndex = position574, tokenIndex574
					}
				l575:
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l563
					}
					position++
				l576:
					{
						position577, tokenIndex577 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l577
						}
						position++
						goto l576
					l577:
						position, tokenIndex = position577, tokenIndex577
					}
					if buffer[position] != rune(')') {
						goto l563
					}
					position++
					goto l552
				l563:
					position, tokenIndex = position552, tokenIndex552
					{
						position579, tokenIndex579 := position, tokenIndex
						if buffer[position] != rune('$') {
							goto l579
						}
						position++
						goto l580
					l579:
						position, tokenIndex = position579, tokenIndex579
					}
				l580:
					{
						position581, tokenIndex581 := position, tokenIndex
						if !_rules[ruleOffset]() {
							goto l582
						}
						if !_rules[ruleOffset]() {
							goto l582
						}
						goto l581
					l582:
						position, tokenIndex = position581, tokenIndex581
						if !_rules[ruleOffset]() {
							goto l578
						}
					}
				l581:
					goto l552
				l578:
					position, tokenIndex = position552, tokenIndex552
					if buffer[position] != rune('#') {
						goto l583
					}
					position++
					if !_rules[ruleOffset]() {
						goto l583
					}
					{
						position584, tokenIndex584 := position, tokenIndex
						if buffer[position] != rune('*') {
							goto l584
						}
						position++
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l584
						}
						position++
					l586:
						{
							position587, tokenIndex587 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l587
							}
							position++
							goto l586
						l587:
							position, tokenIndex = position587, tokenIndex587
						}
						{
							position588, tokenIndex588 := position, tokenIndex
							if buffer[position] != rune('-') {
								goto l588
							}
							position++
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l588
							}
							position++
						l590:
							{
								position591, tokenIndex591 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l591
								}
								position++
								goto l590
							l591:
								position, tokenIndex = position591, tokenIndex591
							}
							goto l589
						l588:
							position, tokenIndex = position588, tokenIndex588
						}
					l589:
						goto l585
					l584:
						position, tokenIndex = position584, tokenIndex584
					}
				l585:
					goto l552
				l583:
					position, tokenIndex = position552, tokenIndex552
					if buffer[position] != rune('#') {
						goto l592
					}
					position++
					{
						position593, tokenIndex593 := position, tokenIndex
						if buffer[position] != rune('~') {
							goto l593
						}
						position++
						goto l594
					l593:
						position, tokenIndex = position593, tokenIndex593
					}
				l594:
					if buffer[position] != rune('(') {
						goto l592
					}
					position++
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l592
					}
					position++
					{
						position595, tokenIndex595 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l595
						}
						goto l596
					l595:
						position, tokenIndex = position595, tokenIndex595
					}
				l596:
					if buffer[position] != rune('<') {
						goto l592
					}
					position++
					if buffer[position] != rune('<') {
						goto l592
					}
					position++
					{
						position597, tokenIndex597 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l597
						}
						goto l598
					l597:
						position, tokenIndex = position597, tokenIndex597
					}
				l598:
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l592
					}
					position++
					{
						position599, tokenIndex599 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l599
						}
						position++
						goto l600
					l599:
						position, tokenIndex = position599, tokenIndex599
					}
				l600:
					if buffer[position] != rune(')') {
						goto l592
					}
					position++
					goto l552
				l592:
					position, tokenIndex = position552, tokenIndex552
					{
						position602, tokenIndex602 := position, tokenIndex
						if buffer[position] != rune('#') {
							goto l603
						}
						position++
						goto l602
					l603:
						position, tokenIndex = position602, tokenIndex602
						if buffer[position] != rune('$') {
							goto l601
						}
						position++
					}
				l602:
					{
						position604, tokenIndex604 := position, tokenIndex
						if buffer[position] != rune('~') {
							goto l604
						}
						position++
						goto l605
					l604:
						position, tokenIndex = position604, tokenIndex604
					}
				l605:
					{
						position606, tokenIndex606 := position, tokenIndex
						if buffer[position] != rune('0') {
							goto l606
						}
						position++
						if buffer[position] != rune('x') {
							goto l606
						}
						position++
						goto l607
					l606:
						position, tokenIndex = position606, tokenIndex606
					}
				l607:
					{
						position610, tokenIndex610 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l611
						}
						position++
						goto l610
					l611:
						position, tokenIndex = position610, tokenIndex610
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l612
						}
						position++
						goto l610
					l612:
						position, tokenIndex = position610, tokenIndex610
						{
							position613, tokenIndex613 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('f') {
								goto l614
							}
							position++
							goto l613
						l614:
							position, tokenIndex = position613, tokenIndex613
							if c := buffer[position]; c < rune('A') || c > rune('F') {
								goto l601
							}
							position++
						}
					l613:
					}
				l610:
				l608:
					{
						position609, tokenIndex609 := position, tokenIndex
						{
							position615, tokenIndex615 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l616
							}
							position++
							goto l615
						l616:
							position, tokenIndex = position615, tokenIndex615
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l617
							}
							position++
							goto l615
						l617:
							position, tokenIndex = position615, tokenIndex615
							{
								position618, tokenIndex618 := position, tokenIndex
								if c := buffer[position]; c < rune('a') || c > rune('f') {
									goto l619
								}
								position++
								goto l618
							l619:
								position, tokenIndex = position618, tokenIndex618
								if c := buffer[position]; c < rune('A') || c > rune('F') {
									goto l609
								}
								position++
							}
						l618:
						}
					l615:
						goto l608
					l609:
						position, tokenIndex = position609, tokenIndex609
					}
					goto l552
				l601:
					position, tokenIndex = position552, tokenIndex552
					if buffer[position] != rune('$') {
						goto l620
					}
					position++
					if buffer[position] != rune('(') {
						goto l620
					}
					position++
					if buffer[position] != rune('-') {
						goto l620
					}
					position++
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l620
					}
					position++
				l621:
					{
						position622, tokenIndex622 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l622
						}
						position++
						goto l621
					l622:
						position, tokenIndex = position622, tokenIndex622
					}
					if buffer[position] != rune(')') {
						goto l620
					}
					position++
					goto l552
				l620:
					position, tokenIndex = position552, tokenIndex552
					if buffer[position] != rune('#') {
						goto l623
					}
					position++
					if buffer[position] != rune('(') {
						goto l623
					}
					position++
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l623
					}
					position++
				l624:
					{
						position625, tokenIndex625 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l625
						}
						position++
						goto l624
					l625:
						position, tokenIndex = position625, tokenIndex625
					}
					if buffer[position] != rune(')') {
						goto l623
					}
					position++
					goto l552
				l623:
					position, tokenIndex = position552, tokenIndex552
					if !_rules[ruleARMRegister]() {
						goto l550
					}
				}
			l552:
				{
					position626, tokenIndex626 := position, tokenIndex
					{
						position627, tokenIndex627 := position, tokenIndex
						if buffer[position] != rune('f') {
							goto l628
						}
						position++
						goto l627
					l628:
						position, tokenIndex = position627, tokenIndex627
						if buffer[position] != rune('b') {
							goto l629
						}
						position++
						goto l627
					l629:
						position, tokenIndex = position627, tokenIndex627
						if buffer[position] != rune(':') {
							goto l630
						}
						position++
						goto l627
					l630:
						position, tokenIndex = position627, tokenIndex627
						if buffer[position] != rune('(') {
							goto l631
						}
						position++
						goto l627
					l631:
						position, tokenIndex = position627, tokenIndex627
						if buffer[position] != rune('+') {
							goto l632
						}
						position++
						goto l627
					l632:
						position, tokenIndex = position627, tokenIndex627
						if buffer[position] != rune('-') {
							goto l626
						}
						position++
					}
				l627:
					goto l550
				l626:
					position, tokenIndex = position626, tokenIndex626
				}
				add(ruleRegisterOrConstant, position551)
			}
			return true
		l550:
			position, tokenIndex = position550, tokenIndex550
			return false
		},
		/* 43 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('l' / 'L')) / (('a' / 'A') ('s' / 'S') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('l' / 'L')) / (('m' / 'M') ('s' / 'S') ('l' / 'L'))) !([A-Z] / [a-z] / [0-9] / '_'))) (WS '#'? Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')))> */
		func() bool {
			position633, tokenIndex633 := position, tokenIndex
			{
				position634 := position
				{
					position635, tokenIndex635 := position, tokenIndex
					{
						position637, tokenIndex637 := position, tokenIndex
						{
							position639, tokenIndex639 := position, tokenIndex
							if buffer[position] != rune('u') {
								goto l640
							}
							position++
							goto l639
						l640:
							position, tokenIndex = position639, tokenIndex639
							if buffer[position] != rune('s') {
								goto l638
							}
							position++
						}
					l639:
						{
							position641, tokenIndex641 := position, tokenIndex
							if buffer[position] != rune('x') {
								goto l642
							}
							position++
							goto l641
						l642:
							position, tokenIndex = position641, tokenIndex641
							if buffer[position] != rune('X') {
								goto l638
							}
							position++
						}
					l641:
						{
							position643, tokenIndex643 := position, tokenIndex
							if buffer[position] != rune('t') {
								goto l644
							}
							position++
							goto l643
						l644:
							position, tokenIndex = position643, tokenIndex643
							if buffer[position] != rune('T') {
								goto l638
							}
							position++
						}
					l643:
						{
							position645, tokenIndex645 := position, tokenIndex
							if buffer[position] != rune('x') {
								goto l646
							}
							position++
							goto l645
						l646:
							position, tokenIndex = position645, tokenIndex645
							if buffer[position] != rune('w') {
								goto l647
							}
							position++
							goto l645
						l647:
							position, tokenIndex = position645, tokenIndex645
							if buffer[position] != rune('h') {
								goto l648
							}
							position++
							goto l645
						l648:
							position, tokenIndex = position645, tokenIndex645
							if buffer[position] != rune('b') {
								goto l638
							}
							position++
						}
					l645:
						goto l637
					l638:
						position, tokenIndex = position637, tokenIndex637
						{
							position649, tokenIndex649 := position, tokenIndex
							{
								position651, tokenIndex651 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l652
								}
								position++
								goto l651
							l652:
								position, tokenIndex = position651, tokenIndex651
								if buffer[position] != rune('L') {
									goto l650
								}
								position++
							}
						l651:
							{
								position653, tokenIndex653 := position, tokenIndex
								if buffer[position] != rune('s') {
									goto l654
								}
								position++
								goto l653
							l654:
								position, tokenIndex = position653, tokenIndex653
								if buffer[position] != rune('S') {
									goto l650
								}
								position++
							}
						l653:
							{
								position655, tokenIndex655 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l656
								}
								position++
								goto l655
							l656:
								position, tokenIndex = position655, tokenIndex655
								if buffer[position] != rune('L') {
									goto l650
								}
								position++
							}
						l655:
							goto l649
						l650:
							position, tokenIndex = position649, tokenIndex649
							{
								position658, tokenIndex658 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l659
								}
								position++
								goto l658
							l659:
								position, tokenIndex = position658, tokenIndex658
								if buffer[position] != rune('L') {
									goto l657
								}
								position++
							}
						l658:
							{
								position660, tokenIndex660 := position, tokenIndex
								if buffer[position] != rune('s') {
									goto l661
								}
								position++
								goto l660
							l661:
								position, tokenIndex = position660, tokenIndex660
								if buffer[position] != rune('S') {
									goto l657
								}
								position++
							}
						l660:
							{
								position662, tokenIndex662 := position, tokenIndex
								if buffer[position] != rune('r') {
									goto l663
								}
								position++
								goto l662
							l663:
								position, tokenIndex = position662, tokenIndex662
								if buffer[position] != rune('R') {
									goto l657
								}
								position++
							}
						l662:
							goto l649
						l657:
							position, tokenIndex = position649, tokenIndex649
							{
								position665, tokenIndex665 := position, tokenIndex
								if buffer[position] != rune('r') {
									goto l666
								}
								position++
								goto l665
							l666:
								position, tokenIndex = position665, tokenIndex665
								if buffer[position] != rune('R') {
									goto l664
								}
								position++
							}
						l665:
							{
								position667, tokenIndex667 := position, tokenIndex
								if buffer[position] != rune('o') {
									goto l668
								}
								position++
								goto l667
							l668:
								position, tokenIndex = position667, tokenIndex667
								if buffer[position] != rune('O') {
									goto l664
								}
								position++
							}
						l667:
							{
								position669, tokenIndex669 := position, tokenIndex
								if buffer[position] != rune('r') {
									goto l670
								}
								position++
								goto l669
							l670:
								position, tokenIndex = position669, tokenIndex669
								if buffer[position] != rune('R') {
									goto l664
								}
								position++
							}
						l669:
							goto l649
						l664:
							position, tokenIndex = position649, tokenIndex649
							{
								position672, tokenIndex672 := position, tokenIndex
								if buffer[position] != rune('r') {
									goto l673
								}
								position++
								goto l672
							l673:
								position, tokenIndex = position672, tokenIndex672
								if buffer[position] != rune('R') {
									goto l671
								}
								position++
							}
						l672:
							{
								position674, tokenIndex674 := position, tokenIndex
								if buffer[position] != rune('o') {
									goto l675
								}
								position++
								goto l674
							l675:
								position, tokenIndex = position674, tokenIndex674
								if buffer[position] != rune('O') {
									goto l671
								}
								position++
							}
						l674:
							{
								position676, tokenIndex676 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l677
								}
								position++
								goto l676
							l677:
								position, tokenIndex = position676, tokenIndex676
								if buffer[position] != rune('L') {
									goto l671
								}
								position++
							}
						l676:
							goto l649
						l671:
							position, tokenIndex = position649, tokenIndex649
							{
								position679, tokenIndex679 := position, tokenIndex
								if buffer[position] != rune('a') {
									goto l680
								}
								position++
								goto l679
							l680:
								position, tokenIndex = position679, tokenIndex679
								if buffer[position] != rune('A') {
									goto l678
								}
								position++
							}
						l679:
							{
								position681, tokenIndex681 := position, tokenIndex
								if buffer[position] != rune('s') {
									goto l682
								}
								position++
								goto l681
							l682:
								position, tokenIndex = position681, tokenIndex681
								if buffer[position] != rune('S') {
									goto l678
								}
								position++
							}
						l681:
							{
								position683, tokenIndex683 := position, tokenIndex
								if buffer[position] != rune('r') {
									goto l684
								}
								position++
								goto l683
							l684:
								position, tokenIndex = position683, tokenIndex683
								if buffer[position] != rune('R') {
									goto l678
								}
								position++
							}
						l683:
							goto l649
						l678:
							position, tokenIndex = position649, tokenIndex649
							{
								position686, tokenIndex686 := position, tokenIndex
								if buffer[position] != rune('a') {
									goto l687
								}
								position++
								goto l686
							l687:
								position, tokenIndex = position686, tokenIndex686
								if buffer[position] != rune('A') {
									goto l685
								}
								position++
							}
						l686:
							{
								position688, tokenIndex688 := position, tokenIndex
								if buffer[position] != rune('s') {
									goto l689
								}
								position++
								goto l688
							l689:
								position, tokenIndex = position688, tokenIndex688
								if buffer[position] != rune('S') {
									goto l685
								}
								position++
							}
						l688:
							{
								position690, tokenIndex690 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l691
								}
								position++
								goto l690
							l691:
								position, tokenIndex = position690, tokenIndex690
								if buffer[position] != rune('L') {
									goto l685
								}
								position++
							}
						l690:
							goto l649
						l685:
							position, tokenIndex = position649, tokenIndex649
							{
								position692, tokenIndex692 := position, tokenIndex
								if buffer[position] != rune('m') {
									goto l693
								}
								position++
								goto l692
							l693:
								position, tokenIndex = position692, tokenIndex692
								if buffer[position] != rune('M') {
									goto l636
								}
								position++
							}
						l692:
							{
								position694, tokenIndex694 := position, tokenIndex
								if buffer[position] != rune('s') {
									goto l695
								}
								position++
								goto l694
							l695:
								position, tokenIndex = position694, tokenIndex694
								if buffer[position] != rune('S') {
									goto l636
								}
								position++
							}
						l694:
							{
								position696, tokenIndex696 := position, tokenIndex
								if buffer[position] != rune('l') {
									goto l697
								}
								position++
								goto l696
							l697:
								position, tokenIndex = position696, tokenIndex696
								if buffer[position] != rune('L') {
									goto l636
								}
								position++
							}
						l696:
						}
					l649:
						{
							position698, tokenIndex698 := position, tokenIndex
							{
								position699, tokenIndex699 := position, tokenIndex
								if c := buffer[position]; c < rune('A') || c > rune('Z') {
									goto l700
								}
								position++
								goto l699
							l700:
								position, tokenIndex = position699, tokenIndex699
								if c := buffer[position]; c < rune('a') || c > rune('z') {
									goto l701
								}
								position++
								goto l699
							l701:
								position, tokenIndex = position699, tokenIndex699
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l702
								}
								position++
								goto l699
							l702:
								position, tokenIndex = position699, tokenIndex699
								if buffer[position] != rune('_') {
									goto l698
								}
								position++
							}
						l699:
							goto l636
						l698:
							position, tokenIndex = position698, tokenIndex698
						}
					}
				l637:
					{
						position703, tokenIndex703 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l703
						}
						{
							position705, tokenIndex705 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l705
							}
							position++
							goto l706
						l705:
							position, tokenIndex = position705, tokenIndex705
						}
					l706:
						if !_rules[ruleOffset]() {
							goto l703
						}
						goto l704
					l703:
						position, tokenIndex = position703, tokenIndex703
					}
				l704:
					goto l635
				l636:
					position, tokenIndex = position635, tokenIndex635
					{
						position707, tokenIndex707 := position, tokenIndex
						if buffer[position] != rune('m') {
							goto l708
						}
						position++
						goto l707
					l708:
						position, tokenIndex = position707, tokenIndex707
						if buffer[position] != rune('M') {
							goto l633
						}
						position++
					}
				l707:
					{
						position709, tokenIndex709 := position, tokenIndex
						if buffer[position] != rune('u') {
							goto l710
						}
						position++
						goto l709
					l710:
						position, tokenIndex = position709, tokenIndex709
						if buffer[position] != rune('U') {
							goto l633
						}
						position++
					}
				l709:
					{
						position711, tokenIndex711 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l712
						}
						position++
						goto l711
					l712:
						position, tokenIndex = position711, tokenIndex711
						if buffer[position] != rune('L') {
							goto l633
						}
						position++
					}
				l711:
					if buffer[position] != rune(' ') {
						goto l633
					}
					position++
					{
						position713, tokenIndex713 := position, tokenIndex
						if buffer[position] != rune('v') {
							goto l714
						}
						position++
						goto l713
					l714:
						position, tokenIndex = position713, tokenIndex713
						if buffer[position] != rune('V') {
							goto l633
						}
						position++
					}
				l713:
					{
						position715, tokenIndex715 := position, tokenIndex
						if buffer[position] != rune('l') {
							goto l716
						}
						position++
						goto l715
					l716:
						position, tokenIndex = position715, tokenIndex715
						if buffer[position] != rune('L') {
							goto l633
						}
						position++
					}
				l715:
				}
			l635:
				add(ruleARMConstantTweak, position634)
			}
			return true
		l633:
			position, tokenIndex = position633, tokenIndex633
			return false
		},
		/* 44 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]? !ARMRegisterBoundary) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / ARMVectorRegister / SVE2PredicateRegister / ('{' WS? ARMVectorRegister WS? ((',' / '-') WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
		func() bool {
			position717, tokenIndex717 := position, tokenIndex
			{
				position718 := position
				{
					position719, tokenIndex719 := position, tokenIndex
					{
						position721, tokenIndex721 := position, tokenIndex
						if buffer[position] != rune('s') {
							goto l722
						}
						position++
						goto l721
					l722:
						position, tokenIndex = position721, tokenIndex721
						if buffer[position] != rune('S') {
							goto l720
						}
						position++
					}
				l721:
					{
						position723, tokenIndex723 := position, tokenIndex
						if buffer[position] != rune('p') {
							goto l724
						}
						position++
						goto l723
					l724:
						position, tokenIndex = position723, tokenIndex723
						if buffer[position] != rune('P') {
							goto l720
						}
						position++
					}
				l723:
					goto l719
				l720:
					position, tokenIndex = position719, tokenIndex719
					{
						position726, tokenIndex726 := position, tokenIndex
						if buffer[position] != rune('x') {
							goto l727
						}
						position++
						goto l726
					l727:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('w') {
							goto l728
						}
						position++
						goto l726
					l728:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('d') {
							goto l729
						}
						position++
						goto l726
					l729:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('q') {
							goto l730
						}
						position++
						goto l726
					l730:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('s') {
							goto l731
						}
						position++
						goto l726
					l731:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('h') {
							goto l732
						}
						position++
						goto l726
					l732:
						position, tokenIndex = position726, tokenIndex726
						if buffer[position] != rune('b') {
							goto l725
						}
						position++
					}
				l726:
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l725
					}
					position++
					{
						position733, tokenIndex733 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l733
						}
						position++
						goto l734
					l733:
						position, tokenIndex = position733, tokenIndex733
					}
				l734:
					{
						position735, tokenIndex735 := position, tokenIndex
						if !_rules[ruleARMRegisterBoundary]() {
							goto l735
						}
						goto l725
					l735:
						position, tokenIndex = position735, tokenIndex735
					}
					goto l719
				l725:
					position, tokenIndex = position719, tokenIndex719
					{
						position737, tokenIndex737 := position, tokenIndex
						if buffer[position] != rune('x') {
							goto l738
						}
						position++
						goto l737
					l738:
						position, tokenIndex = position737, tokenIndex737
						if buffer[position] != rune('X') {
							goto l736
						}
						position++
					}
				l737:
					{
						position739, tokenIndex739 := position, tokenIndex
						if buffer[position] != rune('z') {
							goto l740
						}
						position++
						goto l739
					l740:
						position, tokenIndex = position739, tokenIndex739
						if buffer[position] != rune('Z') {
							goto l736
						}
						position++
					}
				l739:
					{
						position741, tokenIndex741 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l742
						}
						position++
						goto l741
					l742:
						position, tokenIndex = position741, tokenIndex741
						if buffer[position] != rune('R') {
							goto l736
						}
						position++
					}
				l741:
					goto l719
				l736:
					position, tokenIndex = position719, tokenIndex719
					{
						position744, tokenIndex744 := position, tokenIndex
						if buffer[position] != rune('w') {
							goto l745
						}
						position++
						goto l744
					l745:
						position, tokenIndex = position744, tokenIndex744
						if buffer[position] != rune('W') {
							goto l743
						}
						position++
					}
				l744:
					{
						position746, tokenIndex746 := position, tokenIndex
						if buffer[position] != rune('z') {
							goto l747
						}
						position++
						goto l746
					l747:
						position, tokenIndex = position746, tokenIndex746
						if buffer[position] != rune('Z') {
							goto l743
						}
						position++
					}
				l746:
					{
						position748, tokenIndex748 := position, tokenIndex
						if buffer[position] != rune('r') {
							goto l749
						}
						position++
						goto l748
					l749:
						position, tokenIndex = position748, tokenIndex748
						if buffer[position] != rune('R') {
							goto l743
						}
						position++
					}
				l748:
					goto l719
				l743:
					position, tokenIndex = position719, tokenIndex719
					{
						position751, tokenIndex751 := position, tokenIndex
						if buffer[position] != rune('n') {
							goto l752
						}
						position++
						goto l751
					l752:
						position, tokenIndex = position751, tokenIndex751
						if buffer[position] != rune('N') {
							goto l750
						}
						position++
					}
				l751:
					{
						position753, tokenIndex753 := position, tokenIndex
						if buffer[position] != rune('z') {
							goto l754
						}
						position++
						goto l753
					l754:
						position, tokenIndex = position753, tokenIndex753
						if buffer[position] != rune('Z') {
							goto l750
						}
						position++
					}
				l753:
					{
						position755, tokenIndex755 := position, tokenIndex
						if buffer[position] != rune('c') {
							goto l756
						}
						position++
						goto l755
					l756:
						position, tokenIndex = position755, tokenIndex755
						if buffer[position] != rune('C') {
							goto l750
						}
						position++
					}
				l755:
					{
						position757, tokenIndex757 := position, tokenIndex
						if buffer[position] != rune('v') {
							goto l758
						}
						position++
						goto l757
					l758:
						position, tokenIndex = position757, tokenIndex757
						if buffer[position] != rune('V') {
							goto l750
						}
						position++
					}
				l757:
					goto l719
				l750:
					position, tokenIndex = position719, tokenIndex719
					if !_rules[ruleARMVectorRegister]() {
						goto l759
					}
					goto l719
				l759:
					position, tokenIndex = position719, tokenIndex719
					if !_rules[ruleSVE2PredicateRegister]() {
						goto l760
					}
					goto l719
				l760:
					position, tokenIndex = position719, tokenIndex719
					if buffer[position] != rune('{') {
						goto l717
					}
					position++
					{
						position761, tokenIndex761 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l761
						}
						goto l762
					l761:
						position, tokenIndex = position761, tokenIndex761
					}
				l762:
					if !_rules[ruleARMVectorRegister]() {
						goto l717
					}
					{
						position763, tokenIndex763 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l763
						}
						goto l764
					l763:
						position, tokenIndex = position763, tokenIndex763
					}
				l764:
				l765:
					{
						position766, tokenIndex766 := position, tokenIndex
						{
							position767, tokenIndex767 := position, tokenIndex
							if buffer[position] != rune(',') {
								goto l768
							}
							position++
							goto l767
						l768:
							position, tokenIndex = position767, tokenIndex767
							if buffer[position] != rune('-') {
								goto l766
							}
							position++
						}
					l767:
						{
							position769, tokenIndex769 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l769
							}
							goto l770
						l769:
							position, tokenIndex = position769, tokenIndex769
						}
					l770:
						if !_rules[ruleARMVectorRegister]() {
							goto l766
						}
						goto l765
					l766:
						position, tokenIndex = position766, tokenIndex766
					}
					{
						position771, tokenIndex771 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l771
						}
						goto l772
					l771:
						position, tokenIndex = position771, tokenIndex771
					}
				l772:
					if buffer[position] != rune('}') {
						goto l717
					}
					position++
					{
						position773, tokenIndex773 := position, tokenIndex
						if buffer[position] != rune('[') {
							goto l773
						}
						position++
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l773
						}
						position++
						{
							position775, tokenIndex775 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l775
							}
							position++
							goto l776
						l775:
							position, tokenIndex = position775, tokenIndex775
						}
					l776:
						if buffer[position] != rune(']') {
							goto l773
						}
						position++
						goto l774
					l773:
						position, tokenIndex = position773, tokenIndex773
					}
				l774:
				}
			l719:
				add(ruleARMRegister, position718)
			}
			return true
		l717:
			position, tokenIndex = position717, tokenIndex717
			return false
		},
		/* 45 ARMVectorRegister <- <(('v' / 'z') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q' / 'B' / 'S' / 'D' / 'H' / 'Q') ('[' [0-9] [0-9]? ']')?)?)> */
		func() bool {
			position777, tokenIndex777 := position, tokenIndex
			{
				position778 := position
				{
					position779, tokenIndex779 := position, tokenIndex
					if buffer[position] != rune('v') {
						goto l780
					}
					position++
					goto l779
				l780:
					position, tokenIndex = position779, tokenIndex779
					if buffer[position] != rune('z') {
						goto l777
					}
					position++
				}
			l779:
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l777
				}
				position++
				{
					position781, tokenIndex781 := position, tokenIndex
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l781
					}
					position++
					goto l782
				l781:
					position, tokenIndex = position781, tokenIndex781
				}
			l782:
				{
					position783, tokenIndex783 := position, tokenIndex
					if buffer[position] != rune('.') {
						goto l783
					}
					position++
				l785:
					{
						position786, tokenIndex786 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l786
						}
						position++
						goto l785
					l786:
						position, tokenIndex = position786, tokenIndex786
					}
					{
						position787, tokenIndex787 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l788
						}
						position++
						goto l787
					l788:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('s') {
							goto l789
						}
						position++
						goto l787
					l789:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('d') {
							goto l790
						}
						position++
						goto l787
					l790:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('h') {
							goto l791
						}
						position++
						goto l787
					l791:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('q') {
							goto l792
						}
						position++
						goto l787
					l792:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('B') {
							goto l793
						}
						position++
						goto l787
					l793:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('S') {
							goto l794
						}
						position++
						goto l787
					l794:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('D') {
							goto l795
						}
						position++
						goto l787
					l795:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('H') {
							goto l796
						}
						position++
						goto l787
					l796:
						position, tokenIndex = position787, tokenIndex787
						if buffer[position] != rune('Q') {
							goto l783
						}
						position++
					}
				l787:
					{
						position797, tokenIndex797 := position, tokenIndex
						if buffer[position] != rune('[') {
							goto l797
						}
						position++
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l797
						}
						position++
						{
							position799, tokenIndex799 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l799
							}
							position++
							goto l800
						l799:
							position, tokenIndex = position799, tokenIndex799
						}
					l800:
						if buffer[position] != rune(']') {
							goto l797
						}
						position++
						goto l798
					l797:
						position, tokenIndex = position797, tokenIndex797
					}
				l798:
					goto l784
				l783:
					position, tokenIndex = position783, tokenIndex783
				}
			l784:
				add(ruleARMVectorRegister, position778)
			}
			return true
		l777:
			position, tokenIndex = position777, tokenIndex777
			return false
		},
		/* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / 'z' / 'Z'))> */
		func() bool {
			position801, tokenIndex801 := position, tokenIndex
			{
				position802 := position
				{
					position803, tokenIndex803 := position, tokenIndex
					if buffer[position] != rune('p') {
						goto l804
					}
					position++
					goto l803
				l804:
					position, tokenIndex = position803, tokenIndex803
					if buffer[position] != rune('P') {
						goto l801
					}
					position++
				}
			l803:
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l801
				}
				position++
				{
					position805, tokenIndex805 := position, tokenIndex
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l805
					}
					position++
					goto l806
				l805:
					position, tokenIndex = position805, tokenIndex805
				}
			l806:
				if buffer[position] != rune('/') {
					goto l801
				}
				position++
				{
					position807, tokenIndex807 := position, tokenIndex
					if buffer[position] != rune('m') {
						goto l808
					}
					position++
					goto l807
				l808:
					position, tokenIndex = position807, tokenIndex807
					if buffer[position] != rune('M') {
						goto l809
					}
					position++
					goto l807
				l809:
					position, tokenIndex = position807, tokenIndex807
					if buffer[position] != rune('z') {
						goto l810
					}
					position++
					goto l807
				l810:
					position, tokenIndex = position807, tokenIndex807
					if buffer[position] != rune('Z') {
						goto l801
					}
					position++
				}
			l807:
				add(ruleSVE2PredicateRegister, position802)
			}
			return true
		l801:
			position, tokenIndex = position801, tokenIndex801
			return false
		},
		/* 47 ARMRegisterBoundary <- <([a-z] / [A-Z] / [0-9] / '_')> */
		func() bool {
			position811, tokenIndex811 := position, tokenIndex
			{
				position812 := position
				{
					position813, tokenIndex813 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l814
					}
					position++
					goto l813
				l814:
					position, tokenIndex = position813, tokenIndex813
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l815
					}
					position++
					goto l813
				l815:
					position, tokenIndex = position813, tokenIndex813
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l816
					}
					position++
					goto l813
				l816:
					position, tokenIndex = position813, tokenIndex813
					if buffer[position] != rune('_') {
						goto l811
					}
					position++
				}
			l813:
				add(ruleARMRegisterBoundary, position812)
			}
			return true
		l811:
			position, tokenIndex = position811, tokenIndex811
			return false
		},
		/* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
		func() bool {
			position817, tokenIndex817 := position, tokenIndex
			{
				position818 := position
				{
					position819, tokenIndex819 := position, tokenIndex
					if !_rules[ruleSymbolRef]() {
						goto l820
					}
					if !_rules[ruleBaseIndexScale]() {
						goto l820
					}
					goto l819
				l820:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleSymbolRef]() {
						goto l821
					}
					goto l819
				l821:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleLow12BitsSymbolRef]() {
						goto l822
					}
					goto l819
				l822:
					position, tokenIndex = position819, tokenIndex819
				l824:
					{
						position825, tokenIndex825 := position, tokenIndex
						if !_rules[ruleOffset]() {
							goto l825
						}
						goto l824
					l825:
						position, tokenIndex = position825, tokenIndex825
					}
					if !_rules[ruleBaseIndexScale]() {
						goto l823
					}
					goto l819
				l823:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleSegmentRegister]() {
						goto l826
					}
					if !_rules[ruleOffset]() {
						goto l826
					}
					if !_rules[ruleBaseIndexScale]() {
						goto l826
					}
					goto l819
				l826:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleSegmentRegister]() {
						goto l827
					}
					if !_rules[ruleBaseIndexScale]() {
						goto l827
					}
					goto l819
				l827:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleSegmentRegister]() {
						goto l828
					}
					if !_rules[ruleOffset]() {
						goto l828
					}
					goto l819
				l828:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleARMBaseIndexScale]() {
						goto l829
					}
					goto l819
				l829:
					position, tokenIndex = position819, tokenIndex819
					if !_rules[ruleBaseIndexScale]() {
						goto l817
					}
				}
			l819:
				add(ruleMemoryRef, position818)
			}
			return true
		l817:
			position, tokenIndex = position817, tokenIndex817
			return false
		},
		/* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
		func() bool {
			position830, tokenIndex830 := position, tokenIndex
			{
				position831 := position
				{
					position832, tokenIndex832 := position, tokenIndex
				l834:
					{
						position835, tokenIndex835 := position, tokenIndex
						if !_rules[ruleOffset]() {
							goto l835
						}
						goto l834
					l835:
						position, tokenIndex = position835, tokenIndex835
					}
					if buffer[position] != rune('+') {
						goto l832
					}
					position++
					goto l833
				l832:
					position, tokenIndex = position832, tokenIndex832
				}
			l833:
				{
					position836, tokenIndex836 := position, tokenIndex
					if !_rules[ruleLocalSymbol]() {
						goto l837
					}
					goto l836
				l837:
					position, tokenIndex = position836, tokenIndex836
					if !_rules[ruleSymbolName]() {
						goto l830
					}
				}
			l836:
			l838:
				{
					position839, tokenIndex839 := position, tokenIndex
					if !_rules[ruleOffset]() {
						goto l839
					}
					goto l838
				l839:
					position, tokenIndex = position839, tokenIndex839
				}
				{
					position840, tokenIndex840 := position, tokenIndex
					if buffer[position] != rune('@') {
						goto l840
					}
					position++
					if !_rules[ruleSection]() {
						goto l840
					}
				l842:
					{
						position843, tokenIndex843 := position, tokenIndex
						if !_rules[ruleOffset]() {
							goto l843
						}
						goto l842
					l843:
						position, tokenIndex = position843, tokenIndex843
					}
					goto l841
				l840:
					position, tokenIndex = position840, tokenIndex840
				}
			l841:
				add(ruleSymbolRef, position831)
			}
			return true
		l830:
			position, tokenIndex = position830, tokenIndex830
			return false
		},
		/* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
		func() bool {
			position844, tokenIndex844 := position, tokenIndex
			{
				position845 := position
				if buffer[position] != rune(':') {
					goto l844
				}
				position++
				{
					position846, tokenIndex846 := position, tokenIndex
					if buffer[position] != rune('l') {
						goto l847
					}
					position++
					goto l846
				l847:
					position, tokenIndex = position846, tokenIndex846
					if buffer[position] != rune('L') {
						goto l844
					}
					position++
				}
			l846:
				{
					position848, tokenIndex848 := position, tokenIndex
					if buffer[position] != rune('o') {
						goto l849
					}
					position++
					goto l848
				l849:
					position, tokenIndex = position848, tokenIndex848
					if buffer[position] != rune('O') {
						goto l844
					}
					position++
				}
			l848:
				if buffer[position] != rune('1') {
					goto l844
				}
				position++
				if buffer[position] != rune('2') {
					goto l844
				}
				position++
				if buffer[position] != rune(':') {
					goto l844
				}
				position++
				{
					position850, tokenIndex850 := position, tokenIndex
					if !_rules[ruleLocalSymbol]() {
						goto l851
					}
					goto l850
				l851:
					position, tokenIndex = position850, tokenIndex850
					if !_rules[ruleSymbolName]() {
						goto l844
					}
				}
			l850:
				{
					position852, tokenIndex852 := position, tokenIndex
					if !_rules[ruleOffset]() {
						goto l852
					}
					goto l853
				l852:
					position, tokenIndex = position852, tokenIndex852
				}
			l853:
				add(ruleLow12BitsSymbolRef, position845)
			}
			return true
		l844:
			position, tokenIndex = position844, tokenIndex844
			return false
		},
		/* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
		func() bool {
			position854, tokenIndex854 := position, tokenIndex
			{
				position855 := position
				if buffer[position] != rune('[') {
					goto l854
				}
				position++
				if !_rules[ruleARMRegister]() {
					goto l854
				}
				{
					position856, tokenIndex856 := position, tokenIndex
					if buffer[position] != rune(',') {
						goto l856
					}
					position++
					{
						position858, tokenIndex858 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l858
						}
						goto l859
					l858:
						position, tokenIndex = position858, tokenIndex858
					}
				l859:
					{
						position860, tokenIndex860 := position, tokenIndex
						{
							position862, tokenIndex862 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l862
							}
							position++
							goto l863
						l862:
							position, tokenIndex = position862, tokenIndex862
						}
					l863:
						if !_rules[ruleOffset]() {
							goto l861
						}
						{
							position864, tokenIndex864 := position, tokenIndex
							{
								position866, tokenIndex866 := position, tokenIndex
								if buffer[position] != rune('*') {
									goto l867
								}
								position++
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l867
								}
								position++
							l868:
								{
									position869, tokenIndex869 := position, tokenIndex
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l869
									}
									position++
									goto l868
								l869:
									position, tokenIndex = position869, tokenIndex869
								}
								goto l866
							l867:
								position, tokenIndex = position866, tokenIndex866
								if buffer[position] != rune('*') {
									goto l870
								}
								position++
								if buffer[position] != rune('(') {
									goto l870
								}
								position++
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l870
								}
								position++
							l871:
								{
									position872, tokenIndex872 := position, tokenIndex
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l872
									}
									position++
									goto l871
								l872:
									position, tokenIndex = position872, tokenIndex872
								}
								if !_rules[ruleOperator]() {
									goto l870
								}
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l870
								}
								position++
							l873:
								{
									position874, tokenIndex874 := position, tokenIndex
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l874
									}
									position++
									goto l873
								l874:
									position, tokenIndex = position874, tokenIndex874
								}
								if buffer[position] != rune(')') {
									goto l870
								}
								position++
								goto l866
							l870:
								position, tokenIndex = position866, tokenIndex866
							l875:
								{
									position876, tokenIndex876 := position, tokenIndex
									if buffer[position] != rune('+') {
										goto l876
									}
									position++
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l876
									}
									position++
								l877:
									{
										position878, tokenIndex878 := position, tokenIndex
										if c := buffer[position]; c < rune('0') || c > rune('9') {
											goto l878
										}
										position++
										goto l877
									l878:
										position, tokenIndex = position878, tokenIndex878
									}
									goto l875
								l876:
									position, tokenIndex = position876, tokenIndex876
								}
							}
						l866:
							goto l865

							position, tokenIndex = position864, tokenIndex864
						}
					l865:
						goto l860
					l861:
						position, tokenIndex = position860, tokenIndex860
						{
							position880, tokenIndex880 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l880
							}
							position++
							goto l881
						l880:
							position, tokenIndex = position880, tokenIndex880
						}
					l881:
						if !_rules[ruleARMGOTLow12]() {
							goto l879
						}
						goto l860
					l879:
						position, tokenIndex = position860, tokenIndex860
						{
							position883, tokenIndex883 := position, tokenIndex
							if buffer[position] != rune('#') {
								goto l883
							}
							position++
							goto l884
						l883:
							position, tokenIndex = position883, tokenIndex883
						}
					l884:
						if !_rules[ruleLow12BitsSymbolRef]() {
							goto l882
						}
						goto l860
					l882:
						position, tokenIndex = position860, tokenIndex860
						if !_rules[ruleARMRegister]() {
							goto l856
						}
					}
				l860:
					{
						position885, tokenIndex885 := position, tokenIndex
						if buffer[position] != rune(',') {
							goto l885
						}
						position++
						{
							position887, tokenIndex887 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l887
							}
							goto l888
						l887:
							position, tokenIndex = position887, tokenIndex887
						}
					l888:
						if !_rules[ruleARMConstantTweak]() {
							goto l885
						}
						goto l886
					l885:
						position, tokenIndex = position885, tokenIndex885
					}
				l886:
					goto l857
				l856:
					position, tokenIndex = position856, tokenIndex856
				}
			l857:
				if buffer[position] != rune(']') {
					goto l854
				}
				position++
				{
					position889, tokenIndex889 := position, tokenIndex
					if !_rules[ruleARMPostincrement]() {
						goto l889
					}
					goto l890
				l889:
					position, tokenIndex = position889, tokenIndex889
				}
			l890:
				add(ruleARMBaseIndexScale, position855)
			}
			return true
		l854:
			position, tokenIndex = position854, tokenIndex854
			return false
		},
		/* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
		func() bool {
			position891, tokenIndex891 := position, tokenIndex
			{
				position892 := position
				if buffer[position] != rune(':') {
					goto l891
				}
				position++
				{
					position893, tokenIndex893 := position, tokenIndex
					if buffer[position] != rune('g') {
						goto l894
					}
					position++
					goto l893
				l894:
					position, tokenIndex = position893, tokenIndex893
					if buffer[position] != rune('G') {
						goto l891
					}
					position++
				}
			l893:
				{
					position895, tokenIndex895 := position, tokenIndex
					if buffer[position] != rune('o') {
						goto l896
					}
					position++
					goto l895
				l896:
					position, tokenIndex = position895, tokenIndex895
					if buffer[position] != rune('O') {
						goto l891
					}
					position++
				}
			l895:
				{
					position897, tokenIndex897 := position, tokenIndex
					if buffer[position] != rune('t') {
						goto l898
					}
					position++
					goto l897
				l898:
					position, tokenIndex = position897, tokenIndex897
					if buffer[position] != rune('T') {
						goto l891
					}
					position++
				}
			l897:
				if buffer[position] != rune('_') {
					goto l891
				}
				position++
				{
					position899, tokenIndex899 := position, tokenIndex
					if buffer[position] != rune('l') {
						goto l900
					}
					position++
					goto l899
				l900:
					position, tokenIndex = position899, tokenIndex899
					if buffer[position] != rune('L') {
						goto l891
					}
					position++
				}
			l899:
				{
					position901, tokenIndex901 := position, tokenIndex
					if buffer[position] != rune('o') {
						goto l902
					}
					position++
					goto l901
				l902:
					position, tokenIndex = position901, tokenIndex901
					if buffer[position] != rune('O') {
						goto l891
					}
					position++
				}
			l901:
				if buffer[position] != rune('1') {
					goto l891
				}
				position++
				if buffer[position] != rune('2') {
					goto l891
				}
				position++
				if buffer[position] != rune(':') {
					goto l891
				}
				position++
				if !_rules[ruleSymbolName]() {
					goto l891
				}
				add(ruleARMGOTLow12, position892)
			}
			return true
		l891:
			position, tokenIndex = position891, tokenIndex891
			return false
		},
		/* 53 ARMPostincrement <- <'!'> */
		func() bool {
			position903, tokenIndex903 := position, tokenIndex
			{
				position904 := position
				if buffer[position] != rune('!') {
					goto l903
				}
				position++
				add(ruleARMPostincrement, position904)
			}
			return true
		l903:
			position, tokenIndex = position903, tokenIndex903
			return false
		},
		/* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
		func() bool {
			position905, tokenIndex905 := position, tokenIndex
			{
				position906 := position
				if buffer[position] != rune('(') {
					goto l905
				}
				position++
				{
					position907, tokenIndex907 := position, tokenIndex
					if !_rules[ruleRegisterOrConstant]() {
						goto l907
					}
					goto l908
				l907:
					position, tokenIndex = position907, tokenIndex907
				}
			l908:
				{
					position909, tokenIndex909 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l909
					}
					goto l910
				l909:
					position, tokenIndex = position909, tokenIndex909
				}
			l910:
				{
					position911, tokenIndex911 := position, tokenIndex
					if buffer[position] != rune(',') {
						goto l911
					}
					position++
					{
						position913, tokenIndex913 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l913
						}
						goto l914
					l913:
						position, tokenIndex = position913, tokenIndex913
					}
				l914:
					if !_rules[ruleRegisterOrConstant]() {
						goto l911
					}
					{
						position915, tokenIndex915 := position, tokenIndex
						if !_rules[ruleWS]() {
							goto l915
						}
						goto l916
					l915:
						position, tokenIndex = position915, tokenIndex915
					}
				l916:
					{
						position917, tokenIndex917 := position, tokenIndex
						if buffer[position] != rune(',') {
							goto l917
						}
						position++
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l917
						}
						position++
					l919:
						{
							position920, tokenIndex920 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l920
							}
							position++
							goto l919
						l920:
							position, tokenIndex = position920, tokenIndex920
						}
						goto l918
					l917:
						position, tokenIndex = position917, tokenIndex917
					}
				l918:
					goto l912
				l911:
					position, tokenIndex = position911, tokenIndex911
				}
			l912:
				if buffer[position] != rune(')') {
					goto l905
				}
				position++
				add(ruleBaseIndexScale, position906)
			}
			return true
		l905:
			position, tokenIndex = position905, tokenIndex905
			return false
		},
		/* 55 Operator <- <('+' / '-')> */
		func() bool {
			position921, tokenIndex921 := position, tokenIndex
			{
				position922 := position
				{
					position923, tokenIndex923 := position, tokenIndex
					if buffer[position] != rune('+') {
						goto l924
					}
					position++
					goto l923
				l924:
					position, tokenIndex = position923, tokenIndex923
					if buffer[position] != rune('-') {
						goto l921
					}
					position++
				}
			l923:
				add(ruleOperator, position922)
			}
			return true
		l921:
			position, tokenIndex = position921, tokenIndex921
			return false
		},
		/* 56 OffsetOperator <- <('+' / '-' / '*')> */
		func() bool {
			position925, tokenIndex925 := position, tokenIndex
			{
				position926 := position
				{
					position927, tokenIndex927 := position, tokenIndex
					if buffer[position] != rune('+') {
						goto l928
					}
					position++
					goto l927
				l928:
					position, tokenIndex = position927, tokenIndex927
					if buffer[position] != rune('-') {
						goto l929
					}
					position++
					goto l927
				l929:
					position, tokenIndex = position927, tokenIndex927
					if buffer[position] != rune('*') {
						goto l925
					}
					position++
				}
			l927:
				add(ruleOffsetOperator, position926)
			}
			return true
		l925:
			position, tokenIndex = position925, tokenIndex925
			return false
		},
		/* 57 S2nBignumHelper <- <('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' WS? OffsetOperator? WS?)> */
		func() bool {
			position930, tokenIndex930 := position, tokenIndex
			{
				position931 := position
				if buffer[position] != rune('(') {
					goto l930
				}
				position++
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l930
				}
				position++
			l932:
				{
					position933, tokenIndex933 := position, tokenIndex
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l933
					}
					position++
					goto l932
				l933:
					position, tokenIndex = position933, tokenIndex933
				}
				{
					position934, tokenIndex934 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l934
					}
					goto l935
				l934:
					position, tokenIndex = position934, tokenIndex934
				}
			l935:
				if !_rules[ruleOffsetOperator]() {
					goto l930
				}
				{
					position936, tokenIndex936 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l936
					}
					goto l937
				l936:
					position, tokenIndex = position936, tokenIndex936
				}
			l937:
				if c := buffer[position]; c < rune('0') || c > rune('9') {
					goto l930
				}
				position++
			l938:
				{
					position939, tokenIndex939 := position, tokenIndex
					if c := buffer[position]; c < rune('0') || c > rune('9') {
						goto l939
					}
					position++
					goto l938
				l939:
					position, tokenIndex = position939, tokenIndex939
				}
				if buffer[position] != rune(')') {
					goto l930
				}
				position++
				{
					position940, tokenIndex940 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l940
					}
					goto l941
				l940:
					position, tokenIndex = position940, tokenIndex940
				}
			l941:
				{
					position942, tokenIndex942 := position, tokenIndex
					if !_rules[ruleOffsetOperator]() {
						goto l942
					}
					goto l943
				l942:
					position, tokenIndex = position942, tokenIndex942
				}
			l943:
				{
					position944, tokenIndex944 := position, tokenIndex
					if !_rules[ruleWS]() {
						goto l944
					}
					goto l945
				l944:
					position, tokenIndex = position944, tokenIndex944
				}
			l945:
				add(ruleS2nBignumHelper, position931)
			}
			return true
		l930:
			position, tokenIndex = position930, tokenIndex930
			return false
		},
		/* 58 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ((([0-9]+ WS OffsetOperator [0-9]+) / ([0-9]+ (OffsetOperator '(' [0-9]+ OffsetOperator [0-9]+ ')')?) / ([0-9]+ (OffsetOperator [0-9]+ OffsetOperator [0-9]+)?) / ([0-9]+ (OffsetOperator [0-9]+)?) / (S2nBignumHelper S2nBignumHelper (S2nBignumHelper ([0-9]+ OffsetOperator)? [0-9]+ OffsetOperator)? [0-9]+) / (S2nBignumHelper [0-9]+ ((WS? OffsetOperator [0-9]+ (WS? OffsetOperator [0-9]+)?) / !'x')) / S2nBignumHelper / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ WS? OffsetOperator WS? [0-9]+ ')')) !([a-z] / [A-Z]))))> */
		func() bool {
			position946, tokenIndex946 := position, tokenIndex
			{
				position947 := position
				{
					position948, tokenIndex948 := position, tokenIndex
					if buffer[position] != rune('+') {
						goto l948
					}
					position++
					goto l949
				l948:
					position, tokenIndex = position948, tokenIndex948
				}
			l949:
				{
					position950, tokenIndex950 := position, tokenIndex
					if buffer[position] != rune('-') {
						goto l950
					}
					position++
					goto l951
				l950:
					position, tokenIndex = position950, tokenIndex950
				}
			l951:
				{
					position952, tokenIndex952 := position, tokenIndex
					if buffer[position] != rune('0') {
						goto l953
					}
					position++
					{
						position954, tokenIndex954 := position, tokenIndex
						if buffer[position] != rune('b') {
							goto l955
						}
						position++
						goto l954
					l955:
						position, tokenIndex = position954, tokenIndex954
						if buffer[position] != rune('B') {
							goto l953
						}
						position++
					}
				l954:
					{
						position958, tokenIndex958 := position, tokenIndex
						if buffer[position] != rune('0') {
							goto l959
						}
						position++
						goto l958
					l959:
						position, tokenIndex = position958, tokenIndex958
						if buffer[position] != rune('1') {
							goto l953
						}
						position++
					}
				l958:
				l956:
					{
						position957, tokenIndex957 := position, tokenIndex
						{
							position960, tokenIndex960 := position, tokenIndex
							if buffer[position] != rune('0') {
								goto l961
							}
							position++
							goto l960
						l961:
							position, tokenIndex = position960, tokenIndex960
							if buffer[position] != rune('1') {
								goto l957
							}
							position++
						}
					l960:
						goto l956
					l957:
						position, tokenIndex = position957, tokenIndex957
					}
					goto l952
				l953:
					position, tokenIndex = position952, tokenIndex952
					if buffer[position] != rune('0') {
						goto l962
					}
					position++
					{
						position963, tokenIndex963 := position, tokenIndex
						if buffer[position] != rune('x') {
							goto l964
						}
						position++
						goto l963
					l964:
						position, tokenIndex = position963, tokenIndex963
						if buffer[position] != rune('X') {
							goto l962
						}
						position++
					}
				l963:
					{
						position967, tokenIndex967 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l968
						}
						position++
						goto l967
					l968:
						position, tokenIndex = position967, tokenIndex967
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l969
						}
						position++
						goto l967
					l969:
						position, tokenIndex = position967, tokenIndex967
						{
							position970, tokenIndex970 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('f') {
								goto l971
							}
							position++
							goto l970
						l971:
							position, tokenIndex = position970, tokenIndex970
							if c := buffer[position]; c < rune('A') || c > rune('F') {
								goto l962
							}
							position++
						}
					l970:
					}
				l967:
				l965:
					{
						position966, tokenIndex966 := position, tokenIndex
						{
							position972, tokenIndex972 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l973
							}
							position++
							goto l972
						l973:
							position, tokenIndex = position972, tokenIndex972
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l974
							}
							position++
							goto l972
						l974:
							position, tokenIndex = position972, tokenIndex972
							{
								position975, tokenIndex975 := position, tokenIndex
								if c := buffer[position]; c < rune('a') || c > rune('f') {
									goto l976
								}
								position++
								goto l975
							l976:
								position, tokenIndex = position975, tokenIndex975
								if c := buffer[position]; c < rune('A') || c > rune('F') {
									goto l966
								}
								position++
							}
						l975:
						}
					l972:
						goto l965
					l966:
						position, tokenIndex = position966, tokenIndex966
					}
					goto l952
				l962:
					position, tokenIndex = position952, tokenIndex952
					{
						position977, tokenIndex977 := position, tokenIndex
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l978
						}
						position++
					l979:
						{
							position980, tokenIndex980 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l980
							}
							position++
							goto l979
						l980:
							position, tokenIndex = position980, tokenIndex980
						}
						if !_rules[ruleWS]() {
							goto l978
						}
						if !_rules[ruleOffsetOperator]() {
							goto l978
						}
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l978
						}
						position++
					l981:
						{
							position982, tokenIndex982 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l982
							}
							position++
							goto l981
						l982:
							position, tokenIndex = position982, tokenIndex982
						}
						goto l977
					l978:
						position, tokenIndex = position977, tokenIndex977
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l983
						}
						position++
					l984:
						{
							position985, tokenIndex985 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l985
							}
							position++
							goto l984
						l985:
							position, tokenIndex = position985, tokenIndex985
						}
						{
							position986, tokenIndex986 := position, tokenIndex
							if !_rules[ruleOffsetOperator]() {
								goto l986
							}
							if buffer[position] != rune('(') {
								goto l986
							}
							position++
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l986
							}
							position++
						l988:
							{
								position989, tokenIndex989 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l989
								}
								position++
								goto l988
							l989:
								position, tokenIndex = position989, tokenIndex989
							}
							if !_rules[ruleOffsetOperator]() {
								goto l986
							}
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l986
							}
							position++
						l990:
							{
								position991, tokenIndex991 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l991
								}
								position++
								goto l990
							l991:
								position, tokenIndex = position991, tokenIndex991
							}
							if buffer[position] != rune(')') {
								goto l986
							}
							position++
							goto l987
						l986:
							position, tokenIndex = position986, tokenIndex986
						}
					l987:
						goto l977
					l983:
						position, tokenIndex = position977, tokenIndex977
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l992
						}
						position++
					l993:
						{
							position994, tokenIndex994 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l994
							}
							position++
							goto l993
						l994:
							position, tokenIndex = position994, tokenIndex994
						}
						{
							position995, tokenIndex995 := position, tokenIndex
							if !_rules[ruleOffsetOperator]() {
								goto l995
							}
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l995
							}
							position++
						l997:
							{
								position998, tokenIndex998 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l998
								}
								position++
								goto l997
							l998:
								position, tokenIndex = position998, tokenIndex998
							}
							if !_rules[ruleOffsetOperator]() {
								goto l995
							}
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l995
							}
							position++
						l999:
							{
								position1000, tokenIndex1000 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1000
								}
								position++
								goto l999
							l1000:
								position, tokenIndex = position1000, tokenIndex1000
							}
							goto l996
						l995:
							position, tokenIndex = position995, tokenIndex995
						}
					l996:
						goto l977
					l992:
						position, tokenIndex = position977, tokenIndex977
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l1001
						}
						position++
					l1002:
						{
							position1003, tokenIndex1003 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1003
							}
							position++
							goto l1002
						l1003:
							position, tokenIndex = position1003, tokenIndex1003
						}
						{
							position1004, tokenIndex1004 := position, tokenIndex
							if !_rules[ruleOffsetOperator]() {
								goto l1004
							}
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1004
							}
							position++
						l1006:
							{
								position1007, tokenIndex1007 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1007
								}
								position++
								goto l1006
							l1007:
								position, tokenIndex = position1007, tokenIndex1007
							}
							goto l1005
						l1004:
							position, tokenIndex = position1004, tokenIndex1004
						}
					l1005:
						goto l977
					l1001:
						position, tokenIndex = position977, tokenIndex977
						if !_rules[ruleS2nBignumHelper]() {
							goto l1008
						}
						if !_rules[ruleS2nBignumHelper]() {
							goto l1008
						}
						{
							position1009, tokenIndex1009 := position, tokenIndex
							if !_rules[ruleS2nBignumHelper]() {
								goto l1009
							}
							{
								position1011, tokenIndex1011 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1011
								}
								position++
							l1013:
								{
									position1014, tokenIndex1014 := position, tokenIndex
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l1014
									}
									position++
									goto l1013
								l1014:
									position, tokenIndex = position1014, tokenIndex1014
								}
								if !_rules[ruleOffsetOperator]() {
									goto l1011
								}
								goto l1012
							l1011:
								position, tokenIndex = position1011, tokenIndex1011
							}
						l1012:
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1009
							}
							position++
						l1015:
							{
								position1016, tokenIndex1016 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1016
								}
								position++
								goto l1015
							l1016:
								position, tokenIndex = position1016, tokenIndex1016
							}
							if !_rules[ruleOffsetOperator]() {
								goto l1009
							}
							goto l1010
						l1009:
							position, tokenIndex = position1009, tokenIndex1009
						}
					l1010:
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l1008
						}
						position++
					l1017:
						{
							position1018, tokenIndex1018 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1018
							}
							position++
							goto l1017
						l1018:
							position, tokenIndex = position1018, tokenIndex1018
						}
						goto l977
					l1008:
						position, tokenIndex = position977, tokenIndex977
						if !_rules[ruleS2nBignumHelper]() {
							goto l1019
						}
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l1019
						}
						position++
					l1020:
						{
							position1021, tokenIndex1021 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1021
							}
							position++
							goto l1020
						l1021:
							position, tokenIndex = position1021, tokenIndex1021
						}
						{
							position1022, tokenIndex1022 := position, tokenIndex
							{
								position1024, tokenIndex1024 := position, tokenIndex
								if !_rules[ruleWS]() {
									goto l1024
								}
								goto l1025
							l1024:
								position, tokenIndex = position1024, tokenIndex1024
							}
						l1025:
							if !_rules[ruleOffsetOperator]() {
								goto l1023
							}
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1023
							}
							position++
						l1026:
							{
								position1027, tokenIndex1027 := position, tokenIndex
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1027
								}
								position++
								goto l1026
							l1027:
								position, tokenIndex = position1027, tokenIndex1027
							}
							{
								position1028, tokenIndex1028 := position, tokenIndex
								{
									position1030, tokenIndex1030 := position, tokenIndex
									if !_rules[ruleWS]() {
										goto l1030
									}
									goto l1031
								l1030:
									position, tokenIndex = position1030, tokenIndex1030
								}
							l1031:
								if !_rules[ruleOffsetOperator]() {
									goto l1028
								}
								if c := buffer[position]; c < rune('0') || c > rune('9') {
									goto l1028
								}
								position++
							l1032:
								{
									position1033, tokenIndex1033 := position, tokenIndex
									if c := buffer[position]; c < rune('0') || c > rune('9') {
										goto l1033
									}
									position++
									goto l1032
								l1033:
									position, tokenIndex = position1033, tokenIndex1033
								}
								goto l1029
							l1028:
								position, tokenIndex = position1028, tokenIndex1028
							}
						l1029:
							goto l1022
						l1023:
							position, tokenIndex = position1022, tokenIndex1022
							{
								position1034, tokenIndex1034 := position, tokenIndex
								if buffer[position] != rune('x') {
									goto l1034
								}
								position++
								goto l1019
							l1034:
								position, tokenIndex = position1034, tokenIndex1034
							}
						}
					l1022:
						goto l977
					l1019:
						position, tokenIndex = position977, tokenIndex977
						if !_rules[ruleS2nBignumHelper]() {
							goto l1035
						}
						goto l977
					l1035:
						position, tokenIndex = position977, tokenIndex977
						if buffer[position] != rune('(') {
							goto l946
						}
						position++
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l946
						}
						position++
					l1036:
						{
							position1037, tokenIndex1037 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1037
							}
							position++
							goto l1036
						l1037:
							position, tokenIndex = position1037, tokenIndex1037
						}
						{
							position1038, tokenIndex1038 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l1038
							}
							goto l1039
						l1038:
							position, tokenIndex = position1038, tokenIndex1038
						}
					l1039:
						if !_rules[ruleOffsetOperator]() {
							goto l946
						}
						{
							position1040, tokenIndex1040 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l1040
							}
							goto l1041
						l1040:
							position, tokenIndex = position1040, tokenIndex1040
						}
					l1041:
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l946
						}
						position++
					l1042:
						{
							position1043, tokenIndex1043 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1043
							}
							position++
							goto l1042
						l1043:
							position, tokenIndex = position1043, tokenIndex1043
						}
						{
							position1044, tokenIndex1044 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l1044
							}
							goto l1045
						l1044:
							position, tokenIndex = position1044, tokenIndex1044
						}
					l1045:
						if !_rules[ruleOffsetOperator]() {
							goto l946
						}
						{
							position1046, tokenIndex1046 := position, tokenIndex
							if !_rules[ruleWS]() {
								goto l1046
							}
							goto l1047
						l1046:
							position, tokenIndex = position1046, tokenIndex1046
						}
					l1047:
						if c := buffer[position]; c < rune('0') || c > rune('9') {
							goto l946
						}
						position++
					l1048:
						{
							position1049, tokenIndex1049 := position, tokenIndex
							if c := buffer[position]; c < rune('0') || c > rune('9') {
								goto l1049
							}
							position++
							goto l1048
						l1049:
							position, tokenIndex = position1049, tokenIndex1049
						}
						if buffer[position] != rune(')') {
							goto l946
						}
						position++
					}
				l977:
					{
						position1050, tokenIndex1050 := position, tokenIndex
						{
							position1051, tokenIndex1051 := position, tokenIndex
							if c := buffer[position]; c < rune('a') || c > rune('z') {
								goto l1052
							}
							position++
							goto l1051
						l1052:
							position, tokenIndex = position1051, tokenIndex1051
							if c := buffer[position]; c < rune('A') || c > rune('Z') {
								goto l1050
							}
							position++
						}
					l1051:
						goto l946
					l1050:
						position, tokenIndex = position1050, tokenIndex1050
					}
				}
			l952:
				add(ruleOffset, position947)
			}
			return true
		l946:
			position, tokenIndex = position946, tokenIndex946
			return false
		},
		/* 59 Section <- <([a-z] / [A-Z] / '@')+> */
		func() bool {
			position1053, tokenIndex1053 := position, tokenIndex
			{
				position1054 := position
				{
					position1057, tokenIndex1057 := position, tokenIndex
					if c := buffer[position]; c < rune('a') || c > rune('z') {
						goto l1058
					}
					position++
					goto l1057
				l1058:
					position, tokenIndex = position1057, tokenIndex1057
					if c := buffer[position]; c < rune('A') || c > rune('Z') {
						goto l1059
					}
					position++
					goto l1057
				l1059:
					position, tokenIndex = position1057, tokenIndex1057
					if buffer[position] != rune('@') {
						goto l1053
					}
					position++
				}
			l1057:
			l1055:
				{
					position1056, tokenIndex1056 := position, tokenIndex
					{
						position1060, tokenIndex1060 := position, tokenIndex
						if c := buffer[position]; c < rune('a') || c > rune('z') {
							goto l1061
						}
						position++
						goto l1060
					l1061:
						position, tokenIndex = position1060, tokenIndex1060
						if c := buffer[position]; c < rune('A') || c > rune('Z') {
							goto l1062
						}
						position++
						goto l1060
					l1062:
						position, tokenIndex = position1060, tokenIndex1060
						if buffer[position] != rune('@') {
							goto l1056
						}
						position++
					}
				l1060:
					goto l1055
				l1056:
					position, tokenIndex = position1056, tokenIndex1056
				}
				add(ruleSection, position1054)
			}
			return true
		l1053:
			position, tokenIndex = position1053, tokenIndex1053
			return false
		},
		/* 60 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
		func() bool {
			position1063, tokenIndex1063 := position, tokenIndex
			{
				position1064 := position
				if buffer[position] != rune('%') {
					goto l1063
				}
				position++
				{
					position1065, tokenIndex1065 := position, tokenIndex
					if c := buffer[position]; c < rune('c') || c > rune('g') {
						goto l1066
					}
					position++
					goto l1065
				l1066:
					position, tokenIndex = position1065, tokenIndex1065
					if buffer[position] != rune('s') {
						goto l1063
					}
					position++
				}
			l1065:
				if buffer[position] != rune('s') {
					goto l1063
				}
				position++
				if buffer[position] != rune(':') {
					goto l1063
				}
				position++
				add(ruleSegmentRegister, position1064)
			}
			return true
		l1063:
			position, tokenIndex = position1063, tokenIndex1063
			return false
		},
	}
	p.rules = _rules
	return nil
}