delocate: handle a new output form in Clang 13.

Clang 13 will put a “-1” inside a DWARF expression that's the difference
between two labels. We just need to pass it onto the output.

Change-Id: Ib58d245157a44ae9f1839c2af123bfe01791abf1
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/51445
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: Adam Langley <agl@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index f79ed76..c253a48 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -44,7 +44,7 @@
 SymbolArg <- (OpenParen WS?)? (
                Offset /
                SymbolType /
-               (Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName) /
+               (Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))* /
                LocalSymbol TCMarker? /
                SymbolName Offset /
                SymbolName TCMarker?)
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 56c4a20..ea7c195 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -2540,7 +2540,7 @@
 			position, tokenIndex = position291, tokenIndex291
 			return false
 		},
-		/* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */
+		/* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))*) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */
 		func() bool {
 			position299, tokenIndex299 := position, tokenIndex
 			{
@@ -2604,131 +2604,138 @@
 						}
 					}
 				l309:
+				l313:
 					{
-						position313, tokenIndex313 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l313
+						position314, tokenIndex314 := position, tokenIndex
+						{
+							position315, tokenIndex315 := position, tokenIndex
+							if !_rules[ruleWS]() {
+								goto l315
+							}
+							goto l316
+						l315:
+							position, tokenIndex = position315, tokenIndex315
 						}
-						goto l314
-					l313:
-						position, tokenIndex = position313, tokenIndex313
-					}
-				l314:
-					if !_rules[ruleOperator]() {
-						goto l308
-					}
-					{
-						position315, tokenIndex315 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l315
+					l316:
+						if !_rules[ruleOperator]() {
+							goto l314
 						}
-						goto l316
-					l315:
-						position, tokenIndex = position315, tokenIndex315
-					}
-				l316:
-					{
-						position317, tokenIndex317 := position, tokenIndex
-						if !_rules[ruleOffset]() {
+						{
+							position317, tokenIndex317 := position, tokenIndex
+							if !_rules[ruleWS]() {
+								goto l317
+							}
 							goto l318
+						l317:
+							position, tokenIndex = position317, tokenIndex317
 						}
-						goto l317
 					l318:
-						position, tokenIndex = position317, tokenIndex317
-						if !_rules[ruleLocalSymbol]() {
+						{
+							position319, tokenIndex319 := position, tokenIndex
+							if !_rules[ruleOffset]() {
+								goto l320
+							}
 							goto l319
+						l320:
+							position, tokenIndex = position319, tokenIndex319
+							if !_rules[ruleLocalSymbol]() {
+								goto l321
+							}
+							goto l319
+						l321:
+							position, tokenIndex = position319, tokenIndex319
+							if !_rules[ruleSymbolName]() {
+								goto l314
+							}
 						}
-						goto l317
 					l319:
-						position, tokenIndex = position317, tokenIndex317
-						if !_rules[ruleSymbolName]() {
-							goto l308
-						}
+						goto l313
+					l314:
+						position, tokenIndex = position314, tokenIndex314
 					}
-				l317:
 					goto l305
 				l308:
 					position, tokenIndex = position305, tokenIndex305
 					if !_rules[ruleLocalSymbol]() {
-						goto l320
+						goto l322
 					}
 					{
-						position321, tokenIndex321 := position, tokenIndex
+						position323, tokenIndex323 := position, tokenIndex
 						if !_rules[ruleTCMarker]() {
-							goto l321
+							goto l323
 						}
-						goto l322
-					l321:
-						position, tokenIndex = position321, tokenIndex321
+						goto l324
+					l323:
+						position, tokenIndex = position323, tokenIndex323
 					}
-				l322:
+				l324:
 					goto l305
-				l320:
+				l322:
 					position, tokenIndex = position305, tokenIndex305
 					if !_rules[ruleSymbolName]() {
-						goto l323
+						goto l325
 					}
 					if !_rules[ruleOffset]() {
-						goto l323
+						goto l325
 					}
 					goto l305
-				l323:
+				l325:
 					position, tokenIndex = position305, tokenIndex305
 					if !_rules[ruleSymbolName]() {
 						goto l299
 					}
 					{
-						position324, tokenIndex324 := position, tokenIndex
+						position326, tokenIndex326 := position, tokenIndex
 						if !_rules[ruleTCMarker]() {
-							goto l324
+							goto l326
 						}
-						goto l325
-					l324:
-						position, tokenIndex = position324, tokenIndex324
+						goto l327
+					l326:
+						position, tokenIndex = position326, tokenIndex326
 					}
-				l325:
+				l327:
 				}
 			l305:
 				{
-					position326, tokenIndex326 := position, tokenIndex
+					position328, tokenIndex328 := position, tokenIndex
 					{
-						position328, tokenIndex328 := position, tokenIndex
+						position330, tokenIndex330 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l328
+							goto l330
 						}
-						goto l329
-					l328:
-						position, tokenIndex = position328, tokenIndex328
+						goto l331
+					l330:
+						position, tokenIndex = position330, tokenIndex330
 					}
-				l329:
+				l331:
 					if !_rules[ruleCloseParen]() {
-						goto l326
+						goto l328
 					}
-					goto l327
-				l326:
-					position, tokenIndex = position326, tokenIndex326
+					goto l329
+				l328:
+					position, tokenIndex = position328, tokenIndex328
 				}
-			l327:
+			l329:
 				{
-					position330, tokenIndex330 := position, tokenIndex
+					position332, tokenIndex332 := position, tokenIndex
 					{
-						position332, tokenIndex332 := position, tokenIndex
+						position334, tokenIndex334 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l332
+							goto l334
 						}
-						goto l333
-					l332:
-						position, tokenIndex = position332, tokenIndex332
+						goto l335
+					l334:
+						position, tokenIndex = position334, tokenIndex334
 					}
-				l333:
+				l335:
 					if !_rules[ruleSymbolShift]() {
-						goto l330
+						goto l332
 					}
-					goto l331
-				l330:
-					position, tokenIndex = position330, tokenIndex330
+					goto l333
+				l332:
+					position, tokenIndex = position332, tokenIndex332
 				}
-			l331:
+			l333:
 				add(ruleSymbolArg, position300)
 			}
 			return true
@@ -2738,721 +2745,707 @@
 		},
 		/* 17 OpenParen <- <'('> */
 		func() bool {
-			position334, tokenIndex334 := position, tokenIndex
-			{
-				position335 := position
-				if buffer[position] != rune('(') {
-					goto l334
-				}
-				position++
-				add(ruleOpenParen, position335)
-			}
-			return true
-		l334:
-			position, tokenIndex = position334, tokenIndex334
-			return false
-		},
-		/* 18 CloseParen <- <')'> */
-		func() bool {
 			position336, tokenIndex336 := position, tokenIndex
 			{
 				position337 := position
-				if buffer[position] != rune(')') {
+				if buffer[position] != rune('(') {
 					goto l336
 				}
 				position++
-				add(ruleCloseParen, position337)
+				add(ruleOpenParen, position337)
 			}
 			return true
 		l336:
 			position, tokenIndex = position336, tokenIndex336
 			return false
 		},
-		/* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
+		/* 18 CloseParen <- <')'> */
 		func() bool {
 			position338, tokenIndex338 := position, tokenIndex
 			{
 				position339 := position
-				{
-					position340, tokenIndex340 := position, tokenIndex
-					if buffer[position] != rune('@') {
-						goto l341
-					}
-					position++
-					goto l340
-				l341:
-					position, tokenIndex = position340, tokenIndex340
-					if buffer[position] != rune('%') {
-						goto l338
-					}
-					position++
+				if buffer[position] != rune(')') {
+					goto l338
 				}
-			l340:
-				{
-					position342, tokenIndex342 := position, tokenIndex
-					if buffer[position] != rune('f') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('u') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('n') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('c') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('t') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('i') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('o') {
-						goto l343
-					}
-					position++
-					if buffer[position] != rune('n') {
-						goto l343
-					}
-					position++
-					goto l342
-				l343:
-					position, tokenIndex = position342, tokenIndex342
-					if buffer[position] != rune('o') {
-						goto l338
-					}
-					position++
-					if buffer[position] != rune('b') {
-						goto l338
-					}
-					position++
-					if buffer[position] != rune('j') {
-						goto l338
-					}
-					position++
-					if buffer[position] != rune('e') {
-						goto l338
-					}
-					position++
-					if buffer[position] != rune('c') {
-						goto l338
-					}
-					position++
-					if buffer[position] != rune('t') {
-						goto l338
-					}
-					position++
-				}
-			l342:
-				add(ruleSymbolType, position339)
+				position++
+				add(ruleCloseParen, position339)
 			}
 			return true
 		l338:
 			position, tokenIndex = position338, tokenIndex338
 			return false
 		},
-		/* 20 Dot <- <'.'> */
+		/* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
 		func() bool {
-			position344, tokenIndex344 := position, tokenIndex
+			position340, tokenIndex340 := position, tokenIndex
 			{
-				position345 := position
-				if buffer[position] != rune('.') {
-					goto l344
+				position341 := position
+				{
+					position342, tokenIndex342 := position, tokenIndex
+					if buffer[position] != rune('@') {
+						goto l343
+					}
+					position++
+					goto l342
+				l343:
+					position, tokenIndex = position342, tokenIndex342
+					if buffer[position] != rune('%') {
+						goto l340
+					}
+					position++
 				}
-				position++
-				add(ruleDot, position345)
+			l342:
+				{
+					position344, tokenIndex344 := position, tokenIndex
+					if buffer[position] != rune('f') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('u') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('n') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('c') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('t') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('i') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('o') {
+						goto l345
+					}
+					position++
+					if buffer[position] != rune('n') {
+						goto l345
+					}
+					position++
+					goto l344
+				l345:
+					position, tokenIndex = position344, tokenIndex344
+					if buffer[position] != rune('o') {
+						goto l340
+					}
+					position++
+					if buffer[position] != rune('b') {
+						goto l340
+					}
+					position++
+					if buffer[position] != rune('j') {
+						goto l340
+					}
+					position++
+					if buffer[position] != rune('e') {
+						goto l340
+					}
+					position++
+					if buffer[position] != rune('c') {
+						goto l340
+					}
+					position++
+					if buffer[position] != rune('t') {
+						goto l340
+					}
+					position++
+				}
+			l344:
+				add(ruleSymbolType, position341)
 			}
 			return true
-		l344:
-			position, tokenIndex = position344, tokenIndex344
+		l340:
+			position, tokenIndex = position340, tokenIndex340
 			return false
 		},
-		/* 21 TCMarker <- <('[' 'T' 'C' ']')> */
+		/* 20 Dot <- <'.'> */
 		func() bool {
 			position346, tokenIndex346 := position, tokenIndex
 			{
 				position347 := position
-				if buffer[position] != rune('[') {
+				if buffer[position] != rune('.') {
 					goto l346
 				}
 				position++
-				if buffer[position] != rune('T') {
-					goto l346
-				}
-				position++
-				if buffer[position] != rune('C') {
-					goto l346
-				}
-				position++
-				if buffer[position] != rune(']') {
-					goto l346
-				}
-				position++
-				add(ruleTCMarker, position347)
+				add(ruleDot, position347)
 			}
 			return true
 		l346:
 			position, tokenIndex = position346, tokenIndex346
 			return false
 		},
-		/* 22 EscapedChar <- <('\\' .)> */
+		/* 21 TCMarker <- <('[' 'T' 'C' ']')> */
 		func() bool {
 			position348, tokenIndex348 := position, tokenIndex
 			{
 				position349 := position
-				if buffer[position] != rune('\\') {
+				if buffer[position] != rune('[') {
 					goto l348
 				}
 				position++
-				if !matchDot() {
+				if buffer[position] != rune('T') {
 					goto l348
 				}
-				add(ruleEscapedChar, position349)
+				position++
+				if buffer[position] != rune('C') {
+					goto l348
+				}
+				position++
+				if buffer[position] != rune(']') {
+					goto l348
+				}
+				position++
+				add(ruleTCMarker, position349)
 			}
 			return true
 		l348:
 			position, tokenIndex = position348, tokenIndex348
 			return false
 		},
-		/* 23 WS <- <(' ' / '\t')+> */
+		/* 22 EscapedChar <- <('\\' .)> */
 		func() bool {
 			position350, tokenIndex350 := position, tokenIndex
 			{
 				position351 := position
-				{
-					position354, tokenIndex354 := position, tokenIndex
-					if buffer[position] != rune(' ') {
-						goto l355
-					}
-					position++
-					goto l354
-				l355:
-					position, tokenIndex = position354, tokenIndex354
-					if buffer[position] != rune('\t') {
-						goto l350
-					}
-					position++
+				if buffer[position] != rune('\\') {
+					goto l350
 				}
-			l354:
-			l352:
-				{
-					position353, tokenIndex353 := position, tokenIndex
-					{
-						position356, tokenIndex356 := position, tokenIndex
-						if buffer[position] != rune(' ') {
-							goto l357
-						}
-						position++
-						goto l356
-					l357:
-						position, tokenIndex = position356, tokenIndex356
-						if buffer[position] != rune('\t') {
-							goto l353
-						}
-						position++
-					}
-				l356:
-					goto l352
-				l353:
-					position, tokenIndex = position353, tokenIndex353
+				position++
+				if !matchDot() {
+					goto l350
 				}
-				add(ruleWS, position351)
+				add(ruleEscapedChar, position351)
 			}
 			return true
 		l350:
 			position, tokenIndex = position350, tokenIndex350
 			return false
 		},
-		/* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
+		/* 23 WS <- <(' ' / '\t')+> */
 		func() bool {
-			position358, tokenIndex358 := position, tokenIndex
+			position352, tokenIndex352 := position, tokenIndex
 			{
-				position359 := position
+				position353 := position
 				{
-					position360, tokenIndex360 := position, tokenIndex
-					if buffer[position] != rune('/') {
-						goto l361
+					position356, tokenIndex356 := position, tokenIndex
+					if buffer[position] != rune(' ') {
+						goto l357
 					}
 					position++
-					if buffer[position] != rune('/') {
-						goto l361
-					}
-					position++
-					goto l360
-				l361:
-					position, tokenIndex = position360, tokenIndex360
-					if buffer[position] != rune('#') {
-						goto l358
+					goto l356
+				l357:
+					position, tokenIndex = position356, tokenIndex356
+					if buffer[position] != rune('\t') {
+						goto l352
 					}
 					position++
 				}
-			l360:
-			l362:
+			l356:
+			l354:
 				{
-					position363, tokenIndex363 := position, tokenIndex
+					position355, tokenIndex355 := position, tokenIndex
 					{
-						position364, tokenIndex364 := position, tokenIndex
-						if buffer[position] != rune('\n') {
-							goto l364
+						position358, tokenIndex358 := position, tokenIndex
+						if buffer[position] != rune(' ') {
+							goto l359
 						}
 						position++
-						goto l363
-					l364:
-						position, tokenIndex = position364, tokenIndex364
+						goto l358
+					l359:
+						position, tokenIndex = position358, tokenIndex358
+						if buffer[position] != rune('\t') {
+							goto l355
+						}
+						position++
 					}
-					if !matchDot() {
-						goto l363
-					}
-					goto l362
-				l363:
-					position, tokenIndex = position363, tokenIndex363
+				l358:
+					goto l354
+				l355:
+					position, tokenIndex = position355, tokenIndex355
 				}
-				add(ruleComment, position359)
+				add(ruleWS, position353)
 			}
 			return true
-		l358:
-			position, tokenIndex = position358, tokenIndex358
+		l352:
+			position, tokenIndex = position352, tokenIndex352
+			return false
+		},
+		/* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
+		func() bool {
+			position360, tokenIndex360 := position, tokenIndex
+			{
+				position361 := position
+				{
+					position362, tokenIndex362 := position, tokenIndex
+					if buffer[position] != rune('/') {
+						goto l363
+					}
+					position++
+					if buffer[position] != rune('/') {
+						goto l363
+					}
+					position++
+					goto l362
+				l363:
+					position, tokenIndex = position362, tokenIndex362
+					if buffer[position] != rune('#') {
+						goto l360
+					}
+					position++
+				}
+			l362:
+			l364:
+				{
+					position365, tokenIndex365 := position, tokenIndex
+					{
+						position366, tokenIndex366 := position, tokenIndex
+						if buffer[position] != rune('\n') {
+							goto l366
+						}
+						position++
+						goto l365
+					l366:
+						position, tokenIndex = position366, tokenIndex366
+					}
+					if !matchDot() {
+						goto l365
+					}
+					goto l364
+				l365:
+					position, tokenIndex = position365, tokenIndex365
+				}
+				add(ruleComment, position361)
+			}
+			return true
+		l360:
+			position, tokenIndex = position360, tokenIndex360
 			return false
 		},
 		/* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
 		func() bool {
-			position365, tokenIndex365 := position, tokenIndex
+			position367, tokenIndex367 := position, tokenIndex
 			{
-				position366 := position
+				position368 := position
 				{
-					position367, tokenIndex367 := position, tokenIndex
+					position369, tokenIndex369 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l368
+						goto l370
 					}
-					goto l367
-				l368:
-					position, tokenIndex = position367, tokenIndex367
+					goto l369
+				l370:
+					position, tokenIndex = position369, tokenIndex369
 					if !_rules[ruleLocalLabel]() {
-						goto l369
+						goto l371
 					}
-					goto l367
-				l369:
-					position, tokenIndex = position367, tokenIndex367
+					goto l369
+				l371:
+					position, tokenIndex = position369, tokenIndex369
 					if !_rules[ruleSymbolName]() {
-						goto l365
+						goto l367
 					}
 				}
-			l367:
+			l369:
 				if buffer[position] != rune(':') {
-					goto l365
+					goto l367
 				}
 				position++
-				add(ruleLabel, position366)
+				add(ruleLabel, position368)
 			}
 			return true
-		l365:
-			position, tokenIndex = position365, tokenIndex365
+		l367:
+			position, tokenIndex = position367, tokenIndex367
 			return false
 		},
 		/* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
 		func() bool {
-			position370, tokenIndex370 := position, tokenIndex
+			position372, tokenIndex372 := position, tokenIndex
 			{
-				position371 := position
+				position373 := position
 				{
-					position372, tokenIndex372 := position, tokenIndex
+					position374, tokenIndex374 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l373
-					}
-					position++
-					goto l372
-				l373:
-					position, tokenIndex = position372, tokenIndex372
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l374
-					}
-					position++
-					goto l372
-				l374:
-					position, tokenIndex = position372, tokenIndex372
-					if buffer[position] != rune('.') {
 						goto l375
 					}
 					position++
-					goto l372
+					goto l374
 				l375:
-					position, tokenIndex = position372, tokenIndex372
+					position, tokenIndex = position374, tokenIndex374
+					if c := buffer[position]; c < rune('A') || c > rune('Z') {
+						goto l376
+					}
+					position++
+					goto l374
+				l376:
+					position, tokenIndex = position374, tokenIndex374
+					if buffer[position] != rune('.') {
+						goto l377
+					}
+					position++
+					goto l374
+				l377:
+					position, tokenIndex = position374, tokenIndex374
 					if buffer[position] != rune('_') {
-						goto l370
+						goto l372
 					}
 					position++
 				}
-			l372:
-			l376:
+			l374:
+			l378:
 				{
-					position377, tokenIndex377 := position, tokenIndex
+					position379, tokenIndex379 := position, tokenIndex
 					{
-						position378, tokenIndex378 := position, tokenIndex
+						position380, tokenIndex380 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l379
-						}
-						position++
-						goto l378
-					l379:
-						position, tokenIndex = position378, tokenIndex378
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l380
-						}
-						position++
-						goto l378
-					l380:
-						position, tokenIndex = position378, tokenIndex378
-						if buffer[position] != rune('.') {
 							goto l381
 						}
 						position++
-						goto l378
+						goto l380
 					l381:
-						position, tokenIndex = position378, tokenIndex378
+						position, tokenIndex = position380, tokenIndex380
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l382
+						}
+						position++
+						goto l380
+					l382:
+						position, tokenIndex = position380, tokenIndex380
+						if buffer[position] != rune('.') {
+							goto l383
+						}
+						position++
+						goto l380
+					l383:
+						position, tokenIndex = position380, tokenIndex380
 						{
-							position383, tokenIndex383 := position, tokenIndex
+							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++
-							goto l383
-						l384:
-							position, tokenIndex = position383, tokenIndex383
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l382
-							}
-							position++
 						}
-					l383:
-						goto l378
-					l382:
-						position, tokenIndex = position378, tokenIndex378
+					l385:
+						goto l380
+					l384:
+						position, tokenIndex = position380, tokenIndex380
 						if buffer[position] != rune('$') {
-							goto l385
+							goto l387
 						}
 						position++
-						goto l378
-					l385:
-						position, tokenIndex = position378, tokenIndex378
+						goto l380
+					l387:
+						position, tokenIndex = position380, tokenIndex380
 						if buffer[position] != rune('_') {
-							goto l377
+							goto l379
 						}
 						position++
 					}
-				l378:
-					goto l376
-				l377:
-					position, tokenIndex = position377, tokenIndex377
+				l380:
+					goto l378
+				l379:
+					position, tokenIndex = position379, tokenIndex379
 				}
-				add(ruleSymbolName, position371)
+				add(ruleSymbolName, position373)
 			}
 			return true
-		l370:
-			position, tokenIndex = position370, tokenIndex370
+		l372:
+			position, tokenIndex = position372, tokenIndex372
 			return false
 		},
 		/* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
 		func() bool {
-			position386, tokenIndex386 := position, tokenIndex
+			position388, tokenIndex388 := position, tokenIndex
 			{
-				position387 := position
+				position389 := position
 				if buffer[position] != rune('.') {
-					goto l386
+					goto l388
 				}
 				position++
 				if buffer[position] != rune('L') {
-					goto l386
+					goto l388
 				}
 				position++
 				{
-					position390, tokenIndex390 := position, tokenIndex
+					position392, tokenIndex392 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l391
+						goto l393
 					}
 					position++
-					goto l390
-				l391:
-					position, tokenIndex = position390, tokenIndex390
+					goto l392
+				l393:
+					position, tokenIndex = position392, tokenIndex392
 					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l392
+						goto l394
 					}
 					position++
-					goto l390
-				l392:
-					position, tokenIndex = position390, tokenIndex390
+					goto l392
+				l394:
+					position, tokenIndex = position392, tokenIndex392
 					{
-						position394, tokenIndex394 := position, tokenIndex
+						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++
-						goto l394
-					l395:
-						position, tokenIndex = position394, tokenIndex394
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l393
-						}
-						position++
 					}
-				l394:
-					goto l390
-				l393:
-					position, tokenIndex = position390, tokenIndex390
+				l396:
+					goto l392
+				l395:
+					position, tokenIndex = position392, tokenIndex392
 					if buffer[position] != rune('.') {
-						goto l396
+						goto l398
 					}
 					position++
-					goto l390
-				l396:
-					position, tokenIndex = position390, tokenIndex390
+					goto l392
+				l398:
+					position, tokenIndex = position392, tokenIndex392
 					{
-						position398, tokenIndex398 := position, tokenIndex
+						position400, tokenIndex400 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l401
+						}
+						position++
+						goto l400
+					l401:
+						position, tokenIndex = position400, tokenIndex400
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l399
 						}
 						position++
-						goto l398
-					l399:
-						position, tokenIndex = position398, tokenIndex398
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l397
-						}
-						position++
 					}
-				l398:
-					goto l390
-				l397:
-					position, tokenIndex = position390, tokenIndex390
+				l400:
+					goto l392
+				l399:
+					position, tokenIndex = position392, tokenIndex392
 					if buffer[position] != rune('$') {
-						goto l400
+						goto l402
 					}
 					position++
-					goto l390
-				l400:
-					position, tokenIndex = position390, tokenIndex390
+					goto l392
+				l402:
+					position, tokenIndex = position392, tokenIndex392
 					if buffer[position] != rune('_') {
-						goto l386
+						goto l388
 					}
 					position++
 				}
+			l392:
 			l390:
-			l388:
 				{
-					position389, tokenIndex389 := position, tokenIndex
+					position391, tokenIndex391 := position, tokenIndex
 					{
-						position401, tokenIndex401 := position, tokenIndex
+						position403, tokenIndex403 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l402
+							goto l404
 						}
 						position++
-						goto l401
-					l402:
-						position, tokenIndex = position401, tokenIndex401
+						goto l403
+					l404:
+						position, tokenIndex = position403, tokenIndex403
 						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l403
+							goto l405
 						}
 						position++
-						goto l401
-					l403:
-						position, tokenIndex = position401, tokenIndex401
+						goto l403
+					l405:
+						position, tokenIndex = position403, tokenIndex403
 						{
-							position405, tokenIndex405 := position, tokenIndex
+							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++
-							goto l405
-						l406:
-							position, tokenIndex = position405, tokenIndex405
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l404
-							}
-							position++
 						}
-					l405:
-						goto l401
-					l404:
-						position, tokenIndex = position401, tokenIndex401
+					l407:
+						goto l403
+					l406:
+						position, tokenIndex = position403, tokenIndex403
 						if buffer[position] != rune('.') {
-							goto l407
+							goto l409
 						}
 						position++
-						goto l401
-					l407:
-						position, tokenIndex = position401, tokenIndex401
+						goto l403
+					l409:
+						position, tokenIndex = position403, tokenIndex403
 						{
-							position409, tokenIndex409 := position, tokenIndex
+							position411, tokenIndex411 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l412
+							}
+							position++
+							goto l411
+						l412:
+							position, tokenIndex = position411, tokenIndex411
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
 								goto l410
 							}
 							position++
-							goto l409
-						l410:
-							position, tokenIndex = position409, tokenIndex409
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l408
-							}
-							position++
 						}
-					l409:
-						goto l401
-					l408:
-						position, tokenIndex = position401, tokenIndex401
+					l411:
+						goto l403
+					l410:
+						position, tokenIndex = position403, tokenIndex403
 						if buffer[position] != rune('$') {
-							goto l411
+							goto l413
 						}
 						position++
-						goto l401
-					l411:
-						position, tokenIndex = position401, tokenIndex401
+						goto l403
+					l413:
+						position, tokenIndex = position403, tokenIndex403
 						if buffer[position] != rune('_') {
-							goto l389
+							goto l391
 						}
 						position++
 					}
-				l401:
-					goto l388
-				l389:
-					position, tokenIndex = position389, tokenIndex389
+				l403:
+					goto l390
+				l391:
+					position, tokenIndex = position391, tokenIndex391
 				}
-				add(ruleLocalSymbol, position387)
+				add(ruleLocalSymbol, position389)
 			}
 			return true
-		l386:
-			position, tokenIndex = position386, tokenIndex386
+		l388:
+			position, tokenIndex = position388, tokenIndex388
 			return false
 		},
 		/* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
 		func() bool {
-			position412, tokenIndex412 := position, tokenIndex
+			position414, tokenIndex414 := position, tokenIndex
 			{
-				position413 := position
+				position415 := position
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l412
+					goto l414
 				}
 				position++
-			l414:
+			l416:
 				{
-					position415, tokenIndex415 := position, tokenIndex
+					position417, tokenIndex417 := position, tokenIndex
 					{
-						position416, tokenIndex416 := position, tokenIndex
+						position418, tokenIndex418 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l419
+						}
+						position++
+						goto l418
+					l419:
+						position, tokenIndex = position418, tokenIndex418
+						if buffer[position] != rune('$') {
 							goto l417
 						}
 						position++
-						goto l416
-					l417:
-						position, tokenIndex = position416, tokenIndex416
-						if buffer[position] != rune('$') {
-							goto l415
-						}
-						position++
 					}
-				l416:
-					goto l414
-				l415:
-					position, tokenIndex = position415, tokenIndex415
+				l418:
+					goto l416
+				l417:
+					position, tokenIndex = position417, tokenIndex417
 				}
-				add(ruleLocalLabel, position413)
+				add(ruleLocalLabel, position415)
 			}
 			return true
-		l412:
-			position, tokenIndex = position412, tokenIndex412
+		l414:
+			position, tokenIndex = position414, tokenIndex414
 			return false
 		},
 		/* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
 		func() bool {
-			position418, tokenIndex418 := position, tokenIndex
+			position420, tokenIndex420 := position, tokenIndex
 			{
-				position419 := position
+				position421 := position
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l418
+					goto l420
 				}
 				position++
-			l420:
+			l422:
 				{
-					position421, tokenIndex421 := position, tokenIndex
+					position423, tokenIndex423 := position, tokenIndex
 					{
-						position422, tokenIndex422 := position, tokenIndex
+						position424, tokenIndex424 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l425
+						}
+						position++
+						goto l424
+					l425:
+						position, tokenIndex = position424, tokenIndex424
+						if buffer[position] != rune('$') {
 							goto l423
 						}
 						position++
-						goto l422
-					l423:
-						position, tokenIndex = position422, tokenIndex422
-						if buffer[position] != rune('$') {
-							goto l421
-						}
-						position++
 					}
-				l422:
-					goto l420
-				l421:
-					position, tokenIndex = position421, tokenIndex421
+				l424:
+					goto l422
+				l423:
+					position, tokenIndex = position423, tokenIndex423
 				}
 				{
-					position424, tokenIndex424 := position, tokenIndex
+					position426, tokenIndex426 := position, tokenIndex
 					if buffer[position] != rune('b') {
-						goto l425
+						goto l427
 					}
 					position++
-					goto l424
-				l425:
-					position, tokenIndex = position424, tokenIndex424
+					goto l426
+				l427:
+					position, tokenIndex = position426, tokenIndex426
 					if buffer[position] != rune('f') {
-						goto l418
+						goto l420
 					}
 					position++
 				}
-			l424:
-				add(ruleLocalLabelRef, position419)
+			l426:
+				add(ruleLocalLabelRef, position421)
 			}
 			return true
-		l418:
-			position, tokenIndex = position418, tokenIndex418
+		l420:
+			position, tokenIndex = position420, tokenIndex420
 			return false
 		},
 		/* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
 		func() bool {
-			position426, tokenIndex426 := position, tokenIndex
+			position428, tokenIndex428 := position, tokenIndex
 			{
-				position427 := position
+				position429 := position
 				if !_rules[ruleInstructionName]() {
-					goto l426
+					goto l428
 				}
 				{
-					position428, tokenIndex428 := position, tokenIndex
+					position430, tokenIndex430 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l428
+						goto l430
 					}
 					if !_rules[ruleInstructionArg]() {
-						goto l428
+						goto l430
 					}
-				l430:
+				l432:
 					{
-						position431, tokenIndex431 := position, tokenIndex
-						{
-							position432, tokenIndex432 := position, tokenIndex
-							if !_rules[ruleWS]() {
-								goto l432
-							}
-							goto l433
-						l432:
-							position, tokenIndex = position432, tokenIndex432
-						}
-					l433:
-						if buffer[position] != rune(',') {
-							goto l431
-						}
-						position++
+						position433, tokenIndex433 := position, tokenIndex
 						{
 							position434, tokenIndex434 := position, tokenIndex
 							if !_rules[ruleWS]() {
@@ -3463,1013 +3456,1009 @@
 							position, tokenIndex = position434, tokenIndex434
 						}
 					l435:
-						if !_rules[ruleInstructionArg]() {
-							goto l431
+						if buffer[position] != rune(',') {
+							goto l433
 						}
-						goto l430
-					l431:
-						position, tokenIndex = position431, tokenIndex431
+						position++
+						{
+							position436, tokenIndex436 := position, tokenIndex
+							if !_rules[ruleWS]() {
+								goto l436
+							}
+							goto l437
+						l436:
+							position, tokenIndex = position436, tokenIndex436
+						}
+					l437:
+						if !_rules[ruleInstructionArg]() {
+							goto l433
+						}
+						goto l432
+					l433:
+						position, tokenIndex = position433, tokenIndex433
 					}
-					goto l429
-				l428:
-					position, tokenIndex = position428, tokenIndex428
+					goto l431
+				l430:
+					position, tokenIndex = position430, tokenIndex430
 				}
-			l429:
-				add(ruleInstruction, position427)
+			l431:
+				add(ruleInstruction, position429)
 			}
 			return true
-		l426:
-			position, tokenIndex = position426, tokenIndex426
+		l428:
+			position, tokenIndex = position428, tokenIndex428
 			return false
 		},
 		/* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
 		func() bool {
-			position436, tokenIndex436 := position, tokenIndex
+			position438, tokenIndex438 := position, tokenIndex
 			{
-				position437 := position
+				position439 := position
 				{
-					position438, tokenIndex438 := position, tokenIndex
+					position440, tokenIndex440 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l439
+						goto l441
 					}
 					position++
-					goto l438
-				l439:
-					position, tokenIndex = position438, tokenIndex438
+					goto l440
+				l441:
+					position, tokenIndex = position440, tokenIndex440
 					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l436
+						goto l438
 					}
 					position++
 				}
-			l438:
 			l440:
+			l442:
 				{
-					position441, tokenIndex441 := position, tokenIndex
+					position443, tokenIndex443 := position, tokenIndex
 					{
-						position442, tokenIndex442 := position, tokenIndex
+						position444, tokenIndex444 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l443
-						}
-						position++
-						goto l442
-					l443:
-						position, tokenIndex = position442, tokenIndex442
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l444
-						}
-						position++
-						goto l442
-					l444:
-						position, tokenIndex = position442, tokenIndex442
-						if buffer[position] != rune('.') {
 							goto l445
 						}
 						position++
-						goto l442
+						goto l444
 					l445:
-						position, tokenIndex = position442, tokenIndex442
+						position, tokenIndex = position444, tokenIndex444
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l446
+						}
+						position++
+						goto l444
+					l446:
+						position, tokenIndex = position444, tokenIndex444
+						if buffer[position] != rune('.') {
+							goto l447
+						}
+						position++
+						goto l444
+					l447:
+						position, tokenIndex = position444, tokenIndex444
 						{
-							position446, tokenIndex446 := position, tokenIndex
+							position448, tokenIndex448 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l447
+								goto l449
 							}
 							position++
-							goto l446
-						l447:
-							position, tokenIndex = position446, tokenIndex446
+							goto l448
+						l449:
+							position, tokenIndex = position448, tokenIndex448
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l441
+								goto l443
 							}
 							position++
 						}
-					l446:
+					l448:
 					}
-				l442:
-					goto l440
-				l441:
-					position, tokenIndex = position441, tokenIndex441
+				l444:
+					goto l442
+				l443:
+					position, tokenIndex = position443, tokenIndex443
 				}
 				{
-					position448, tokenIndex448 := position, tokenIndex
+					position450, tokenIndex450 := position, tokenIndex
 					{
-						position450, tokenIndex450 := position, tokenIndex
+						position452, tokenIndex452 := position, tokenIndex
 						if buffer[position] != rune('.') {
-							goto l451
+							goto l453
 						}
 						position++
-						goto l450
-					l451:
-						position, tokenIndex = position450, tokenIndex450
+						goto l452
+					l453:
+						position, tokenIndex = position452, tokenIndex452
 						if buffer[position] != rune('+') {
-							goto l452
+							goto l454
 						}
 						position++
-						goto l450
-					l452:
-						position, tokenIndex = position450, tokenIndex450
+						goto l452
+					l454:
+						position, tokenIndex = position452, tokenIndex452
 						if buffer[position] != rune('-') {
-							goto l448
+							goto l450
 						}
 						position++
 					}
+				l452:
+					goto l451
 				l450:
-					goto l449
-				l448:
-					position, tokenIndex = position448, tokenIndex448
+					position, tokenIndex = position450, tokenIndex450
 				}
-			l449:
-				add(ruleInstructionName, position437)
+			l451:
+				add(ruleInstructionName, position439)
 			}
 			return true
-		l436:
-			position, tokenIndex = position436, tokenIndex436
+		l438:
+			position, tokenIndex = position438, tokenIndex438
 			return false
 		},
 		/* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
 		func() bool {
-			position453, tokenIndex453 := position, tokenIndex
+			position455, tokenIndex455 := position, tokenIndex
 			{
-				position454 := position
-				{
-					position455, tokenIndex455 := position, tokenIndex
-					if !_rules[ruleIndirectionIndicator]() {
-						goto l455
-					}
-					goto l456
-				l455:
-					position, tokenIndex = position455, tokenIndex455
-				}
-			l456:
+				position456 := position
 				{
 					position457, tokenIndex457 := position, tokenIndex
+					if !_rules[ruleIndirectionIndicator]() {
+						goto l457
+					}
+					goto l458
+				l457:
+					position, tokenIndex = position457, tokenIndex457
+				}
+			l458:
+				{
+					position459, tokenIndex459 := position, tokenIndex
 					if !_rules[ruleARMConstantTweak]() {
-						goto l458
-					}
-					goto l457
-				l458:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleRegisterOrConstant]() {
-						goto l459
-					}
-					goto l457
-				l459:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleLocalLabelRef]() {
 						goto l460
 					}
-					goto l457
+					goto l459
 				l460:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleTOCRefHigh]() {
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleRegisterOrConstant]() {
 						goto l461
 					}
-					goto l457
+					goto l459
 				l461:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleTOCRefLow]() {
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleLocalLabelRef]() {
 						goto l462
 					}
-					goto l457
+					goto l459
 				l462:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleGOTLocation]() {
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleTOCRefHigh]() {
 						goto l463
 					}
-					goto l457
+					goto l459
 				l463:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleGOTSymbolOffset]() {
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleTOCRefLow]() {
 						goto l464
 					}
-					goto l457
+					goto l459
 				l464:
-					position, tokenIndex = position457, tokenIndex457
-					if !_rules[ruleMemoryRef]() {
-						goto l453
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleGOTLocation]() {
+						goto l465
 					}
-				}
-			l457:
-			l465:
-				{
-					position466, tokenIndex466 := position, tokenIndex
-					if !_rules[ruleAVX512Token]() {
+					goto l459
+				l465:
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleGOTSymbolOffset]() {
 						goto l466
 					}
-					goto l465
+					goto l459
 				l466:
-					position, tokenIndex = position466, tokenIndex466
+					position, tokenIndex = position459, tokenIndex459
+					if !_rules[ruleMemoryRef]() {
+						goto l455
+					}
 				}
-				add(ruleInstructionArg, position454)
+			l459:
+			l467:
+				{
+					position468, tokenIndex468 := position, tokenIndex
+					if !_rules[ruleAVX512Token]() {
+						goto l468
+					}
+					goto l467
+				l468:
+					position, tokenIndex = position468, tokenIndex468
+				}
+				add(ruleInstructionArg, position456)
 			}
 			return true
-		l453:
-			position, tokenIndex = position453, tokenIndex453
+		l455:
+			position, tokenIndex = position455, tokenIndex455
 			return false
 		},
 		/* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
 		func() bool {
-			position467, tokenIndex467 := position, tokenIndex
-			{
-				position468 := position
-				if buffer[position] != rune('$') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('_') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('G') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('L') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('O') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('B') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('A') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('L') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('_') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('O') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('F') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('F') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('S') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('E') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('T') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('_') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('T') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('A') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('B') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('L') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('E') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('_') {
-					goto l467
-				}
-				position++
-				if buffer[position] != rune('-') {
-					goto l467
-				}
-				position++
-				if !_rules[ruleLocalSymbol]() {
-					goto l467
-				}
-				add(ruleGOTLocation, position468)
-			}
-			return true
-		l467:
-			position, tokenIndex = position467, tokenIndex467
-			return false
-		},
-		/* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
-		func() bool {
 			position469, tokenIndex469 := position, tokenIndex
 			{
 				position470 := position
-				{
-					position471, tokenIndex471 := position, tokenIndex
-					if buffer[position] != rune('$') {
-						goto l472
-					}
-					position++
-					if !_rules[ruleSymbolName]() {
-						goto l472
-					}
-					if buffer[position] != rune('@') {
-						goto l472
-					}
-					position++
-					if buffer[position] != rune('G') {
-						goto l472
-					}
-					position++
-					if buffer[position] != rune('O') {
-						goto l472
-					}
-					position++
-					if buffer[position] != rune('T') {
-						goto l472
-					}
-					position++
-					{
-						position473, tokenIndex473 := position, tokenIndex
-						if buffer[position] != rune('O') {
-							goto l473
-						}
-						position++
-						if buffer[position] != rune('F') {
-							goto l473
-						}
-						position++
-						if buffer[position] != rune('F') {
-							goto l473
-						}
-						position++
-						goto l474
-					l473:
-						position, tokenIndex = position473, tokenIndex473
-					}
-				l474:
-					goto l471
-				l472:
-					position, tokenIndex = position471, tokenIndex471
-					if buffer[position] != rune(':') {
-						goto l469
-					}
-					position++
-					{
-						position475, tokenIndex475 := position, tokenIndex
-						if buffer[position] != rune('g') {
-							goto l476
-						}
-						position++
-						goto l475
-					l476:
-						position, tokenIndex = position475, tokenIndex475
-						if buffer[position] != rune('G') {
-							goto l469
-						}
-						position++
-					}
-				l475:
-					{
-						position477, tokenIndex477 := position, tokenIndex
-						if buffer[position] != rune('o') {
-							goto l478
-						}
-						position++
-						goto l477
-					l478:
-						position, tokenIndex = position477, tokenIndex477
-						if buffer[position] != rune('O') {
-							goto l469
-						}
-						position++
-					}
-				l477:
-					{
-						position479, tokenIndex479 := position, tokenIndex
-						if buffer[position] != rune('t') {
-							goto l480
-						}
-						position++
-						goto l479
-					l480:
-						position, tokenIndex = position479, tokenIndex479
-						if buffer[position] != rune('T') {
-							goto l469
-						}
-						position++
-					}
-				l479:
-					if buffer[position] != rune(':') {
-						goto l469
-					}
-					position++
-					if !_rules[ruleSymbolName]() {
-						goto l469
-					}
+				if buffer[position] != rune('$') {
+					goto l469
 				}
-			l471:
-				add(ruleGOTSymbolOffset, position470)
+				position++
+				if buffer[position] != rune('_') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('G') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('L') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('O') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('B') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('A') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('L') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('_') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('O') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('F') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('F') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('S') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('E') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('T') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('_') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('T') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('A') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('B') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('L') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('E') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('_') {
+					goto l469
+				}
+				position++
+				if buffer[position] != rune('-') {
+					goto l469
+				}
+				position++
+				if !_rules[ruleLocalSymbol]() {
+					goto l469
+				}
+				add(ruleGOTLocation, position470)
 			}
 			return true
 		l469:
 			position, tokenIndex = position469, tokenIndex469
 			return false
 		},
-		/* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+		/* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
 		func() bool {
-			position481, tokenIndex481 := position, tokenIndex
+			position471, tokenIndex471 := position, tokenIndex
 			{
-				position482 := position
+				position472 := position
 				{
-					position483, tokenIndex483 := position, tokenIndex
-					if !_rules[ruleWS]() {
-						goto l483
-					}
-					goto l484
-				l483:
-					position, tokenIndex = position483, tokenIndex483
-				}
-			l484:
-				if buffer[position] != rune('{') {
-					goto l481
-				}
-				position++
-				{
-					position485, tokenIndex485 := position, tokenIndex
-					if buffer[position] != rune('%') {
-						goto l485
+					position473, tokenIndex473 := position, tokenIndex
+					if buffer[position] != rune('$') {
+						goto l474
 					}
 					position++
+					if !_rules[ruleSymbolName]() {
+						goto l474
+					}
+					if buffer[position] != rune('@') {
+						goto l474
+					}
+					position++
+					if buffer[position] != rune('G') {
+						goto l474
+					}
+					position++
+					if buffer[position] != rune('O') {
+						goto l474
+					}
+					position++
+					if buffer[position] != rune('T') {
+						goto l474
+					}
+					position++
+					{
+						position475, tokenIndex475 := position, tokenIndex
+						if buffer[position] != rune('O') {
+							goto l475
+						}
+						position++
+						if buffer[position] != rune('F') {
+							goto l475
+						}
+						position++
+						if buffer[position] != rune('F') {
+							goto l475
+						}
+						position++
+						goto l476
+					l475:
+						position, tokenIndex = position475, tokenIndex475
+					}
+				l476:
+					goto l473
+				l474:
+					position, tokenIndex = position473, tokenIndex473
+					if buffer[position] != rune(':') {
+						goto l471
+					}
+					position++
+					{
+						position477, tokenIndex477 := position, tokenIndex
+						if buffer[position] != rune('g') {
+							goto l478
+						}
+						position++
+						goto l477
+					l478:
+						position, tokenIndex = position477, tokenIndex477
+						if buffer[position] != rune('G') {
+							goto l471
+						}
+						position++
+					}
+				l477:
+					{
+						position479, tokenIndex479 := position, tokenIndex
+						if buffer[position] != rune('o') {
+							goto l480
+						}
+						position++
+						goto l479
+					l480:
+						position, tokenIndex = position479, tokenIndex479
+						if buffer[position] != rune('O') {
+							goto l471
+						}
+						position++
+					}
+				l479:
+					{
+						position481, tokenIndex481 := position, tokenIndex
+						if buffer[position] != rune('t') {
+							goto l482
+						}
+						position++
+						goto l481
+					l482:
+						position, tokenIndex = position481, tokenIndex481
+						if buffer[position] != rune('T') {
+							goto l471
+						}
+						position++
+					}
+				l481:
+					if buffer[position] != rune(':') {
+						goto l471
+					}
+					position++
+					if !_rules[ruleSymbolName]() {
+						goto l471
+					}
+				}
+			l473:
+				add(ruleGOTSymbolOffset, position472)
+			}
+			return true
+		l471:
+			position, tokenIndex = position471, tokenIndex471
+			return false
+		},
+		/* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
+		func() bool {
+			position483, tokenIndex483 := position, tokenIndex
+			{
+				position484 := position
+				{
+					position485, tokenIndex485 := position, tokenIndex
+					if !_rules[ruleWS]() {
+						goto l485
+					}
 					goto l486
 				l485:
 					position, tokenIndex = position485, tokenIndex485
 				}
 			l486:
-			l487:
+				if buffer[position] != rune('{') {
+					goto l483
+				}
+				position++
 				{
-					position488, tokenIndex488 := position, tokenIndex
+					position487, tokenIndex487 := position, tokenIndex
+					if buffer[position] != rune('%') {
+						goto l487
+					}
+					position++
+					goto l488
+				l487:
+					position, tokenIndex = position487, tokenIndex487
+				}
+			l488:
+			l489:
+				{
+					position490, tokenIndex490 := position, tokenIndex
 					{
-						position489, tokenIndex489 := position, tokenIndex
+						position491, tokenIndex491 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l492
+						}
+						position++
+						goto l491
+					l492:
+						position, tokenIndex = position491, tokenIndex491
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
 							goto l490
 						}
 						position++
-						goto l489
-					l490:
-						position, tokenIndex = position489, tokenIndex489
-						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l488
-						}
-						position++
 					}
-				l489:
-					goto l487
-				l488:
-					position, tokenIndex = position488, tokenIndex488
+				l491:
+					goto l489
+				l490:
+					position, tokenIndex = position490, tokenIndex490
 				}
 				if buffer[position] != rune('}') {
-					goto l481
+					goto l483
 				}
 				position++
-				add(ruleAVX512Token, position482)
+				add(ruleAVX512Token, position484)
 			}
 			return true
-		l481:
-			position, tokenIndex = position481, tokenIndex481
+		l483:
+			position, tokenIndex = position483, tokenIndex483
 			return false
 		},
 		/* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
 		func() bool {
-			position491, tokenIndex491 := position, tokenIndex
+			position493, tokenIndex493 := position, tokenIndex
 			{
-				position492 := position
+				position494 := position
 				if buffer[position] != rune('.') {
-					goto l491
+					goto l493
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l491
+					goto l493
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l491
+					goto l493
 				}
 				position++
 				if buffer[position] != rune('C') {
-					goto l491
+					goto l493
 				}
 				position++
 				if buffer[position] != rune('.') {
-					goto l491
+					goto l493
 				}
 				position++
 				if buffer[position] != rune('-') {
-					goto l491
+					goto l493
 				}
 				position++
 				{
-					position493, tokenIndex493 := position, tokenIndex
+					position495, tokenIndex495 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l494
+						goto l496
 					}
 					position++
 					if buffer[position] != rune('b') {
-						goto l494
+						goto l496
 					}
 					position++
-					goto l493
-				l494:
-					position, tokenIndex = position493, tokenIndex493
+					goto l495
+				l496:
+					position, tokenIndex = position495, tokenIndex495
 					if buffer[position] != rune('.') {
-						goto l491
+						goto l493
 					}
 					position++
 					if buffer[position] != rune('L') {
-						goto l491
+						goto l493
 					}
 					position++
 					{
-						position497, tokenIndex497 := position, tokenIndex
+						position499, tokenIndex499 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l498
-						}
-						position++
-						goto l497
-					l498:
-						position, tokenIndex = position497, tokenIndex497
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l499
-						}
-						position++
-						goto l497
-					l499:
-						position, tokenIndex = position497, tokenIndex497
-						if buffer[position] != rune('_') {
 							goto l500
 						}
 						position++
-						goto l497
+						goto l499
 					l500:
-						position, tokenIndex = position497, tokenIndex497
+						position, tokenIndex = position499, tokenIndex499
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l501
+						}
+						position++
+						goto l499
+					l501:
+						position, tokenIndex = position499, tokenIndex499
+						if buffer[position] != rune('_') {
+							goto l502
+						}
+						position++
+						goto l499
+					l502:
+						position, tokenIndex = position499, tokenIndex499
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l491
+							goto l493
 						}
 						position++
 					}
+				l499:
 				l497:
-				l495:
 					{
-						position496, tokenIndex496 := position, tokenIndex
+						position498, tokenIndex498 := position, tokenIndex
 						{
-							position501, tokenIndex501 := position, tokenIndex
+							position503, tokenIndex503 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l502
-							}
-							position++
-							goto l501
-						l502:
-							position, tokenIndex = position501, tokenIndex501
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l503
-							}
-							position++
-							goto l501
-						l503:
-							position, tokenIndex = position501, tokenIndex501
-							if buffer[position] != rune('_') {
 								goto l504
 							}
 							position++
-							goto l501
+							goto l503
 						l504:
-							position, tokenIndex = position501, tokenIndex501
+							position, tokenIndex = position503, tokenIndex503
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l505
+							}
+							position++
+							goto l503
+						l505:
+							position, tokenIndex = position503, tokenIndex503
+							if buffer[position] != rune('_') {
+								goto l506
+							}
+							position++
+							goto l503
+						l506:
+							position, tokenIndex = position503, tokenIndex503
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l496
+								goto l498
 							}
 							position++
 						}
-					l501:
-						goto l495
-					l496:
-						position, tokenIndex = position496, tokenIndex496
+					l503:
+						goto l497
+					l498:
+						position, tokenIndex = position498, tokenIndex498
 					}
 				}
-			l493:
+			l495:
 				if buffer[position] != rune('@') {
-					goto l491
+					goto l493
 				}
 				position++
 				{
-					position505, tokenIndex505 := position, tokenIndex
-					if buffer[position] != rune('h') {
-						goto l506
-					}
-					position++
-					goto l505
-				l506:
-					position, tokenIndex = position505, tokenIndex505
-					if buffer[position] != rune('H') {
-						goto l491
-					}
-					position++
-				}
-			l505:
-				{
 					position507, tokenIndex507 := position, tokenIndex
-					if buffer[position] != rune('a') {
+					if buffer[position] != rune('h') {
 						goto l508
 					}
 					position++
 					goto l507
 				l508:
 					position, tokenIndex = position507, tokenIndex507
-					if buffer[position] != rune('A') {
-						goto l491
+					if buffer[position] != rune('H') {
+						goto l493
 					}
 					position++
 				}
 			l507:
-				add(ruleTOCRefHigh, position492)
+				{
+					position509, tokenIndex509 := position, tokenIndex
+					if buffer[position] != rune('a') {
+						goto l510
+					}
+					position++
+					goto l509
+				l510:
+					position, tokenIndex = position509, tokenIndex509
+					if buffer[position] != rune('A') {
+						goto l493
+					}
+					position++
+				}
+			l509:
+				add(ruleTOCRefHigh, position494)
 			}
 			return true
-		l491:
-			position, tokenIndex = position491, tokenIndex491
+		l493:
+			position, tokenIndex = position493, tokenIndex493
 			return false
 		},
 		/* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
 		func() bool {
-			position509, tokenIndex509 := position, tokenIndex
+			position511, tokenIndex511 := position, tokenIndex
 			{
-				position510 := position
+				position512 := position
 				if buffer[position] != rune('.') {
-					goto l509
+					goto l511
 				}
 				position++
 				if buffer[position] != rune('T') {
-					goto l509
+					goto l511
 				}
 				position++
 				if buffer[position] != rune('O') {
-					goto l509
+					goto l511
 				}
 				position++
 				if buffer[position] != rune('C') {
-					goto l509
+					goto l511
 				}
 				position++
 				if buffer[position] != rune('.') {
-					goto l509
+					goto l511
 				}
 				position++
 				if buffer[position] != rune('-') {
-					goto l509
+					goto l511
 				}
 				position++
 				{
-					position511, tokenIndex511 := position, tokenIndex
+					position513, tokenIndex513 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l512
+						goto l514
 					}
 					position++
 					if buffer[position] != rune('b') {
-						goto l512
+						goto l514
 					}
 					position++
-					goto l511
-				l512:
-					position, tokenIndex = position511, tokenIndex511
+					goto l513
+				l514:
+					position, tokenIndex = position513, tokenIndex513
 					if buffer[position] != rune('.') {
-						goto l509
+						goto l511
 					}
 					position++
 					if buffer[position] != rune('L') {
-						goto l509
+						goto l511
 					}
 					position++
 					{
-						position515, tokenIndex515 := position, tokenIndex
+						position517, tokenIndex517 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l516
-						}
-						position++
-						goto l515
-					l516:
-						position, tokenIndex = position515, tokenIndex515
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l517
-						}
-						position++
-						goto l515
-					l517:
-						position, tokenIndex = position515, tokenIndex515
-						if buffer[position] != rune('_') {
 							goto l518
 						}
 						position++
-						goto l515
+						goto l517
 					l518:
-						position, tokenIndex = position515, tokenIndex515
+						position, tokenIndex = position517, tokenIndex517
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l519
+						}
+						position++
+						goto l517
+					l519:
+						position, tokenIndex = position517, tokenIndex517
+						if buffer[position] != rune('_') {
+							goto l520
+						}
+						position++
+						goto l517
+					l520:
+						position, tokenIndex = position517, tokenIndex517
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l509
+							goto l511
 						}
 						position++
 					}
+				l517:
 				l515:
-				l513:
 					{
-						position514, tokenIndex514 := position, tokenIndex
+						position516, tokenIndex516 := position, tokenIndex
 						{
-							position519, tokenIndex519 := position, tokenIndex
+							position521, tokenIndex521 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l520
-							}
-							position++
-							goto l519
-						l520:
-							position, tokenIndex = position519, tokenIndex519
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l521
-							}
-							position++
-							goto l519
-						l521:
-							position, tokenIndex = position519, tokenIndex519
-							if buffer[position] != rune('_') {
 								goto l522
 							}
 							position++
-							goto l519
+							goto l521
 						l522:
-							position, tokenIndex = position519, tokenIndex519
+							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 l514
+								goto l516
 							}
 							position++
 						}
-					l519:
-						goto l513
-					l514:
-						position, tokenIndex = position514, tokenIndex514
+					l521:
+						goto l515
+					l516:
+						position, tokenIndex = position516, tokenIndex516
 					}
 				}
-			l511:
+			l513:
 				if buffer[position] != rune('@') {
-					goto l509
+					goto l511
 				}
 				position++
 				{
-					position523, tokenIndex523 := position, tokenIndex
+					position525, tokenIndex525 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l524
+						goto l526
 					}
 					position++
-					goto l523
-				l524:
-					position, tokenIndex = position523, tokenIndex523
+					goto l525
+				l526:
+					position, tokenIndex = position525, tokenIndex525
 					if buffer[position] != rune('L') {
-						goto l509
+						goto l511
 					}
 					position++
 				}
-			l523:
-				add(ruleTOCRefLow, position510)
+			l525:
+				add(ruleTOCRefLow, position512)
 			}
 			return true
-		l509:
-			position, tokenIndex = position509, tokenIndex509
+		l511:
+			position, tokenIndex = position511, tokenIndex511
 			return false
 		},
 		/* 38 IndirectionIndicator <- <'*'> */
 		func() bool {
-			position525, tokenIndex525 := position, tokenIndex
+			position527, tokenIndex527 := position, tokenIndex
 			{
-				position526 := position
+				position528 := position
 				if buffer[position] != rune('*') {
-					goto l525
+					goto l527
 				}
 				position++
-				add(ruleIndirectionIndicator, position526)
+				add(ruleIndirectionIndicator, position528)
 			}
 			return true
-		l525:
-			position, tokenIndex = position525, tokenIndex525
+		l527:
+			position, tokenIndex = position527, tokenIndex527
 			return false
 		},
 		/* 39 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 {
-			position527, tokenIndex527 := position, tokenIndex
+			position529, tokenIndex529 := position, tokenIndex
 			{
-				position528 := position
+				position530 := position
 				{
-					position529, tokenIndex529 := position, tokenIndex
+					position531, tokenIndex531 := position, tokenIndex
 					if buffer[position] != rune('%') {
-						goto l530
+						goto l532
 					}
 					position++
 					{
-						position531, tokenIndex531 := position, tokenIndex
+						position533, tokenIndex533 := position, tokenIndex
 						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l534
+						}
+						position++
+						goto l533
+					l534:
+						position, tokenIndex = position533, tokenIndex533
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
 							goto l532
 						}
 						position++
-						goto l531
-					l532:
-						position, tokenIndex = position531, tokenIndex531
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l530
-						}
-						position++
 					}
-				l531:
 				l533:
+				l535:
 					{
-						position534, tokenIndex534 := position, tokenIndex
+						position536, tokenIndex536 := position, tokenIndex
 						{
-							position535, tokenIndex535 := position, tokenIndex
+							position537, tokenIndex537 := position, tokenIndex
 							if c := buffer[position]; c < rune('a') || c > rune('z') {
-								goto l536
-							}
-							position++
-							goto l535
-						l536:
-							position, tokenIndex = position535, tokenIndex535
-							if c := buffer[position]; c < rune('A') || c > rune('Z') {
-								goto l537
-							}
-							position++
-							goto l535
-						l537:
-							position, tokenIndex = position535, tokenIndex535
-							{
-								position538, tokenIndex538 := position, tokenIndex
-								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l539
-								}
-								position++
 								goto l538
-							l539:
-								position, tokenIndex = position538, tokenIndex538
+							}
+							position++
+							goto l537
+						l538:
+							position, tokenIndex = position537, tokenIndex537
+							if c := buffer[position]; c < rune('A') || c > rune('Z') {
+								goto l539
+							}
+							position++
+							goto l537
+						l539:
+							position, tokenIndex = position537, tokenIndex537
+							{
+								position540, tokenIndex540 := position, tokenIndex
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l534
+									goto l541
+								}
+								position++
+								goto l540
+							l541:
+								position, tokenIndex = position540, tokenIndex540
+								if c := buffer[position]; c < rune('0') || c > rune('9') {
+									goto l536
 								}
 								position++
 							}
-						l538:
+						l540:
 						}
-					l535:
-						goto l533
-					l534:
-						position, tokenIndex = position534, tokenIndex534
+					l537:
+						goto l535
+					l536:
+						position, tokenIndex = position536, tokenIndex536
 					}
-					goto l529
-				l530:
-					position, tokenIndex = position529, tokenIndex529
-					{
-						position541, tokenIndex541 := position, tokenIndex
-						if buffer[position] != rune('$') {
-							goto l541
-						}
-						position++
-						goto l542
-					l541:
-						position, tokenIndex = position541, tokenIndex541
-					}
-				l542:
+					goto l531
+				l532:
+					position, tokenIndex = position531, tokenIndex531
 					{
 						position543, tokenIndex543 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l544
+						if buffer[position] != rune('$') {
+							goto l543
 						}
-						if !_rules[ruleOffset]() {
-							goto l544
-						}
-						goto l543
-					l544:
+						position++
+						goto l544
+					l543:
 						position, tokenIndex = position543, tokenIndex543
+					}
+				l544:
+					{
+						position545, tokenIndex545 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l540
+							goto l546
+						}
+						if !_rules[ruleOffset]() {
+							goto l546
+						}
+						goto l545
+					l546:
+						position, tokenIndex = position545, tokenIndex545
+						if !_rules[ruleOffset]() {
+							goto l542
 						}
 					}
-				l543:
-					goto l529
-				l540:
-					position, tokenIndex = position529, tokenIndex529
+				l545:
+					goto l531
+				l542:
+					position, tokenIndex = position531, tokenIndex531
 					if buffer[position] != rune('#') {
-						goto l545
+						goto l547
 					}
 					position++
 					if !_rules[ruleOffset]() {
-						goto l545
+						goto l547
 					}
 					{
-						position546, tokenIndex546 := position, tokenIndex
+						position548, tokenIndex548 := position, tokenIndex
 						if buffer[position] != rune('*') {
-							goto l546
+							goto l548
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l546
+							goto l548
 						}
 						position++
-					l548:
+					l550:
 						{
-							position549, tokenIndex549 := position, tokenIndex
+							position551, tokenIndex551 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l549
+								goto l551
 							}
 							position++
-							goto l548
-						l549:
-							position, tokenIndex = position549, tokenIndex549
+							goto l550
+						l551:
+							position, tokenIndex = position551, tokenIndex551
 						}
 						{
-							position550, tokenIndex550 := position, tokenIndex
+							position552, tokenIndex552 := position, tokenIndex
 							if buffer[position] != rune('-') {
-								goto l550
+								goto l552
 							}
 							position++
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l550
+								goto l552
 							}
 							position++
-						l552:
+						l554:
 							{
-								position553, tokenIndex553 := position, tokenIndex
+								position555, tokenIndex555 := position, tokenIndex
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l553
+									goto l555
 								}
 								position++
-								goto l552
-							l553:
-								position, tokenIndex = position553, tokenIndex553
+								goto l554
+							l555:
+								position, tokenIndex = position555, tokenIndex555
 							}
-							goto l551
-						l550:
-							position, tokenIndex = position550, tokenIndex550
+							goto l553
+						l552:
+							position, tokenIndex = position552, tokenIndex552
 						}
-					l551:
-						goto l547
-					l546:
-						position, tokenIndex = position546, tokenIndex546
+					l553:
+						goto l549
+					l548:
+						position, tokenIndex = position548, tokenIndex548
 					}
+				l549:
+					goto l531
 				l547:
-					goto l529
-				l545:
-					position, tokenIndex = position529, tokenIndex529
+					position, tokenIndex = position531, tokenIndex531
 					if buffer[position] != rune('#') {
-						goto l554
-					}
-					position++
-					{
-						position555, tokenIndex555 := position, tokenIndex
-						if buffer[position] != rune('~') {
-							goto l555
-						}
-						position++
 						goto l556
-					l555:
-						position, tokenIndex = position555, tokenIndex555
-					}
-				l556:
-					if buffer[position] != rune('(') {
-						goto l554
-					}
-					position++
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l554
 					}
 					position++
 					{
 						position557, tokenIndex557 := position, tokenIndex
-						if !_rules[ruleWS]() {
+						if buffer[position] != rune('~') {
 							goto l557
 						}
+						position++
 						goto l558
 					l557:
 						position, tokenIndex = position557, tokenIndex557
 					}
 				l558:
-					if buffer[position] != rune('<') {
-						goto l554
+					if buffer[position] != rune('(') {
+						goto l556
 					}
 					position++
-					if buffer[position] != rune('<') {
-						goto l554
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l556
 					}
 					position++
 					{
@@ -4482,1506 +4471,1514 @@
 						position, tokenIndex = position559, tokenIndex559
 					}
 				l560:
+					if buffer[position] != rune('<') {
+						goto l556
+					}
+					position++
+					if buffer[position] != rune('<') {
+						goto l556
+					}
+					position++
+					{
+						position561, tokenIndex561 := position, tokenIndex
+						if !_rules[ruleWS]() {
+							goto l561
+						}
+						goto l562
+					l561:
+						position, tokenIndex = position561, tokenIndex561
+					}
+				l562:
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l554
+						goto l556
 					}
 					position++
 					if buffer[position] != rune(')') {
-						goto l554
+						goto l556
 					}
 					position++
-					goto l529
-				l554:
-					position, tokenIndex = position529, tokenIndex529
+					goto l531
+				l556:
+					position, tokenIndex = position531, tokenIndex531
 					if !_rules[ruleARMRegister]() {
-						goto l527
+						goto l529
 					}
 				}
-			l529:
+			l531:
 				{
-					position561, tokenIndex561 := position, tokenIndex
+					position563, tokenIndex563 := position, tokenIndex
 					{
-						position562, tokenIndex562 := position, tokenIndex
+						position564, tokenIndex564 := position, tokenIndex
 						if buffer[position] != rune('f') {
-							goto l563
-						}
-						position++
-						goto l562
-					l563:
-						position, tokenIndex = position562, tokenIndex562
-						if buffer[position] != rune('b') {
-							goto l564
-						}
-						position++
-						goto l562
-					l564:
-						position, tokenIndex = position562, tokenIndex562
-						if buffer[position] != rune(':') {
 							goto l565
 						}
 						position++
-						goto l562
+						goto l564
 					l565:
-						position, tokenIndex = position562, tokenIndex562
-						if buffer[position] != rune('(') {
+						position, tokenIndex = position564, tokenIndex564
+						if buffer[position] != rune('b') {
 							goto l566
 						}
 						position++
-						goto l562
+						goto l564
 					l566:
-						position, tokenIndex = position562, tokenIndex562
-						if buffer[position] != rune('+') {
+						position, tokenIndex = position564, tokenIndex564
+						if buffer[position] != rune(':') {
 							goto l567
 						}
 						position++
-						goto l562
+						goto l564
 					l567:
-						position, tokenIndex = position562, tokenIndex562
+						position, tokenIndex = position564, tokenIndex564
+						if buffer[position] != rune('(') {
+							goto l568
+						}
+						position++
+						goto l564
+					l568:
+						position, tokenIndex = position564, tokenIndex564
+						if buffer[position] != rune('+') {
+							goto l569
+						}
+						position++
+						goto l564
+					l569:
+						position, tokenIndex = position564, tokenIndex564
 						if buffer[position] != rune('-') {
-							goto l561
+							goto l563
 						}
 						position++
 					}
-				l562:
-					goto l527
-				l561:
-					position, tokenIndex = position561, tokenIndex561
+				l564:
+					goto l529
+				l563:
+					position, tokenIndex = position563, tokenIndex563
 				}
-				add(ruleRegisterOrConstant, position528)
+				add(ruleRegisterOrConstant, position530)
 			}
 			return true
-		l527:
-			position, tokenIndex = position527, tokenIndex527
+		l529:
+			position, tokenIndex = position529, tokenIndex529
 			return false
 		},
 		/* 40 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */
 		func() bool {
-			position568, tokenIndex568 := position, tokenIndex
+			position570, tokenIndex570 := position, tokenIndex
 			{
-				position569 := position
+				position571 := position
 				{
-					position570, tokenIndex570 := position, tokenIndex
-					{
-						position572, tokenIndex572 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l573
-						}
-						position++
-						goto l572
-					l573:
-						position, tokenIndex = position572, tokenIndex572
-						if buffer[position] != rune('L') {
-							goto l571
-						}
-						position++
-					}
-				l572:
+					position572, tokenIndex572 := position, tokenIndex
 					{
 						position574, tokenIndex574 := position, tokenIndex
-						if buffer[position] != rune('s') {
+						if buffer[position] != rune('l') {
 							goto l575
 						}
 						position++
 						goto l574
 					l575:
 						position, tokenIndex = position574, tokenIndex574
-						if buffer[position] != rune('S') {
-							goto l571
+						if buffer[position] != rune('L') {
+							goto l573
 						}
 						position++
 					}
 				l574:
 					{
 						position576, tokenIndex576 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('s') {
 							goto l577
 						}
 						position++
 						goto l576
 					l577:
 						position, tokenIndex = position576, tokenIndex576
-						if buffer[position] != rune('L') {
-							goto l571
+						if buffer[position] != rune('S') {
+							goto l573
 						}
 						position++
 					}
 				l576:
-					goto l570
-				l571:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position579, tokenIndex579 := position, tokenIndex
-						if buffer[position] != rune('s') {
-							goto l580
+						position578, tokenIndex578 := position, tokenIndex
+						if buffer[position] != rune('l') {
+							goto l579
 						}
 						position++
-						goto l579
-					l580:
-						position, tokenIndex = position579, tokenIndex579
-						if buffer[position] != rune('S') {
-							goto l578
+						goto l578
+					l579:
+						position, tokenIndex = position578, tokenIndex578
+						if buffer[position] != rune('L') {
+							goto l573
 						}
 						position++
 					}
-				l579:
+				l578:
+					goto l572
+				l573:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position581, tokenIndex581 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('s') {
 							goto l582
 						}
 						position++
 						goto l581
 					l582:
 						position, tokenIndex = position581, tokenIndex581
-						if buffer[position] != rune('X') {
-							goto l578
+						if buffer[position] != rune('S') {
+							goto l580
 						}
 						position++
 					}
 				l581:
 					{
 						position583, tokenIndex583 := position, tokenIndex
-						if buffer[position] != rune('t') {
+						if buffer[position] != rune('x') {
 							goto l584
 						}
 						position++
 						goto l583
 					l584:
 						position, tokenIndex = position583, tokenIndex583
-						if buffer[position] != rune('T') {
-							goto l578
+						if buffer[position] != rune('X') {
+							goto l580
 						}
 						position++
 					}
 				l583:
 					{
 						position585, tokenIndex585 := position, tokenIndex
-						if buffer[position] != rune('w') {
+						if buffer[position] != rune('t') {
 							goto l586
 						}
 						position++
 						goto l585
 					l586:
 						position, tokenIndex = position585, tokenIndex585
-						if buffer[position] != rune('W') {
-							goto l578
+						if buffer[position] != rune('T') {
+							goto l580
 						}
 						position++
 					}
 				l585:
-					goto l570
-				l578:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position588, tokenIndex588 := position, tokenIndex
-						if buffer[position] != rune('s') {
-							goto l589
+						position587, tokenIndex587 := position, tokenIndex
+						if buffer[position] != rune('w') {
+							goto l588
 						}
 						position++
-						goto l588
-					l589:
-						position, tokenIndex = position588, tokenIndex588
-						if buffer[position] != rune('S') {
-							goto l587
+						goto l587
+					l588:
+						position, tokenIndex = position587, tokenIndex587
+						if buffer[position] != rune('W') {
+							goto l580
 						}
 						position++
 					}
-				l588:
+				l587:
+					goto l572
+				l580:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position590, tokenIndex590 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('s') {
 							goto l591
 						}
 						position++
 						goto l590
 					l591:
 						position, tokenIndex = position590, tokenIndex590
-						if buffer[position] != rune('X') {
-							goto l587
+						if buffer[position] != rune('S') {
+							goto l589
 						}
 						position++
 					}
 				l590:
 					{
 						position592, tokenIndex592 := position, tokenIndex
-						if buffer[position] != rune('t') {
+						if buffer[position] != rune('x') {
 							goto l593
 						}
 						position++
 						goto l592
 					l593:
 						position, tokenIndex = position592, tokenIndex592
-						if buffer[position] != rune('T') {
-							goto l587
+						if buffer[position] != rune('X') {
+							goto l589
 						}
 						position++
 					}
 				l592:
 					{
 						position594, tokenIndex594 := position, tokenIndex
-						if buffer[position] != rune('b') {
+						if buffer[position] != rune('t') {
 							goto l595
 						}
 						position++
 						goto l594
 					l595:
 						position, tokenIndex = position594, tokenIndex594
-						if buffer[position] != rune('B') {
-							goto l587
+						if buffer[position] != rune('T') {
+							goto l589
 						}
 						position++
 					}
 				l594:
-					goto l570
-				l587:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position597, tokenIndex597 := position, tokenIndex
-						if buffer[position] != rune('u') {
-							goto l598
+						position596, tokenIndex596 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l597
 						}
 						position++
-						goto l597
-					l598:
-						position, tokenIndex = position597, tokenIndex597
-						if buffer[position] != rune('U') {
-							goto l596
+						goto l596
+					l597:
+						position, tokenIndex = position596, tokenIndex596
+						if buffer[position] != rune('B') {
+							goto l589
 						}
 						position++
 					}
-				l597:
+				l596:
+					goto l572
+				l589:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position599, tokenIndex599 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('u') {
 							goto l600
 						}
 						position++
 						goto l599
 					l600:
 						position, tokenIndex = position599, tokenIndex599
-						if buffer[position] != rune('X') {
-							goto l596
+						if buffer[position] != rune('U') {
+							goto l598
 						}
 						position++
 					}
 				l599:
 					{
 						position601, tokenIndex601 := position, tokenIndex
-						if buffer[position] != rune('t') {
+						if buffer[position] != rune('x') {
 							goto l602
 						}
 						position++
 						goto l601
 					l602:
 						position, tokenIndex = position601, tokenIndex601
-						if buffer[position] != rune('T') {
-							goto l596
+						if buffer[position] != rune('X') {
+							goto l598
 						}
 						position++
 					}
 				l601:
 					{
 						position603, tokenIndex603 := position, tokenIndex
-						if buffer[position] != rune('w') {
+						if buffer[position] != rune('t') {
 							goto l604
 						}
 						position++
 						goto l603
 					l604:
 						position, tokenIndex = position603, tokenIndex603
-						if buffer[position] != rune('W') {
-							goto l596
+						if buffer[position] != rune('T') {
+							goto l598
 						}
 						position++
 					}
 				l603:
-					goto l570
-				l596:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position606, tokenIndex606 := position, tokenIndex
-						if buffer[position] != rune('u') {
-							goto l607
+						position605, tokenIndex605 := position, tokenIndex
+						if buffer[position] != rune('w') {
+							goto l606
 						}
 						position++
-						goto l606
-					l607:
-						position, tokenIndex = position606, tokenIndex606
-						if buffer[position] != rune('U') {
-							goto l605
+						goto l605
+					l606:
+						position, tokenIndex = position605, tokenIndex605
+						if buffer[position] != rune('W') {
+							goto l598
 						}
 						position++
 					}
-				l606:
+				l605:
+					goto l572
+				l598:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position608, tokenIndex608 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('u') {
 							goto l609
 						}
 						position++
 						goto l608
 					l609:
 						position, tokenIndex = position608, tokenIndex608
-						if buffer[position] != rune('X') {
-							goto l605
+						if buffer[position] != rune('U') {
+							goto l607
 						}
 						position++
 					}
 				l608:
 					{
 						position610, tokenIndex610 := position, tokenIndex
-						if buffer[position] != rune('t') {
+						if buffer[position] != rune('x') {
 							goto l611
 						}
 						position++
 						goto l610
 					l611:
 						position, tokenIndex = position610, tokenIndex610
-						if buffer[position] != rune('T') {
-							goto l605
+						if buffer[position] != rune('X') {
+							goto l607
 						}
 						position++
 					}
 				l610:
 					{
 						position612, tokenIndex612 := position, tokenIndex
-						if buffer[position] != rune('b') {
+						if buffer[position] != rune('t') {
 							goto l613
 						}
 						position++
 						goto l612
 					l613:
 						position, tokenIndex = position612, tokenIndex612
-						if buffer[position] != rune('B') {
-							goto l605
+						if buffer[position] != rune('T') {
+							goto l607
 						}
 						position++
 					}
 				l612:
-					goto l570
-				l605:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position615, tokenIndex615 := position, tokenIndex
-						if buffer[position] != rune('l') {
-							goto l616
+						position614, tokenIndex614 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l615
 						}
 						position++
-						goto l615
-					l616:
-						position, tokenIndex = position615, tokenIndex615
-						if buffer[position] != rune('L') {
-							goto l614
+						goto l614
+					l615:
+						position, tokenIndex = position614, tokenIndex614
+						if buffer[position] != rune('B') {
+							goto l607
 						}
 						position++
 					}
-				l615:
+				l614:
+					goto l572
+				l607:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position617, tokenIndex617 := position, tokenIndex
-						if buffer[position] != rune('s') {
+						if buffer[position] != rune('l') {
 							goto l618
 						}
 						position++
 						goto l617
 					l618:
 						position, tokenIndex = position617, tokenIndex617
-						if buffer[position] != rune('S') {
-							goto l614
+						if buffer[position] != rune('L') {
+							goto l616
 						}
 						position++
 					}
 				l617:
 					{
 						position619, tokenIndex619 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('s') {
 							goto l620
 						}
 						position++
 						goto l619
 					l620:
 						position, tokenIndex = position619, tokenIndex619
-						if buffer[position] != rune('R') {
-							goto l614
+						if buffer[position] != rune('S') {
+							goto l616
 						}
 						position++
 					}
 				l619:
-					goto l570
-				l614:
-					position, tokenIndex = position570, tokenIndex570
 					{
-						position622, tokenIndex622 := position, tokenIndex
+						position621, tokenIndex621 := position, tokenIndex
 						if buffer[position] != rune('r') {
-							goto l623
+							goto l622
 						}
 						position++
-						goto l622
-					l623:
-						position, tokenIndex = position622, tokenIndex622
+						goto l621
+					l622:
+						position, tokenIndex = position621, tokenIndex621
 						if buffer[position] != rune('R') {
-							goto l621
+							goto l616
 						}
 						position++
 					}
-				l622:
+				l621:
+					goto l572
+				l616:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position624, tokenIndex624 := position, tokenIndex
-						if buffer[position] != rune('o') {
+						if buffer[position] != rune('r') {
 							goto l625
 						}
 						position++
 						goto l624
 					l625:
 						position, tokenIndex = position624, tokenIndex624
-						if buffer[position] != rune('O') {
-							goto l621
+						if buffer[position] != rune('R') {
+							goto l623
 						}
 						position++
 					}
 				l624:
 					{
 						position626, tokenIndex626 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('o') {
 							goto l627
 						}
 						position++
 						goto l626
 					l627:
 						position, tokenIndex = position626, tokenIndex626
-						if buffer[position] != rune('R') {
-							goto l621
+						if buffer[position] != rune('O') {
+							goto l623
 						}
 						position++
 					}
 				l626:
-					goto l570
-				l621:
-					position, tokenIndex = position570, tokenIndex570
 					{
 						position628, tokenIndex628 := position, tokenIndex
-						if buffer[position] != rune('a') {
+						if buffer[position] != rune('r') {
 							goto l629
 						}
 						position++
 						goto l628
 					l629:
 						position, tokenIndex = position628, tokenIndex628
-						if buffer[position] != rune('A') {
-							goto l568
+						if buffer[position] != rune('R') {
+							goto l623
 						}
 						position++
 					}
 				l628:
+					goto l572
+				l623:
+					position, tokenIndex = position572, tokenIndex572
 					{
 						position630, tokenIndex630 := position, tokenIndex
-						if buffer[position] != rune('s') {
+						if buffer[position] != rune('a') {
 							goto l631
 						}
 						position++
 						goto l630
 					l631:
 						position, tokenIndex = position630, tokenIndex630
-						if buffer[position] != rune('S') {
-							goto l568
+						if buffer[position] != rune('A') {
+							goto l570
 						}
 						position++
 					}
 				l630:
 					{
 						position632, tokenIndex632 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('s') {
 							goto l633
 						}
 						position++
 						goto l632
 					l633:
 						position, tokenIndex = position632, tokenIndex632
-						if buffer[position] != rune('R') {
-							goto l568
+						if buffer[position] != rune('S') {
+							goto l570
 						}
 						position++
 					}
 				l632:
-				}
-			l570:
-				{
-					position634, tokenIndex634 := position, tokenIndex
-					if !_rules[ruleWS]() {
+					{
+						position634, tokenIndex634 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l635
+						}
+						position++
 						goto l634
+					l635:
+						position, tokenIndex = position634, tokenIndex634
+						if buffer[position] != rune('R') {
+							goto l570
+						}
+						position++
+					}
+				l634:
+				}
+			l572:
+				{
+					position636, tokenIndex636 := position, tokenIndex
+					if !_rules[ruleWS]() {
+						goto l636
 					}
 					if buffer[position] != rune('#') {
-						goto l634
+						goto l636
 					}
 					position++
 					if !_rules[ruleOffset]() {
-						goto l634
+						goto l636
 					}
-					goto l635
-				l634:
-					position, tokenIndex = position634, tokenIndex634
+					goto l637
+				l636:
+					position, tokenIndex = position636, tokenIndex636
 				}
-			l635:
-				add(ruleARMConstantTweak, position569)
+			l637:
+				add(ruleARMConstantTweak, position571)
 			}
 			return true
-		l568:
-			position, tokenIndex = position568, tokenIndex568
+		l570:
+			position, tokenIndex = position570, tokenIndex570
 			return false
 		},
 		/* 41 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
 		func() bool {
-			position636, tokenIndex636 := position, tokenIndex
+			position638, tokenIndex638 := position, tokenIndex
 			{
-				position637 := position
+				position639 := position
 				{
-					position638, tokenIndex638 := position, tokenIndex
-					{
-						position640, tokenIndex640 := position, tokenIndex
-						if buffer[position] != rune('s') {
-							goto l641
-						}
-						position++
-						goto l640
-					l641:
-						position, tokenIndex = position640, tokenIndex640
-						if buffer[position] != rune('S') {
-							goto l639
-						}
-						position++
-					}
-				l640:
+					position640, tokenIndex640 := position, tokenIndex
 					{
 						position642, tokenIndex642 := position, tokenIndex
-						if buffer[position] != rune('p') {
+						if buffer[position] != rune('s') {
 							goto l643
 						}
 						position++
 						goto l642
 					l643:
 						position, tokenIndex = position642, tokenIndex642
-						if buffer[position] != rune('P') {
-							goto l639
+						if buffer[position] != rune('S') {
+							goto l641
 						}
 						position++
 					}
 				l642:
-					goto l638
-				l639:
-					position, tokenIndex = position638, tokenIndex638
 					{
-						position645, tokenIndex645 := position, tokenIndex
+						position644, tokenIndex644 := position, tokenIndex
+						if buffer[position] != rune('p') {
+							goto l645
+						}
+						position++
+						goto l644
+					l645:
+						position, tokenIndex = position644, tokenIndex644
+						if buffer[position] != rune('P') {
+							goto l641
+						}
+						position++
+					}
+				l644:
+					goto l640
+				l641:
+					position, tokenIndex = position640, tokenIndex640
+					{
+						position647, tokenIndex647 := position, tokenIndex
 						if buffer[position] != rune('x') {
-							goto l646
-						}
-						position++
-						goto l645
-					l646:
-						position, tokenIndex = position645, tokenIndex645
-						if buffer[position] != rune('w') {
-							goto l647
-						}
-						position++
-						goto l645
-					l647:
-						position, tokenIndex = position645, tokenIndex645
-						if buffer[position] != rune('d') {
 							goto l648
 						}
 						position++
-						goto l645
+						goto l647
 					l648:
-						position, tokenIndex = position645, tokenIndex645
-						if buffer[position] != rune('q') {
+						position, tokenIndex = position647, tokenIndex647
+						if buffer[position] != rune('w') {
 							goto l649
 						}
 						position++
-						goto l645
+						goto l647
 					l649:
-						position, tokenIndex = position645, tokenIndex645
-						if buffer[position] != rune('s') {
-							goto l644
-						}
-						position++
-					}
-				l645:
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l644
-					}
-					position++
-					{
-						position650, tokenIndex650 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						position, tokenIndex = position647, tokenIndex647
+						if buffer[position] != rune('d') {
 							goto l650
 						}
 						position++
-						goto l651
+						goto l647
 					l650:
-						position, tokenIndex = position650, tokenIndex650
-					}
-				l651:
-					goto l638
-				l644:
-					position, tokenIndex = position638, tokenIndex638
-					{
-						position653, tokenIndex653 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l654
+						position, tokenIndex = position647, tokenIndex647
+						if buffer[position] != rune('q') {
+							goto l651
 						}
 						position++
-						goto l653
-					l654:
-						position, tokenIndex = position653, tokenIndex653
-						if buffer[position] != rune('X') {
+						goto l647
+					l651:
+						position, tokenIndex = position647, tokenIndex647
+						if buffer[position] != rune('s') {
+							goto l646
+						}
+						position++
+					}
+				l647:
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l646
+					}
+					position++
+					{
+						position652, tokenIndex652 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l652
 						}
 						position++
+						goto l653
+					l652:
+						position, tokenIndex = position652, tokenIndex652
 					}
 				l653:
+					goto l640
+				l646:
+					position, tokenIndex = position640, tokenIndex640
 					{
 						position655, tokenIndex655 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						if buffer[position] != rune('x') {
 							goto l656
 						}
 						position++
 						goto l655
 					l656:
 						position, tokenIndex = position655, tokenIndex655
-						if buffer[position] != rune('Z') {
-							goto l652
+						if buffer[position] != rune('X') {
+							goto l654
 						}
 						position++
 					}
 				l655:
 					{
 						position657, tokenIndex657 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('z') {
 							goto l658
 						}
 						position++
 						goto l657
 					l658:
 						position, tokenIndex = position657, tokenIndex657
-						if buffer[position] != rune('R') {
-							goto l652
+						if buffer[position] != rune('Z') {
+							goto l654
 						}
 						position++
 					}
 				l657:
-					goto l638
-				l652:
-					position, tokenIndex = position638, tokenIndex638
 					{
-						position660, tokenIndex660 := position, tokenIndex
-						if buffer[position] != rune('w') {
-							goto l661
+						position659, tokenIndex659 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l660
 						}
 						position++
-						goto l660
-					l661:
-						position, tokenIndex = position660, tokenIndex660
-						if buffer[position] != rune('W') {
-							goto l659
+						goto l659
+					l660:
+						position, tokenIndex = position659, tokenIndex659
+						if buffer[position] != rune('R') {
+							goto l654
 						}
 						position++
 					}
-				l660:
+				l659:
+					goto l640
+				l654:
+					position, tokenIndex = position640, tokenIndex640
 					{
 						position662, tokenIndex662 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						if buffer[position] != rune('w') {
 							goto l663
 						}
 						position++
 						goto l662
 					l663:
 						position, tokenIndex = position662, tokenIndex662
-						if buffer[position] != rune('Z') {
-							goto l659
+						if buffer[position] != rune('W') {
+							goto l661
 						}
 						position++
 					}
 				l662:
 					{
 						position664, tokenIndex664 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('z') {
 							goto l665
 						}
 						position++
 						goto l664
 					l665:
 						position, tokenIndex = position664, tokenIndex664
-						if buffer[position] != rune('R') {
-							goto l659
+						if buffer[position] != rune('Z') {
+							goto l661
 						}
 						position++
 					}
 				l664:
-					goto l638
-				l659:
-					position, tokenIndex = position638, tokenIndex638
-					if !_rules[ruleARMVectorRegister]() {
-						goto l666
-					}
-					goto l638
-				l666:
-					position, tokenIndex = position638, tokenIndex638
-					if buffer[position] != rune('{') {
-						goto l636
-					}
-					position++
 					{
-						position667, tokenIndex667 := position, tokenIndex
-						if !_rules[ruleWS]() {
+						position666, tokenIndex666 := position, tokenIndex
+						if buffer[position] != rune('r') {
 							goto l667
 						}
-						goto l668
+						position++
+						goto l666
 					l667:
-						position, tokenIndex = position667, tokenIndex667
-					}
-				l668:
-					if !_rules[ruleARMVectorRegister]() {
-						goto l636
-					}
-				l669:
-					{
-						position670, tokenIndex670 := position, tokenIndex
-						if buffer[position] != rune(',') {
-							goto l670
+						position, tokenIndex = position666, tokenIndex666
+						if buffer[position] != rune('R') {
+							goto l661
 						}
 						position++
-						{
-							position671, tokenIndex671 := position, tokenIndex
-							if !_rules[ruleWS]() {
-								goto l671
-							}
-							goto l672
-						l671:
-							position, tokenIndex = position671, tokenIndex671
-						}
-					l672:
-						if !_rules[ruleARMVectorRegister]() {
-							goto l670
-						}
-						goto l669
-					l670:
-						position, tokenIndex = position670, tokenIndex670
 					}
-					{
-						position673, tokenIndex673 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l673
-						}
-						goto l674
-					l673:
-						position, tokenIndex = position673, tokenIndex673
+				l666:
+					goto l640
+				l661:
+					position, tokenIndex = position640, tokenIndex640
+					if !_rules[ruleARMVectorRegister]() {
+						goto l668
 					}
-				l674:
-					if buffer[position] != rune('}') {
-						goto l636
+					goto l640
+				l668:
+					position, tokenIndex = position640, tokenIndex640
+					if buffer[position] != rune('{') {
+						goto l638
 					}
 					position++
 					{
-						position675, tokenIndex675 := position, tokenIndex
-						if buffer[position] != rune('[') {
-							goto l675
+						position669, tokenIndex669 := position, tokenIndex
+						if !_rules[ruleWS]() {
+							goto l669
 						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l675
+						goto l670
+					l669:
+						position, tokenIndex = position669, tokenIndex669
+					}
+				l670:
+					if !_rules[ruleARMVectorRegister]() {
+						goto l638
+					}
+				l671:
+					{
+						position672, tokenIndex672 := position, tokenIndex
+						if buffer[position] != rune(',') {
+							goto l672
 						}
 						position++
 						{
-							position677, tokenIndex677 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l677
+							position673, tokenIndex673 := position, tokenIndex
+							if !_rules[ruleWS]() {
+								goto l673
 							}
-							position++
-							goto l678
-						l677:
-							position, tokenIndex = position677, tokenIndex677
+							goto l674
+						l673:
+							position, tokenIndex = position673, tokenIndex673
 						}
-					l678:
-						if buffer[position] != rune(']') {
+					l674:
+						if !_rules[ruleARMVectorRegister]() {
+							goto l672
+						}
+						goto l671
+					l672:
+						position, tokenIndex = position672, tokenIndex672
+					}
+					{
+						position675, tokenIndex675 := position, tokenIndex
+						if !_rules[ruleWS]() {
 							goto l675
 						}
-						position++
 						goto l676
 					l675:
 						position, tokenIndex = position675, tokenIndex675
 					}
 				l676:
+					if buffer[position] != rune('}') {
+						goto l638
+					}
+					position++
+					{
+						position677, tokenIndex677 := position, tokenIndex
+						if buffer[position] != rune('[') {
+							goto l677
+						}
+						position++
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l677
+						}
+						position++
+						{
+							position679, tokenIndex679 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l679
+							}
+							position++
+							goto l680
+						l679:
+							position, tokenIndex = position679, tokenIndex679
+						}
+					l680:
+						if buffer[position] != rune(']') {
+							goto l677
+						}
+						position++
+						goto l678
+					l677:
+						position, tokenIndex = position677, tokenIndex677
+					}
+				l678:
 				}
-			l638:
-				add(ruleARMRegister, position637)
+			l640:
+				add(ruleARMRegister, position639)
 			}
 			return true
-		l636:
-			position, tokenIndex = position636, tokenIndex636
+		l638:
+			position, tokenIndex = position638, tokenIndex638
 			return false
 		},
 		/* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
 		func() bool {
-			position679, tokenIndex679 := position, tokenIndex
+			position681, tokenIndex681 := position, tokenIndex
 			{
-				position680 := position
+				position682 := position
 				{
-					position681, tokenIndex681 := position, tokenIndex
+					position683, tokenIndex683 := position, tokenIndex
 					if buffer[position] != rune('v') {
-						goto l682
+						goto l684
 					}
 					position++
-					goto l681
-				l682:
-					position, tokenIndex = position681, tokenIndex681
+					goto l683
+				l684:
+					position, tokenIndex = position683, tokenIndex683
 					if buffer[position] != rune('V') {
-						goto l679
+						goto l681
 					}
 					position++
 				}
-			l681:
+			l683:
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l679
+					goto l681
 				}
 				position++
 				{
-					position683, tokenIndex683 := position, tokenIndex
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l683
-					}
-					position++
-					goto l684
-				l683:
-					position, tokenIndex = position683, tokenIndex683
-				}
-			l684:
-				{
 					position685, tokenIndex685 := position, tokenIndex
-					if buffer[position] != rune('.') {
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
 						goto l685
 					}
 					position++
-				l687:
-					{
-						position688, tokenIndex688 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l688
-						}
-						position++
-						goto l687
-					l688:
-						position, tokenIndex = position688, tokenIndex688
-					}
-					{
-						position689, tokenIndex689 := position, tokenIndex
-						if buffer[position] != rune('b') {
-							goto l690
-						}
-						position++
-						goto l689
-					l690:
-						position, tokenIndex = position689, tokenIndex689
-						if buffer[position] != rune('s') {
-							goto l691
-						}
-						position++
-						goto l689
-					l691:
-						position, tokenIndex = position689, tokenIndex689
-						if buffer[position] != rune('d') {
-							goto l692
-						}
-						position++
-						goto l689
-					l692:
-						position, tokenIndex = position689, tokenIndex689
-						if buffer[position] != rune('h') {
-							goto l693
-						}
-						position++
-						goto l689
-					l693:
-						position, tokenIndex = position689, tokenIndex689
-						if buffer[position] != rune('q') {
-							goto l685
-						}
-						position++
-					}
-				l689:
-					{
-						position694, tokenIndex694 := position, tokenIndex
-						if buffer[position] != rune('[') {
-							goto l694
-						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l694
-						}
-						position++
-						{
-							position696, tokenIndex696 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l696
-							}
-							position++
-							goto l697
-						l696:
-							position, tokenIndex = position696, tokenIndex696
-						}
-					l697:
-						if buffer[position] != rune(']') {
-							goto l694
-						}
-						position++
-						goto l695
-					l694:
-						position, tokenIndex = position694, tokenIndex694
-					}
-				l695:
 					goto l686
 				l685:
 					position, tokenIndex = position685, tokenIndex685
 				}
 			l686:
-				add(ruleARMVectorRegister, position680)
+				{
+					position687, tokenIndex687 := position, tokenIndex
+					if buffer[position] != rune('.') {
+						goto l687
+					}
+					position++
+				l689:
+					{
+						position690, tokenIndex690 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l690
+						}
+						position++
+						goto l689
+					l690:
+						position, tokenIndex = position690, tokenIndex690
+					}
+					{
+						position691, tokenIndex691 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l692
+						}
+						position++
+						goto l691
+					l692:
+						position, tokenIndex = position691, tokenIndex691
+						if buffer[position] != rune('s') {
+							goto l693
+						}
+						position++
+						goto l691
+					l693:
+						position, tokenIndex = position691, tokenIndex691
+						if buffer[position] != rune('d') {
+							goto l694
+						}
+						position++
+						goto l691
+					l694:
+						position, tokenIndex = position691, tokenIndex691
+						if buffer[position] != rune('h') {
+							goto l695
+						}
+						position++
+						goto l691
+					l695:
+						position, tokenIndex = position691, tokenIndex691
+						if buffer[position] != rune('q') {
+							goto l687
+						}
+						position++
+					}
+				l691:
+					{
+						position696, tokenIndex696 := position, tokenIndex
+						if buffer[position] != rune('[') {
+							goto l696
+						}
+						position++
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l696
+						}
+						position++
+						{
+							position698, tokenIndex698 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l698
+							}
+							position++
+							goto l699
+						l698:
+							position, tokenIndex = position698, tokenIndex698
+						}
+					l699:
+						if buffer[position] != rune(']') {
+							goto l696
+						}
+						position++
+						goto l697
+					l696:
+						position, tokenIndex = position696, tokenIndex696
+					}
+				l697:
+					goto l688
+				l687:
+					position, tokenIndex = position687, tokenIndex687
+				}
+			l688:
+				add(ruleARMVectorRegister, position682)
 			}
 			return true
-		l679:
-			position, tokenIndex = position679, tokenIndex679
+		l681:
+			position, tokenIndex = position681, tokenIndex681
 			return false
 		},
 		/* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
 		func() bool {
-			position698, tokenIndex698 := position, tokenIndex
+			position700, tokenIndex700 := position, tokenIndex
 			{
-				position699 := position
+				position701 := position
 				{
-					position700, tokenIndex700 := position, tokenIndex
+					position702, tokenIndex702 := position, tokenIndex
 					if !_rules[ruleSymbolRef]() {
-						goto l701
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l701
-					}
-					goto l700
-				l701:
-					position, tokenIndex = position700, tokenIndex700
-					if !_rules[ruleSymbolRef]() {
-						goto l702
-					}
-					goto l700
-				l702:
-					position, tokenIndex = position700, tokenIndex700
-					if !_rules[ruleLow12BitsSymbolRef]() {
 						goto l703
 					}
-					goto l700
-				l703:
-					position, tokenIndex = position700, tokenIndex700
-				l705:
-					{
-						position706, tokenIndex706 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l706
-						}
-						goto l705
-					l706:
-						position, tokenIndex = position706, tokenIndex706
-					}
 					if !_rules[ruleBaseIndexScale]() {
+						goto l703
+					}
+					goto l702
+				l703:
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleSymbolRef]() {
 						goto l704
 					}
-					goto l700
+					goto l702
 				l704:
-					position, tokenIndex = position700, tokenIndex700
-					if !_rules[ruleSegmentRegister]() {
-						goto l707
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleLow12BitsSymbolRef]() {
+						goto l705
 					}
-					if !_rules[ruleOffset]() {
-						goto l707
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l707
-					}
-					goto l700
+					goto l702
+				l705:
+					position, tokenIndex = position702, tokenIndex702
 				l707:
-					position, tokenIndex = position700, tokenIndex700
-					if !_rules[ruleSegmentRegister]() {
-						goto l708
+					{
+						position708, tokenIndex708 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l708
+						}
+						goto l707
+					l708:
+						position, tokenIndex = position708, tokenIndex708
 					}
 					if !_rules[ruleBaseIndexScale]() {
-						goto l708
+						goto l706
 					}
-					goto l700
-				l708:
-					position, tokenIndex = position700, tokenIndex700
+					goto l702
+				l706:
+					position, tokenIndex = position702, tokenIndex702
 					if !_rules[ruleSegmentRegister]() {
 						goto l709
 					}
 					if !_rules[ruleOffset]() {
 						goto l709
 					}
-					goto l700
+					if !_rules[ruleBaseIndexScale]() {
+						goto l709
+					}
+					goto l702
 				l709:
-					position, tokenIndex = position700, tokenIndex700
-					if !_rules[ruleARMBaseIndexScale]() {
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleSegmentRegister]() {
 						goto l710
 					}
-					goto l700
-				l710:
-					position, tokenIndex = position700, tokenIndex700
 					if !_rules[ruleBaseIndexScale]() {
-						goto l698
+						goto l710
+					}
+					goto l702
+				l710:
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleSegmentRegister]() {
+						goto l711
+					}
+					if !_rules[ruleOffset]() {
+						goto l711
+					}
+					goto l702
+				l711:
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleARMBaseIndexScale]() {
+						goto l712
+					}
+					goto l702
+				l712:
+					position, tokenIndex = position702, tokenIndex702
+					if !_rules[ruleBaseIndexScale]() {
+						goto l700
 					}
 				}
-			l700:
-				add(ruleMemoryRef, position699)
+			l702:
+				add(ruleMemoryRef, position701)
 			}
 			return true
-		l698:
-			position, tokenIndex = position698, tokenIndex698
+		l700:
+			position, tokenIndex = position700, tokenIndex700
 			return false
 		},
 		/* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
 		func() bool {
-			position711, tokenIndex711 := position, tokenIndex
+			position713, tokenIndex713 := position, tokenIndex
 			{
-				position712 := position
+				position714 := position
 				{
-					position713, tokenIndex713 := position, tokenIndex
-				l715:
+					position715, tokenIndex715 := position, tokenIndex
+				l717:
 					{
-						position716, tokenIndex716 := position, tokenIndex
+						position718, tokenIndex718 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l716
+							goto l718
 						}
-						goto l715
-					l716:
-						position, tokenIndex = position716, tokenIndex716
+						goto l717
+					l718:
+						position, tokenIndex = position718, tokenIndex718
 					}
 					if buffer[position] != rune('+') {
-						goto l713
+						goto l715
 					}
 					position++
-					goto l714
-				l713:
-					position, tokenIndex = position713, tokenIndex713
+					goto l716
+				l715:
+					position, tokenIndex = position715, tokenIndex715
 				}
-			l714:
+			l716:
 				{
-					position717, tokenIndex717 := position, tokenIndex
+					position719, tokenIndex719 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l718
-					}
-					goto l717
-				l718:
-					position, tokenIndex = position717, tokenIndex717
-					if !_rules[ruleSymbolName]() {
-						goto l711
-					}
-				}
-			l717:
-			l719:
-				{
-					position720, tokenIndex720 := position, tokenIndex
-					if !_rules[ruleOffset]() {
 						goto l720
 					}
 					goto l719
 				l720:
-					position, tokenIndex = position720, tokenIndex720
+					position, tokenIndex = position719, tokenIndex719
+					if !_rules[ruleSymbolName]() {
+						goto l713
+					}
+				}
+			l719:
+			l721:
+				{
+					position722, tokenIndex722 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l722
+					}
+					goto l721
+				l722:
+					position, tokenIndex = position722, tokenIndex722
 				}
 				{
-					position721, tokenIndex721 := position, tokenIndex
+					position723, tokenIndex723 := position, tokenIndex
 					if buffer[position] != rune('@') {
-						goto l721
+						goto l723
 					}
 					position++
 					if !_rules[ruleSection]() {
-						goto l721
-					}
-				l723:
-					{
-						position724, tokenIndex724 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l724
-						}
 						goto l723
-					l724:
-						position, tokenIndex = position724, tokenIndex724
 					}
-					goto l722
-				l721:
-					position, tokenIndex = position721, tokenIndex721
+				l725:
+					{
+						position726, tokenIndex726 := position, tokenIndex
+						if !_rules[ruleOffset]() {
+							goto l726
+						}
+						goto l725
+					l726:
+						position, tokenIndex = position726, tokenIndex726
+					}
+					goto l724
+				l723:
+					position, tokenIndex = position723, tokenIndex723
 				}
-			l722:
-				add(ruleSymbolRef, position712)
+			l724:
+				add(ruleSymbolRef, position714)
 			}
 			return true
-		l711:
-			position, tokenIndex = position711, tokenIndex711
+		l713:
+			position, tokenIndex = position713, tokenIndex713
 			return false
 		},
 		/* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
 		func() bool {
-			position725, tokenIndex725 := position, tokenIndex
+			position727, tokenIndex727 := position, tokenIndex
 			{
-				position726 := position
+				position728 := position
 				if buffer[position] != rune(':') {
-					goto l725
+					goto l727
 				}
 				position++
 				{
-					position727, tokenIndex727 := position, tokenIndex
-					if buffer[position] != rune('l') {
-						goto l728
-					}
-					position++
-					goto l727
-				l728:
-					position, tokenIndex = position727, tokenIndex727
-					if buffer[position] != rune('L') {
-						goto l725
-					}
-					position++
-				}
-			l727:
-				{
 					position729, tokenIndex729 := position, tokenIndex
-					if buffer[position] != rune('o') {
+					if buffer[position] != rune('l') {
 						goto l730
 					}
 					position++
 					goto l729
 				l730:
 					position, tokenIndex = position729, tokenIndex729
-					if buffer[position] != rune('O') {
-						goto l725
+					if buffer[position] != rune('L') {
+						goto l727
 					}
 					position++
 				}
 			l729:
-				if buffer[position] != rune('1') {
-					goto l725
-				}
-				position++
-				if buffer[position] != rune('2') {
-					goto l725
-				}
-				position++
-				if buffer[position] != rune(':') {
-					goto l725
-				}
-				position++
 				{
 					position731, tokenIndex731 := position, tokenIndex
-					if !_rules[ruleLocalSymbol]() {
+					if buffer[position] != rune('o') {
 						goto l732
 					}
+					position++
 					goto l731
 				l732:
 					position, tokenIndex = position731, tokenIndex731
-					if !_rules[ruleSymbolName]() {
-						goto l725
+					if buffer[position] != rune('O') {
+						goto l727
 					}
+					position++
 				}
 			l731:
+				if buffer[position] != rune('1') {
+					goto l727
+				}
+				position++
+				if buffer[position] != rune('2') {
+					goto l727
+				}
+				position++
+				if buffer[position] != rune(':') {
+					goto l727
+				}
+				position++
 				{
 					position733, tokenIndex733 := position, tokenIndex
-					if !_rules[ruleOffset]() {
-						goto l733
+					if !_rules[ruleLocalSymbol]() {
+						goto l734
 					}
-					goto l734
-				l733:
+					goto l733
+				l734:
 					position, tokenIndex = position733, tokenIndex733
+					if !_rules[ruleSymbolName]() {
+						goto l727
+					}
 				}
-			l734:
-				add(ruleLow12BitsSymbolRef, position726)
+			l733:
+				{
+					position735, tokenIndex735 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l735
+					}
+					goto l736
+				l735:
+					position, tokenIndex = position735, tokenIndex735
+				}
+			l736:
+				add(ruleLow12BitsSymbolRef, position728)
 			}
 			return true
-		l725:
-			position, tokenIndex = position725, tokenIndex725
+		l727:
+			position, tokenIndex = position727, tokenIndex727
 			return false
 		},
 		/* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
 		func() bool {
-			position735, tokenIndex735 := position, tokenIndex
+			position737, tokenIndex737 := position, tokenIndex
 			{
-				position736 := position
+				position738 := position
 				if buffer[position] != rune('[') {
-					goto l735
+					goto l737
 				}
 				position++
 				if !_rules[ruleARMRegister]() {
-					goto l735
+					goto l737
 				}
 				{
-					position737, tokenIndex737 := position, tokenIndex
+					position739, tokenIndex739 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l737
+						goto l739
 					}
 					position++
 					{
-						position739, tokenIndex739 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l739
-						}
-						goto l740
-					l739:
-						position, tokenIndex = position739, tokenIndex739
-					}
-				l740:
-					{
 						position741, tokenIndex741 := position, tokenIndex
+						if !_rules[ruleWS]() {
+							goto l741
+						}
+						goto l742
+					l741:
+						position, tokenIndex = position741, tokenIndex741
+					}
+				l742:
+					{
+						position743, tokenIndex743 := position, tokenIndex
 						if buffer[position] != rune('#') {
-							goto l742
+							goto l744
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l742
+							goto l744
 						}
 						{
-							position743, tokenIndex743 := position, tokenIndex
+							position745, tokenIndex745 := position, tokenIndex
 							if buffer[position] != rune('*') {
-								goto l743
+								goto l745
 							}
 							position++
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l743
+								goto l745
 							}
 							position++
-						l745:
+						l747:
 							{
-								position746, tokenIndex746 := position, tokenIndex
+								position748, tokenIndex748 := position, tokenIndex
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l746
+									goto l748
 								}
 								position++
-								goto l745
-							l746:
-								position, tokenIndex = position746, tokenIndex746
+								goto l747
+							l748:
+								position, tokenIndex = position748, tokenIndex748
 							}
-							goto l744
-						l743:
-							position, tokenIndex = position743, tokenIndex743
+							goto l746
+						l745:
+							position, tokenIndex = position745, tokenIndex745
 						}
+					l746:
+						goto l743
 					l744:
-						goto l741
-					l742:
-						position, tokenIndex = position741, tokenIndex741
+						position, tokenIndex = position743, tokenIndex743
 						if !_rules[ruleARMGOTLow12]() {
-							goto l747
+							goto l749
 						}
-						goto l741
-					l747:
-						position, tokenIndex = position741, tokenIndex741
+						goto l743
+					l749:
+						position, tokenIndex = position743, tokenIndex743
 						if !_rules[ruleLow12BitsSymbolRef]() {
-							goto l748
+							goto l750
 						}
-						goto l741
-					l748:
-						position, tokenIndex = position741, tokenIndex741
+						goto l743
+					l750:
+						position, tokenIndex = position743, tokenIndex743
 						if !_rules[ruleARMRegister]() {
-							goto l737
+							goto l739
 						}
 					}
-				l741:
+				l743:
 					{
-						position749, tokenIndex749 := position, tokenIndex
+						position751, tokenIndex751 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l749
+							goto l751
 						}
 						position++
 						{
-							position751, tokenIndex751 := position, tokenIndex
+							position753, tokenIndex753 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l751
+								goto l753
 							}
-							goto l752
-						l751:
-							position, tokenIndex = position751, tokenIndex751
+							goto l754
+						l753:
+							position, tokenIndex = position753, tokenIndex753
 						}
-					l752:
+					l754:
 						if !_rules[ruleARMConstantTweak]() {
-							goto l749
+							goto l751
 						}
-						goto l750
-					l749:
-						position, tokenIndex = position749, tokenIndex749
+						goto l752
+					l751:
+						position, tokenIndex = position751, tokenIndex751
 					}
-				l750:
-					goto l738
-				l737:
-					position, tokenIndex = position737, tokenIndex737
+				l752:
+					goto l740
+				l739:
+					position, tokenIndex = position739, tokenIndex739
 				}
-			l738:
+			l740:
 				if buffer[position] != rune(']') {
-					goto l735
+					goto l737
 				}
 				position++
 				{
-					position753, tokenIndex753 := position, tokenIndex
+					position755, tokenIndex755 := position, tokenIndex
 					if !_rules[ruleARMPostincrement]() {
-						goto l753
+						goto l755
 					}
-					goto l754
-				l753:
-					position, tokenIndex = position753, tokenIndex753
+					goto l756
+				l755:
+					position, tokenIndex = position755, tokenIndex755
 				}
-			l754:
-				add(ruleARMBaseIndexScale, position736)
+			l756:
+				add(ruleARMBaseIndexScale, position738)
 			}
 			return true
-		l735:
-			position, tokenIndex = position735, tokenIndex735
+		l737:
+			position, tokenIndex = position737, tokenIndex737
 			return false
 		},
 		/* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
 		func() bool {
-			position755, tokenIndex755 := position, tokenIndex
+			position757, tokenIndex757 := position, tokenIndex
 			{
-				position756 := position
+				position758 := position
 				if buffer[position] != rune(':') {
-					goto l755
+					goto l757
 				}
 				position++
 				{
-					position757, tokenIndex757 := position, tokenIndex
-					if buffer[position] != rune('g') {
-						goto l758
-					}
-					position++
-					goto l757
-				l758:
-					position, tokenIndex = position757, tokenIndex757
-					if buffer[position] != rune('G') {
-						goto l755
-					}
-					position++
-				}
-			l757:
-				{
 					position759, tokenIndex759 := position, tokenIndex
-					if buffer[position] != rune('o') {
+					if buffer[position] != rune('g') {
 						goto l760
 					}
 					position++
 					goto l759
 				l760:
 					position, tokenIndex = position759, tokenIndex759
-					if buffer[position] != rune('O') {
-						goto l755
+					if buffer[position] != rune('G') {
+						goto l757
 					}
 					position++
 				}
 			l759:
 				{
 					position761, tokenIndex761 := position, tokenIndex
-					if buffer[position] != rune('t') {
+					if buffer[position] != rune('o') {
 						goto l762
 					}
 					position++
 					goto l761
 				l762:
 					position, tokenIndex = position761, tokenIndex761
-					if buffer[position] != rune('T') {
-						goto l755
+					if buffer[position] != rune('O') {
+						goto l757
 					}
 					position++
 				}
 			l761:
-				if buffer[position] != rune('_') {
-					goto l755
-				}
-				position++
 				{
 					position763, tokenIndex763 := position, tokenIndex
-					if buffer[position] != rune('l') {
+					if buffer[position] != rune('t') {
 						goto l764
 					}
 					position++
 					goto l763
 				l764:
 					position, tokenIndex = position763, tokenIndex763
-					if buffer[position] != rune('L') {
-						goto l755
+					if buffer[position] != rune('T') {
+						goto l757
 					}
 					position++
 				}
 			l763:
+				if buffer[position] != rune('_') {
+					goto l757
+				}
+				position++
 				{
 					position765, tokenIndex765 := position, tokenIndex
-					if buffer[position] != rune('o') {
+					if buffer[position] != rune('l') {
 						goto l766
 					}
 					position++
 					goto l765
 				l766:
 					position, tokenIndex = position765, tokenIndex765
-					if buffer[position] != rune('O') {
-						goto l755
+					if buffer[position] != rune('L') {
+						goto l757
 					}
 					position++
 				}
 			l765:
+				{
+					position767, tokenIndex767 := position, tokenIndex
+					if buffer[position] != rune('o') {
+						goto l768
+					}
+					position++
+					goto l767
+				l768:
+					position, tokenIndex = position767, tokenIndex767
+					if buffer[position] != rune('O') {
+						goto l757
+					}
+					position++
+				}
+			l767:
 				if buffer[position] != rune('1') {
-					goto l755
+					goto l757
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l755
+					goto l757
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l755
+					goto l757
 				}
 				position++
 				if !_rules[ruleSymbolName]() {
-					goto l755
+					goto l757
 				}
-				add(ruleARMGOTLow12, position756)
+				add(ruleARMGOTLow12, position758)
 			}
 			return true
-		l755:
-			position, tokenIndex = position755, tokenIndex755
+		l757:
+			position, tokenIndex = position757, tokenIndex757
 			return false
 		},
 		/* 48 ARMPostincrement <- <'!'> */
 		func() bool {
-			position767, tokenIndex767 := position, tokenIndex
+			position769, tokenIndex769 := position, tokenIndex
 			{
-				position768 := position
+				position770 := position
 				if buffer[position] != rune('!') {
-					goto l767
+					goto l769
 				}
 				position++
-				add(ruleARMPostincrement, position768)
+				add(ruleARMPostincrement, position770)
 			}
 			return true
-		l767:
-			position, tokenIndex = position767, tokenIndex767
+		l769:
+			position, tokenIndex = position769, tokenIndex769
 			return false
 		},
 		/* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
 		func() bool {
-			position769, tokenIndex769 := position, tokenIndex
+			position771, tokenIndex771 := position, tokenIndex
 			{
-				position770 := position
+				position772 := position
 				if buffer[position] != rune('(') {
-					goto l769
+					goto l771
 				}
 				position++
 				{
-					position771, tokenIndex771 := position, tokenIndex
-					if !_rules[ruleRegisterOrConstant]() {
-						goto l771
-					}
-					goto l772
-				l771:
-					position, tokenIndex = position771, tokenIndex771
-				}
-			l772:
-				{
 					position773, tokenIndex773 := position, tokenIndex
-					if !_rules[ruleWS]() {
+					if !_rules[ruleRegisterOrConstant]() {
 						goto l773
 					}
 					goto l774
@@ -5991,24 +5988,21 @@
 			l774:
 				{
 					position775, tokenIndex775 := position, tokenIndex
-					if buffer[position] != rune(',') {
+					if !_rules[ruleWS]() {
 						goto l775
 					}
+					goto l776
+				l775:
+					position, tokenIndex = position775, tokenIndex775
+				}
+			l776:
+				{
+					position777, tokenIndex777 := position, tokenIndex
+					if buffer[position] != rune(',') {
+						goto l777
+					}
 					position++
 					{
-						position777, tokenIndex777 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l777
-						}
-						goto l778
-					l777:
-						position, tokenIndex = position777, tokenIndex777
-					}
-				l778:
-					if !_rules[ruleRegisterOrConstant]() {
-						goto l775
-					}
-					{
 						position779, tokenIndex779 := position, tokenIndex
 						if !_rules[ruleWS]() {
 							goto l779
@@ -6018,94 +6012,96 @@
 						position, tokenIndex = position779, tokenIndex779
 					}
 				l780:
+					if !_rules[ruleRegisterOrConstant]() {
+						goto l777
+					}
 					{
 						position781, tokenIndex781 := position, tokenIndex
-						if buffer[position] != rune(',') {
+						if !_rules[ruleWS]() {
 							goto l781
 						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l781
-						}
-						position++
-					l783:
-						{
-							position784, tokenIndex784 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l784
-							}
-							position++
-							goto l783
-						l784:
-							position, tokenIndex = position784, tokenIndex784
-						}
 						goto l782
 					l781:
 						position, tokenIndex = position781, tokenIndex781
 					}
 				l782:
-					goto l776
-				l775:
-					position, tokenIndex = position775, tokenIndex775
+					{
+						position783, tokenIndex783 := position, tokenIndex
+						if buffer[position] != rune(',') {
+							goto l783
+						}
+						position++
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l783
+						}
+						position++
+					l785:
+						{
+							position786, tokenIndex786 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l786
+							}
+							position++
+							goto l785
+						l786:
+							position, tokenIndex = position786, tokenIndex786
+						}
+						goto l784
+					l783:
+						position, tokenIndex = position783, tokenIndex783
+					}
+				l784:
+					goto l778
+				l777:
+					position, tokenIndex = position777, tokenIndex777
 				}
-			l776:
+			l778:
 				if buffer[position] != rune(')') {
-					goto l769
+					goto l771
 				}
 				position++
-				add(ruleBaseIndexScale, position770)
+				add(ruleBaseIndexScale, position772)
 			}
 			return true
-		l769:
-			position, tokenIndex = position769, tokenIndex769
+		l771:
+			position, tokenIndex = position771, tokenIndex771
 			return false
 		},
 		/* 50 Operator <- <('+' / '-')> */
 		func() bool {
-			position785, tokenIndex785 := position, tokenIndex
+			position787, tokenIndex787 := position, tokenIndex
 			{
-				position786 := position
+				position788 := position
 				{
-					position787, tokenIndex787 := position, tokenIndex
+					position789, tokenIndex789 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l788
+						goto l790
 					}
 					position++
-					goto l787
-				l788:
-					position, tokenIndex = position787, tokenIndex787
+					goto l789
+				l790:
+					position, tokenIndex = position789, tokenIndex789
 					if buffer[position] != rune('-') {
-						goto l785
+						goto l787
 					}
 					position++
 				}
-			l787:
-				add(ruleOperator, position786)
+			l789:
+				add(ruleOperator, position788)
 			}
 			return true
-		l785:
-			position, tokenIndex = position785, tokenIndex785
+		l787:
+			position, tokenIndex = position787, tokenIndex787
 			return false
 		},
 		/* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
 		func() bool {
-			position789, tokenIndex789 := position, tokenIndex
+			position791, tokenIndex791 := position, tokenIndex
 			{
-				position790 := position
-				{
-					position791, tokenIndex791 := position, tokenIndex
-					if buffer[position] != rune('+') {
-						goto l791
-					}
-					position++
-					goto l792
-				l791:
-					position, tokenIndex = position791, tokenIndex791
-				}
-			l792:
+				position792 := position
 				{
 					position793, tokenIndex793 := position, tokenIndex
-					if buffer[position] != rune('-') {
+					if buffer[position] != rune('+') {
 						goto l793
 					}
 					position++
@@ -6116,284 +6112,295 @@
 			l794:
 				{
 					position795, tokenIndex795 := position, tokenIndex
+					if buffer[position] != rune('-') {
+						goto l795
+					}
+					position++
+					goto l796
+				l795:
+					position, tokenIndex = position795, tokenIndex795
+				}
+			l796:
+				{
+					position797, tokenIndex797 := position, tokenIndex
 					if buffer[position] != rune('0') {
-						goto l796
+						goto l798
 					}
 					position++
 					{
-						position797, tokenIndex797 := position, tokenIndex
+						position799, tokenIndex799 := position, tokenIndex
 						if buffer[position] != rune('b') {
+							goto l800
+						}
+						position++
+						goto l799
+					l800:
+						position, tokenIndex = position799, tokenIndex799
+						if buffer[position] != rune('B') {
 							goto l798
 						}
 						position++
-						goto l797
-					l798:
-						position, tokenIndex = position797, tokenIndex797
-						if buffer[position] != rune('B') {
-							goto l796
-						}
-						position++
 					}
-				l797:
-					{
-						position801, tokenIndex801 := position, tokenIndex
-						if buffer[position] != rune('0') {
-							goto l802
-						}
-						position++
-						goto l801
-					l802:
-						position, tokenIndex = position801, tokenIndex801
-						if buffer[position] != rune('1') {
-							goto l796
-						}
-						position++
-					}
-				l801:
 				l799:
 					{
-						position800, tokenIndex800 := position, tokenIndex
+						position803, tokenIndex803 := position, tokenIndex
+						if buffer[position] != rune('0') {
+							goto l804
+						}
+						position++
+						goto l803
+					l804:
+						position, tokenIndex = position803, tokenIndex803
+						if buffer[position] != rune('1') {
+							goto l798
+						}
+						position++
+					}
+				l803:
+				l801:
+					{
+						position802, tokenIndex802 := position, tokenIndex
 						{
-							position803, tokenIndex803 := position, tokenIndex
+							position805, tokenIndex805 := position, tokenIndex
 							if buffer[position] != rune('0') {
-								goto l804
+								goto l806
 							}
 							position++
-							goto l803
-						l804:
-							position, tokenIndex = position803, tokenIndex803
+							goto l805
+						l806:
+							position, tokenIndex = position805, tokenIndex805
 							if buffer[position] != rune('1') {
-								goto l800
+								goto l802
 							}
 							position++
 						}
-					l803:
-						goto l799
-					l800:
-						position, tokenIndex = position800, tokenIndex800
+					l805:
+						goto l801
+					l802:
+						position, tokenIndex = position802, tokenIndex802
 					}
-					goto l795
-				l796:
-					position, tokenIndex = position795, tokenIndex795
+					goto l797
+				l798:
+					position, tokenIndex = position797, tokenIndex797
 					if buffer[position] != rune('0') {
-						goto l805
+						goto l807
 					}
 					position++
 					{
-						position806, tokenIndex806 := position, tokenIndex
+						position808, tokenIndex808 := position, tokenIndex
 						if buffer[position] != rune('x') {
+							goto l809
+						}
+						position++
+						goto l808
+					l809:
+						position, tokenIndex = position808, tokenIndex808
+						if buffer[position] != rune('X') {
 							goto l807
 						}
 						position++
-						goto l806
-					l807:
-						position, tokenIndex = position806, tokenIndex806
-						if buffer[position] != rune('X') {
-							goto l805
-						}
-						position++
 					}
-				l806:
-					{
-						position810, tokenIndex810 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l811
-						}
-						position++
-						goto l810
-					l811:
-						position, tokenIndex = position810, tokenIndex810
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l812
-						}
-						position++
-						goto l810
-					l812:
-						position, tokenIndex = position810, tokenIndex810
-						{
-							position813, tokenIndex813 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('f') {
-								goto l814
-							}
-							position++
-							goto l813
-						l814:
-							position, tokenIndex = position813, tokenIndex813
-							if c := buffer[position]; c < rune('A') || c > rune('F') {
-								goto l805
-							}
-							position++
-						}
-					l813:
-					}
-				l810:
 				l808:
 					{
-						position809, tokenIndex809 := position, tokenIndex
+						position812, tokenIndex812 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l813
+						}
+						position++
+						goto l812
+					l813:
+						position, tokenIndex = position812, tokenIndex812
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l814
+						}
+						position++
+						goto l812
+					l814:
+						position, tokenIndex = position812, tokenIndex812
 						{
 							position815, tokenIndex815 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
+							if c := buffer[position]; c < rune('a') || c > rune('f') {
 								goto l816
 							}
 							position++
 							goto l815
 						l816:
 							position, tokenIndex = position815, tokenIndex815
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l817
+							if c := buffer[position]; c < rune('A') || c > rune('F') {
+								goto l807
 							}
 							position++
-							goto l815
-						l817:
-							position, tokenIndex = position815, tokenIndex815
+						}
+					l815:
+					}
+				l812:
+				l810:
+					{
+						position811, tokenIndex811 := 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
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l819
+							}
+							position++
+							goto l817
+						l819:
+							position, tokenIndex = position817, tokenIndex817
 							{
-								position818, tokenIndex818 := position, tokenIndex
+								position820, tokenIndex820 := position, tokenIndex
 								if c := buffer[position]; c < rune('a') || c > rune('f') {
-									goto l819
+									goto l821
 								}
 								position++
-								goto l818
-							l819:
-								position, tokenIndex = position818, tokenIndex818
+								goto l820
+							l821:
+								position, tokenIndex = position820, tokenIndex820
 								if c := buffer[position]; c < rune('A') || c > rune('F') {
-									goto l809
+									goto l811
 								}
 								position++
 							}
-						l818:
+						l820:
 						}
-					l815:
-						goto l808
-					l809:
-						position, tokenIndex = position809, tokenIndex809
+					l817:
+						goto l810
+					l811:
+						position, tokenIndex = position811, tokenIndex811
 					}
-					goto l795
-				l805:
-					position, tokenIndex = position795, tokenIndex795
+					goto l797
+				l807:
+					position, tokenIndex = position797, tokenIndex797
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l789
+						goto l791
 					}
 					position++
-				l820:
+				l822:
 					{
-						position821, tokenIndex821 := position, tokenIndex
+						position823, tokenIndex823 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l821
+							goto l823
 						}
 						position++
-						goto l820
-					l821:
-						position, tokenIndex = position821, tokenIndex821
+						goto l822
+					l823:
+						position, tokenIndex = position823, tokenIndex823
 					}
 				}
-			l795:
-				add(ruleOffset, position790)
+			l797:
+				add(ruleOffset, position792)
 			}
 			return true
-		l789:
-			position, tokenIndex = position789, tokenIndex789
+		l791:
+			position, tokenIndex = position791, tokenIndex791
 			return false
 		},
 		/* 52 Section <- <([a-z] / [A-Z] / '@')+> */
 		func() bool {
-			position822, tokenIndex822 := position, tokenIndex
+			position824, tokenIndex824 := position, tokenIndex
 			{
-				position823 := position
+				position825 := position
 				{
-					position826, tokenIndex826 := position, tokenIndex
+					position828, tokenIndex828 := position, tokenIndex
 					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l827
+						goto l829
 					}
 					position++
+					goto l828
+				l829:
+					position, tokenIndex = position828, tokenIndex828
+					if c := buffer[position]; c < rune('A') || c > rune('Z') {
+						goto l830
+					}
+					position++
+					goto l828
+				l830:
+					position, tokenIndex = position828, tokenIndex828
+					if buffer[position] != rune('@') {
+						goto l824
+					}
+					position++
+				}
+			l828:
+			l826:
+				{
+					position827, tokenIndex827 := position, tokenIndex
+					{
+						position831, tokenIndex831 := position, tokenIndex
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l832
+						}
+						position++
+						goto l831
+					l832:
+						position, tokenIndex = position831, tokenIndex831
+						if c := buffer[position]; c < rune('A') || c > rune('Z') {
+							goto l833
+						}
+						position++
+						goto l831
+					l833:
+						position, tokenIndex = position831, tokenIndex831
+						if buffer[position] != rune('@') {
+							goto l827
+						}
+						position++
+					}
+				l831:
 					goto l826
 				l827:
-					position, tokenIndex = position826, tokenIndex826
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l828
-					}
-					position++
-					goto l826
-				l828:
-					position, tokenIndex = position826, tokenIndex826
-					if buffer[position] != rune('@') {
-						goto l822
-					}
-					position++
+					position, tokenIndex = position827, tokenIndex827
 				}
-			l826:
-			l824:
-				{
-					position825, tokenIndex825 := position, tokenIndex
-					{
-						position829, tokenIndex829 := position, tokenIndex
-						if c := buffer[position]; c < rune('a') || c > rune('z') {
-							goto l830
-						}
-						position++
-						goto l829
-					l830:
-						position, tokenIndex = position829, tokenIndex829
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l831
-						}
-						position++
-						goto l829
-					l831:
-						position, tokenIndex = position829, tokenIndex829
-						if buffer[position] != rune('@') {
-							goto l825
-						}
-						position++
-					}
-				l829:
-					goto l824
-				l825:
-					position, tokenIndex = position825, tokenIndex825
-				}
-				add(ruleSection, position823)
+				add(ruleSection, position825)
 			}
 			return true
-		l822:
-			position, tokenIndex = position822, tokenIndex822
+		l824:
+			position, tokenIndex = position824, tokenIndex824
 			return false
 		},
 		/* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
 		func() bool {
-			position832, tokenIndex832 := position, tokenIndex
+			position834, tokenIndex834 := position, tokenIndex
 			{
-				position833 := position
+				position835 := position
 				if buffer[position] != rune('%') {
-					goto l832
+					goto l834
 				}
 				position++
 				{
-					position834, tokenIndex834 := position, tokenIndex
+					position836, tokenIndex836 := position, tokenIndex
 					if c := buffer[position]; c < rune('c') || c > rune('g') {
-						goto l835
+						goto l837
 					}
 					position++
-					goto l834
-				l835:
-					position, tokenIndex = position834, tokenIndex834
+					goto l836
+				l837:
+					position, tokenIndex = position836, tokenIndex836
 					if buffer[position] != rune('s') {
-						goto l832
+						goto l834
 					}
 					position++
 				}
-			l834:
+			l836:
 				if buffer[position] != rune('s') {
-					goto l832
+					goto l834
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l832
+					goto l834
 				}
 				position++
-				add(ruleSegmentRegister, position833)
+				add(ruleSegmentRegister, position835)
 			}
 			return true
-		l832:
-			position, tokenIndex = position832, tokenIndex832
+		l834:
+			position, tokenIndex = position834, tokenIndex834
 			return false
 		},
 	}
diff --git a/util/fipstools/delocate/testdata/x86_64-Basic/in.s b/util/fipstools/delocate/testdata/x86_64-Basic/in.s
index c54756b..7e48e27 100644
--- a/util/fipstools/delocate/testdata/x86_64-Basic/in.s
+++ b/util/fipstools/delocate/testdata/x86_64-Basic/in.s
@@ -47,3 +47,4 @@
 .L4: .L5:	movq %rbx, %rax # This is also legal.
 .size	foo, .-foo
 .type	foo, @function
+.uleb128 .foo-1-.bar
diff --git a/util/fipstools/delocate/testdata/x86_64-Basic/out.s b/util/fipstools/delocate/testdata/x86_64-Basic/out.s
index 23e97c8..a55e852 100644
--- a/util/fipstools/delocate/testdata/x86_64-Basic/out.s
+++ b/util/fipstools/delocate/testdata/x86_64-Basic/out.s
@@ -55,6 +55,7 @@
 	movq %rbx, %rax # This is also legal.
 .size	foo, .-foo
 .type	foo, @function
+.uleb128 .foo-1-.bar
 .text
 .loc 2 2 0
 BORINGSSL_bcm_text_end: