Allow local labels in symbol expressions

Newer GCCs emit code like `.long   3f - 2f`.

Change-Id: I0af4d31def5e5ef88251e5f9e3d18944921cd38b
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/69149
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index ff23a80..c719859 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -50,7 +50,7 @@
 
 SymbolArg <- SymbolExpr
 SymbolExpr <- SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?
-SymbolAtom <- Offset / SymbolType / LocalSymbol TCMarker? / SymbolName Offset / SymbolName TCMarker? / Dot / OpenParen WS? SymbolExpr WS? CloseParen
+SymbolAtom <- LocalLabelRef / Offset / SymbolType / LocalSymbol TCMarker? / SymbolName Offset / SymbolName TCMarker? / Dot / OpenParen WS? SymbolExpr WS? CloseParen
 SymbolOperator <- '+' / '-' / '|' / '<<' / '>>'
 OpenParen <- '('
 CloseParen <- ')'
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index aa93136..ee8a108 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -2670,98 +2670,104 @@
 			position, tokenIndex = position304, tokenIndex304
 			return false
 		},
-		/* 17 SymbolAtom <- <(Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
+		/* 17 SymbolAtom <- <(LocalLabelRef / Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
 		func() bool {
 			position312, tokenIndex312 := position, tokenIndex
 			{
 				position313 := position
 				{
 					position314, tokenIndex314 := position, tokenIndex
-					if !_rules[ruleOffset]() {
+					if !_rules[ruleLocalLabelRef]() {
 						goto l315
 					}
 					goto l314
 				l315:
 					position, tokenIndex = position314, tokenIndex314
-					if !_rules[ruleSymbolType]() {
+					if !_rules[ruleOffset]() {
 						goto l316
 					}
 					goto l314
 				l316:
 					position, tokenIndex = position314, tokenIndex314
-					if !_rules[ruleLocalSymbol]() {
+					if !_rules[ruleSymbolType]() {
 						goto l317
 					}
-					{
-						position318, tokenIndex318 := position, tokenIndex
-						if !_rules[ruleTCMarker]() {
-							goto l318
-						}
-						goto l319
-					l318:
-						position, tokenIndex = position318, tokenIndex318
-					}
-				l319:
 					goto l314
 				l317:
 					position, tokenIndex = position314, tokenIndex314
-					if !_rules[ruleSymbolName]() {
-						goto l320
+					if !_rules[ruleLocalSymbol]() {
+						goto l318
 					}
-					if !_rules[ruleOffset]() {
+					{
+						position319, tokenIndex319 := position, tokenIndex
+						if !_rules[ruleTCMarker]() {
+							goto l319
+						}
 						goto l320
+					l319:
+						position, tokenIndex = position319, tokenIndex319
 					}
-					goto l314
 				l320:
+					goto l314
+				l318:
 					position, tokenIndex = position314, tokenIndex314
 					if !_rules[ruleSymbolName]() {
 						goto l321
 					}
-					{
-						position322, tokenIndex322 := position, tokenIndex
-						if !_rules[ruleTCMarker]() {
-							goto l322
-						}
-						goto l323
-					l322:
-						position, tokenIndex = position322, tokenIndex322
+					if !_rules[ruleOffset]() {
+						goto l321
 					}
-				l323:
 					goto l314
 				l321:
 					position, tokenIndex = position314, tokenIndex314
-					if !_rules[ruleDot]() {
+					if !_rules[ruleSymbolName]() {
+						goto l322
+					}
+					{
+						position323, tokenIndex323 := position, tokenIndex
+						if !_rules[ruleTCMarker]() {
+							goto l323
+						}
 						goto l324
+					l323:
+						position, tokenIndex = position323, tokenIndex323
+					}
+				l324:
+					goto l314
+				l322:
+					position, tokenIndex = position314, tokenIndex314
+					if !_rules[ruleDot]() {
+						goto l325
 					}
 					goto l314
-				l324:
+				l325:
 					position, tokenIndex = position314, tokenIndex314
 					if !_rules[ruleOpenParen]() {
 						goto l312
 					}
 					{
-						position325, tokenIndex325 := position, tokenIndex
+						position326, tokenIndex326 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l325
+							goto l326
 						}
-						goto l326
-					l325:
-						position, tokenIndex = position325, tokenIndex325
+						goto l327
+					l326:
+						position, tokenIndex = position326, tokenIndex326
 					}
-				l326:
+				l327:
 					if !_rules[ruleSymbolExpr]() {
 						goto l312
 					}
 					{
-						position327, tokenIndex327 := position, tokenIndex
+						position328, tokenIndex328 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l327
+							goto l328
 						}
-						goto l328
-					l327:
-						position, tokenIndex = position327, tokenIndex327
+						goto l329
+					l328:
+						position, tokenIndex = position328, tokenIndex328
 					}
-				l328:
+				l329:
 					if !_rules[ruleCloseParen]() {
 						goto l312
 					}
@@ -2776,4823 +2782,4823 @@
 		},
 		/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
 		func() bool {
-			position329, tokenIndex329 := position, tokenIndex
+			position330, tokenIndex330 := position, tokenIndex
 			{
-				position330 := position
+				position331 := position
 				{
-					position331, tokenIndex331 := position, tokenIndex
+					position332, tokenIndex332 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l332
-					}
-					position++
-					goto l331
-				l332:
-					position, tokenIndex = position331, tokenIndex331
-					if buffer[position] != rune('-') {
 						goto l333
 					}
 					position++
-					goto l331
+					goto l332
 				l333:
-					position, tokenIndex = position331, tokenIndex331
-					if buffer[position] != rune('|') {
+					position, tokenIndex = position332, tokenIndex332
+					if buffer[position] != rune('-') {
 						goto l334
 					}
 					position++
-					goto l331
+					goto l332
 				l334:
-					position, tokenIndex = position331, tokenIndex331
-					if buffer[position] != rune('<') {
+					position, tokenIndex = position332, tokenIndex332
+					if buffer[position] != rune('|') {
 						goto l335
 					}
 					position++
-					if buffer[position] != rune('<') {
-						goto l335
-					}
-					position++
-					goto l331
+					goto l332
 				l335:
-					position, tokenIndex = position331, tokenIndex331
+					position, tokenIndex = position332, tokenIndex332
+					if buffer[position] != rune('<') {
+						goto l336
+					}
+					position++
+					if buffer[position] != rune('<') {
+						goto l336
+					}
+					position++
+					goto l332
+				l336:
+					position, tokenIndex = position332, tokenIndex332
 					if buffer[position] != rune('>') {
-						goto l329
+						goto l330
 					}
 					position++
 					if buffer[position] != rune('>') {
-						goto l329
+						goto l330
 					}
 					position++
 				}
-			l331:
-				add(ruleSymbolOperator, position330)
+			l332:
+				add(ruleSymbolOperator, position331)
 			}
 			return true
-		l329:
-			position, tokenIndex = position329, tokenIndex329
+		l330:
+			position, tokenIndex = position330, tokenIndex330
 			return false
 		},
 		/* 19 OpenParen <- <'('> */
 		func() bool {
-			position336, tokenIndex336 := position, tokenIndex
+			position337, tokenIndex337 := position, tokenIndex
 			{
-				position337 := position
+				position338 := position
 				if buffer[position] != rune('(') {
-					goto l336
+					goto l337
 				}
 				position++
-				add(ruleOpenParen, position337)
+				add(ruleOpenParen, position338)
 			}
 			return true
-		l336:
-			position, tokenIndex = position336, tokenIndex336
+		l337:
+			position, tokenIndex = position337, tokenIndex337
 			return false
 		},
 		/* 20 CloseParen <- <')'> */
 		func() bool {
-			position338, tokenIndex338 := position, tokenIndex
+			position339, tokenIndex339 := position, tokenIndex
 			{
-				position339 := position
+				position340 := position
 				if buffer[position] != rune(')') {
-					goto l338
+					goto l339
 				}
 				position++
-				add(ruleCloseParen, position339)
+				add(ruleCloseParen, position340)
 			}
 			return true
-		l338:
-			position, tokenIndex = position338, tokenIndex338
+		l339:
+			position, tokenIndex = position339, tokenIndex339
 			return false
 		},
 		/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
 		func() bool {
-			position340, tokenIndex340 := position, tokenIndex
+			position341, tokenIndex341 := position, tokenIndex
 			{
-				position341 := position
+				position342 := position
 				{
-					position342, tokenIndex342 := position, tokenIndex
+					position343, tokenIndex343 := position, tokenIndex
 					if buffer[position] != rune('@') {
-						goto l343
+						goto l344
 					}
 					position++
-					goto l342
-				l343:
-					position, tokenIndex = position342, tokenIndex342
+					goto l343
+				l344:
+					position, tokenIndex = position343, tokenIndex343
 					if buffer[position] != rune('%') {
-						goto l340
+						goto l341
 					}
 					position++
 				}
-			l342:
+			l343:
 				{
-					position344, tokenIndex344 := position, tokenIndex
+					position345, tokenIndex345 := position, tokenIndex
 					if buffer[position] != rune('f') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('u') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('n') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('c') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('t') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('i') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('o') {
-						goto l345
+						goto l346
 					}
 					position++
 					if buffer[position] != rune('n') {
-						goto l345
+						goto l346
 					}
 					position++
-					goto l344
-				l345:
-					position, tokenIndex = position344, tokenIndex344
+					goto l345
+				l346:
+					position, tokenIndex = position345, tokenIndex345
 					if buffer[position] != rune('o') {
-						goto l340
+						goto l341
 					}
 					position++
 					if buffer[position] != rune('b') {
-						goto l340
+						goto l341
 					}
 					position++
 					if buffer[position] != rune('j') {
-						goto l340
+						goto l341
 					}
 					position++
 					if buffer[position] != rune('e') {
-						goto l340
+						goto l341
 					}
 					position++
 					if buffer[position] != rune('c') {
-						goto l340
+						goto l341
 					}
 					position++
 					if buffer[position] != rune('t') {
-						goto l340
+						goto l341
 					}
 					position++
 				}
-			l344:
-				add(ruleSymbolType, position341)
+			l345:
+				add(ruleSymbolType, position342)
 			}
 			return true
-		l340:
-			position, tokenIndex = position340, tokenIndex340
+		l341:
+			position, tokenIndex = position341, tokenIndex341
 			return false
 		},
 		/* 22 Dot <- <'.'> */
 		func() bool {
-			position346, tokenIndex346 := position, tokenIndex
+			position347, tokenIndex347 := position, tokenIndex
 			{
-				position347 := position
+				position348 := position
 				if buffer[position] != rune('.') {
-					goto l346
+					goto l347
 				}
 				position++
-				add(ruleDot, position347)
+				add(ruleDot, position348)
 			}
 			return true
-		l346:
-			position, tokenIndex = position346, tokenIndex346
+		l347:
+			position, tokenIndex = position347, tokenIndex347
 			return false
 		},
 		/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
 		func() bool {
-			position348, tokenIndex348 := position, tokenIndex
+			position349, tokenIndex349 := position, tokenIndex
 			{
-				position349 := position
+				position350 := position
 				if buffer[position] != rune('[') {
-					goto l348
+					goto l349
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l348
+					goto l349
 				}
 				position++
 				if buffer[position] != rune('C') {
-					goto l348
+					goto l349
 				}
 				position++
 				if buffer[position] != rune(']') {
-					goto l348
+					goto l349
 				}
 				position++
-				add(ruleTCMarker, position349)
+				add(ruleTCMarker, position350)
 			}
 			return true
-		l348:
-			position, tokenIndex = position348, tokenIndex348
+		l349:
+			position, tokenIndex = position349, tokenIndex349
 			return false
 		},
 		/* 24 EscapedChar <- <('\\' .)> */
 		func() bool {
-			position350, tokenIndex350 := position, tokenIndex
+			position351, tokenIndex351 := position, tokenIndex
 			{
-				position351 := position
+				position352 := position
 				if buffer[position] != rune('\\') {
-					goto l350
+					goto l351
 				}
 				position++
 				if !matchDot() {
-					goto l350
+					goto l351
 				}
-				add(ruleEscapedChar, position351)
+				add(ruleEscapedChar, position352)
 			}
 			return true
-		l350:
-			position, tokenIndex = position350, tokenIndex350
+		l351:
+			position, tokenIndex = position351, tokenIndex351
 			return false
 		},
 		/* 25 WS <- <(' ' / '\t')+> */
 		func() bool {
-			position352, tokenIndex352 := position, tokenIndex
+			position353, tokenIndex353 := position, tokenIndex
 			{
-				position353 := position
+				position354 := position
+				{
+					position357, tokenIndex357 := position, tokenIndex
+					if buffer[position] != rune(' ') {
+						goto l358
+					}
+					position++
+					goto l357
+				l358:
+					position, tokenIndex = position357, tokenIndex357
+					if buffer[position] != rune('\t') {
+						goto l353
+					}
+					position++
+				}
+			l357:
+			l355:
 				{
 					position356, tokenIndex356 := position, tokenIndex
-					if buffer[position] != rune(' ') {
-						goto l357
-					}
-					position++
-					goto l356
-				l357:
-					position, tokenIndex = position356, tokenIndex356
-					if buffer[position] != rune('\t') {
-						goto l352
-					}
-					position++
-				}
-			l356:
-			l354:
-				{
-					position355, tokenIndex355 := position, tokenIndex
 					{
-						position358, tokenIndex358 := position, tokenIndex
+						position359, tokenIndex359 := position, tokenIndex
 						if buffer[position] != rune(' ') {
-							goto l359
+							goto l360
 						}
 						position++
-						goto l358
-					l359:
-						position, tokenIndex = position358, tokenIndex358
+						goto l359
+					l360:
+						position, tokenIndex = position359, tokenIndex359
 						if buffer[position] != rune('\t') {
-							goto l355
+							goto l356
 						}
 						position++
 					}
-				l358:
-					goto l354
-				l355:
-					position, tokenIndex = position355, tokenIndex355
+				l359:
+					goto l355
+				l356:
+					position, tokenIndex = position356, tokenIndex356
 				}
-				add(ruleWS, position353)
+				add(ruleWS, position354)
 			}
 			return true
-		l352:
-			position, tokenIndex = position352, tokenIndex352
+		l353:
+			position, tokenIndex = position353, tokenIndex353
 			return false
 		},
 		/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
 		func() bool {
-			position360, tokenIndex360 := position, tokenIndex
+			position361, tokenIndex361 := position, tokenIndex
 			{
-				position361 := position
+				position362 := position
 				{
-					position362, tokenIndex362 := position, tokenIndex
+					position363, tokenIndex363 := position, tokenIndex
 					if buffer[position] != rune('/') {
-						goto l363
+						goto l364
 					}
 					position++
 					if buffer[position] != rune('/') {
-						goto l363
+						goto l364
 					}
 					position++
-					goto l362
-				l363:
-					position, tokenIndex = position362, tokenIndex362
+					goto l363
+				l364:
+					position, tokenIndex = position363, tokenIndex363
 					if buffer[position] != rune('#') {
-						goto l360
+						goto l361
 					}
 					position++
 				}
-			l362:
-			l364:
+			l363:
+			l365:
 				{
-					position365, tokenIndex365 := position, tokenIndex
+					position366, tokenIndex366 := position, tokenIndex
 					{
-						position366, tokenIndex366 := position, tokenIndex
+						position367, tokenIndex367 := position, tokenIndex
 						if buffer[position] != rune('\n') {
-							goto l366
+							goto l367
 						}
 						position++
-						goto l365
-					l366:
-						position, tokenIndex = position366, tokenIndex366
+						goto l366
+					l367:
+						position, tokenIndex = position367, tokenIndex367
 					}
 					if !matchDot() {
-						goto l365
+						goto l366
 					}
-					goto l364
-				l365:
-					position, tokenIndex = position365, tokenIndex365
+					goto l365
+				l366:
+					position, tokenIndex = position366, tokenIndex366
 				}
-				add(ruleComment, position361)
+				add(ruleComment, position362)
 			}
 			return true
-		l360:
-			position, tokenIndex = position360, tokenIndex360
+		l361:
+			position, tokenIndex = position361, tokenIndex361
 			return false
 		},
 		/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
 		func() bool {
-			position367, tokenIndex367 := position, tokenIndex
+			position368, tokenIndex368 := position, tokenIndex
 			{
-				position368 := position
+				position369 := position
 				{
-					position369, tokenIndex369 := position, tokenIndex
+					position370, tokenIndex370 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l370
-					}
-					goto l369
-				l370:
-					position, tokenIndex = position369, tokenIndex369
-					if !_rules[ruleLocalLabel]() {
 						goto l371
 					}
-					goto l369
+					goto l370
 				l371:
-					position, tokenIndex = position369, tokenIndex369
+					position, tokenIndex = position370, tokenIndex370
+					if !_rules[ruleLocalLabel]() {
+						goto l372
+					}
+					goto l370
+				l372:
+					position, tokenIndex = position370, tokenIndex370
 					if !_rules[ruleSymbolName]() {
-						goto l367
+						goto l368
 					}
 				}
-			l369:
+			l370:
 				if buffer[position] != rune(':') {
-					goto l367
+					goto l368
 				}
 				position++
-				add(ruleLabel, position368)
+				add(ruleLabel, position369)
 			}
 			return true
-		l367:
-			position, tokenIndex = position367, tokenIndex367
+		l368:
+			position, tokenIndex = position368, tokenIndex368
 			return false
 		},
 		/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
 		func() bool {
-			position372, tokenIndex372 := position, tokenIndex
+			position373, tokenIndex373 := position, tokenIndex
 			{
-				position373 := position
+				position374 := position
 				{
-					position374, tokenIndex374 := position, tokenIndex
+					position375, tokenIndex375 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l375
-					}
-					position++
-					goto l374
-				l375:
-					position, tokenIndex = position374, tokenIndex374
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
 						goto l376
 					}
 					position++
-					goto l374
+					goto l375
 				l376:
-					position, tokenIndex = position374, tokenIndex374
-					if buffer[position] != rune('.') {
+					position, tokenIndex = position375, tokenIndex375
+					if c := buffer[position]; c < rune('A') || c > rune('Z') {
 						goto l377
 					}
 					position++
-					goto l374
+					goto l375
 				l377:
-					position, tokenIndex = position374, tokenIndex374
+					position, tokenIndex = position375, tokenIndex375
+					if buffer[position] != rune('.') {
+						goto l378
+					}
+					position++
+					goto l375
+				l378:
+					position, tokenIndex = position375, tokenIndex375
 					if buffer[position] != rune('_') {
-						goto l372
+						goto l373
 					}
 					position++
 				}
-			l374:
-			l378:
+			l375:
+			l379:
 				{
-					position379, tokenIndex379 := position, tokenIndex
+					position380, tokenIndex380 := position, tokenIndex
 					{
-						position380, tokenIndex380 := position, tokenIndex
+						position381, tokenIndex381 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l381
-						}
-						position++
-						goto l380
-					l381:
-						position, tokenIndex = position380, tokenIndex380
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l382
 						}
 						position++
-						goto l380
+						goto l381
 					l382:
-						position, tokenIndex = position380, tokenIndex380
-						if buffer[position] != rune('.') {
+						position, tokenIndex = position381, tokenIndex381
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l383
 						}
 						position++
-						goto l380
+						goto l381
 					l383:
-						position, tokenIndex = position380, tokenIndex380
-						{
-							position385, tokenIndex385 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l386
-							}
-							position++
-							goto l385
-						l386:
-							position, tokenIndex = position385, tokenIndex385
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l384
-							}
-							position++
-						}
-					l385:
-						goto l380
-					l384:
-						position, tokenIndex = position380, tokenIndex380
-						if buffer[position] != rune('$') {
-							goto l387
+						position, tokenIndex = position381, tokenIndex381
+						if buffer[position] != rune('.') {
+							goto l384
 						}
 						position++
-						goto l380
-					l387:
-						position, tokenIndex = position380, tokenIndex380
+						goto l381
+					l384:
+						position, tokenIndex = position381, tokenIndex381
+						{
+							position386, tokenIndex386 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l387
+							}
+							position++
+							goto l386
+						l387:
+							position, tokenIndex = position386, tokenIndex386
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l385
+							}
+							position++
+						}
+					l386:
+						goto l381
+					l385:
+						position, tokenIndex = position381, tokenIndex381
+						if buffer[position] != rune('$') {
+							goto l388
+						}
+						position++
+						goto l381
+					l388:
+						position, tokenIndex = position381, tokenIndex381
 						if buffer[position] != rune('_') {
-							goto l379
+							goto l380
 						}
 						position++
 					}
+				l381:
+					goto l379
 				l380:
-					goto l378
-				l379:
-					position, tokenIndex = position379, tokenIndex379
+					position, tokenIndex = position380, tokenIndex380
 				}
-				add(ruleSymbolName, position373)
+				add(ruleSymbolName, position374)
 			}
 			return true
-		l372:
-			position, tokenIndex = position372, tokenIndex372
+		l373:
+			position, tokenIndex = position373, tokenIndex373
 			return false
 		},
 		/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
 		func() bool {
-			position388, tokenIndex388 := position, tokenIndex
+			position389, tokenIndex389 := position, tokenIndex
 			{
-				position389 := position
+				position390 := position
 				if buffer[position] != rune('.') {
-					goto l388
+					goto l389
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l388
+					goto l389
 				}
 				position++
 				{
-					position392, tokenIndex392 := position, tokenIndex
+					position393, tokenIndex393 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l393
-					}
-					position++
-					goto l392
-				l393:
-					position, tokenIndex = position392, tokenIndex392
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
 						goto l394
 					}
 					position++
-					goto l392
+					goto l393
 				l394:
-					position, tokenIndex = position392, tokenIndex392
-					{
-						position396, tokenIndex396 := position, tokenIndex
-						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l397
-						}
-						position++
-						goto l396
-					l397:
-						position, tokenIndex = position396, tokenIndex396
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l395
-						}
-						position++
+					position, tokenIndex = position393, tokenIndex393
+					if c := buffer[position]; c < rune('A') || c > rune('Z') {
+						goto l395
 					}
-				l396:
-					goto l392
+					position++
+					goto l393
 				l395:
-					position, tokenIndex = position392, tokenIndex392
-					if buffer[position] != rune('.') {
-						goto l398
-					}
-					position++
-					goto l392
-				l398:
-					position, tokenIndex = position392, tokenIndex392
+					position, tokenIndex = position393, tokenIndex393
 					{
-						position400, tokenIndex400 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l401
+						position397, tokenIndex397 := position, tokenIndex
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l398
 						}
 						position++
-						goto l400
-					l401:
-						position, tokenIndex = position400, tokenIndex400
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l399
+						goto l397
+					l398:
+						position, tokenIndex = position397, tokenIndex397
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l396
 						}
 						position++
 					}
-				l400:
-					goto l392
-				l399:
-					position, tokenIndex = position392, tokenIndex392
-					if buffer[position] != rune('$') {
-						goto l402
+				l397:
+					goto l393
+				l396:
+					position, tokenIndex = position393, tokenIndex393
+					if buffer[position] != rune('.') {
+						goto l399
 					}
 					position++
-					goto l392
-				l402:
-					position, tokenIndex = position392, tokenIndex392
+					goto l393
+				l399:
+					position, tokenIndex = position393, tokenIndex393
+					{
+						position401, tokenIndex401 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l402
+						}
+						position++
+						goto l401
+					l402:
+						position, tokenIndex = position401, tokenIndex401
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l400
+						}
+						position++
+					}
+				l401:
+					goto l393
+				l400:
+					position, tokenIndex = position393, tokenIndex393
+					if buffer[position] != rune('$') {
+						goto l403
+					}
+					position++
+					goto l393
+				l403:
+					position, tokenIndex = position393, tokenIndex393
 					if buffer[position] != rune('_') {
-						goto l388
+						goto l389
 					}
 					position++
 				}
-			l392:
-			l390:
+			l393:
+			l391:
 				{
-					position391, tokenIndex391 := position, tokenIndex
+					position392, tokenIndex392 := position, tokenIndex
 					{
-						position403, tokenIndex403 := position, tokenIndex
+						position404, tokenIndex404 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l404
-						}
-						position++
-						goto l403
-					l404:
-						position, tokenIndex = position403, tokenIndex403
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l405
 						}
 						position++
-						goto l403
+						goto l404
 					l405:
-						position, tokenIndex = position403, tokenIndex403
-						{
-							position407, tokenIndex407 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l408
-							}
-							position++
-							goto l407
-						l408:
-							position, tokenIndex = position407, tokenIndex407
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l406
-							}
-							position++
+						position, tokenIndex = position404, tokenIndex404
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l406
 						}
-					l407:
-						goto l403
+						position++
+						goto l404
 					l406:
-						position, tokenIndex = position403, tokenIndex403
-						if buffer[position] != rune('.') {
-							goto l409
-						}
-						position++
-						goto l403
-					l409:
-						position, tokenIndex = position403, tokenIndex403
+						position, tokenIndex = position404, tokenIndex404
 						{
-							position411, tokenIndex411 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l412
+							position408, tokenIndex408 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l409
 							}
 							position++
-							goto l411
-						l412:
-							position, tokenIndex = position411, tokenIndex411
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l410
+							goto l408
+						l409:
+							position, tokenIndex = position408, tokenIndex408
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l407
 							}
 							position++
 						}
-					l411:
-						goto l403
-					l410:
-						position, tokenIndex = position403, tokenIndex403
-						if buffer[position] != rune('$') {
-							goto l413
+					l408:
+						goto l404
+					l407:
+						position, tokenIndex = position404, tokenIndex404
+						if buffer[position] != rune('.') {
+							goto l410
 						}
 						position++
-						goto l403
-					l413:
-						position, tokenIndex = position403, tokenIndex403
+						goto l404
+					l410:
+						position, tokenIndex = position404, tokenIndex404
+						{
+							position412, tokenIndex412 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l413
+							}
+							position++
+							goto l412
+						l413:
+							position, tokenIndex = position412, tokenIndex412
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l411
+							}
+							position++
+						}
+					l412:
+						goto l404
+					l411:
+						position, tokenIndex = position404, tokenIndex404
+						if buffer[position] != rune('$') {
+							goto l414
+						}
+						position++
+						goto l404
+					l414:
+						position, tokenIndex = position404, tokenIndex404
 						if buffer[position] != rune('_') {
-							goto l391
+							goto l392
 						}
 						position++
 					}
-				l403:
-					goto l390
-				l391:
-					position, tokenIndex = position391, tokenIndex391
+				l404:
+					goto l391
+				l392:
+					position, tokenIndex = position392, tokenIndex392
 				}
-				add(ruleLocalSymbol, position389)
+				add(ruleLocalSymbol, position390)
 			}
 			return true
-		l388:
-			position, tokenIndex = position388, tokenIndex388
+		l389:
+			position, tokenIndex = position389, tokenIndex389
 			return false
 		},
 		/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
 		func() bool {
-			position414, tokenIndex414 := position, tokenIndex
+			position415, tokenIndex415 := position, tokenIndex
 			{
-				position415 := position
+				position416 := position
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l414
+					goto l415
 				}
 				position++
-			l416:
+			l417:
 				{
-					position417, tokenIndex417 := position, tokenIndex
+					position418, tokenIndex418 := position, tokenIndex
 					{
-						position418, tokenIndex418 := position, tokenIndex
+						position419, tokenIndex419 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l419
+							goto l420
 						}
 						position++
-						goto l418
-					l419:
-						position, tokenIndex = position418, tokenIndex418
+						goto l419
+					l420:
+						position, tokenIndex = position419, tokenIndex419
 						if buffer[position] != rune('$') {
-							goto l417
+							goto l418
 						}
 						position++
 					}
+				l419:
+					goto l417
 				l418:
-					goto l416
-				l417:
-					position, tokenIndex = position417, tokenIndex417
+					position, tokenIndex = position418, tokenIndex418
 				}
-				add(ruleLocalLabel, position415)
+				add(ruleLocalLabel, position416)
 			}
 			return true
-		l414:
-			position, tokenIndex = position414, tokenIndex414
+		l415:
+			position, tokenIndex = position415, tokenIndex415
 			return false
 		},
 		/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
 		func() bool {
-			position420, tokenIndex420 := position, tokenIndex
+			position421, tokenIndex421 := position, tokenIndex
 			{
-				position421 := position
+				position422 := position
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l420
+					goto l421
 				}
 				position++
-			l422:
+			l423:
 				{
-					position423, tokenIndex423 := position, tokenIndex
+					position424, tokenIndex424 := position, tokenIndex
 					{
-						position424, tokenIndex424 := position, tokenIndex
+						position425, tokenIndex425 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l425
+							goto l426
 						}
 						position++
-						goto l424
-					l425:
-						position, tokenIndex = position424, tokenIndex424
+						goto l425
+					l426:
+						position, tokenIndex = position425, tokenIndex425
 						if buffer[position] != rune('$') {
-							goto l423
+							goto l424
 						}
 						position++
 					}
+				l425:
+					goto l423
 				l424:
-					goto l422
-				l423:
-					position, tokenIndex = position423, tokenIndex423
+					position, tokenIndex = position424, tokenIndex424
 				}
 				{
-					position426, tokenIndex426 := position, tokenIndex
+					position427, tokenIndex427 := position, tokenIndex
 					if buffer[position] != rune('b') {
-						goto l427
+						goto l428
 					}
 					position++
-					goto l426
-				l427:
-					position, tokenIndex = position426, tokenIndex426
+					goto l427
+				l428:
+					position, tokenIndex = position427, tokenIndex427
 					if buffer[position] != rune('f') {
-						goto l420
+						goto l421
 					}
 					position++
 				}
-			l426:
-				add(ruleLocalLabelRef, position421)
+			l427:
+				add(ruleLocalLabelRef, position422)
 			}
 			return true
-		l420:
-			position, tokenIndex = position420, tokenIndex420
+		l421:
+			position, tokenIndex = position421, tokenIndex421
 			return false
 		},
 		/* 32 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
 		func() bool {
-			position428, tokenIndex428 := position, tokenIndex
+			position429, tokenIndex429 := position, tokenIndex
 			{
-				position429 := position
+				position430 := position
 				{
-					position430, tokenIndex430 := position, tokenIndex
+					position431, tokenIndex431 := position, tokenIndex
 					if buffer[position] != rune('n') {
-						goto l431
+						goto l432
 					}
 					position++
-					goto l430
-				l431:
-					position, tokenIndex = position430, tokenIndex430
+					goto l431
+				l432:
+					position, tokenIndex = position431, tokenIndex431
 					if buffer[position] != rune('N') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l430:
+			l431:
 				{
-					position432, tokenIndex432 := position, tokenIndex
+					position433, tokenIndex433 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l433
+						goto l434
 					}
 					position++
-					goto l432
-				l433:
-					position, tokenIndex = position432, tokenIndex432
+					goto l433
+				l434:
+					position, tokenIndex = position433, tokenIndex433
 					if buffer[position] != rune('O') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l432:
+			l433:
 				{
-					position434, tokenIndex434 := position, tokenIndex
+					position435, tokenIndex435 := position, tokenIndex
 					if buffer[position] != rune('t') {
-						goto l435
+						goto l436
 					}
 					position++
-					goto l434
-				l435:
-					position, tokenIndex = position434, tokenIndex434
+					goto l435
+				l436:
+					position, tokenIndex = position435, tokenIndex435
 					if buffer[position] != rune('T') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l434:
+			l435:
 				{
-					position436, tokenIndex436 := position, tokenIndex
+					position437, tokenIndex437 := position, tokenIndex
 					if buffer[position] != rune('r') {
-						goto l437
+						goto l438
 					}
 					position++
-					goto l436
-				l437:
-					position, tokenIndex = position436, tokenIndex436
+					goto l437
+				l438:
+					position, tokenIndex = position437, tokenIndex437
 					if buffer[position] != rune('R') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l436:
+			l437:
 				{
-					position438, tokenIndex438 := position, tokenIndex
+					position439, tokenIndex439 := position, tokenIndex
 					if buffer[position] != rune('a') {
-						goto l439
+						goto l440
 					}
 					position++
-					goto l438
-				l439:
-					position, tokenIndex = position438, tokenIndex438
+					goto l439
+				l440:
+					position, tokenIndex = position439, tokenIndex439
 					if buffer[position] != rune('A') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l438:
+			l439:
 				{
-					position440, tokenIndex440 := position, tokenIndex
+					position441, tokenIndex441 := position, tokenIndex
 					if buffer[position] != rune('c') {
-						goto l441
+						goto l442
 					}
 					position++
-					goto l440
-				l441:
-					position, tokenIndex = position440, tokenIndex440
+					goto l441
+				l442:
+					position, tokenIndex = position441, tokenIndex441
 					if buffer[position] != rune('C') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l440:
+			l441:
 				{
-					position442, tokenIndex442 := position, tokenIndex
+					position443, tokenIndex443 := position, tokenIndex
 					if buffer[position] != rune('k') {
-						goto l443
+						goto l444
 					}
 					position++
-					goto l442
-				l443:
-					position, tokenIndex = position442, tokenIndex442
+					goto l443
+				l444:
+					position, tokenIndex = position443, tokenIndex443
 					if buffer[position] != rune('K') {
-						goto l428
+						goto l429
 					}
 					position++
 				}
-			l442:
-				add(ruleInstructionPrefix, position429)
+			l443:
+				add(ruleInstructionPrefix, position430)
 			}
 			return true
-		l428:
-			position, tokenIndex = position428, tokenIndex428
+		l429:
+			position, tokenIndex = position429, tokenIndex429
 			return false
 		},
 		/* 33 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
 		func() bool {
-			position444, tokenIndex444 := position, tokenIndex
+			position445, tokenIndex445 := position, tokenIndex
 			{
-				position445 := position
+				position446 := position
 				{
-					position446, tokenIndex446 := position, tokenIndex
+					position447, tokenIndex447 := position, tokenIndex
 					if !_rules[ruleInstructionPrefix]() {
-						goto l446
+						goto l447
 					}
 					if !_rules[ruleWS]() {
-						goto l446
+						goto l447
 					}
-					goto l447
-				l446:
-					position, tokenIndex = position446, tokenIndex446
+					goto l448
+				l447:
+					position, tokenIndex = position447, tokenIndex447
 				}
-			l447:
+			l448:
 				if !_rules[ruleInstructionName]() {
-					goto l444
+					goto l445
 				}
 				{
-					position448, tokenIndex448 := position, tokenIndex
+					position449, tokenIndex449 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l448
+						goto l449
 					}
 					if !_rules[ruleInstructionArg]() {
-						goto l448
+						goto l449
 					}
-				l450:
+				l451:
 					{
-						position451, tokenIndex451 := position, tokenIndex
+						position452, tokenIndex452 := position, tokenIndex
 						{
-							position452, tokenIndex452 := position, tokenIndex
+							position453, tokenIndex453 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l452
+								goto l453
 							}
-							goto l453
-						l452:
-							position, tokenIndex = position452, tokenIndex452
+							goto l454
+						l453:
+							position, tokenIndex = position453, tokenIndex453
 						}
-					l453:
+					l454:
 						if buffer[position] != rune(',') {
-							goto l451
+							goto l452
 						}
 						position++
 						{
-							position454, tokenIndex454 := position, tokenIndex
+							position455, tokenIndex455 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l454
+								goto l455
 							}
-							goto l455
-						l454:
-							position, tokenIndex = position454, tokenIndex454
+							goto l456
+						l455:
+							position, tokenIndex = position455, tokenIndex455
 						}
-					l455:
+					l456:
 						if !_rules[ruleInstructionArg]() {
-							goto l451
+							goto l452
 						}
-						goto l450
-					l451:
-						position, tokenIndex = position451, tokenIndex451
+						goto l451
+					l452:
+						position, tokenIndex = position452, tokenIndex452
 					}
-					goto l449
-				l448:
-					position, tokenIndex = position448, tokenIndex448
+					goto l450
+				l449:
+					position, tokenIndex = position449, tokenIndex449
 				}
-			l449:
-				add(ruleInstruction, position445)
+			l450:
+				add(ruleInstruction, position446)
 			}
 			return true
-		l444:
-			position, tokenIndex = position444, tokenIndex444
+		l445:
+			position, tokenIndex = position445, tokenIndex445
 			return false
 		},
 		/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
 		func() bool {
-			position456, tokenIndex456 := position, tokenIndex
+			position457, tokenIndex457 := position, tokenIndex
 			{
-				position457 := position
+				position458 := position
 				{
-					position458, tokenIndex458 := position, tokenIndex
+					position459, tokenIndex459 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l459
+						goto l460
 					}
 					position++
-					goto l458
-				l459:
-					position, tokenIndex = position458, tokenIndex458
+					goto l459
+				l460:
+					position, tokenIndex = position459, tokenIndex459
 					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l456
+						goto l457
 					}
 					position++
 				}
-			l458:
-			l460:
+			l459:
+			l461:
 				{
-					position461, tokenIndex461 := position, tokenIndex
+					position462, tokenIndex462 := position, tokenIndex
 					{
-						position462, tokenIndex462 := position, tokenIndex
+						position463, tokenIndex463 := 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 l464
 						}
 						position++
-						goto l462
+						goto l463
 					l464:
-						position, tokenIndex = position462, tokenIndex462
-						if buffer[position] != rune('.') {
+						position, tokenIndex = position463, tokenIndex463
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l465
 						}
 						position++
-						goto l462
+						goto l463
 					l465:
-						position, tokenIndex = position462, tokenIndex462
-						{
-							position466, tokenIndex466 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l467
-							}
-							position++
-							goto l466
-						l467:
-							position, tokenIndex = position466, tokenIndex466
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l461
-							}
-							position++
-						}
-					l466:
-					}
-				l462:
-					goto l460
-				l461:
-					position, tokenIndex = position461, tokenIndex461
-				}
-				{
-					position468, tokenIndex468 := position, tokenIndex
-					{
-						position470, tokenIndex470 := position, tokenIndex
+						position, tokenIndex = position463, tokenIndex463
 						if buffer[position] != rune('.') {
-							goto l471
+							goto l466
 						}
 						position++
-						goto l470
-					l471:
-						position, tokenIndex = position470, tokenIndex470
-						if buffer[position] != rune('+') {
+						goto l463
+					l466:
+						position, tokenIndex = position463, tokenIndex463
+						{
+							position467, tokenIndex467 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l468
+							}
+							position++
+							goto l467
+						l468:
+							position, tokenIndex = position467, tokenIndex467
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l462
+							}
+							position++
+						}
+					l467:
+					}
+				l463:
+					goto l461
+				l462:
+					position, tokenIndex = position462, tokenIndex462
+				}
+				{
+					position469, tokenIndex469 := position, tokenIndex
+					{
+						position471, tokenIndex471 := position, tokenIndex
+						if buffer[position] != rune('.') {
 							goto l472
 						}
 						position++
-						goto l470
+						goto l471
 					l472:
-						position, tokenIndex = position470, tokenIndex470
+						position, tokenIndex = position471, tokenIndex471
+						if buffer[position] != rune('+') {
+							goto l473
+						}
+						position++
+						goto l471
+					l473:
+						position, tokenIndex = position471, tokenIndex471
 						if buffer[position] != rune('-') {
-							goto l468
+							goto l469
 						}
 						position++
 					}
-				l470:
-					goto l469
-				l468:
-					position, tokenIndex = position468, tokenIndex468
+				l471:
+					goto l470
+				l469:
+					position, tokenIndex = position469, tokenIndex469
 				}
-			l469:
-				add(ruleInstructionName, position457)
+			l470:
+				add(ruleInstructionName, position458)
 			}
 			return true
-		l456:
-			position, tokenIndex = position456, tokenIndex456
+		l457:
+			position, tokenIndex = position457, tokenIndex457
 			return false
 		},
 		/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
 		func() bool {
-			position473, tokenIndex473 := position, tokenIndex
+			position474, tokenIndex474 := position, tokenIndex
 			{
-				position474 := position
+				position475 := position
 				{
-					position475, tokenIndex475 := position, tokenIndex
+					position476, tokenIndex476 := position, tokenIndex
 					if !_rules[ruleIndirectionIndicator]() {
-						goto l475
-					}
-					goto l476
-				l475:
-					position, tokenIndex = position475, tokenIndex475
-				}
-			l476:
-				{
-					position477, tokenIndex477 := position, tokenIndex
-					if !_rules[ruleARMConstantTweak]() {
-						goto l478
+						goto l476
 					}
 					goto l477
-				l478:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleRegisterOrConstant]() {
-						goto l479
-					}
-					goto l477
-				l479:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleLocalLabelRef]() {
-						goto l480
-					}
-					goto l477
-				l480:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleTOCRefHigh]() {
-						goto l481
-					}
-					goto l477
-				l481:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleTOCRefLow]() {
-						goto l482
-					}
-					goto l477
-				l482:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleGOTLocation]() {
-						goto l483
-					}
-					goto l477
-				l483:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleGOTAddress]() {
-						goto l484
-					}
-					goto l477
-				l484:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleGOTSymbolOffset]() {
-						goto l485
-					}
-					goto l477
-				l485:
-					position, tokenIndex = position477, tokenIndex477
-					if !_rules[ruleMemoryRef]() {
-						goto l473
-					}
+				l476:
+					position, tokenIndex = position476, tokenIndex476
 				}
 			l477:
-			l486:
 				{
-					position487, tokenIndex487 := position, tokenIndex
-					if !_rules[ruleAVX512Token]() {
-						goto l487
+					position478, tokenIndex478 := position, tokenIndex
+					if !_rules[ruleARMConstantTweak]() {
+						goto l479
 					}
-					goto l486
-				l487:
-					position, tokenIndex = position487, tokenIndex487
+					goto l478
+				l479:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleRegisterOrConstant]() {
+						goto l480
+					}
+					goto l478
+				l480:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleLocalLabelRef]() {
+						goto l481
+					}
+					goto l478
+				l481:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleTOCRefHigh]() {
+						goto l482
+					}
+					goto l478
+				l482:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleTOCRefLow]() {
+						goto l483
+					}
+					goto l478
+				l483:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleGOTLocation]() {
+						goto l484
+					}
+					goto l478
+				l484:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleGOTAddress]() {
+						goto l485
+					}
+					goto l478
+				l485:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleGOTSymbolOffset]() {
+						goto l486
+					}
+					goto l478
+				l486:
+					position, tokenIndex = position478, tokenIndex478
+					if !_rules[ruleMemoryRef]() {
+						goto l474
+					}
 				}
-				add(ruleInstructionArg, position474)
+			l478:
+			l487:
+				{
+					position488, tokenIndex488 := position, tokenIndex
+					if !_rules[ruleAVX512Token]() {
+						goto l488
+					}
+					goto l487
+				l488:
+					position, tokenIndex = position488, tokenIndex488
+				}
+				add(ruleInstructionArg, position475)
 			}
 			return true
-		l473:
-			position, tokenIndex = position473, tokenIndex473
+		l474:
+			position, tokenIndex = position474, tokenIndex474
 			return false
 		},
 		/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
 		func() bool {
-			position488, tokenIndex488 := position, tokenIndex
+			position489, tokenIndex489 := position, tokenIndex
 			{
-				position489 := position
+				position490 := position
 				if buffer[position] != rune('$') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('G') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('B') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('A') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('F') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('F') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('S') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('E') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('A') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('B') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('E') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l488
+					goto l489
 				}
 				position++
 				if buffer[position] != rune('-') {
-					goto l488
+					goto l489
 				}
 				position++
 				if !_rules[ruleLocalSymbol]() {
-					goto l488
+					goto l489
 				}
-				add(ruleGOTLocation, position489)
+				add(ruleGOTLocation, position490)
 			}
 			return true
-		l488:
-			position, tokenIndex = position488, tokenIndex488
+		l489:
+			position, tokenIndex = position489, tokenIndex489
 			return false
 		},
 		/* 37 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
 		func() bool {
-			position490, tokenIndex490 := position, tokenIndex
+			position491, tokenIndex491 := position, tokenIndex
 			{
-				position491 := position
+				position492 := position
 				if buffer[position] != rune('_') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('G') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('B') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('A') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('F') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('F') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('S') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('E') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('A') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('B') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('E') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('_') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('(') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('%') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('r') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('i') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune('p') {
-					goto l490
+					goto l491
 				}
 				position++
 				if buffer[position] != rune(')') {
-					goto l490
+					goto l491
 				}
 				position++
-				add(ruleGOTAddress, position491)
+				add(ruleGOTAddress, position492)
 			}
 			return true
-		l490:
-			position, tokenIndex = position490, tokenIndex490
+		l491:
+			position, tokenIndex = position491, tokenIndex491
 			return false
 		},
 		/* 38 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
 		func() bool {
-			position492, tokenIndex492 := position, tokenIndex
+			position493, tokenIndex493 := position, tokenIndex
 			{
-				position493 := position
+				position494 := position
 				{
-					position494, tokenIndex494 := position, tokenIndex
+					position495, tokenIndex495 := position, tokenIndex
 					if buffer[position] != rune('$') {
-						goto l495
+						goto l496
 					}
 					position++
 					if !_rules[ruleSymbolName]() {
-						goto l495
+						goto l496
 					}
 					if buffer[position] != rune('@') {
-						goto l495
+						goto l496
 					}
 					position++
 					if buffer[position] != rune('G') {
-						goto l495
+						goto l496
 					}
 					position++
 					if buffer[position] != rune('O') {
-						goto l495
+						goto l496
 					}
 					position++
 					if buffer[position] != rune('T') {
-						goto l495
+						goto l496
 					}
 					position++
 					{
-						position496, tokenIndex496 := position, tokenIndex
+						position497, tokenIndex497 := position, tokenIndex
 						if buffer[position] != rune('O') {
-							goto l496
+							goto l497
 						}
 						position++
 						if buffer[position] != rune('F') {
-							goto l496
+							goto l497
 						}
 						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
+							goto l497
 						}
 						position++
 						goto l498
-					l499:
-						position, tokenIndex = position498, tokenIndex498
-						if buffer[position] != rune('G') {
-							goto l492
-						}
-						position++
+					l497:
+						position, tokenIndex = position497, tokenIndex497
 					}
 				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:
+					goto l495
+				l496:
+					position, tokenIndex = position495, tokenIndex495
 					if buffer[position] != rune(':') {
-						goto l492
+						goto l493
+					}
+					position++
+					{
+						position499, tokenIndex499 := position, tokenIndex
+						if buffer[position] != rune('g') {
+							goto l500
+						}
+						position++
+						goto l499
+					l500:
+						position, tokenIndex = position499, tokenIndex499
+						if buffer[position] != rune('G') {
+							goto l493
+						}
+						position++
+					}
+				l499:
+					{
+						position501, tokenIndex501 := position, tokenIndex
+						if buffer[position] != rune('o') {
+							goto l502
+						}
+						position++
+						goto l501
+					l502:
+						position, tokenIndex = position501, tokenIndex501
+						if buffer[position] != rune('O') {
+							goto l493
+						}
+						position++
+					}
+				l501:
+					{
+						position503, tokenIndex503 := position, tokenIndex
+						if buffer[position] != rune('t') {
+							goto l504
+						}
+						position++
+						goto l503
+					l504:
+						position, tokenIndex = position503, tokenIndex503
+						if buffer[position] != rune('T') {
+							goto l493
+						}
+						position++
+					}
+				l503:
+					if buffer[position] != rune(':') {
+						goto l493
 					}
 					position++
 					if !_rules[ruleSymbolName]() {
-						goto l492
+						goto l493
 					}
 				}
-			l494:
-				add(ruleGOTSymbolOffset, position493)
+			l495:
+				add(ruleGOTSymbolOffset, position494)
 			}
 			return true
-		l492:
-			position, tokenIndex = position492, tokenIndex492
+		l493:
+			position, tokenIndex = position493, tokenIndex493
 			return false
 		},
 		/* 39 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
 		func() bool {
-			position504, tokenIndex504 := position, tokenIndex
+			position505, tokenIndex505 := position, tokenIndex
 			{
-				position505 := position
+				position506 := position
 				{
-					position506, tokenIndex506 := position, tokenIndex
+					position507, tokenIndex507 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l506
+						goto l507
 					}
-					goto l507
-				l506:
-					position, tokenIndex = position506, tokenIndex506
+					goto l508
+				l507:
+					position, tokenIndex = position507, tokenIndex507
 				}
-			l507:
+			l508:
 				if buffer[position] != rune('{') {
-					goto l504
+					goto l505
 				}
 				position++
 				{
-					position508, tokenIndex508 := position, tokenIndex
+					position509, tokenIndex509 := position, tokenIndex
 					if buffer[position] != rune('%') {
-						goto l508
+						goto l509
 					}
 					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
+				l509:
+					position, tokenIndex = position509, tokenIndex509
 				}
-				if buffer[position] != rune('}') {
-					goto l504
-				}
-				position++
-				add(ruleAVX512Token, position505)
-			}
-			return true
-		l504:
-			position, tokenIndex = position504, tokenIndex504
-			return false
-		},
-		/* 40 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++
+			l510:
+			l511:
 				{
-					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++
+					position512, tokenIndex512 := position, tokenIndex
 					{
-						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
+						position513, tokenIndex513 := position, tokenIndex
 						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++
+						goto l513
+					l514:
+						position, tokenIndex = position513, tokenIndex513
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l512
 						}
-					l524:
-						goto l518
-					l519:
-						position, tokenIndex = position519, tokenIndex519
+						position++
 					}
+				l513:
+					goto l511
+				l512:
+					position, tokenIndex = position512, tokenIndex512
 				}
-			l516:
-				if buffer[position] != rune('@') {
-					goto l514
+				if buffer[position] != rune('}') {
+					goto l505
+				}
+				position++
+				add(ruleAVX512Token, position506)
+			}
+			return true
+		l505:
+			position, tokenIndex = position505, tokenIndex505
+			return false
+		},
+		/* 40 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
+		func() bool {
+			position515, tokenIndex515 := position, tokenIndex
+			{
+				position516 := position
+				if buffer[position] != rune('.') {
+					goto l515
+				}
+				position++
+				if buffer[position] != rune('T') {
+					goto l515
+				}
+				position++
+				if buffer[position] != rune('O') {
+					goto l515
+				}
+				position++
+				if buffer[position] != rune('C') {
+					goto l515
+				}
+				position++
+				if buffer[position] != rune('.') {
+					goto l515
+				}
+				position++
+				if buffer[position] != rune('-') {
+					goto l515
 				}
 				position++
 				{
-					position528, tokenIndex528 := position, tokenIndex
-					if buffer[position] != rune('h') {
-						goto l529
+					position517, tokenIndex517 := position, tokenIndex
+					if buffer[position] != rune('0') {
+						goto l518
 					}
 					position++
-					goto l528
-				l529:
-					position, tokenIndex = position528, tokenIndex528
-					if buffer[position] != rune('H') {
-						goto l514
+					if buffer[position] != rune('b') {
+						goto l518
 					}
 					position++
+					goto l517
+				l518:
+					position, tokenIndex = position517, tokenIndex517
+					if buffer[position] != rune('.') {
+						goto l515
+					}
+					position++
+					if buffer[position] != rune('L') {
+						goto l515
+					}
+					position++
+					{
+						position521, tokenIndex521 := position, tokenIndex
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l522
+						}
+						position++
+						goto l521
+					l522:
+						position, tokenIndex = position521, tokenIndex521
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l523
+						}
+						position++
+						goto l521
+					l523:
+						position, tokenIndex = position521, tokenIndex521
+						if buffer[position] != rune('_') {
+							goto l524
+						}
+						position++
+						goto l521
+					l524:
+						position, tokenIndex = position521, tokenIndex521
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l515
+						}
+						position++
+					}
+				l521:
+				l519:
+					{
+						position520, tokenIndex520 := position, tokenIndex
+						{
+							position525, tokenIndex525 := position, tokenIndex
+							if c := buffer[position]; c < rune('a') || c > rune('z') {
+								goto l526
+							}
+							position++
+							goto l525
+						l526:
+							position, tokenIndex = position525, tokenIndex525
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l527
+							}
+							position++
+							goto l525
+						l527:
+							position, tokenIndex = position525, tokenIndex525
+							if buffer[position] != rune('_') {
+								goto l528
+							}
+							position++
+							goto l525
+						l528:
+							position, tokenIndex = position525, tokenIndex525
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l520
+							}
+							position++
+						}
+					l525:
+						goto l519
+					l520:
+						position, tokenIndex = position520, tokenIndex520
+					}
 				}
-			l528:
+			l517:
+				if buffer[position] != rune('@') {
+					goto l515
+				}
+				position++
 				{
-					position530, tokenIndex530 := position, tokenIndex
-					if buffer[position] != rune('a') {
-						goto l531
+					position529, tokenIndex529 := position, tokenIndex
+					if buffer[position] != rune('h') {
+						goto l530
 					}
 					position++
-					goto l530
-				l531:
-					position, tokenIndex = position530, tokenIndex530
-					if buffer[position] != rune('A') {
-						goto l514
+					goto l529
+				l530:
+					position, tokenIndex = position529, tokenIndex529
+					if buffer[position] != rune('H') {
+						goto l515
 					}
 					position++
 				}
-			l530:
-				add(ruleTOCRefHigh, position515)
+			l529:
+				{
+					position531, tokenIndex531 := position, tokenIndex
+					if buffer[position] != rune('a') {
+						goto l532
+					}
+					position++
+					goto l531
+				l532:
+					position, tokenIndex = position531, tokenIndex531
+					if buffer[position] != rune('A') {
+						goto l515
+					}
+					position++
+				}
+			l531:
+				add(ruleTOCRefHigh, position516)
 			}
 			return true
-		l514:
-			position, tokenIndex = position514, tokenIndex514
+		l515:
+			position, tokenIndex = position515, tokenIndex515
 			return false
 		},
 		/* 41 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
 		func() bool {
-			position532, tokenIndex532 := position, tokenIndex
+			position533, tokenIndex533 := position, tokenIndex
 			{
-				position533 := position
+				position534 := position
 				if buffer[position] != rune('.') {
-					goto l532
+					goto l533
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l532
+					goto l533
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l532
+					goto l533
 				}
 				position++
 				if buffer[position] != rune('C') {
-					goto l532
+					goto l533
 				}
 				position++
 				if buffer[position] != rune('.') {
-					goto l532
+					goto l533
 				}
 				position++
 				if buffer[position] != rune('-') {
-					goto l532
+					goto l533
 				}
 				position++
 				{
-					position534, tokenIndex534 := position, tokenIndex
+					position535, tokenIndex535 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l535
+						goto l536
 					}
 					position++
 					if buffer[position] != rune('b') {
-						goto l535
+						goto l536
 					}
 					position++
-					goto l534
-				l535:
-					position, tokenIndex = position534, tokenIndex534
+					goto l535
+				l536:
+					position, tokenIndex = position535, tokenIndex535
 					if buffer[position] != rune('.') {
-						goto l532
+						goto l533
 					}
 					position++
 					if buffer[position] != rune('L') {
-						goto l532
+						goto l533
 					}
 					position++
 					{
-						position538, tokenIndex538 := position, tokenIndex
+						position539, tokenIndex539 := 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
+						goto l539
 					l540:
-						position, tokenIndex = position538, tokenIndex538
-						if buffer[position] != rune('_') {
+						position, tokenIndex = position539, tokenIndex539
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l541
 						}
 						position++
-						goto l538
+						goto l539
 					l541:
-						position, tokenIndex = position538, tokenIndex538
+						position, tokenIndex = position539, tokenIndex539
+						if buffer[position] != rune('_') {
+							goto l542
+						}
+						position++
+						goto l539
+					l542:
+						position, tokenIndex = position539, tokenIndex539
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l532
+							goto l533
 						}
 						position++
 					}
-				l538:
-				l536:
+				l539:
+				l537:
 					{
-						position537, tokenIndex537 := position, tokenIndex
+						position538, tokenIndex538 := position, tokenIndex
 						{
-							position542, tokenIndex542 := position, tokenIndex
+							position543, tokenIndex543 := 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
+							goto l543
 						l544:
-							position, tokenIndex = position542, tokenIndex542
-							if buffer[position] != rune('_') {
+							position, tokenIndex = position543, tokenIndex543
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
 								goto l545
 							}
 							position++
-							goto l542
+							goto l543
 						l545:
-							position, tokenIndex = position542, tokenIndex542
+							position, tokenIndex = position543, tokenIndex543
+							if buffer[position] != rune('_') {
+								goto l546
+							}
+							position++
+							goto l543
+						l546:
+							position, tokenIndex = position543, tokenIndex543
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l537
+								goto l538
 							}
 							position++
 						}
-					l542:
-						goto l536
-					l537:
-						position, tokenIndex = position537, tokenIndex537
+					l543:
+						goto l537
+					l538:
+						position, tokenIndex = position538, tokenIndex538
 					}
 				}
-			l534:
+			l535:
 				if buffer[position] != rune('@') {
-					goto l532
+					goto l533
 				}
 				position++
 				{
-					position546, tokenIndex546 := position, tokenIndex
+					position547, tokenIndex547 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l547
+						goto l548
 					}
 					position++
-					goto l546
-				l547:
-					position, tokenIndex = position546, tokenIndex546
+					goto l547
+				l548:
+					position, tokenIndex = position547, tokenIndex547
 					if buffer[position] != rune('L') {
-						goto l532
+						goto l533
 					}
 					position++
 				}
-			l546:
-				add(ruleTOCRefLow, position533)
+			l547:
+				add(ruleTOCRefLow, position534)
 			}
 			return true
-		l532:
-			position, tokenIndex = position532, tokenIndex532
+		l533:
+			position, tokenIndex = position533, tokenIndex533
 			return false
 		},
 		/* 42 IndirectionIndicator <- <'*'> */
 		func() bool {
-			position548, tokenIndex548 := position, tokenIndex
+			position549, tokenIndex549 := position, tokenIndex
 			{
-				position549 := position
+				position550 := position
 				if buffer[position] != rune('*') {
-					goto l548
+					goto l549
 				}
 				position++
-				add(ruleIndirectionIndicator, position549)
+				add(ruleIndirectionIndicator, position550)
 			}
 			return true
-		l548:
-			position, tokenIndex = position548, tokenIndex548
+		l549:
+			position, tokenIndex = position549, tokenIndex549
 			return false
 		},
 		/* 43 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
 		func() bool {
-			position550, tokenIndex550 := position, tokenIndex
+			position551, tokenIndex551 := position, tokenIndex
 			{
-				position551 := position
+				position552 := position
 				{
-					position552, tokenIndex552 := position, tokenIndex
+					position553, tokenIndex553 := position, tokenIndex
 					if buffer[position] != rune('%') {
-						goto l553
+						goto l554
 					}
 					position++
 					{
-						position554, tokenIndex554 := position, tokenIndex
+						position555, tokenIndex555 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l555
+							goto l556
 						}
 						position++
-						goto l554
-					l555:
-						position, tokenIndex = position554, tokenIndex554
+						goto l555
+					l556:
+						position, tokenIndex = position555, tokenIndex555
 						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l553
+							goto l554
 						}
 						position++
 					}
-				l554:
-				l556:
+				l555:
+				l557:
 					{
-						position557, tokenIndex557 := position, tokenIndex
+						position558, tokenIndex558 := position, tokenIndex
 						{
-							position558, tokenIndex558 := position, tokenIndex
+							position559, tokenIndex559 := 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
+							goto l559
 						l560:
-							position, tokenIndex = position558, tokenIndex558
+							position, tokenIndex = position559, tokenIndex559
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l561
+							}
+							position++
+							goto l559
+						l561:
+							position, tokenIndex = position559, tokenIndex559
 							{
-								position561, tokenIndex561 := position, tokenIndex
+								position562, tokenIndex562 := position, tokenIndex
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l562
+									goto l563
 								}
 								position++
-								goto l561
-							l562:
-								position, tokenIndex = position561, tokenIndex561
+								goto l562
+							l563:
+								position, tokenIndex = position562, tokenIndex562
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l557
+									goto l558
 								}
 								position++
 							}
-						l561:
+						l562:
 						}
+					l559:
+						goto l557
 					l558:
-						goto l556
-					l557:
-						position, tokenIndex = position557, tokenIndex557
+						position, tokenIndex = position558, tokenIndex558
 					}
-					goto l552
-				l553:
-					position, tokenIndex = position552, tokenIndex552
+					goto l553
+				l554:
+					position, tokenIndex = position553, tokenIndex553
 					{
-						position564, tokenIndex564 := position, tokenIndex
+						position565, tokenIndex565 := position, tokenIndex
 						if buffer[position] != rune('$') {
-							goto l564
+							goto l565
 						}
 						position++
-						goto l565
-					l564:
-						position, tokenIndex = position564, tokenIndex564
-					}
-				l565:
-					{
-						position566, tokenIndex566 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l567
-						}
-						if !_rules[ruleOffset]() {
-							goto l567
-						}
 						goto l566
-					l567:
-						position, tokenIndex = position566, tokenIndex566
-						if !_rules[ruleOffset]() {
-							goto l563
-						}
+					l565:
+						position, tokenIndex = position565, tokenIndex565
 					}
 				l566:
-					goto l552
-				l563:
-					position, tokenIndex = position552, tokenIndex552
+					{
+						position567, tokenIndex567 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l568
+						}
+						if !_rules[ruleOffset]() {
+							goto l568
+						}
+						goto l567
+					l568:
+						position, tokenIndex = position567, tokenIndex567
+						if !_rules[ruleOffset]() {
+							goto l564
+						}
+					}
+				l567:
+					goto l553
+				l564:
+					position, tokenIndex = position553, tokenIndex553
 					if buffer[position] != rune('#') {
-						goto l568
+						goto l569
 					}
 					position++
 					if !_rules[ruleOffset]() {
-						goto l568
+						goto l569
 					}
 					{
-						position569, tokenIndex569 := position, tokenIndex
+						position570, tokenIndex570 := position, tokenIndex
 						if buffer[position] != rune('*') {
-							goto l569
+							goto l570
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l569
+							goto l570
 						}
 						position++
-					l571:
-						{
-							position572, tokenIndex572 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l572
-							}
-							position++
-							goto l571
-						l572:
-							position, tokenIndex = position572, tokenIndex572
-						}
+					l572:
 						{
 							position573, tokenIndex573 := position, tokenIndex
-							if buffer[position] != rune('-') {
-								goto l573
-							}
-							position++
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
 								goto l573
 							}
 							position++
-						l575:
-							{
-								position576, tokenIndex576 := position, tokenIndex
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l576
-								}
-								position++
-								goto l575
-							l576:
-								position, tokenIndex = position576, tokenIndex576
-							}
-							goto l574
+							goto l572
 						l573:
 							position, tokenIndex = position573, tokenIndex573
 						}
-					l574:
-						goto l570
-					l569:
-						position, tokenIndex = position569, tokenIndex569
+						{
+							position574, tokenIndex574 := position, tokenIndex
+							if buffer[position] != rune('-') {
+								goto l574
+							}
+							position++
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l574
+							}
+							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
+							}
+							goto l575
+						l574:
+							position, tokenIndex = position574, tokenIndex574
+						}
+					l575:
+						goto l571
+					l570:
+						position, tokenIndex = position570, tokenIndex570
 					}
-				l570:
-					goto l552
-				l568:
-					position, tokenIndex = position552, tokenIndex552
+				l571:
+					goto l553
+				l569:
+					position, tokenIndex = position553, tokenIndex553
 					if buffer[position] != rune('#') {
-						goto l577
+						goto l578
 					}
 					position++
 					{
-						position578, tokenIndex578 := position, tokenIndex
+						position579, tokenIndex579 := position, tokenIndex
 						if buffer[position] != rune('~') {
-							goto l578
+							goto l579
 						}
 						position++
-						goto l579
-					l578:
-						position, tokenIndex = position578, tokenIndex578
+						goto l580
+					l579:
+						position, tokenIndex = position579, tokenIndex579
 					}
-				l579:
+				l580:
 					if buffer[position] != rune('(') {
-						goto l577
+						goto l578
 					}
 					position++
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l577
+						goto l578
 					}
 					position++
 					{
-						position580, tokenIndex580 := position, tokenIndex
+						position581, tokenIndex581 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l580
+							goto l581
 						}
-						goto l581
-					l580:
-						position, tokenIndex = position580, tokenIndex580
+						goto l582
+					l581:
+						position, tokenIndex = position581, tokenIndex581
 					}
-				l581:
+				l582:
 					if buffer[position] != rune('<') {
-						goto l577
+						goto l578
 					}
 					position++
 					if buffer[position] != rune('<') {
-						goto l577
+						goto l578
 					}
 					position++
 					{
-						position582, tokenIndex582 := position, tokenIndex
+						position583, tokenIndex583 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l582
+							goto l583
 						}
-						goto l583
-					l582:
-						position, tokenIndex = position582, tokenIndex582
+						goto l584
+					l583:
+						position, tokenIndex = position583, tokenIndex583
 					}
-				l583:
+				l584:
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l577
+						goto l578
 					}
 					position++
 					if buffer[position] != rune(')') {
-						goto l577
+						goto l578
 					}
 					position++
-					goto l552
-				l577:
-					position, tokenIndex = position552, tokenIndex552
+					goto l553
+				l578:
+					position, tokenIndex = position553, tokenIndex553
 					if !_rules[ruleARMRegister]() {
-						goto l550
+						goto l551
 					}
 				}
-			l552:
+			l553:
 				{
-					position584, tokenIndex584 := position, tokenIndex
+					position585, tokenIndex585 := position, tokenIndex
 					{
-						position585, tokenIndex585 := position, tokenIndex
+						position586, tokenIndex586 := position, tokenIndex
 						if buffer[position] != rune('f') {
-							goto l586
-						}
-						position++
-						goto l585
-					l586:
-						position, tokenIndex = position585, tokenIndex585
-						if buffer[position] != rune('b') {
 							goto l587
 						}
 						position++
-						goto l585
+						goto l586
 					l587:
-						position, tokenIndex = position585, tokenIndex585
-						if buffer[position] != rune(':') {
+						position, tokenIndex = position586, tokenIndex586
+						if buffer[position] != rune('b') {
 							goto l588
 						}
 						position++
-						goto l585
+						goto l586
 					l588:
-						position, tokenIndex = position585, tokenIndex585
-						if buffer[position] != rune('(') {
+						position, tokenIndex = position586, tokenIndex586
+						if buffer[position] != rune(':') {
 							goto l589
 						}
 						position++
-						goto l585
+						goto l586
 					l589:
-						position, tokenIndex = position585, tokenIndex585
-						if buffer[position] != rune('+') {
+						position, tokenIndex = position586, tokenIndex586
+						if buffer[position] != rune('(') {
 							goto l590
 						}
 						position++
-						goto l585
+						goto l586
 					l590:
-						position, tokenIndex = position585, tokenIndex585
+						position, tokenIndex = position586, tokenIndex586
+						if buffer[position] != rune('+') {
+							goto l591
+						}
+						position++
+						goto l586
+					l591:
+						position, tokenIndex = position586, tokenIndex586
 						if buffer[position] != rune('-') {
-							goto l584
+							goto l585
 						}
 						position++
 					}
+				l586:
+					goto l551
 				l585:
-					goto l550
-				l584:
-					position, tokenIndex = position584, tokenIndex584
+					position, tokenIndex = position585, tokenIndex585
 				}
-				add(ruleRegisterOrConstant, position551)
+				add(ruleRegisterOrConstant, position552)
 			}
 			return true
-		l550:
-			position, tokenIndex = position550, tokenIndex550
+		l551:
+			position, tokenIndex = position551, tokenIndex551
 			return false
 		},
 		/* 44 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
 		func() bool {
-			position591, tokenIndex591 := position, tokenIndex
+			position592, tokenIndex592 := position, tokenIndex
 			{
-				position592 := position
+				position593 := position
 				{
-					position593, tokenIndex593 := position, tokenIndex
+					position594, tokenIndex594 := position, tokenIndex
 					{
-						position595, tokenIndex595 := position, tokenIndex
+						position596, tokenIndex596 := position, tokenIndex
 						{
-							position597, tokenIndex597 := position, tokenIndex
+							position598, tokenIndex598 := position, tokenIndex
 							if buffer[position] != rune('u') {
-								goto l598
+								goto l599
 							}
 							position++
-							goto l597
-						l598:
-							position, tokenIndex = position597, tokenIndex597
+							goto l598
+						l599:
+							position, tokenIndex = position598, tokenIndex598
 							if buffer[position] != rune('s') {
-								goto l596
+								goto l597
 							}
 							position++
 						}
-					l597:
+					l598:
 						{
-							position599, tokenIndex599 := position, tokenIndex
+							position600, tokenIndex600 := position, tokenIndex
 							if buffer[position] != rune('x') {
-								goto l600
+								goto l601
 							}
 							position++
-							goto l599
-						l600:
-							position, tokenIndex = position599, tokenIndex599
+							goto l600
+						l601:
+							position, tokenIndex = position600, tokenIndex600
 							if buffer[position] != rune('X') {
-								goto l596
+								goto l597
 							}
 							position++
 						}
-					l599:
+					l600:
 						{
-							position601, tokenIndex601 := position, tokenIndex
+							position602, tokenIndex602 := position, tokenIndex
 							if buffer[position] != rune('t') {
-								goto l602
+								goto l603
 							}
 							position++
-							goto l601
-						l602:
-							position, tokenIndex = position601, tokenIndex601
+							goto l602
+						l603:
+							position, tokenIndex = position602, tokenIndex602
 							if buffer[position] != rune('T') {
-								goto l596
+								goto l597
 							}
 							position++
 						}
-					l601:
+					l602:
 						{
-							position603, tokenIndex603 := position, tokenIndex
+							position604, tokenIndex604 := position, tokenIndex
 							if buffer[position] != rune('x') {
-								goto l604
-							}
-							position++
-							goto l603
-						l604:
-							position, tokenIndex = position603, tokenIndex603
-							if buffer[position] != rune('w') {
 								goto l605
 							}
 							position++
-							goto l603
+							goto l604
 						l605:
-							position, tokenIndex = position603, tokenIndex603
-							if buffer[position] != rune('h') {
+							position, tokenIndex = position604, tokenIndex604
+							if buffer[position] != rune('w') {
 								goto l606
 							}
 							position++
-							goto l603
+							goto l604
 						l606:
-							position, tokenIndex = position603, tokenIndex603
+							position, tokenIndex = position604, tokenIndex604
+							if buffer[position] != rune('h') {
+								goto l607
+							}
+							position++
+							goto l604
+						l607:
+							position, tokenIndex = position604, tokenIndex604
 							if buffer[position] != rune('b') {
-								goto l596
+								goto l597
 							}
 							position++
 						}
-					l603:
-						goto l595
-					l596:
-						position, tokenIndex = position595, tokenIndex595
+					l604:
+						goto l596
+					l597:
+						position, tokenIndex = position596, tokenIndex596
 						{
-							position608, tokenIndex608 := position, tokenIndex
+							position609, tokenIndex609 := position, tokenIndex
 							if buffer[position] != rune('l') {
-								goto l609
+								goto l610
 							}
 							position++
-							goto l608
-						l609:
-							position, tokenIndex = position608, tokenIndex608
+							goto l609
+						l610:
+							position, tokenIndex = position609, tokenIndex609
 							if buffer[position] != rune('L') {
-								goto l607
+								goto l608
 							}
 							position++
 						}
+					l609:
+						{
+							position611, tokenIndex611 := position, tokenIndex
+							if buffer[position] != rune('s') {
+								goto l612
+							}
+							position++
+							goto l611
+						l612:
+							position, tokenIndex = position611, tokenIndex611
+							if buffer[position] != rune('S') {
+								goto l608
+							}
+							position++
+						}
+					l611:
+						{
+							position613, tokenIndex613 := position, tokenIndex
+							if buffer[position] != rune('l') {
+								goto l614
+							}
+							position++
+							goto l613
+						l614:
+							position, tokenIndex = position613, tokenIndex613
+							if buffer[position] != rune('L') {
+								goto l608
+							}
+							position++
+						}
+					l613:
+						goto l596
 					l608:
+						position, tokenIndex = position596, tokenIndex596
 						{
-							position610, tokenIndex610 := position, tokenIndex
+							position616, tokenIndex616 := position, tokenIndex
+							if buffer[position] != rune('l') {
+								goto l617
+							}
+							position++
+							goto l616
+						l617:
+							position, tokenIndex = position616, tokenIndex616
+							if buffer[position] != rune('L') {
+								goto l615
+							}
+							position++
+						}
+					l616:
+						{
+							position618, tokenIndex618 := position, tokenIndex
 							if buffer[position] != rune('s') {
-								goto l611
+								goto l619
 							}
 							position++
-							goto l610
-						l611:
-							position, tokenIndex = position610, tokenIndex610
+							goto l618
+						l619:
+							position, tokenIndex = position618, tokenIndex618
 							if buffer[position] != rune('S') {
-								goto l607
+								goto l615
 							}
 							position++
 						}
-					l610:
+					l618:
 						{
-							position612, tokenIndex612 := position, tokenIndex
-							if buffer[position] != rune('l') {
-								goto l613
+							position620, tokenIndex620 := position, tokenIndex
+							if buffer[position] != rune('r') {
+								goto l621
 							}
 							position++
-							goto l612
-						l613:
-							position, tokenIndex = position612, tokenIndex612
-							if buffer[position] != rune('L') {
-								goto l607
+							goto l620
+						l621:
+							position, tokenIndex = position620, tokenIndex620
+							if buffer[position] != rune('R') {
+								goto l615
 							}
 							position++
 						}
-					l612:
-						goto l595
-					l607:
-						position, tokenIndex = position595, tokenIndex595
-						{
-							position615, tokenIndex615 := position, tokenIndex
-							if buffer[position] != rune('l') {
-								goto l616
-							}
-							position++
-							goto l615
-						l616:
-							position, tokenIndex = position615, tokenIndex615
-							if buffer[position] != rune('L') {
-								goto l614
-							}
-							position++
-						}
+					l620:
+						goto l596
 					l615:
+						position, tokenIndex = position596, tokenIndex596
 						{
-							position617, tokenIndex617 := position, tokenIndex
-							if buffer[position] != rune('s') {
-								goto l618
-							}
-							position++
-							goto l617
-						l618:
-							position, tokenIndex = position617, tokenIndex617
-							if buffer[position] != rune('S') {
-								goto l614
-							}
-							position++
-						}
-					l617:
-						{
-							position619, tokenIndex619 := position, tokenIndex
+							position623, tokenIndex623 := position, tokenIndex
 							if buffer[position] != rune('r') {
-								goto l620
+								goto l624
 							}
 							position++
-							goto l619
-						l620:
-							position, tokenIndex = position619, tokenIndex619
+							goto l623
+						l624:
+							position, tokenIndex = position623, tokenIndex623
 							if buffer[position] != rune('R') {
-								goto l614
+								goto l622
 							}
 							position++
 						}
-					l619:
-						goto l595
-					l614:
-						position, tokenIndex = position595, tokenIndex595
+					l623:
 						{
-							position622, tokenIndex622 := position, tokenIndex
-							if buffer[position] != rune('r') {
-								goto l623
-							}
-							position++
-							goto l622
-						l623:
-							position, tokenIndex = position622, tokenIndex622
-							if buffer[position] != rune('R') {
-								goto l621
-							}
-							position++
-						}
-					l622:
-						{
-							position624, tokenIndex624 := position, tokenIndex
+							position625, tokenIndex625 := position, tokenIndex
 							if buffer[position] != rune('o') {
-								goto l625
+								goto l626
 							}
 							position++
-							goto l624
-						l625:
-							position, tokenIndex = position624, tokenIndex624
+							goto l625
+						l626:
+							position, tokenIndex = position625, tokenIndex625
 							if buffer[position] != rune('O') {
-								goto l621
+								goto l622
 							}
 							position++
 						}
-					l624:
+					l625:
 						{
-							position626, tokenIndex626 := position, tokenIndex
+							position627, tokenIndex627 := position, tokenIndex
 							if buffer[position] != rune('r') {
-								goto l627
+								goto l628
 							}
 							position++
-							goto l626
-						l627:
-							position, tokenIndex = position626, tokenIndex626
+							goto l627
+						l628:
+							position, tokenIndex = position627, tokenIndex627
 							if buffer[position] != rune('R') {
-								goto l621
+								goto l622
 							}
 							position++
 						}
-					l626:
-						goto l595
-					l621:
-						position, tokenIndex = position595, tokenIndex595
+					l627:
+						goto l596
+					l622:
+						position, tokenIndex = position596, tokenIndex596
 						{
-							position628, tokenIndex628 := position, tokenIndex
+							position629, tokenIndex629 := position, tokenIndex
 							if buffer[position] != rune('a') {
-								goto l629
+								goto l630
 							}
 							position++
-							goto l628
-						l629:
-							position, tokenIndex = position628, tokenIndex628
+							goto l629
+						l630:
+							position, tokenIndex = position629, tokenIndex629
 							if buffer[position] != rune('A') {
-								goto l594
+								goto l595
 							}
 							position++
 						}
-					l628:
+					l629:
 						{
-							position630, tokenIndex630 := position, tokenIndex
+							position631, tokenIndex631 := position, tokenIndex
 							if buffer[position] != rune('s') {
-								goto l631
+								goto l632
 							}
 							position++
-							goto l630
-						l631:
-							position, tokenIndex = position630, tokenIndex630
+							goto l631
+						l632:
+							position, tokenIndex = position631, tokenIndex631
 							if buffer[position] != rune('S') {
-								goto l594
+								goto l595
 							}
 							position++
 						}
-					l630:
+					l631:
 						{
-							position632, tokenIndex632 := position, tokenIndex
+							position633, tokenIndex633 := position, tokenIndex
 							if buffer[position] != rune('r') {
-								goto l633
+								goto l634
 							}
 							position++
-							goto l632
-						l633:
-							position, tokenIndex = position632, tokenIndex632
+							goto l633
+						l634:
+							position, tokenIndex = position633, tokenIndex633
 							if buffer[position] != rune('R') {
-								goto l594
+								goto l595
 							}
 							position++
 						}
-					l632:
+					l633:
 					}
-				l595:
+				l596:
 					{
-						position634, tokenIndex634 := position, tokenIndex
+						position635, tokenIndex635 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l634
+							goto l635
 						}
 						if buffer[position] != rune('#') {
-							goto l634
+							goto l635
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l634
+							goto l635
 						}
-						goto l635
-					l634:
-						position, tokenIndex = position634, tokenIndex634
-					}
-				l635:
-					goto l593
-				l594:
-					position, tokenIndex = position593, tokenIndex593
-					{
-						position637, tokenIndex637 := position, tokenIndex
-						if buffer[position] != rune('m') {
-							goto l638
-						}
-						position++
-						goto l637
-					l638:
-						position, tokenIndex = position637, tokenIndex637
-						if buffer[position] != rune('M') {
-							goto l636
-						}
-						position++
-					}
-				l637:
-					{
-						position639, tokenIndex639 := position, tokenIndex
-						if buffer[position] != rune('u') {
-							goto l640
-						}
-						position++
-						goto l639
-					l640:
-						position, tokenIndex = position639, tokenIndex639
-						if buffer[position] != rune('U') {
-							goto l636
-						}
-						position++
-					}
-				l639:
-					{
-						position641, tokenIndex641 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l642
-						}
-						position++
-						goto l641
-					l642:
-						position, tokenIndex = position641, tokenIndex641
-						if buffer[position] != rune('L') {
-							goto l636
-						}
-						position++
-					}
-				l641:
-					if buffer[position] != rune(' ') {
 						goto l636
+					l635:
+						position, tokenIndex = position635, tokenIndex635
+					}
+				l636:
+					goto l594
+				l595:
+					position, tokenIndex = position594, tokenIndex594
+					{
+						position638, tokenIndex638 := position, tokenIndex
+						if buffer[position] != rune('m') {
+							goto l639
+						}
+						position++
+						goto l638
+					l639:
+						position, tokenIndex = position638, tokenIndex638
+						if buffer[position] != rune('M') {
+							goto l637
+						}
+						position++
+					}
+				l638:
+					{
+						position640, tokenIndex640 := position, tokenIndex
+						if buffer[position] != rune('u') {
+							goto l641
+						}
+						position++
+						goto l640
+					l641:
+						position, tokenIndex = position640, tokenIndex640
+						if buffer[position] != rune('U') {
+							goto l637
+						}
+						position++
+					}
+				l640:
+					{
+						position642, tokenIndex642 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l643
+						}
+						position++
+						goto l642
+					l643:
+						position, tokenIndex = position642, tokenIndex642
+						if buffer[position] != rune('L') {
+							goto l637
+						}
+						position++
+					}
+				l642:
+					if buffer[position] != rune(' ') {
+						goto l637
 					}
 					position++
 					{
-						position643, tokenIndex643 := position, tokenIndex
+						position644, tokenIndex644 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l644
+							goto l645
 						}
 						position++
-						goto l643
-					l644:
-						position, tokenIndex = position643, tokenIndex643
+						goto l644
+					l645:
+						position, tokenIndex = position644, tokenIndex644
 						if buffer[position] != rune('V') {
-							goto l636
+							goto l637
 						}
 						position++
 					}
-				l643:
+				l644:
 					{
-						position645, tokenIndex645 := position, tokenIndex
+						position646, tokenIndex646 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l646
+							goto l647
 						}
 						position++
-						goto l645
-					l646:
-						position, tokenIndex = position645, tokenIndex645
+						goto l646
+					l647:
+						position, tokenIndex = position646, tokenIndex646
 						if buffer[position] != rune('L') {
-							goto l636
+							goto l637
 						}
 						position++
 					}
-				l645:
-					goto l593
-				l636:
-					position, tokenIndex = position593, tokenIndex593
+				l646:
+					goto l594
+				l637:
+					position, tokenIndex = position594, tokenIndex594
 					{
-						position647, tokenIndex647 := position, tokenIndex
+						position648, tokenIndex648 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l648
+							goto l649
 						}
 						position++
-						goto l647
-					l648:
-						position, tokenIndex = position647, tokenIndex647
+						goto l648
+					l649:
+						position, tokenIndex = position648, tokenIndex648
 						if buffer[position] != rune('M') {
-							goto l591
+							goto l592
 						}
 						position++
 					}
-				l647:
+				l648:
 					{
-						position649, tokenIndex649 := position, tokenIndex
+						position650, tokenIndex650 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l650
+							goto l651
 						}
 						position++
-						goto l649
-					l650:
-						position, tokenIndex = position649, tokenIndex649
+						goto l650
+					l651:
+						position, tokenIndex = position650, tokenIndex650
 						if buffer[position] != rune('U') {
-							goto l591
+							goto l592
 						}
 						position++
 					}
-				l649:
+				l650:
 					{
-						position651, tokenIndex651 := position, tokenIndex
+						position652, tokenIndex652 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l652
+							goto l653
 						}
 						position++
-						goto l651
-					l652:
-						position, tokenIndex = position651, tokenIndex651
+						goto l652
+					l653:
+						position, tokenIndex = position652, tokenIndex652
 						if buffer[position] != rune('L') {
-							goto l591
+							goto l592
 						}
 						position++
 					}
-				l651:
+				l652:
 					if buffer[position] != rune(' ') {
-						goto l591
+						goto l592
 					}
 					position++
 					if buffer[position] != rune('#') {
-						goto l591
+						goto l592
 					}
 					position++
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l591
+						goto l592
 					}
 					position++
 				}
-			l593:
-				add(ruleARMConstantTweak, position592)
+			l594:
+				add(ruleARMConstantTweak, position593)
 			}
 			return true
-		l591:
-			position, tokenIndex = position591, tokenIndex591
+		l592:
+			position, tokenIndex = position592, tokenIndex592
 			return false
 		},
 		/* 45 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
 		func() bool {
-			position653, tokenIndex653 := position, tokenIndex
+			position654, tokenIndex654 := position, tokenIndex
 			{
-				position654 := position
+				position655 := position
 				{
-					position655, tokenIndex655 := position, tokenIndex
+					position656, tokenIndex656 := position, tokenIndex
 					{
-						position657, tokenIndex657 := position, tokenIndex
+						position658, tokenIndex658 := position, tokenIndex
 						if buffer[position] != rune('s') {
-							goto l658
+							goto l659
 						}
 						position++
-						goto l657
-					l658:
-						position, tokenIndex = position657, tokenIndex657
+						goto l658
+					l659:
+						position, tokenIndex = position658, tokenIndex658
 						if buffer[position] != rune('S') {
-							goto l656
+							goto l657
 						}
 						position++
 					}
-				l657:
+				l658:
 					{
-						position659, tokenIndex659 := position, tokenIndex
+						position660, tokenIndex660 := position, tokenIndex
 						if buffer[position] != rune('p') {
-							goto l660
-						}
-						position++
-						goto l659
-					l660:
-						position, tokenIndex = position659, tokenIndex659
-						if buffer[position] != rune('P') {
-							goto l656
-						}
-						position++
-					}
-				l659:
-					goto l655
-				l656:
-					position, tokenIndex = position655, tokenIndex655
-					{
-						position662, tokenIndex662 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l663
-						}
-						position++
-						goto l662
-					l663:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('w') {
-							goto l664
-						}
-						position++
-						goto l662
-					l664:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('d') {
-							goto l665
-						}
-						position++
-						goto l662
-					l665:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('q') {
-							goto l666
-						}
-						position++
-						goto l662
-					l666:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('s') {
-							goto l667
-						}
-						position++
-						goto l662
-					l667:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('h') {
-							goto l668
-						}
-						position++
-						goto l662
-					l668:
-						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('b') {
 							goto l661
 						}
 						position++
+						goto l660
+					l661:
+						position, tokenIndex = position660, tokenIndex660
+						if buffer[position] != rune('P') {
+							goto l657
+						}
+						position++
 					}
-				l662:
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l661
-					}
-					position++
+				l660:
+					goto l656
+				l657:
+					position, tokenIndex = position656, tokenIndex656
 					{
-						position669, tokenIndex669 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						position663, tokenIndex663 := position, tokenIndex
+						if buffer[position] != rune('x') {
+							goto l664
+						}
+						position++
+						goto l663
+					l664:
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('w') {
+							goto l665
+						}
+						position++
+						goto l663
+					l665:
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('d') {
+							goto l666
+						}
+						position++
+						goto l663
+					l666:
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('q') {
+							goto l667
+						}
+						position++
+						goto l663
+					l667:
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('s') {
+							goto l668
+						}
+						position++
+						goto l663
+					l668:
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('h') {
 							goto l669
 						}
 						position++
-						goto l670
+						goto l663
 					l669:
-						position, tokenIndex = position669, tokenIndex669
-					}
-				l670:
-					goto l655
-				l661:
-					position, tokenIndex = position655, tokenIndex655
-					{
-						position672, tokenIndex672 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l673
-						}
-						position++
-						goto l672
-					l673:
-						position, tokenIndex = position672, tokenIndex672
-						if buffer[position] != rune('X') {
-							goto l671
+						position, tokenIndex = position663, tokenIndex663
+						if buffer[position] != rune('b') {
+							goto l662
 						}
 						position++
 					}
-				l672:
-					{
-						position674, tokenIndex674 := position, tokenIndex
-						if buffer[position] != rune('z') {
-							goto l675
-						}
-						position++
-						goto l674
-					l675:
-						position, tokenIndex = position674, tokenIndex674
-						if buffer[position] != rune('Z') {
-							goto l671
-						}
-						position++
-					}
-				l674:
-					{
-						position676, tokenIndex676 := position, tokenIndex
-						if buffer[position] != rune('r') {
-							goto l677
-						}
-						position++
-						goto l676
-					l677:
-						position, tokenIndex = position676, tokenIndex676
-						if buffer[position] != rune('R') {
-							goto l671
-						}
-						position++
-					}
-				l676:
-					goto l655
-				l671:
-					position, tokenIndex = position655, tokenIndex655
-					{
-						position679, tokenIndex679 := position, tokenIndex
-						if buffer[position] != rune('w') {
-							goto l680
-						}
-						position++
-						goto l679
-					l680:
-						position, tokenIndex = position679, tokenIndex679
-						if buffer[position] != rune('W') {
-							goto l678
-						}
-						position++
-					}
-				l679:
-					{
-						position681, tokenIndex681 := position, tokenIndex
-						if buffer[position] != rune('z') {
-							goto l682
-						}
-						position++
-						goto l681
-					l682:
-						position, tokenIndex = position681, tokenIndex681
-						if buffer[position] != rune('Z') {
-							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 l655
-				l678:
-					position, tokenIndex = position655, tokenIndex655
-					{
-						position686, tokenIndex686 := position, tokenIndex
-						if buffer[position] != rune('n') {
-							goto l687
-						}
-						position++
-						goto l686
-					l687:
-						position, tokenIndex = position686, tokenIndex686
-						if buffer[position] != rune('N') {
-							goto l685
-						}
-						position++
-					}
-				l686:
-					{
-						position688, tokenIndex688 := position, tokenIndex
-						if buffer[position] != rune('z') {
-							goto l689
-						}
-						position++
-						goto l688
-					l689:
-						position, tokenIndex = position688, tokenIndex688
-						if buffer[position] != rune('Z') {
-							goto l685
-						}
-						position++
-					}
-				l688:
-					{
-						position690, tokenIndex690 := position, tokenIndex
-						if buffer[position] != rune('c') {
-							goto l691
-						}
-						position++
-						goto l690
-					l691:
-						position, tokenIndex = position690, tokenIndex690
-						if buffer[position] != rune('C') {
-							goto l685
-						}
-						position++
-					}
-				l690:
-					{
-						position692, tokenIndex692 := position, tokenIndex
-						if buffer[position] != rune('v') {
-							goto l693
-						}
-						position++
-						goto l692
-					l693:
-						position, tokenIndex = position692, tokenIndex692
-						if buffer[position] != rune('V') {
-							goto l685
-						}
-						position++
-					}
-				l692:
-					goto l655
-				l685:
-					position, tokenIndex = position655, tokenIndex655
-					if !_rules[ruleSVE2PredicateRegister]() {
-						goto l694
-					}
-					goto l655
-				l694:
-					position, tokenIndex = position655, tokenIndex655
-					if !_rules[ruleARMVectorRegister]() {
-						goto l695
-					}
-					goto l655
-				l695:
-					position, tokenIndex = position655, tokenIndex655
-					if !_rules[ruleSVE2SpecialValue]() {
-						goto l696
-					}
-					goto l655
-				l696:
-					position, tokenIndex = position655, tokenIndex655
-					if buffer[position] != rune('{') {
-						goto l653
+				l663:
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l662
 					}
 					position++
 					{
-						position697, tokenIndex697 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l697
+						position670, tokenIndex670 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l670
 						}
-						goto l698
-					l697:
-						position, tokenIndex = position697, tokenIndex697
+						position++
+						goto l671
+					l670:
+						position, tokenIndex = position670, tokenIndex670
 					}
-				l698:
+				l671:
+					goto l656
+				l662:
+					position, tokenIndex = position656, tokenIndex656
+					{
+						position673, tokenIndex673 := position, tokenIndex
+						if buffer[position] != rune('x') {
+							goto l674
+						}
+						position++
+						goto l673
+					l674:
+						position, tokenIndex = position673, tokenIndex673
+						if buffer[position] != rune('X') {
+							goto l672
+						}
+						position++
+					}
+				l673:
+					{
+						position675, tokenIndex675 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l676
+						}
+						position++
+						goto l675
+					l676:
+						position, tokenIndex = position675, tokenIndex675
+						if buffer[position] != rune('Z') {
+							goto l672
+						}
+						position++
+					}
+				l675:
+					{
+						position677, tokenIndex677 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l678
+						}
+						position++
+						goto l677
+					l678:
+						position, tokenIndex = position677, tokenIndex677
+						if buffer[position] != rune('R') {
+							goto l672
+						}
+						position++
+					}
+				l677:
+					goto l656
+				l672:
+					position, tokenIndex = position656, tokenIndex656
+					{
+						position680, tokenIndex680 := position, tokenIndex
+						if buffer[position] != rune('w') {
+							goto l681
+						}
+						position++
+						goto l680
+					l681:
+						position, tokenIndex = position680, tokenIndex680
+						if buffer[position] != rune('W') {
+							goto l679
+						}
+						position++
+					}
+				l680:
+					{
+						position682, tokenIndex682 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l683
+						}
+						position++
+						goto l682
+					l683:
+						position, tokenIndex = position682, tokenIndex682
+						if buffer[position] != rune('Z') {
+							goto l679
+						}
+						position++
+					}
+				l682:
+					{
+						position684, tokenIndex684 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l685
+						}
+						position++
+						goto l684
+					l685:
+						position, tokenIndex = position684, tokenIndex684
+						if buffer[position] != rune('R') {
+							goto l679
+						}
+						position++
+					}
+				l684:
+					goto l656
+				l679:
+					position, tokenIndex = position656, tokenIndex656
+					{
+						position687, tokenIndex687 := position, tokenIndex
+						if buffer[position] != rune('n') {
+							goto l688
+						}
+						position++
+						goto l687
+					l688:
+						position, tokenIndex = position687, tokenIndex687
+						if buffer[position] != rune('N') {
+							goto l686
+						}
+						position++
+					}
+				l687:
+					{
+						position689, tokenIndex689 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l690
+						}
+						position++
+						goto l689
+					l690:
+						position, tokenIndex = position689, tokenIndex689
+						if buffer[position] != rune('Z') {
+							goto l686
+						}
+						position++
+					}
+				l689:
+					{
+						position691, tokenIndex691 := position, tokenIndex
+						if buffer[position] != rune('c') {
+							goto l692
+						}
+						position++
+						goto l691
+					l692:
+						position, tokenIndex = position691, tokenIndex691
+						if buffer[position] != rune('C') {
+							goto l686
+						}
+						position++
+					}
+				l691:
+					{
+						position693, tokenIndex693 := position, tokenIndex
+						if buffer[position] != rune('v') {
+							goto l694
+						}
+						position++
+						goto l693
+					l694:
+						position, tokenIndex = position693, tokenIndex693
+						if buffer[position] != rune('V') {
+							goto l686
+						}
+						position++
+					}
+				l693:
+					goto l656
+				l686:
+					position, tokenIndex = position656, tokenIndex656
+					if !_rules[ruleSVE2PredicateRegister]() {
+						goto l695
+					}
+					goto l656
+				l695:
+					position, tokenIndex = position656, tokenIndex656
 					if !_rules[ruleARMVectorRegister]() {
-						goto l653
+						goto l696
+					}
+					goto l656
+				l696:
+					position, tokenIndex = position656, tokenIndex656
+					if !_rules[ruleSVE2SpecialValue]() {
+						goto l697
+					}
+					goto l656
+				l697:
+					position, tokenIndex = position656, tokenIndex656
+					if buffer[position] != rune('{') {
+						goto l654
+					}
+					position++
+					{
+						position698, tokenIndex698 := position, tokenIndex
+						if !_rules[ruleWS]() {
+							goto l698
+						}
+						goto l699
+					l698:
+						position, tokenIndex = position698, tokenIndex698
 					}
 				l699:
+					if !_rules[ruleARMVectorRegister]() {
+						goto l654
+					}
+				l700:
 					{
-						position700, tokenIndex700 := position, tokenIndex
+						position701, tokenIndex701 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l700
+							goto l701
 						}
 						position++
 						{
-							position701, tokenIndex701 := position, tokenIndex
+							position702, tokenIndex702 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l701
+								goto l702
 							}
-							goto l702
-						l701:
-							position, tokenIndex = position701, tokenIndex701
+							goto l703
+						l702:
+							position, tokenIndex = position702, tokenIndex702
 						}
-					l702:
+					l703:
 						if !_rules[ruleARMVectorRegister]() {
-							goto l700
+							goto l701
 						}
-						goto l699
-					l700:
-						position, tokenIndex = position700, tokenIndex700
+						goto l700
+					l701:
+						position, tokenIndex = position701, tokenIndex701
 					}
 					{
-						position703, tokenIndex703 := position, tokenIndex
+						position704, tokenIndex704 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l703
+							goto l704
 						}
-						goto l704
-					l703:
-						position, tokenIndex = position703, tokenIndex703
+						goto l705
+					l704:
+						position, tokenIndex = position704, tokenIndex704
 					}
-				l704:
+				l705:
 					if buffer[position] != rune('}') {
-						goto l653
+						goto l654
 					}
 					position++
 					{
-						position705, tokenIndex705 := position, tokenIndex
+						position706, tokenIndex706 := position, tokenIndex
 						if buffer[position] != rune('[') {
-							goto l705
+							goto l706
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l705
+							goto l706
 						}
 						position++
 						{
-							position707, tokenIndex707 := position, tokenIndex
+							position708, tokenIndex708 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l707
+								goto l708
 							}
 							position++
-							goto l708
-						l707:
-							position, tokenIndex = position707, tokenIndex707
+							goto l709
+						l708:
+							position, tokenIndex = position708, tokenIndex708
 						}
-					l708:
+					l709:
 						if buffer[position] != rune(']') {
-							goto l705
+							goto l706
 						}
 						position++
-						goto l706
-					l705:
-						position, tokenIndex = position705, tokenIndex705
+						goto l707
+					l706:
+						position, tokenIndex = position706, tokenIndex706
 					}
-				l706:
+				l707:
 				}
-			l655:
-				add(ruleARMRegister, position654)
+			l656:
+				add(ruleARMRegister, position655)
 			}
 			return true
-		l653:
-			position, tokenIndex = position653, tokenIndex653
+		l654:
+			position, tokenIndex = position654, tokenIndex654
 			return false
 		},
 		/* 46 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
 		func() bool {
-			position709, tokenIndex709 := position, tokenIndex
+			position710, tokenIndex710 := position, tokenIndex
 			{
-				position710 := position
+				position711 := position
 				{
-					position711, tokenIndex711 := position, tokenIndex
+					position712, tokenIndex712 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l712
-					}
-					position++
-					goto l711
-				l712:
-					position, tokenIndex = position711, tokenIndex711
-					if buffer[position] != rune('v') {
 						goto l713
 					}
 					position++
-					goto l711
+					goto l712
 				l713:
-					position, tokenIndex = position711, tokenIndex711
-					if buffer[position] != rune('z') {
-						goto l709
-					}
-					position++
-				}
-			l711:
-				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l709
-				}
-				position++
-				{
-					position714, tokenIndex714 := position, tokenIndex
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
+					position, tokenIndex = position712, tokenIndex712
+					if buffer[position] != rune('v') {
 						goto l714
 					}
 					position++
-					goto l715
+					goto l712
 				l714:
-					position, tokenIndex = position714, tokenIndex714
+					position, tokenIndex = position712, tokenIndex712
+					if buffer[position] != rune('z') {
+						goto l710
+					}
+					position++
 				}
-			l715:
+			l712:
+				if c := buffer[position]; c < rune('0') || c > rune('9') {
+					goto l710
+				}
+				position++
 				{
-					position716, tokenIndex716 := position, tokenIndex
+					position715, tokenIndex715 := position, tokenIndex
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l715
+					}
+					position++
+					goto l716
+				l715:
+					position, tokenIndex = position715, tokenIndex715
+				}
+			l716:
+				{
+					position717, tokenIndex717 := position, tokenIndex
 					{
-						position717, tokenIndex717 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l718
-						}
-						position++
-						goto l717
-					l718:
-						position, tokenIndex = position717, tokenIndex717
+						position718, tokenIndex718 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l719
 						}
 						position++
-						goto l717
+						goto l718
 					l719:
-						position, tokenIndex = position717, tokenIndex717
+						position, tokenIndex = position718, tokenIndex718
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l720
+						}
+						position++
+						goto l718
+					l720:
+						position, tokenIndex = position718, tokenIndex718
 						{
-							position721, tokenIndex721 := position, tokenIndex
+							position722, tokenIndex722 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l722
+								goto l723
 							}
 							position++
-							goto l721
-						l722:
-							position, tokenIndex = position721, tokenIndex721
+							goto l722
+						l723:
+							position, tokenIndex = position722, tokenIndex722
 							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l720
+								goto l721
 							}
 							position++
 						}
+					l722:
+						goto l718
 					l721:
-						goto l717
-					l720:
-						position, tokenIndex = position717, tokenIndex717
+						position, tokenIndex = position718, tokenIndex718
 						if buffer[position] != rune('_') {
-							goto l716
+							goto l717
 						}
 						position++
 					}
+				l718:
+					goto l710
 				l717:
-					goto l709
-				l716:
-					position, tokenIndex = position716, tokenIndex716
+					position, tokenIndex = position717, tokenIndex717
 				}
 				{
-					position723, tokenIndex723 := position, tokenIndex
+					position724, tokenIndex724 := position, tokenIndex
 					if buffer[position] != rune('.') {
-						goto l723
+						goto l724
 					}
 					position++
-				l725:
-					{
-						position726, tokenIndex726 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l726
-						}
-						position++
-						goto l725
-					l726:
-						position, tokenIndex = position726, tokenIndex726
-					}
+				l726:
 					{
 						position727, tokenIndex727 := position, tokenIndex
-						if buffer[position] != rune('b') {
-							goto l728
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l727
 						}
 						position++
-						goto l727
-					l728:
+						goto l726
+					l727:
 						position, tokenIndex = position727, tokenIndex727
-						if buffer[position] != rune('s') {
+					}
+					{
+						position728, tokenIndex728 := position, tokenIndex
+						if buffer[position] != rune('b') {
 							goto l729
 						}
 						position++
-						goto l727
+						goto l728
 					l729:
-						position, tokenIndex = position727, tokenIndex727
-						if buffer[position] != rune('d') {
+						position, tokenIndex = position728, tokenIndex728
+						if buffer[position] != rune('s') {
 							goto l730
 						}
 						position++
-						goto l727
+						goto l728
 					l730:
-						position, tokenIndex = position727, tokenIndex727
-						if buffer[position] != rune('h') {
+						position, tokenIndex = position728, tokenIndex728
+						if buffer[position] != rune('d') {
 							goto l731
 						}
 						position++
-						goto l727
+						goto l728
 					l731:
-						position, tokenIndex = position727, tokenIndex727
+						position, tokenIndex = position728, tokenIndex728
+						if buffer[position] != rune('h') {
+							goto l732
+						}
+						position++
+						goto l728
+					l732:
+						position, tokenIndex = position728, tokenIndex728
 						if buffer[position] != rune('q') {
-							goto l723
+							goto l724
 						}
 						position++
 					}
-				l727:
+				l728:
 					{
-						position732, tokenIndex732 := position, tokenIndex
+						position733, tokenIndex733 := position, tokenIndex
 						if buffer[position] != rune('[') {
-							goto l732
+							goto l733
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l732
+							goto l733
 						}
 						position++
 						{
-							position734, tokenIndex734 := position, tokenIndex
+							position735, tokenIndex735 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l734
+								goto l735
 							}
 							position++
-							goto l735
-						l734:
-							position, tokenIndex = position734, tokenIndex734
+							goto l736
+						l735:
+							position, tokenIndex = position735, tokenIndex735
 						}
-					l735:
+					l736:
 						if buffer[position] != rune(']') {
-							goto l732
+							goto l733
 						}
 						position++
-						goto l733
-					l732:
-						position, tokenIndex = position732, tokenIndex732
+						goto l734
+					l733:
+						position, tokenIndex = position733, tokenIndex733
 					}
-				l733:
-					goto l724
-				l723:
-					position, tokenIndex = position723, tokenIndex723
+				l734:
+					goto l725
+				l724:
+					position, tokenIndex = position724, tokenIndex724
 				}
-			l724:
-				add(ruleARMVectorRegister, position710)
+			l725:
+				add(ruleARMVectorRegister, position711)
 			}
 			return true
-		l709:
-			position, tokenIndex = position709, tokenIndex709
+		l710:
+			position, tokenIndex = position710, tokenIndex710
 			return false
 		},
 		/* 47 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
 		func() bool {
-			position736, tokenIndex736 := position, tokenIndex
+			position737, tokenIndex737 := position, tokenIndex
 			{
-				position737 := position
+				position738 := position
 				{
-					position738, tokenIndex738 := position, tokenIndex
+					position739, tokenIndex739 := position, tokenIndex
 					if buffer[position] != rune('p') {
-						goto l739
-					}
-					position++
-					goto l738
-				l739:
-					position, tokenIndex = position738, tokenIndex738
-					if buffer[position] != rune('P') {
-						goto l736
-					}
-					position++
-				}
-			l738:
-				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l736
-				}
-				position++
-				{
-					position740, tokenIndex740 := position, tokenIndex
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
 						goto l740
 					}
 					position++
-					goto l741
+					goto l739
 				l740:
-					position, tokenIndex = position740, tokenIndex740
+					position, tokenIndex = position739, tokenIndex739
+					if buffer[position] != rune('P') {
+						goto l737
+					}
+					position++
 				}
-			l741:
-				if buffer[position] != rune('/') {
-					goto l736
+			l739:
+				if c := buffer[position]; c < rune('0') || c > rune('9') {
+					goto l737
 				}
 				position++
 				{
-					position742, tokenIndex742 := position, tokenIndex
-					if buffer[position] != rune('m') {
-						goto l743
+					position741, tokenIndex741 := position, tokenIndex
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l741
 					}
 					position++
 					goto l742
-				l743:
-					position, tokenIndex = position742, tokenIndex742
-					if buffer[position] != rune('M') {
+				l741:
+					position, tokenIndex = position741, tokenIndex741
+				}
+			l742:
+				if buffer[position] != rune('/') {
+					goto l737
+				}
+				position++
+				{
+					position743, tokenIndex743 := position, tokenIndex
+					if buffer[position] != rune('m') {
 						goto l744
 					}
 					position++
-					goto l742
+					goto l743
 				l744:
-					position, tokenIndex = position742, tokenIndex742
+					position, tokenIndex = position743, tokenIndex743
+					if buffer[position] != rune('M') {
+						goto l745
+					}
+					position++
+					goto l743
+				l745:
+					position, tokenIndex = position743, tokenIndex743
 					{
-						position745, tokenIndex745 := position, tokenIndex
+						position746, tokenIndex746 := position, tokenIndex
 						if buffer[position] != rune('z') {
-							goto l746
+							goto l747
 						}
 						position++
-						goto l745
-					l746:
-						position, tokenIndex = position745, tokenIndex745
+						goto l746
+					l747:
+						position, tokenIndex = position746, tokenIndex746
 						if buffer[position] != rune('Z') {
-							goto l736
+							goto l737
 						}
 						position++
 					}
-				l745:
+				l746:
 				}
-			l742:
-				add(ruleSVE2PredicateRegister, position737)
+			l743:
+				add(ruleSVE2PredicateRegister, position738)
 			}
 			return true
-		l736:
-			position, tokenIndex = position736, tokenIndex736
+		l737:
+			position, tokenIndex = position737, tokenIndex737
 			return false
 		},
 		/* 48 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
 		func() bool {
-			position747, tokenIndex747 := position, tokenIndex
+			position748, tokenIndex748 := position, tokenIndex
 			{
-				position748 := position
+				position749 := position
 				{
-					position749, tokenIndex749 := position, tokenIndex
+					position750, tokenIndex750 := position, tokenIndex
 					{
-						position751, tokenIndex751 := position, tokenIndex
+						position752, tokenIndex752 := position, tokenIndex
 						if buffer[position] != rune('p') {
-							goto l752
+							goto l753
 						}
 						position++
-						goto l751
-					l752:
-						position, tokenIndex = position751, tokenIndex751
+						goto l752
+					l753:
+						position, tokenIndex = position752, tokenIndex752
 						if buffer[position] != rune('P') {
-							goto l750
+							goto l751
 						}
 						position++
 					}
-				l751:
+				l752:
 					{
-						position753, tokenIndex753 := position, tokenIndex
+						position754, tokenIndex754 := position, tokenIndex
 						if buffer[position] != rune('o') {
-							goto l754
+							goto l755
 						}
 						position++
-						goto l753
-					l754:
-						position, tokenIndex = position753, tokenIndex753
+						goto l754
+					l755:
+						position, tokenIndex = position754, tokenIndex754
 						if buffer[position] != rune('O') {
-							goto l750
+							goto l751
 						}
 						position++
 					}
-				l753:
+				l754:
 					{
-						position755, tokenIndex755 := position, tokenIndex
+						position756, tokenIndex756 := position, tokenIndex
 						if buffer[position] != rune('w') {
-							goto l756
+							goto l757
 						}
 						position++
-						goto l755
-					l756:
-						position, tokenIndex = position755, tokenIndex755
+						goto l756
+					l757:
+						position, tokenIndex = position756, tokenIndex756
 						if buffer[position] != rune('W') {
-							goto l750
+							goto l751
 						}
 						position++
 					}
-				l755:
+				l756:
 					if buffer[position] != rune('2') {
-						goto l750
+						goto l751
 					}
 					position++
-					goto l749
-				l750:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l751:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position758, tokenIndex758 := position, tokenIndex
+						position759, tokenIndex759 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l759
+							goto l760
 						}
 						position++
-						goto l758
-					l759:
-						position, tokenIndex = position758, tokenIndex758
+						goto l759
+					l760:
+						position, tokenIndex = position759, tokenIndex759
 						if buffer[position] != rune('V') {
-							goto l757
+							goto l758
 						}
 						position++
 					}
-				l758:
+				l759:
 					{
-						position760, tokenIndex760 := position, tokenIndex
+						position761, tokenIndex761 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l761
+							goto l762
 						}
 						position++
-						goto l760
-					l761:
-						position, tokenIndex = position760, tokenIndex760
+						goto l761
+					l762:
+						position, tokenIndex = position761, tokenIndex761
 						if buffer[position] != rune('L') {
-							goto l757
+							goto l758
 						}
 						position++
 					}
-				l760:
+				l761:
 					{
-						position762, tokenIndex762 := position, tokenIndex
+						position763, tokenIndex763 := position, tokenIndex
 						if buffer[position] != rune('1') {
-							goto l763
-						}
-						position++
-						goto l762
-					l763:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('2') {
 							goto l764
 						}
 						position++
-						goto l762
+						goto l763
 					l764:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('3') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('2') {
 							goto l765
 						}
 						position++
-						goto l762
+						goto l763
 					l765:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('4') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('3') {
 							goto l766
 						}
 						position++
-						goto l762
+						goto l763
 					l766:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('5') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('4') {
 							goto l767
 						}
 						position++
-						goto l762
+						goto l763
 					l767:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('6') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('5') {
 							goto l768
 						}
 						position++
-						goto l762
+						goto l763
 					l768:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('7') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('6') {
 							goto l769
 						}
 						position++
-						goto l762
+						goto l763
 					l769:
-						position, tokenIndex = position762, tokenIndex762
-						if buffer[position] != rune('8') {
-							goto l757
-						}
-						position++
-					}
-				l762:
-					{
-						position770, tokenIndex770 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('7') {
 							goto l770
 						}
 						position++
-						goto l757
+						goto l763
 					l770:
-						position, tokenIndex = position770, tokenIndex770
+						position, tokenIndex = position763, tokenIndex763
+						if buffer[position] != rune('8') {
+							goto l758
+						}
+						position++
 					}
-					goto l749
-				l757:
-					position, tokenIndex = position749, tokenIndex749
+				l763:
 					{
-						position772, tokenIndex772 := position, tokenIndex
+						position771, tokenIndex771 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l771
+						}
+						position++
+						goto l758
+					l771:
+						position, tokenIndex = position771, tokenIndex771
+					}
+					goto l750
+				l758:
+					position, tokenIndex = position750, tokenIndex750
+					{
+						position773, tokenIndex773 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l773
+							goto l774
 						}
 						position++
-						goto l772
-					l773:
-						position, tokenIndex = position772, tokenIndex772
+						goto l773
+					l774:
+						position, tokenIndex = position773, tokenIndex773
 						if buffer[position] != rune('V') {
-							goto l771
+							goto l772
 						}
 						position++
 					}
-				l772:
+				l773:
 					{
-						position774, tokenIndex774 := position, tokenIndex
+						position775, tokenIndex775 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l775
+							goto l776
 						}
 						position++
-						goto l774
-					l775:
-						position, tokenIndex = position774, tokenIndex774
+						goto l775
+					l776:
+						position, tokenIndex = position775, tokenIndex775
 						if buffer[position] != rune('L') {
-							goto l771
+							goto l772
 						}
 						position++
 					}
-				l774:
+				l775:
 					if buffer[position] != rune('1') {
-						goto l771
+						goto l772
 					}
 					position++
 					if buffer[position] != rune('6') {
-						goto l771
+						goto l772
 					}
 					position++
-					goto l749
-				l771:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l772:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position777, tokenIndex777 := position, tokenIndex
+						position778, tokenIndex778 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l778
+							goto l779
 						}
 						position++
-						goto l777
-					l778:
-						position, tokenIndex = position777, tokenIndex777
+						goto l778
+					l779:
+						position, tokenIndex = position778, tokenIndex778
 						if buffer[position] != rune('V') {
-							goto l776
+							goto l777
 						}
 						position++
 					}
-				l777:
+				l778:
 					{
-						position779, tokenIndex779 := position, tokenIndex
+						position780, tokenIndex780 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l780
+							goto l781
 						}
 						position++
-						goto l779
-					l780:
-						position, tokenIndex = position779, tokenIndex779
+						goto l780
+					l781:
+						position, tokenIndex = position780, tokenIndex780
 						if buffer[position] != rune('L') {
-							goto l776
+							goto l777
 						}
 						position++
 					}
-				l779:
+				l780:
 					if buffer[position] != rune('3') {
-						goto l776
+						goto l777
 					}
 					position++
 					if buffer[position] != rune('2') {
-						goto l776
+						goto l777
 					}
 					position++
-					goto l749
-				l776:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l777:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position782, tokenIndex782 := position, tokenIndex
+						position783, tokenIndex783 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l783
+							goto l784
 						}
 						position++
-						goto l782
-					l783:
-						position, tokenIndex = position782, tokenIndex782
+						goto l783
+					l784:
+						position, tokenIndex = position783, tokenIndex783
 						if buffer[position] != rune('V') {
-							goto l781
+							goto l782
 						}
 						position++
 					}
-				l782:
+				l783:
 					{
-						position784, tokenIndex784 := position, tokenIndex
+						position785, tokenIndex785 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l785
+							goto l786
 						}
 						position++
-						goto l784
-					l785:
-						position, tokenIndex = position784, tokenIndex784
+						goto l785
+					l786:
+						position, tokenIndex = position785, tokenIndex785
 						if buffer[position] != rune('L') {
-							goto l781
+							goto l782
 						}
 						position++
 					}
-				l784:
+				l785:
 					if buffer[position] != rune('6') {
-						goto l781
+						goto l782
 					}
 					position++
 					if buffer[position] != rune('4') {
-						goto l781
+						goto l782
 					}
 					position++
-					goto l749
-				l781:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l782:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position787, tokenIndex787 := position, tokenIndex
+						position788, tokenIndex788 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l788
+							goto l789
 						}
 						position++
-						goto l787
-					l788:
-						position, tokenIndex = position787, tokenIndex787
+						goto l788
+					l789:
+						position, tokenIndex = position788, tokenIndex788
 						if buffer[position] != rune('V') {
-							goto l786
+							goto l787
 						}
 						position++
 					}
-				l787:
+				l788:
 					{
-						position789, tokenIndex789 := position, tokenIndex
+						position790, tokenIndex790 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l790
+							goto l791
 						}
 						position++
-						goto l789
-					l790:
-						position, tokenIndex = position789, tokenIndex789
+						goto l790
+					l791:
+						position, tokenIndex = position790, tokenIndex790
 						if buffer[position] != rune('L') {
-							goto l786
+							goto l787
 						}
 						position++
 					}
-				l789:
+				l790:
 					if buffer[position] != rune('1') {
-						goto l786
+						goto l787
 					}
 					position++
 					if buffer[position] != rune('2') {
-						goto l786
+						goto l787
 					}
 					position++
 					if buffer[position] != rune('8') {
-						goto l786
+						goto l787
 					}
 					position++
-					goto l749
-				l786:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l787:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position792, tokenIndex792 := position, tokenIndex
+						position793, tokenIndex793 := position, tokenIndex
 						if buffer[position] != rune('v') {
-							goto l793
+							goto l794
 						}
 						position++
-						goto l792
-					l793:
-						position, tokenIndex = position792, tokenIndex792
+						goto l793
+					l794:
+						position, tokenIndex = position793, tokenIndex793
 						if buffer[position] != rune('V') {
-							goto l791
+							goto l792
 						}
 						position++
 					}
-				l792:
+				l793:
 					{
-						position794, tokenIndex794 := position, tokenIndex
+						position795, tokenIndex795 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l795
+							goto l796
 						}
 						position++
-						goto l794
-					l795:
-						position, tokenIndex = position794, tokenIndex794
+						goto l795
+					l796:
+						position, tokenIndex = position795, tokenIndex795
 						if buffer[position] != rune('L') {
-							goto l791
+							goto l792
 						}
 						position++
 					}
-				l794:
+				l795:
 					if buffer[position] != rune('2') {
-						goto l791
+						goto l792
 					}
 					position++
 					if buffer[position] != rune('5') {
-						goto l791
+						goto l792
 					}
 					position++
 					if buffer[position] != rune('6') {
-						goto l791
+						goto l792
 					}
 					position++
-					goto l749
-				l791:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l792:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position797, tokenIndex797 := position, tokenIndex
+						position798, tokenIndex798 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l798
+							goto l799
 						}
 						position++
-						goto l797
-					l798:
-						position, tokenIndex = position797, tokenIndex797
+						goto l798
+					l799:
+						position, tokenIndex = position798, tokenIndex798
 						if buffer[position] != rune('M') {
-							goto l796
+							goto l797
 						}
 						position++
 					}
-				l797:
+				l798:
 					{
-						position799, tokenIndex799 := position, tokenIndex
+						position800, tokenIndex800 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l800
+							goto l801
 						}
 						position++
-						goto l799
-					l800:
-						position, tokenIndex = position799, tokenIndex799
+						goto l800
+					l801:
+						position, tokenIndex = position800, tokenIndex800
 						if buffer[position] != rune('U') {
-							goto l796
+							goto l797
 						}
 						position++
 					}
-				l799:
+				l800:
 					{
-						position801, tokenIndex801 := position, tokenIndex
+						position802, tokenIndex802 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l802
+							goto l803
 						}
 						position++
-						goto l801
-					l802:
-						position, tokenIndex = position801, tokenIndex801
+						goto l802
+					l803:
+						position, tokenIndex = position802, tokenIndex802
 						if buffer[position] != rune('L') {
-							goto l796
+							goto l797
 						}
 						position++
 					}
-				l801:
+				l802:
 					if buffer[position] != rune('3') {
-						goto l796
+						goto l797
 					}
 					position++
-					goto l749
-				l796:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l797:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position804, tokenIndex804 := position, tokenIndex
+						position805, tokenIndex805 := position, tokenIndex
 						if buffer[position] != rune('m') {
-							goto l805
+							goto l806
 						}
 						position++
-						goto l804
-					l805:
-						position, tokenIndex = position804, tokenIndex804
+						goto l805
+					l806:
+						position, tokenIndex = position805, tokenIndex805
 						if buffer[position] != rune('M') {
-							goto l803
+							goto l804
 						}
 						position++
 					}
-				l804:
+				l805:
 					{
-						position806, tokenIndex806 := position, tokenIndex
+						position807, tokenIndex807 := position, tokenIndex
 						if buffer[position] != rune('u') {
-							goto l807
+							goto l808
 						}
 						position++
-						goto l806
-					l807:
-						position, tokenIndex = position806, tokenIndex806
+						goto l807
+					l808:
+						position, tokenIndex = position807, tokenIndex807
 						if buffer[position] != rune('U') {
-							goto l803
+							goto l804
 						}
 						position++
 					}
-				l806:
+				l807:
 					{
-						position808, tokenIndex808 := position, tokenIndex
+						position809, tokenIndex809 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l809
+							goto l810
 						}
 						position++
-						goto l808
-					l809:
-						position, tokenIndex = position808, tokenIndex808
+						goto l809
+					l810:
+						position, tokenIndex = position809, tokenIndex809
 						if buffer[position] != rune('L') {
-							goto l803
+							goto l804
 						}
 						position++
 					}
-				l808:
+				l809:
 					if buffer[position] != rune('4') {
-						goto l803
+						goto l804
 					}
 					position++
-					goto l749
-				l803:
-					position, tokenIndex = position749, tokenIndex749
+					goto l750
+				l804:
+					position, tokenIndex = position750, tokenIndex750
 					{
-						position810, tokenIndex810 := position, tokenIndex
+						position811, tokenIndex811 := position, tokenIndex
 						if buffer[position] != rune('a') {
-							goto l811
+							goto l812
 						}
 						position++
-						goto l810
-					l811:
-						position, tokenIndex = position810, tokenIndex810
+						goto l811
+					l812:
+						position, tokenIndex = position811, tokenIndex811
 						if buffer[position] != rune('A') {
-							goto l747
+							goto l748
 						}
 						position++
 					}
-				l810:
+				l811:
 					{
-						position812, tokenIndex812 := position, tokenIndex
+						position813, tokenIndex813 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l813
+							goto l814
 						}
 						position++
-						goto l812
-					l813:
-						position, tokenIndex = position812, tokenIndex812
+						goto l813
+					l814:
+						position, tokenIndex = position813, tokenIndex813
 						if buffer[position] != rune('L') {
-							goto l747
+							goto l748
 						}
 						position++
 					}
-				l812:
+				l813:
 					{
-						position814, tokenIndex814 := position, tokenIndex
+						position815, tokenIndex815 := position, tokenIndex
 						if buffer[position] != rune('l') {
-							goto l815
+							goto l816
 						}
 						position++
-						goto l814
-					l815:
-						position, tokenIndex = position814, tokenIndex814
+						goto l815
+					l816:
+						position, tokenIndex = position815, tokenIndex815
 						if buffer[position] != rune('L') {
-							goto l747
+							goto l748
 						}
 						position++
 					}
-				l814:
+				l815:
 				}
-			l749:
+			l750:
 				{
-					position816, tokenIndex816 := position, tokenIndex
+					position817, tokenIndex817 := position, tokenIndex
 					{
-						position817, tokenIndex817 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l818
-						}
-						position++
-						goto l817
-					l818:
-						position, tokenIndex = position817, tokenIndex817
+						position818, tokenIndex818 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l819
 						}
 						position++
-						goto l817
+						goto l818
 					l819:
-						position, tokenIndex = position817, tokenIndex817
+						position, tokenIndex = position818, tokenIndex818
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l820
+						}
+						position++
+						goto l818
+					l820:
+						position, tokenIndex = position818, tokenIndex818
 						{
-							position821, tokenIndex821 := position, tokenIndex
+							position822, tokenIndex822 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l822
+								goto l823
 							}
 							position++
-							goto l821
-						l822:
-							position, tokenIndex = position821, tokenIndex821
+							goto l822
+						l823:
+							position, tokenIndex = position822, tokenIndex822
 							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l820
+								goto l821
 							}
 							position++
 						}
+					l822:
+						goto l818
 					l821:
-						goto l817
-					l820:
-						position, tokenIndex = position817, tokenIndex817
+						position, tokenIndex = position818, tokenIndex818
 						if buffer[position] != rune('_') {
-							goto l816
+							goto l817
 						}
 						position++
 					}
+				l818:
+					goto l748
 				l817:
-					goto l747
-				l816:
-					position, tokenIndex = position816, tokenIndex816
+					position, tokenIndex = position817, tokenIndex817
 				}
-				add(ruleSVE2SpecialValue, position748)
+				add(ruleSVE2SpecialValue, position749)
 			}
 			return true
-		l747:
-			position, tokenIndex = position747, tokenIndex747
+		l748:
+			position, tokenIndex = position748, tokenIndex748
 			return false
 		},
 		/* 49 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
 		func() bool {
-			position823, tokenIndex823 := position, tokenIndex
+			position824, tokenIndex824 := position, tokenIndex
 			{
-				position824 := position
+				position825 := position
 				{
-					position825, tokenIndex825 := position, tokenIndex
-					if !_rules[ruleSymbolRef]() {
-						goto l826
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l826
-					}
-					goto l825
-				l826:
-					position, tokenIndex = position825, tokenIndex825
+					position826, tokenIndex826 := position, tokenIndex
 					if !_rules[ruleSymbolRef]() {
 						goto l827
 					}
-					goto l825
+					if !_rules[ruleBaseIndexScale]() {
+						goto l827
+					}
+					goto l826
 				l827:
-					position, tokenIndex = position825, tokenIndex825
-					if !_rules[ruleLow12BitsSymbolRef]() {
+					position, tokenIndex = position826, tokenIndex826
+					if !_rules[ruleSymbolRef]() {
 						goto l828
 					}
-					goto l825
+					goto l826
 				l828:
-					position, tokenIndex = position825, tokenIndex825
-				l830:
-					{
-						position831, tokenIndex831 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l831
-						}
-						goto l830
-					l831:
-						position, tokenIndex = position831, tokenIndex831
-					}
-					if !_rules[ruleBaseIndexScale]() {
+					position, tokenIndex = position826, tokenIndex826
+					if !_rules[ruleLow12BitsSymbolRef]() {
 						goto l829
 					}
-					goto l825
+					goto l826
 				l829:
-					position, tokenIndex = position825, tokenIndex825
+					position, tokenIndex = position826, tokenIndex826
+				l831:
+					{
+						position832, tokenIndex832 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l832
+						}
+						goto l831
+					l832:
+						position, tokenIndex = position832, tokenIndex832
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l830
+					}
+					goto l826
+				l830:
+					position, tokenIndex = position826, tokenIndex826
 					if !_rules[ruleSegmentRegister]() {
-						goto l832
+						goto l833
 					}
 					if !_rules[ruleOffset]() {
-						goto l832
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l832
-					}
-					goto l825
-				l832:
-					position, tokenIndex = position825, tokenIndex825
-					if !_rules[ruleSegmentRegister]() {
 						goto l833
 					}
 					if !_rules[ruleBaseIndexScale]() {
 						goto l833
 					}
-					goto l825
+					goto l826
 				l833:
-					position, tokenIndex = position825, tokenIndex825
+					position, tokenIndex = position826, tokenIndex826
 					if !_rules[ruleSegmentRegister]() {
 						goto l834
 					}
-					if !_rules[ruleOffset]() {
+					if !_rules[ruleBaseIndexScale]() {
 						goto l834
 					}
-					goto l825
+					goto l826
 				l834:
-					position, tokenIndex = position825, tokenIndex825
-					if !_rules[ruleARMBaseIndexScale]() {
+					position, tokenIndex = position826, tokenIndex826
+					if !_rules[ruleSegmentRegister]() {
 						goto l835
 					}
-					goto l825
+					if !_rules[ruleOffset]() {
+						goto l835
+					}
+					goto l826
 				l835:
-					position, tokenIndex = position825, tokenIndex825
+					position, tokenIndex = position826, tokenIndex826
+					if !_rules[ruleARMBaseIndexScale]() {
+						goto l836
+					}
+					goto l826
+				l836:
+					position, tokenIndex = position826, tokenIndex826
 					if !_rules[ruleBaseIndexScale]() {
-						goto l823
+						goto l824
 					}
 				}
-			l825:
-				add(ruleMemoryRef, position824)
+			l826:
+				add(ruleMemoryRef, position825)
 			}
 			return true
-		l823:
-			position, tokenIndex = position823, tokenIndex823
+		l824:
+			position, tokenIndex = position824, tokenIndex824
 			return false
 		},
 		/* 50 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
 		func() bool {
-			position836, tokenIndex836 := position, tokenIndex
+			position837, tokenIndex837 := position, tokenIndex
 			{
-				position837 := position
+				position838 := position
 				{
-					position838, tokenIndex838 := position, tokenIndex
-				l840:
+					position839, tokenIndex839 := position, tokenIndex
+				l841:
 					{
-						position841, tokenIndex841 := position, tokenIndex
+						position842, tokenIndex842 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l841
+							goto l842
 						}
-						goto l840
-					l841:
-						position, tokenIndex = position841, tokenIndex841
+						goto l841
+					l842:
+						position, tokenIndex = position842, tokenIndex842
 					}
 					if buffer[position] != rune('+') {
-						goto l838
+						goto l839
 					}
 					position++
-					goto l839
-				l838:
-					position, tokenIndex = position838, tokenIndex838
+					goto l840
+				l839:
+					position, tokenIndex = position839, tokenIndex839
 				}
-			l839:
+			l840:
 				{
-					position842, tokenIndex842 := position, tokenIndex
+					position843, tokenIndex843 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l843
+						goto l844
 					}
-					goto l842
-				l843:
-					position, tokenIndex = position842, tokenIndex842
+					goto l843
+				l844:
+					position, tokenIndex = position843, tokenIndex843
 					if !_rules[ruleSymbolName]() {
-						goto l836
+						goto l837
 					}
 				}
-			l842:
-			l844:
-				{
-					position845, tokenIndex845 := position, tokenIndex
-					if !_rules[ruleOffset]() {
-						goto l845
-					}
-					goto l844
-				l845:
-					position, tokenIndex = position845, tokenIndex845
-				}
+			l843:
+			l845:
 				{
 					position846, tokenIndex846 := position, tokenIndex
-					if buffer[position] != rune('@') {
+					if !_rules[ruleOffset]() {
 						goto l846
 					}
-					position++
-					if !_rules[ruleSection]() {
-						goto l846
-					}
-				l848:
-					{
-						position849, tokenIndex849 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l849
-						}
-						goto l848
-					l849:
-						position, tokenIndex = position849, tokenIndex849
-					}
-					goto l847
+					goto l845
 				l846:
 					position, tokenIndex = position846, tokenIndex846
 				}
-			l847:
-				add(ruleSymbolRef, position837)
+				{
+					position847, tokenIndex847 := position, tokenIndex
+					if buffer[position] != rune('@') {
+						goto l847
+					}
+					position++
+					if !_rules[ruleSection]() {
+						goto l847
+					}
+				l849:
+					{
+						position850, tokenIndex850 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l850
+						}
+						goto l849
+					l850:
+						position, tokenIndex = position850, tokenIndex850
+					}
+					goto l848
+				l847:
+					position, tokenIndex = position847, tokenIndex847
+				}
+			l848:
+				add(ruleSymbolRef, position838)
 			}
 			return true
-		l836:
-			position, tokenIndex = position836, tokenIndex836
+		l837:
+			position, tokenIndex = position837, tokenIndex837
 			return false
 		},
 		/* 51 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
 		func() bool {
-			position850, tokenIndex850 := position, tokenIndex
+			position851, tokenIndex851 := position, tokenIndex
 			{
-				position851 := position
+				position852 := position
 				if buffer[position] != rune(':') {
-					goto l850
+					goto l851
 				}
 				position++
 				{
-					position852, tokenIndex852 := position, tokenIndex
+					position853, tokenIndex853 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l853
+						goto l854
 					}
 					position++
-					goto l852
-				l853:
-					position, tokenIndex = position852, tokenIndex852
+					goto l853
+				l854:
+					position, tokenIndex = position853, tokenIndex853
 					if buffer[position] != rune('L') {
-						goto l850
+						goto l851
 					}
 					position++
 				}
-			l852:
+			l853:
 				{
-					position854, tokenIndex854 := position, tokenIndex
+					position855, tokenIndex855 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l855
+						goto l856
 					}
 					position++
-					goto l854
-				l855:
-					position, tokenIndex = position854, tokenIndex854
+					goto l855
+				l856:
+					position, tokenIndex = position855, tokenIndex855
 					if buffer[position] != rune('O') {
-						goto l850
+						goto l851
 					}
 					position++
 				}
-			l854:
+			l855:
 				if buffer[position] != rune('1') {
-					goto l850
+					goto l851
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l850
+					goto l851
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l850
+					goto l851
 				}
 				position++
 				{
-					position856, tokenIndex856 := position, tokenIndex
+					position857, tokenIndex857 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l857
-					}
-					goto l856
-				l857:
-					position, tokenIndex = position856, tokenIndex856
-					if !_rules[ruleSymbolName]() {
-						goto l850
-					}
-				}
-			l856:
-				{
-					position858, tokenIndex858 := position, tokenIndex
-					if !_rules[ruleOffset]() {
 						goto l858
 					}
-					goto l859
+					goto l857
 				l858:
-					position, tokenIndex = position858, tokenIndex858
+					position, tokenIndex = position857, tokenIndex857
+					if !_rules[ruleSymbolName]() {
+						goto l851
+					}
 				}
-			l859:
-				add(ruleLow12BitsSymbolRef, position851)
+			l857:
+				{
+					position859, tokenIndex859 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l859
+					}
+					goto l860
+				l859:
+					position, tokenIndex = position859, tokenIndex859
+				}
+			l860:
+				add(ruleLow12BitsSymbolRef, position852)
 			}
 			return true
-		l850:
-			position, tokenIndex = position850, tokenIndex850
+		l851:
+			position, tokenIndex = position851, tokenIndex851
 			return false
 		},
 		/* 52 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
 		func() bool {
-			position860, tokenIndex860 := position, tokenIndex
+			position861, tokenIndex861 := position, tokenIndex
 			{
-				position861 := position
+				position862 := position
 				if buffer[position] != rune('[') {
-					goto l860
+					goto l861
 				}
 				position++
 				if !_rules[ruleARMRegister]() {
-					goto l860
+					goto l861
 				}
 				{
-					position862, tokenIndex862 := position, tokenIndex
+					position863, tokenIndex863 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l862
+						goto l863
 					}
 					position++
 					{
-						position864, tokenIndex864 := position, tokenIndex
+						position865, tokenIndex865 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l864
-						}
-						goto l865
-					l864:
-						position, tokenIndex = position864, tokenIndex864
-					}
-				l865:
-					{
-						position866, tokenIndex866 := position, tokenIndex
-						if buffer[position] != rune('#') {
-							goto l867
-						}
-						position++
-						if !_rules[ruleOffset]() {
-							goto l867
-						}
-						{
-							position868, tokenIndex868 := position, tokenIndex
-							{
-								position870, tokenIndex870 := position, tokenIndex
-								if buffer[position] != rune('*') {
-									goto l871
-								}
-								position++
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l871
-								}
-								position++
-							l872:
-								{
-									position873, tokenIndex873 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l873
-									}
-									position++
-									goto l872
-								l873:
-									position, tokenIndex = position873, tokenIndex873
-								}
-								goto l870
-							l871:
-								position, tokenIndex = position870, tokenIndex870
-								if buffer[position] != rune('*') {
-									goto l874
-								}
-								position++
-								if buffer[position] != rune('(') {
-									goto l874
-								}
-								position++
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l874
-								}
-								position++
-							l875:
-								{
-									position876, tokenIndex876 := position, tokenIndex
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l876
-									}
-									position++
-									goto l875
-								l876:
-									position, tokenIndex = position876, tokenIndex876
-								}
-								if !_rules[ruleOperator]() {
-									goto l874
-								}
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l874
-								}
-								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
-								}
-								if buffer[position] != rune(')') {
-									goto l874
-								}
-								position++
-								goto l870
-							l874:
-								position, tokenIndex = position870, tokenIndex870
-							l879:
-								{
-									position880, tokenIndex880 := position, tokenIndex
-									if buffer[position] != rune('+') {
-										goto l880
-									}
-									position++
-									if c := buffer[position]; c < rune('0') || c > rune('9') {
-										goto l880
-									}
-									position++
-								l881:
-									{
-										position882, tokenIndex882 := position, tokenIndex
-										if c := buffer[position]; c < rune('0') || c > rune('9') {
-											goto l882
-										}
-										position++
-										goto l881
-									l882:
-										position, tokenIndex = position882, tokenIndex882
-									}
-									goto l879
-								l880:
-									position, tokenIndex = position880, tokenIndex880
-								}
-							}
-						l870:
-							goto l869
-
-							position, tokenIndex = position868, tokenIndex868
-						}
-					l869:
-						goto l866
-					l867:
-						position, tokenIndex = position866, tokenIndex866
-						if !_rules[ruleARMGOTLow12]() {
-							goto l883
+							goto l865
 						}
 						goto l866
-					l883:
-						position, tokenIndex = position866, tokenIndex866
-						if !_rules[ruleLow12BitsSymbolRef]() {
-							goto l884
-						}
-						goto l866
-					l884:
-						position, tokenIndex = position866, tokenIndex866
-						if !_rules[ruleARMRegister]() {
-							goto l862
-						}
+					l865:
+						position, tokenIndex = position865, tokenIndex865
 					}
 				l866:
 					{
-						position885, tokenIndex885 := position, tokenIndex
-						if buffer[position] != rune(',') {
+						position867, tokenIndex867 := position, tokenIndex
+						if buffer[position] != rune('#') {
+							goto l868
+						}
+						position++
+						if !_rules[ruleOffset]() {
+							goto l868
+						}
+						{
+							position869, tokenIndex869 := position, tokenIndex
+							{
+								position871, tokenIndex871 := position, tokenIndex
+								if buffer[position] != rune('*') {
+									goto l872
+								}
+								position++
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l872
+								}
+								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
+								}
+								goto l871
+							l872:
+								position, tokenIndex = position871, tokenIndex871
+								if buffer[position] != rune('*') {
+									goto l875
+								}
+								position++
+								if buffer[position] != rune('(') {
+									goto l875
+								}
+								position++
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l875
+								}
+								position++
+							l876:
+								{
+									position877, tokenIndex877 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l877
+									}
+									position++
+									goto l876
+								l877:
+									position, tokenIndex = position877, tokenIndex877
+								}
+								if !_rules[ruleOperator]() {
+									goto l875
+								}
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l875
+								}
+								position++
+							l878:
+								{
+									position879, tokenIndex879 := position, tokenIndex
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l879
+									}
+									position++
+									goto l878
+								l879:
+									position, tokenIndex = position879, tokenIndex879
+								}
+								if buffer[position] != rune(')') {
+									goto l875
+								}
+								position++
+								goto l871
+							l875:
+								position, tokenIndex = position871, tokenIndex871
+							l880:
+								{
+									position881, tokenIndex881 := position, tokenIndex
+									if buffer[position] != rune('+') {
+										goto l881
+									}
+									position++
+									if c := buffer[position]; c < rune('0') || c > rune('9') {
+										goto l881
+									}
+									position++
+								l882:
+									{
+										position883, tokenIndex883 := position, tokenIndex
+										if c := buffer[position]; c < rune('0') || c > rune('9') {
+											goto l883
+										}
+										position++
+										goto l882
+									l883:
+										position, tokenIndex = position883, tokenIndex883
+									}
+									goto l880
+								l881:
+									position, tokenIndex = position881, tokenIndex881
+								}
+							}
+						l871:
+							goto l870
+
+							position, tokenIndex = position869, tokenIndex869
+						}
+					l870:
+						goto l867
+					l868:
+						position, tokenIndex = position867, tokenIndex867
+						if !_rules[ruleARMGOTLow12]() {
+							goto l884
+						}
+						goto l867
+					l884:
+						position, tokenIndex = position867, tokenIndex867
+						if !_rules[ruleLow12BitsSymbolRef]() {
 							goto l885
 						}
+						goto l867
+					l885:
+						position, tokenIndex = position867, tokenIndex867
+						if !_rules[ruleARMRegister]() {
+							goto l863
+						}
+					}
+				l867:
+					{
+						position886, tokenIndex886 := position, tokenIndex
+						if buffer[position] != rune(',') {
+							goto l886
+						}
 						position++
 						{
-							position887, tokenIndex887 := position, tokenIndex
+							position888, tokenIndex888 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l887
+								goto l888
 							}
-							goto l888
-						l887:
-							position, tokenIndex = position887, tokenIndex887
+							goto l889
+						l888:
+							position, tokenIndex = position888, tokenIndex888
 						}
-					l888:
+					l889:
 						if !_rules[ruleARMConstantTweak]() {
-							goto l885
+							goto l886
 						}
-						goto l886
-					l885:
-						position, tokenIndex = position885, tokenIndex885
+						goto l887
+					l886:
+						position, tokenIndex = position886, tokenIndex886
 					}
-				l886:
-					goto l863
-				l862:
-					position, tokenIndex = position862, tokenIndex862
+				l887:
+					goto l864
+				l863:
+					position, tokenIndex = position863, tokenIndex863
 				}
-			l863:
+			l864:
 				if buffer[position] != rune(']') {
-					goto l860
+					goto l861
 				}
 				position++
 				{
-					position889, tokenIndex889 := position, tokenIndex
+					position890, tokenIndex890 := position, tokenIndex
 					if !_rules[ruleARMPostincrement]() {
-						goto l889
+						goto l890
 					}
-					goto l890
-				l889:
-					position, tokenIndex = position889, tokenIndex889
+					goto l891
+				l890:
+					position, tokenIndex = position890, tokenIndex890
 				}
-			l890:
-				add(ruleARMBaseIndexScale, position861)
+			l891:
+				add(ruleARMBaseIndexScale, position862)
 			}
 			return true
-		l860:
-			position, tokenIndex = position860, tokenIndex860
+		l861:
+			position, tokenIndex = position861, tokenIndex861
 			return false
 		},
 		/* 53 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
 		func() bool {
-			position891, tokenIndex891 := position, tokenIndex
+			position892, tokenIndex892 := position, tokenIndex
 			{
-				position892 := position
+				position893 := position
 				if buffer[position] != rune(':') {
-					goto l891
+					goto l892
 				}
 				position++
 				{
-					position893, tokenIndex893 := position, tokenIndex
+					position894, tokenIndex894 := position, tokenIndex
 					if buffer[position] != rune('g') {
-						goto l894
+						goto l895
 					}
 					position++
-					goto l893
-				l894:
-					position, tokenIndex = position893, tokenIndex893
+					goto l894
+				l895:
+					position, tokenIndex = position894, tokenIndex894
 					if buffer[position] != rune('G') {
-						goto l891
+						goto l892
 					}
 					position++
 				}
-			l893:
+			l894:
 				{
-					position895, tokenIndex895 := position, tokenIndex
+					position896, tokenIndex896 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l896
+						goto l897
 					}
 					position++
-					goto l895
-				l896:
-					position, tokenIndex = position895, tokenIndex895
+					goto l896
+				l897:
+					position, tokenIndex = position896, tokenIndex896
 					if buffer[position] != rune('O') {
-						goto l891
+						goto l892
 					}
 					position++
 				}
-			l895:
+			l896:
 				{
-					position897, tokenIndex897 := position, tokenIndex
+					position898, tokenIndex898 := position, tokenIndex
 					if buffer[position] != rune('t') {
-						goto l898
+						goto l899
 					}
 					position++
-					goto l897
-				l898:
-					position, tokenIndex = position897, tokenIndex897
+					goto l898
+				l899:
+					position, tokenIndex = position898, tokenIndex898
 					if buffer[position] != rune('T') {
-						goto l891
+						goto l892
 					}
 					position++
 				}
-			l897:
+			l898:
 				if buffer[position] != rune('_') {
-					goto l891
+					goto l892
 				}
 				position++
 				{
-					position899, tokenIndex899 := position, tokenIndex
+					position900, tokenIndex900 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l900
+						goto l901
 					}
 					position++
-					goto l899
-				l900:
-					position, tokenIndex = position899, tokenIndex899
+					goto l900
+				l901:
+					position, tokenIndex = position900, tokenIndex900
 					if buffer[position] != rune('L') {
-						goto l891
+						goto l892
 					}
 					position++
 				}
-			l899:
+			l900:
 				{
-					position901, tokenIndex901 := position, tokenIndex
+					position902, tokenIndex902 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l902
+						goto l903
 					}
 					position++
-					goto l901
-				l902:
-					position, tokenIndex = position901, tokenIndex901
+					goto l902
+				l903:
+					position, tokenIndex = position902, tokenIndex902
 					if buffer[position] != rune('O') {
-						goto l891
+						goto l892
 					}
 					position++
 				}
-			l901:
+			l902:
 				if buffer[position] != rune('1') {
-					goto l891
+					goto l892
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l891
+					goto l892
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l891
+					goto l892
 				}
 				position++
 				if !_rules[ruleSymbolName]() {
-					goto l891
+					goto l892
 				}
-				add(ruleARMGOTLow12, position892)
+				add(ruleARMGOTLow12, position893)
 			}
 			return true
-		l891:
-			position, tokenIndex = position891, tokenIndex891
+		l892:
+			position, tokenIndex = position892, tokenIndex892
 			return false
 		},
 		/* 54 ARMPostincrement <- <'!'> */
 		func() bool {
-			position903, tokenIndex903 := position, tokenIndex
+			position904, tokenIndex904 := position, tokenIndex
 			{
-				position904 := position
+				position905 := position
 				if buffer[position] != rune('!') {
-					goto l903
+					goto l904
 				}
 				position++
-				add(ruleARMPostincrement, position904)
+				add(ruleARMPostincrement, position905)
 			}
 			return true
-		l903:
-			position, tokenIndex = position903, tokenIndex903
+		l904:
+			position, tokenIndex = position904, tokenIndex904
 			return false
 		},
 		/* 55 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
 		func() bool {
-			position905, tokenIndex905 := position, tokenIndex
+			position906, tokenIndex906 := position, tokenIndex
 			{
-				position906 := position
+				position907 := position
 				if buffer[position] != rune('(') {
-					goto l905
+					goto l906
 				}
 				position++
 				{
-					position907, tokenIndex907 := position, tokenIndex
+					position908, tokenIndex908 := position, tokenIndex
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l907
+						goto l908
 					}
-					goto l908
-				l907:
-					position, tokenIndex = position907, tokenIndex907
+					goto l909
+				l908:
+					position, tokenIndex = position908, tokenIndex908
 				}
-			l908:
+			l909:
 				{
-					position909, tokenIndex909 := position, tokenIndex
+					position910, tokenIndex910 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l909
+						goto l910
 					}
-					goto l910
-				l909:
-					position, tokenIndex = position909, tokenIndex909
+					goto l911
+				l910:
+					position, tokenIndex = position910, tokenIndex910
 				}
-			l910:
+			l911:
 				{
-					position911, tokenIndex911 := position, tokenIndex
+					position912, tokenIndex912 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l911
+						goto l912
 					}
 					position++
 					{
-						position913, tokenIndex913 := position, tokenIndex
+						position914, tokenIndex914 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l913
+							goto l914
 						}
-						goto l914
-					l913:
-						position, tokenIndex = position913, tokenIndex913
+						goto l915
+					l914:
+						position, tokenIndex = position914, tokenIndex914
 					}
-				l914:
+				l915:
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l911
+						goto l912
 					}
 					{
-						position915, tokenIndex915 := position, tokenIndex
+						position916, tokenIndex916 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l915
+							goto l916
 						}
-						goto l916
-					l915:
-						position, tokenIndex = position915, tokenIndex915
+						goto l917
+					l916:
+						position, tokenIndex = position916, tokenIndex916
 					}
-				l916:
+				l917:
 					{
-						position917, tokenIndex917 := position, tokenIndex
+						position918, tokenIndex918 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l917
+							goto l918
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l917
+							goto l918
 						}
 						position++
-					l919:
+					l920:
 						{
-							position920, tokenIndex920 := position, tokenIndex
+							position921, tokenIndex921 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l920
+								goto l921
 							}
 							position++
-							goto l919
-						l920:
-							position, tokenIndex = position920, tokenIndex920
+							goto l920
+						l921:
+							position, tokenIndex = position921, tokenIndex921
 						}
-						goto l918
-					l917:
-						position, tokenIndex = position917, tokenIndex917
+						goto l919
+					l918:
+						position, tokenIndex = position918, tokenIndex918
 					}
-				l918:
-					goto l912
-				l911:
-					position, tokenIndex = position911, tokenIndex911
+				l919:
+					goto l913
+				l912:
+					position, tokenIndex = position912, tokenIndex912
 				}
-			l912:
+			l913:
 				if buffer[position] != rune(')') {
-					goto l905
+					goto l906
 				}
 				position++
-				add(ruleBaseIndexScale, position906)
+				add(ruleBaseIndexScale, position907)
 			}
 			return true
-		l905:
-			position, tokenIndex = position905, tokenIndex905
+		l906:
+			position, tokenIndex = position906, tokenIndex906
 			return false
 		},
 		/* 56 Operator <- <('+' / '-')> */
 		func() bool {
-			position921, tokenIndex921 := position, tokenIndex
+			position922, tokenIndex922 := position, tokenIndex
 			{
-				position922 := position
+				position923 := position
 				{
-					position923, tokenIndex923 := position, tokenIndex
+					position924, tokenIndex924 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l924
+						goto l925
 					}
 					position++
-					goto l923
-				l924:
-					position, tokenIndex = position923, tokenIndex923
+					goto l924
+				l925:
+					position, tokenIndex = position924, tokenIndex924
 					if buffer[position] != rune('-') {
-						goto l921
+						goto l922
 					}
 					position++
 				}
-			l923:
-				add(ruleOperator, position922)
+			l924:
+				add(ruleOperator, position923)
 			}
 			return true
-		l921:
-			position, tokenIndex = position921, tokenIndex921
+		l922:
+			position, tokenIndex = position922, tokenIndex922
 			return false
 		},
 		/* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
 		func() bool {
-			position925, tokenIndex925 := position, tokenIndex
+			position926, tokenIndex926 := position, tokenIndex
 			{
-				position926 := position
+				position927 := position
 				{
-					position927, tokenIndex927 := position, tokenIndex
+					position928, tokenIndex928 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l927
+						goto l928
 					}
 					position++
-					goto l928
-				l927:
-					position, tokenIndex = position927, tokenIndex927
+					goto l929
+				l928:
+					position, tokenIndex = position928, tokenIndex928
 				}
-			l928:
+			l929:
 				{
-					position929, tokenIndex929 := position, tokenIndex
+					position930, tokenIndex930 := position, tokenIndex
 					if buffer[position] != rune('-') {
-						goto l929
+						goto l930
 					}
 					position++
-					goto l930
-				l929:
-					position, tokenIndex = position929, tokenIndex929
+					goto l931
+				l930:
+					position, tokenIndex = position930, tokenIndex930
 				}
-			l930:
+			l931:
 				{
-					position931, tokenIndex931 := position, tokenIndex
+					position932, tokenIndex932 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l932
+						goto l933
 					}
 					position++
 					{
-						position933, tokenIndex933 := position, tokenIndex
+						position934, tokenIndex934 := position, tokenIndex
 						if buffer[position] != rune('b') {
-							goto l934
+							goto l935
 						}
 						position++
-						goto l933
-					l934:
-						position, tokenIndex = position933, tokenIndex933
+						goto l934
+					l935:
+						position, tokenIndex = position934, tokenIndex934
 						if buffer[position] != rune('B') {
-							goto l932
+							goto l933
 						}
 						position++
 					}
-				l933:
+				l934:
+					{
+						position938, tokenIndex938 := position, tokenIndex
+						if buffer[position] != rune('0') {
+							goto l939
+						}
+						position++
+						goto l938
+					l939:
+						position, tokenIndex = position938, tokenIndex938
+						if buffer[position] != rune('1') {
+							goto l933
+						}
+						position++
+					}
+				l938:
+				l936:
 					{
 						position937, tokenIndex937 := position, tokenIndex
-						if buffer[position] != rune('0') {
-							goto l938
-						}
-						position++
-						goto l937
-					l938:
-						position, tokenIndex = position937, tokenIndex937
-						if buffer[position] != rune('1') {
-							goto l932
-						}
-						position++
-					}
-				l937:
-				l935:
-					{
-						position936, tokenIndex936 := position, tokenIndex
 						{
-							position939, tokenIndex939 := position, tokenIndex
+							position940, tokenIndex940 := position, tokenIndex
 							if buffer[position] != rune('0') {
-								goto l940
+								goto l941
 							}
 							position++
-							goto l939
-						l940:
-							position, tokenIndex = position939, tokenIndex939
+							goto l940
+						l941:
+							position, tokenIndex = position940, tokenIndex940
 							if buffer[position] != rune('1') {
-								goto l936
+								goto l937
 							}
 							position++
 						}
-					l939:
-						goto l935
-					l936:
-						position, tokenIndex = position936, tokenIndex936
+					l940:
+						goto l936
+					l937:
+						position, tokenIndex = position937, tokenIndex937
 					}
-					goto l931
-				l932:
-					position, tokenIndex = position931, tokenIndex931
+					goto l932
+				l933:
+					position, tokenIndex = position932, tokenIndex932
 					if buffer[position] != rune('0') {
-						goto l941
+						goto l942
 					}
 					position++
 					{
-						position942, tokenIndex942 := position, tokenIndex
+						position943, tokenIndex943 := position, tokenIndex
 						if buffer[position] != rune('x') {
-							goto l943
+							goto l944
 						}
 						position++
-						goto l942
-					l943:
-						position, tokenIndex = position942, tokenIndex942
+						goto l943
+					l944:
+						position, tokenIndex = position943, tokenIndex943
 						if buffer[position] != rune('X') {
-							goto l941
+							goto l942
 						}
 						position++
 					}
-				l942:
+				l943:
 					{
-						position946, tokenIndex946 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l947
-						}
-						position++
-						goto l946
-					l947:
-						position, tokenIndex = position946, tokenIndex946
+						position947, tokenIndex947 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l948
 						}
 						position++
-						goto l946
+						goto l947
 					l948:
-						position, tokenIndex = position946, tokenIndex946
+						position, tokenIndex = position947, tokenIndex947
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l949
+						}
+						position++
+						goto l947
+					l949:
+						position, tokenIndex = position947, tokenIndex947
 						{
-							position949, tokenIndex949 := position, tokenIndex
+							position950, tokenIndex950 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('f') {
-								goto l950
+								goto l951
 							}
 							position++
-							goto l949
-						l950:
-							position, tokenIndex = position949, tokenIndex949
+							goto l950
+						l951:
+							position, tokenIndex = position950, tokenIndex950
 							if c := buffer[position]; c < rune('A') || c > rune('F') {
-								goto l941
+								goto l942
 							}
 							position++
 						}
-					l949:
+					l950:
 					}
-				l946:
-				l944:
+				l947:
+				l945:
 					{
-						position945, tokenIndex945 := position, tokenIndex
+						position946, tokenIndex946 := position, tokenIndex
 						{
-							position951, tokenIndex951 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l952
-							}
-							position++
-							goto l951
-						l952:
-							position, tokenIndex = position951, tokenIndex951
+							position952, tokenIndex952 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
 								goto l953
 							}
 							position++
-							goto l951
+							goto l952
 						l953:
-							position, tokenIndex = position951, tokenIndex951
+							position, tokenIndex = position952, tokenIndex952
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l954
+							}
+							position++
+							goto l952
+						l954:
+							position, tokenIndex = position952, tokenIndex952
 							{
-								position954, tokenIndex954 := position, tokenIndex
+								position955, tokenIndex955 := position, tokenIndex
 								if c := buffer[position]; c < rune('a') || c > rune('f') {
-									goto l955
+									goto l956
 								}
 								position++
-								goto l954
-							l955:
-								position, tokenIndex = position954, tokenIndex954
+								goto l955
+							l956:
+								position, tokenIndex = position955, tokenIndex955
 								if c := buffer[position]; c < rune('A') || c > rune('F') {
-									goto l945
+									goto l946
 								}
 								position++
 							}
-						l954:
+						l955:
 						}
-					l951:
-						goto l944
-					l945:
-						position, tokenIndex = position945, tokenIndex945
+					l952:
+						goto l945
+					l946:
+						position, tokenIndex = position946, tokenIndex946
 					}
-					goto l931
-				l941:
-					position, tokenIndex = position931, tokenIndex931
+					goto l932
+				l942:
+					position, tokenIndex = position932, tokenIndex932
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l925
+						goto l926
 					}
 					position++
-				l956:
+				l957:
 					{
-						position957, tokenIndex957 := position, tokenIndex
+						position958, tokenIndex958 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l957
+							goto l958
 						}
 						position++
-						goto l956
-					l957:
-						position, tokenIndex = position957, tokenIndex957
+						goto l957
+					l958:
+						position, tokenIndex = position958, tokenIndex958
 					}
 				}
-			l931:
-				add(ruleOffset, position926)
+			l932:
+				add(ruleOffset, position927)
 			}
 			return true
-		l925:
-			position, tokenIndex = position925, tokenIndex925
+		l926:
+			position, tokenIndex = position926, tokenIndex926
 			return false
 		},
 		/* 58 Section <- <([a-z] / [A-Z] / '@')+> */
 		func() bool {
-			position958, tokenIndex958 := position, tokenIndex
+			position959, tokenIndex959 := position, tokenIndex
 			{
-				position959 := position
+				position960 := position
 				{
-					position962, tokenIndex962 := position, tokenIndex
+					position963, tokenIndex963 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l963
-					}
-					position++
-					goto l962
-				l963:
-					position, tokenIndex = position962, tokenIndex962
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
 						goto l964
 					}
 					position++
-					goto l962
+					goto l963
 				l964:
-					position, tokenIndex = position962, tokenIndex962
+					position, tokenIndex = position963, tokenIndex963
+					if c := buffer[position]; c < rune('A') || c > rune('Z') {
+						goto l965
+					}
+					position++
+					goto l963
+				l965:
+					position, tokenIndex = position963, tokenIndex963
 					if buffer[position] != rune('@') {
-						goto l958
+						goto l959
 					}
 					position++
 				}
-			l962:
-			l960:
+			l963:
+			l961:
 				{
-					position961, tokenIndex961 := position, tokenIndex
+					position962, tokenIndex962 := position, tokenIndex
 					{
-						position965, tokenIndex965 := position, tokenIndex
+						position966, tokenIndex966 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l966
-						}
-						position++
-						goto l965
-					l966:
-						position, tokenIndex = position965, tokenIndex965
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l967
 						}
 						position++
-						goto l965
+						goto l966
 					l967:
-						position, tokenIndex = position965, tokenIndex965
+						position, tokenIndex = position966, tokenIndex966
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l968
+						}
+						position++
+						goto l966
+					l968:
+						position, tokenIndex = position966, tokenIndex966
 						if buffer[position] != rune('@') {
-							goto l961
+							goto l962
 						}
 						position++
 					}
-				l965:
-					goto l960
-				l961:
-					position, tokenIndex = position961, tokenIndex961
+				l966:
+					goto l961
+				l962:
+					position, tokenIndex = position962, tokenIndex962
 				}
-				add(ruleSection, position959)
+				add(ruleSection, position960)
 			}
 			return true
-		l958:
-			position, tokenIndex = position958, tokenIndex958
+		l959:
+			position, tokenIndex = position959, tokenIndex959
 			return false
 		},
 		/* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
 		func() bool {
-			position968, tokenIndex968 := position, tokenIndex
+			position969, tokenIndex969 := position, tokenIndex
 			{
-				position969 := position
+				position970 := position
 				if buffer[position] != rune('%') {
-					goto l968
+					goto l969
 				}
 				position++
 				{
-					position970, tokenIndex970 := position, tokenIndex
+					position971, tokenIndex971 := position, tokenIndex
 					if c := buffer[position]; c < rune('c') || c > rune('g') {
-						goto l971
+						goto l972
 					}
 					position++
-					goto l970
-				l971:
-					position, tokenIndex = position970, tokenIndex970
+					goto l971
+				l972:
+					position, tokenIndex = position971, tokenIndex971
 					if buffer[position] != rune('s') {
-						goto l968
+						goto l969
 					}
 					position++
 				}
-			l970:
+			l971:
 				if buffer[position] != rune('s') {
-					goto l968
+					goto l969
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l968
+					goto l969
 				}
 				position++
-				add(ruleSegmentRegister, position969)
+				add(ruleSegmentRegister, position970)
 			}
 			return true
-		l968:
-			position, tokenIndex = position968, tokenIndex968
+		l969:
+			position, tokenIndex = position969, tokenIndex969
 			return false
 		},
 	}
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
index 54f3526..92a3a7b 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/in1.s
@@ -46,3 +46,7 @@
 	jmp 1f
 1:
 	jmp 1b
+2:
+
+	.quad 2b - 1b
+	.quad 2b - .L2
diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
index 70d0338..f786f13 100644
--- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s
@@ -71,6 +71,11 @@
 1:
 
 	jmp 1b
+2:
+
+
+	.quad 2b - 1b
+	.quad 2b - .L2
 	# References to local labels are rewrittenn in subsequent files.
 .Llocal_label_BCM_1: