swtb is another AArch64 magic tweak.

Change-Id: I25dd24d82be3dad4314a350cd32edc06fe9b59c9
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/48245
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg
index 4458e12..f79ed76 100644
--- a/util/fipstools/delocate/delocate.peg
+++ b/util/fipstools/delocate/delocate.peg
@@ -77,7 +77,7 @@
                        ('#' '~'? '(' [0-9] WS? "<<" WS? [0-9] ')' ) /
                        ARMRegister)
                       ![fb:(+\-]
-ARMConstantTweak <- ("lsl" / "sxtw" / "uxtw" / "uxtb" / "lsr" / "ror" / "asr") (WS '#' Offset)?
+ARMConstantTweak <- ("lsl" / "sxtw" / "sxtb" / "uxtw" / "uxtb" / "lsr" / "ror" / "asr") (WS '#' Offset)?
 ARMRegister <- "sp" / ([xwdqs] [0-9] [0-9]?) / "xzr" / "wzr" / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')? )
 ARMVectorRegister <- "v" [0-9] [0-9]? ('.' [0-9]* [bsdhq] ('[' [0-9] [0-9]? ']')? )?
 # Compilers only output a very limited number of expression forms. Rather than
diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go
index 759b924..56c4a20 100644
--- a/util/fipstools/delocate/delocate.peg.go
+++ b/util/fipstools/delocate/delocate.peg.go
@@ -4554,7 +4554,7 @@
 			position, tokenIndex = position527, tokenIndex527
 			return false
 		},
-		/* 40 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('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)?)> */
+		/* 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
 			{
@@ -4674,14 +4674,14 @@
 					position, tokenIndex = position570, tokenIndex570
 					{
 						position588, tokenIndex588 := position, tokenIndex
-						if buffer[position] != rune('u') {
+						if buffer[position] != rune('s') {
 							goto l589
 						}
 						position++
 						goto l588
 					l589:
 						position, tokenIndex = position588, tokenIndex588
-						if buffer[position] != rune('U') {
+						if buffer[position] != rune('S') {
 							goto l587
 						}
 						position++
@@ -4719,14 +4719,14 @@
 				l592:
 					{
 						position594, tokenIndex594 := position, tokenIndex
-						if buffer[position] != rune('w') {
+						if buffer[position] != rune('b') {
 							goto l595
 						}
 						position++
 						goto l594
 					l595:
 						position, tokenIndex = position594, tokenIndex594
-						if buffer[position] != rune('W') {
+						if buffer[position] != rune('B') {
 							goto l587
 						}
 						position++
@@ -4782,14 +4782,14 @@
 				l601:
 					{
 						position603, tokenIndex603 := position, tokenIndex
-						if buffer[position] != rune('b') {
+						if buffer[position] != rune('w') {
 							goto l604
 						}
 						position++
 						goto l603
 					l604:
 						position, tokenIndex = position603, tokenIndex603
-						if buffer[position] != rune('B') {
+						if buffer[position] != rune('W') {
 							goto l596
 						}
 						position++
@@ -4800,14 +4800,14 @@
 					position, tokenIndex = position570, tokenIndex570
 					{
 						position606, tokenIndex606 := position, tokenIndex
-						if buffer[position] != rune('l') {
+						if buffer[position] != rune('u') {
 							goto l607
 						}
 						position++
 						goto l606
 					l607:
 						position, tokenIndex = position606, tokenIndex606
-						if buffer[position] != rune('L') {
+						if buffer[position] != rune('U') {
 							goto l605
 						}
 						position++
@@ -4815,14 +4815,14 @@
 				l606:
 					{
 						position608, tokenIndex608 := position, tokenIndex
-						if buffer[position] != rune('s') {
+						if buffer[position] != rune('x') {
 							goto l609
 						}
 						position++
 						goto l608
 					l609:
 						position, tokenIndex = position608, tokenIndex608
-						if buffer[position] != rune('S') {
+						if buffer[position] != rune('X') {
 							goto l605
 						}
 						position++
@@ -4830,134 +4830,197 @@
 				l608:
 					{
 						position610, tokenIndex610 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('t') {
 							goto l611
 						}
 						position++
 						goto l610
 					l611:
 						position, tokenIndex = position610, tokenIndex610
-						if buffer[position] != rune('R') {
+						if buffer[position] != rune('T') {
 							goto l605
 						}
 						position++
 					}
 				l610:
+					{
+						position612, tokenIndex612 := position, tokenIndex
+						if buffer[position] != rune('b') {
+							goto l613
+						}
+						position++
+						goto l612
+					l613:
+						position, tokenIndex = position612, tokenIndex612
+						if buffer[position] != rune('B') {
+							goto l605
+						}
+						position++
+					}
+				l612:
 					goto l570
 				l605:
 					position, tokenIndex = position570, tokenIndex570
 					{
-						position613, tokenIndex613 := position, tokenIndex
-						if buffer[position] != rune('r') {
-							goto l614
-						}
-						position++
-						goto l613
-					l614:
-						position, tokenIndex = position613, tokenIndex613
-						if buffer[position] != rune('R') {
-							goto l612
-						}
-						position++
-					}
-				l613:
-					{
 						position615, tokenIndex615 := position, tokenIndex
-						if buffer[position] != rune('o') {
+						if buffer[position] != rune('l') {
 							goto l616
 						}
 						position++
 						goto l615
 					l616:
 						position, tokenIndex = position615, tokenIndex615
-						if buffer[position] != rune('O') {
-							goto l612
+						if buffer[position] != rune('L') {
+							goto l614
 						}
 						position++
 					}
 				l615:
 					{
 						position617, tokenIndex617 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('s') {
 							goto l618
 						}
 						position++
 						goto l617
 					l618:
 						position, tokenIndex = position617, tokenIndex617
-						if buffer[position] != rune('R') {
-							goto l612
+						if buffer[position] != rune('S') {
+							goto l614
 						}
 						position++
 					}
 				l617:
-					goto l570
-				l612:
-					position, tokenIndex = position570, tokenIndex570
 					{
 						position619, tokenIndex619 := position, tokenIndex
-						if buffer[position] != rune('a') {
+						if buffer[position] != rune('r') {
 							goto l620
 						}
 						position++
 						goto l619
 					l620:
 						position, tokenIndex = position619, tokenIndex619
+						if buffer[position] != rune('R') {
+							goto l614
+						}
+						position++
+					}
+				l619:
+					goto l570
+				l614:
+					position, tokenIndex = position570, tokenIndex570
+					{
+						position622, tokenIndex622 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l623
+						}
+						position++
+						goto l622
+					l623:
+						position, tokenIndex = position622, tokenIndex622
+						if buffer[position] != rune('R') {
+							goto l621
+						}
+						position++
+					}
+				l622:
+					{
+						position624, tokenIndex624 := position, tokenIndex
+						if buffer[position] != rune('o') {
+							goto l625
+						}
+						position++
+						goto l624
+					l625:
+						position, tokenIndex = position624, tokenIndex624
+						if buffer[position] != rune('O') {
+							goto l621
+						}
+						position++
+					}
+				l624:
+					{
+						position626, tokenIndex626 := position, tokenIndex
+						if buffer[position] != rune('r') {
+							goto l627
+						}
+						position++
+						goto l626
+					l627:
+						position, tokenIndex = position626, tokenIndex626
+						if buffer[position] != rune('R') {
+							goto l621
+						}
+						position++
+					}
+				l626:
+					goto l570
+				l621:
+					position, tokenIndex = position570, tokenIndex570
+					{
+						position628, tokenIndex628 := position, tokenIndex
+						if buffer[position] != rune('a') {
+							goto l629
+						}
+						position++
+						goto l628
+					l629:
+						position, tokenIndex = position628, tokenIndex628
 						if buffer[position] != rune('A') {
 							goto l568
 						}
 						position++
 					}
-				l619:
+				l628:
 					{
-						position621, tokenIndex621 := position, tokenIndex
+						position630, tokenIndex630 := position, tokenIndex
 						if buffer[position] != rune('s') {
-							goto l622
+							goto l631
 						}
 						position++
-						goto l621
-					l622:
-						position, tokenIndex = position621, tokenIndex621
+						goto l630
+					l631:
+						position, tokenIndex = position630, tokenIndex630
 						if buffer[position] != rune('S') {
 							goto l568
 						}
 						position++
 					}
-				l621:
+				l630:
 					{
-						position623, tokenIndex623 := position, tokenIndex
+						position632, tokenIndex632 := position, tokenIndex
 						if buffer[position] != rune('r') {
-							goto l624
+							goto l633
 						}
 						position++
-						goto l623
-					l624:
-						position, tokenIndex = position623, tokenIndex623
+						goto l632
+					l633:
+						position, tokenIndex = position632, tokenIndex632
 						if buffer[position] != rune('R') {
 							goto l568
 						}
 						position++
 					}
-				l623:
+				l632:
 				}
 			l570:
 				{
-					position625, tokenIndex625 := position, tokenIndex
+					position634, tokenIndex634 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l625
+						goto l634
 					}
 					if buffer[position] != rune('#') {
-						goto l625
+						goto l634
 					}
 					position++
 					if !_rules[ruleOffset]() {
-						goto l625
+						goto l634
 					}
-					goto l626
-				l625:
-					position, tokenIndex = position625, tokenIndex625
+					goto l635
+				l634:
+					position, tokenIndex = position634, tokenIndex634
 				}
-			l626:
+			l635:
 				add(ruleARMConstantTweak, position569)
 			}
 			return true
@@ -4967,1165 +5030,1106 @@
 		},
 		/* 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 {
-			position627, tokenIndex627 := position, tokenIndex
+			position636, tokenIndex636 := position, tokenIndex
 			{
-				position628 := position
+				position637 := position
 				{
-					position629, tokenIndex629 := position, tokenIndex
+					position638, tokenIndex638 := position, tokenIndex
 					{
-						position631, tokenIndex631 := position, tokenIndex
+						position640, tokenIndex640 := position, tokenIndex
 						if buffer[position] != rune('s') {
-							goto l632
-						}
-						position++
-						goto l631
-					l632:
-						position, tokenIndex = position631, tokenIndex631
-						if buffer[position] != rune('S') {
-							goto l630
-						}
-						position++
-					}
-				l631:
-					{
-						position633, tokenIndex633 := position, tokenIndex
-						if buffer[position] != rune('p') {
-							goto l634
-						}
-						position++
-						goto l633
-					l634:
-						position, tokenIndex = position633, tokenIndex633
-						if buffer[position] != rune('P') {
-							goto l630
-						}
-						position++
-					}
-				l633:
-					goto l629
-				l630:
-					position, tokenIndex = position629, tokenIndex629
-					{
-						position636, tokenIndex636 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l637
-						}
-						position++
-						goto l636
-					l637:
-						position, tokenIndex = position636, tokenIndex636
-						if buffer[position] != rune('w') {
-							goto l638
-						}
-						position++
-						goto l636
-					l638:
-						position, tokenIndex = position636, tokenIndex636
-						if buffer[position] != rune('d') {
-							goto l639
-						}
-						position++
-						goto l636
-					l639:
-						position, tokenIndex = position636, tokenIndex636
-						if buffer[position] != rune('q') {
-							goto l640
-						}
-						position++
-						goto l636
-					l640:
-						position, tokenIndex = position636, tokenIndex636
-						if buffer[position] != rune('s') {
-							goto l635
-						}
-						position++
-					}
-				l636:
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l635
-					}
-					position++
-					{
-						position641, tokenIndex641 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l641
 						}
 						position++
-						goto l642
+						goto l640
 					l641:
-						position, tokenIndex = position641, tokenIndex641
-					}
-				l642:
-					goto l629
-				l635:
-					position, tokenIndex = position629, tokenIndex629
-					{
-						position644, tokenIndex644 := position, tokenIndex
-						if buffer[position] != rune('x') {
-							goto l645
+						position, tokenIndex = position640, tokenIndex640
+						if buffer[position] != rune('S') {
+							goto l639
 						}
 						position++
-						goto l644
-					l645:
-						position, tokenIndex = position644, tokenIndex644
-						if buffer[position] != rune('X') {
+					}
+				l640:
+					{
+						position642, tokenIndex642 := position, tokenIndex
+						if buffer[position] != rune('p') {
 							goto l643
 						}
 						position++
+						goto l642
+					l643:
+						position, tokenIndex = position642, tokenIndex642
+						if buffer[position] != rune('P') {
+							goto l639
+						}
+						position++
 					}
-				l644:
+				l642:
+					goto l638
+				l639:
+					position, tokenIndex = position638, tokenIndex638
 					{
-						position646, tokenIndex646 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						position645, tokenIndex645 := position, tokenIndex
+						if buffer[position] != rune('x') {
+							goto l646
+						}
+						position++
+						goto l645
+					l646:
+						position, tokenIndex = position645, tokenIndex645
+						if buffer[position] != rune('w') {
 							goto l647
 						}
 						position++
-						goto l646
+						goto l645
 					l647:
-						position, tokenIndex = position646, tokenIndex646
-						if buffer[position] != rune('Z') {
-							goto l643
+						position, tokenIndex = position645, tokenIndex645
+						if buffer[position] != rune('d') {
+							goto l648
 						}
 						position++
-					}
-				l646:
-					{
-						position648, tokenIndex648 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						goto l645
+					l648:
+						position, tokenIndex = position645, tokenIndex645
+						if buffer[position] != rune('q') {
 							goto l649
 						}
 						position++
-						goto l648
+						goto l645
 					l649:
-						position, tokenIndex = position648, tokenIndex648
-						if buffer[position] != rune('R') {
-							goto l643
+						position, tokenIndex = position645, tokenIndex645
+						if buffer[position] != rune('s') {
+							goto l644
 						}
 						position++
 					}
-				l648:
-					goto l629
-				l643:
-					position, tokenIndex = position629, tokenIndex629
+				l645:
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l644
+					}
+					position++
 					{
-						position651, tokenIndex651 := position, tokenIndex
-						if buffer[position] != rune('w') {
-							goto l652
-						}
-						position++
-						goto l651
-					l652:
-						position, tokenIndex = position651, tokenIndex651
-						if buffer[position] != rune('W') {
+						position650, tokenIndex650 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l650
 						}
 						position++
+						goto l651
+					l650:
+						position, tokenIndex = position650, tokenIndex650
 					}
 				l651:
+					goto l638
+				l644:
+					position, tokenIndex = position638, tokenIndex638
 					{
 						position653, tokenIndex653 := position, tokenIndex
-						if buffer[position] != rune('z') {
+						if buffer[position] != rune('x') {
 							goto l654
 						}
 						position++
 						goto l653
 					l654:
 						position, tokenIndex = position653, tokenIndex653
-						if buffer[position] != rune('Z') {
-							goto l650
+						if buffer[position] != rune('X') {
+							goto l652
 						}
 						position++
 					}
 				l653:
 					{
 						position655, tokenIndex655 := position, tokenIndex
-						if buffer[position] != rune('r') {
+						if buffer[position] != rune('z') {
 							goto l656
 						}
 						position++
 						goto l655
 					l656:
 						position, tokenIndex = position655, tokenIndex655
-						if buffer[position] != rune('R') {
-							goto l650
+						if buffer[position] != rune('Z') {
+							goto l652
 						}
 						position++
 					}
 				l655:
-					goto l629
-				l650:
-					position, tokenIndex = position629, tokenIndex629
-					if !_rules[ruleARMVectorRegister]() {
-						goto l657
-					}
-					goto l629
-				l657:
-					position, tokenIndex = position629, tokenIndex629
-					if buffer[position] != rune('{') {
-						goto l627
-					}
-					position++
 					{
-						position658, tokenIndex658 := position, tokenIndex
-						if !_rules[ruleWS]() {
+						position657, tokenIndex657 := position, tokenIndex
+						if buffer[position] != rune('r') {
 							goto l658
 						}
-						goto l659
+						position++
+						goto l657
 					l658:
-						position, tokenIndex = position658, tokenIndex658
+						position, tokenIndex = position657, tokenIndex657
+						if buffer[position] != rune('R') {
+							goto l652
+						}
+						position++
 					}
-				l659:
-					if !_rules[ruleARMVectorRegister]() {
-						goto l627
+				l657:
+					goto l638
+				l652:
+					position, tokenIndex = position638, tokenIndex638
+					{
+						position660, tokenIndex660 := position, tokenIndex
+						if buffer[position] != rune('w') {
+							goto l661
+						}
+						position++
+						goto l660
+					l661:
+						position, tokenIndex = position660, tokenIndex660
+						if buffer[position] != rune('W') {
+							goto l659
+						}
+						position++
 					}
 				l660:
 					{
-						position661, tokenIndex661 := position, tokenIndex
-						if buffer[position] != rune(',') {
-							goto l661
+						position662, tokenIndex662 := position, tokenIndex
+						if buffer[position] != rune('z') {
+							goto l663
 						}
 						position++
-						{
-							position662, tokenIndex662 := position, tokenIndex
-							if !_rules[ruleWS]() {
-								goto l662
-							}
-							goto l663
-						l662:
-							position, tokenIndex = position662, tokenIndex662
-						}
+						goto l662
 					l663:
-						if !_rules[ruleARMVectorRegister]() {
-							goto l661
+						position, tokenIndex = position662, tokenIndex662
+						if buffer[position] != rune('Z') {
+							goto l659
 						}
-						goto l660
-					l661:
-						position, tokenIndex = position661, tokenIndex661
+						position++
 					}
+				l662:
 					{
 						position664, tokenIndex664 := position, tokenIndex
-						if !_rules[ruleWS]() {
-							goto l664
+						if buffer[position] != rune('r') {
+							goto l665
 						}
-						goto l665
-					l664:
+						position++
+						goto l664
+					l665:
 						position, tokenIndex = position664, tokenIndex664
+						if buffer[position] != rune('R') {
+							goto l659
+						}
+						position++
 					}
-				l665:
-					if buffer[position] != rune('}') {
-						goto l627
+				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++
 					{
-						position666, tokenIndex666 := position, tokenIndex
-						if buffer[position] != rune('[') {
-							goto l666
+						position667, tokenIndex667 := position, tokenIndex
+						if !_rules[ruleWS]() {
+							goto l667
 						}
-						position++
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l666
+						goto l668
+					l667:
+						position, tokenIndex = position667, tokenIndex667
+					}
+				l668:
+					if !_rules[ruleARMVectorRegister]() {
+						goto l636
+					}
+				l669:
+					{
+						position670, tokenIndex670 := position, tokenIndex
+						if buffer[position] != rune(',') {
+							goto l670
 						}
 						position++
 						{
-							position668, tokenIndex668 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l668
+							position671, tokenIndex671 := position, tokenIndex
+							if !_rules[ruleWS]() {
+								goto l671
 							}
-							position++
-							goto l669
-						l668:
-							position, tokenIndex = position668, tokenIndex668
+							goto l672
+						l671:
+							position, tokenIndex = position671, tokenIndex671
 						}
-					l669:
-						if buffer[position] != rune(']') {
-							goto l666
+					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
+					}
+				l674:
+					if buffer[position] != rune('}') {
+						goto l636
+					}
+					position++
+					{
+						position675, tokenIndex675 := position, tokenIndex
+						if buffer[position] != rune('[') {
+							goto l675
 						}
 						position++
-						goto l667
-					l666:
-						position, tokenIndex = position666, tokenIndex666
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
+							goto l675
+						}
+						position++
+						{
+							position677, tokenIndex677 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l677
+							}
+							position++
+							goto l678
+						l677:
+							position, tokenIndex = position677, tokenIndex677
+						}
+					l678:
+						if buffer[position] != rune(']') {
+							goto l675
+						}
+						position++
+						goto l676
+					l675:
+						position, tokenIndex = position675, tokenIndex675
 					}
-				l667:
+				l676:
 				}
-			l629:
-				add(ruleARMRegister, position628)
+			l638:
+				add(ruleARMRegister, position637)
 			}
 			return true
-		l627:
-			position, tokenIndex = position627, tokenIndex627
+		l636:
+			position, tokenIndex = position636, tokenIndex636
 			return false
 		},
 		/* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
 		func() bool {
-			position670, tokenIndex670 := position, tokenIndex
+			position679, tokenIndex679 := position, tokenIndex
 			{
-				position671 := position
+				position680 := position
 				{
-					position672, tokenIndex672 := position, tokenIndex
+					position681, tokenIndex681 := position, tokenIndex
 					if buffer[position] != rune('v') {
-						goto l673
+						goto l682
 					}
 					position++
-					goto l672
-				l673:
-					position, tokenIndex = position672, tokenIndex672
+					goto l681
+				l682:
+					position, tokenIndex = position681, tokenIndex681
 					if buffer[position] != rune('V') {
-						goto l670
+						goto l679
 					}
 					position++
 				}
-			l672:
+			l681:
 				if c := buffer[position]; c < rune('0') || c > rune('9') {
-					goto l670
+					goto l679
 				}
 				position++
 				{
-					position674, tokenIndex674 := position, tokenIndex
+					position683, tokenIndex683 := position, tokenIndex
 					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l674
+						goto l683
 					}
 					position++
-					goto l675
-				l674:
-					position, tokenIndex = position674, tokenIndex674
+					goto l684
+				l683:
+					position, tokenIndex = position683, tokenIndex683
 				}
-			l675:
+			l684:
 				{
-					position676, tokenIndex676 := position, tokenIndex
+					position685, tokenIndex685 := position, tokenIndex
 					if buffer[position] != rune('.') {
-						goto l676
+						goto l685
 					}
 					position++
-				l678:
+				l687:
 					{
-						position679, tokenIndex679 := position, tokenIndex
+						position688, tokenIndex688 := position, tokenIndex
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l679
+							goto l688
 						}
 						position++
-						goto l678
-					l679:
-						position, tokenIndex = position679, tokenIndex679
+						goto l687
+					l688:
+						position, tokenIndex = position688, tokenIndex688
 					}
 					{
-						position680, tokenIndex680 := position, tokenIndex
+						position689, tokenIndex689 := position, tokenIndex
 						if buffer[position] != rune('b') {
-							goto l681
+							goto l690
 						}
 						position++
-						goto l680
-					l681:
-						position, tokenIndex = position680, tokenIndex680
+						goto l689
+					l690:
+						position, tokenIndex = position689, tokenIndex689
 						if buffer[position] != rune('s') {
-							goto l682
+							goto l691
 						}
 						position++
-						goto l680
-					l682:
-						position, tokenIndex = position680, tokenIndex680
+						goto l689
+					l691:
+						position, tokenIndex = position689, tokenIndex689
 						if buffer[position] != rune('d') {
-							goto l683
+							goto l692
 						}
 						position++
-						goto l680
-					l683:
-						position, tokenIndex = position680, tokenIndex680
+						goto l689
+					l692:
+						position, tokenIndex = position689, tokenIndex689
 						if buffer[position] != rune('h') {
-							goto l684
+							goto l693
 						}
 						position++
-						goto l680
-					l684:
-						position, tokenIndex = position680, tokenIndex680
+						goto l689
+					l693:
+						position, tokenIndex = position689, tokenIndex689
 						if buffer[position] != rune('q') {
-							goto l676
+							goto l685
 						}
 						position++
 					}
-				l680:
+				l689:
 					{
-						position685, tokenIndex685 := position, tokenIndex
+						position694, tokenIndex694 := position, tokenIndex
 						if buffer[position] != rune('[') {
-							goto l685
+							goto l694
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l685
+							goto l694
 						}
 						position++
 						{
-							position687, tokenIndex687 := position, tokenIndex
+							position696, tokenIndex696 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l687
+								goto l696
 							}
 							position++
-							goto l688
-						l687:
-							position, tokenIndex = position687, tokenIndex687
+							goto l697
+						l696:
+							position, tokenIndex = position696, tokenIndex696
 						}
-					l688:
+					l697:
 						if buffer[position] != rune(']') {
-							goto l685
+							goto l694
 						}
 						position++
-						goto l686
-					l685:
-						position, tokenIndex = position685, tokenIndex685
+						goto l695
+					l694:
+						position, tokenIndex = position694, tokenIndex694
 					}
-				l686:
-					goto l677
-				l676:
-					position, tokenIndex = position676, tokenIndex676
+				l695:
+					goto l686
+				l685:
+					position, tokenIndex = position685, tokenIndex685
 				}
-			l677:
-				add(ruleARMVectorRegister, position671)
+			l686:
+				add(ruleARMVectorRegister, position680)
 			}
 			return true
-		l670:
-			position, tokenIndex = position670, tokenIndex670
+		l679:
+			position, tokenIndex = position679, tokenIndex679
 			return false
 		},
 		/* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
 		func() bool {
-			position689, tokenIndex689 := position, tokenIndex
+			position698, tokenIndex698 := position, tokenIndex
 			{
-				position690 := position
+				position699 := position
 				{
-					position691, tokenIndex691 := position, tokenIndex
+					position700, tokenIndex700 := position, tokenIndex
 					if !_rules[ruleSymbolRef]() {
-						goto l692
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l692
-					}
-					goto l691
-				l692:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleSymbolRef]() {
-						goto l693
-					}
-					goto l691
-				l693:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleLow12BitsSymbolRef]() {
-						goto l694
-					}
-					goto l691
-				l694:
-					position, tokenIndex = position691, tokenIndex691
-				l696:
-					{
-						position697, tokenIndex697 := position, tokenIndex
-						if !_rules[ruleOffset]() {
-							goto l697
-						}
-						goto l696
-					l697:
-						position, tokenIndex = position697, tokenIndex697
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l695
-					}
-					goto l691
-				l695:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleSegmentRegister]() {
-						goto l698
-					}
-					if !_rules[ruleOffset]() {
-						goto l698
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l698
-					}
-					goto l691
-				l698:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleSegmentRegister]() {
-						goto l699
-					}
-					if !_rules[ruleBaseIndexScale]() {
-						goto l699
-					}
-					goto l691
-				l699:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleSegmentRegister]() {
-						goto l700
-					}
-					if !_rules[ruleOffset]() {
-						goto l700
-					}
-					goto l691
-				l700:
-					position, tokenIndex = position691, tokenIndex691
-					if !_rules[ruleARMBaseIndexScale]() {
 						goto l701
 					}
-					goto l691
-				l701:
-					position, tokenIndex = position691, tokenIndex691
 					if !_rules[ruleBaseIndexScale]() {
-						goto l689
+						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 l704
+					}
+					goto l700
+				l704:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleSegmentRegister]() {
+						goto l707
+					}
+					if !_rules[ruleOffset]() {
+						goto l707
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l707
+					}
+					goto l700
+				l707:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleSegmentRegister]() {
+						goto l708
+					}
+					if !_rules[ruleBaseIndexScale]() {
+						goto l708
+					}
+					goto l700
+				l708:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleSegmentRegister]() {
+						goto l709
+					}
+					if !_rules[ruleOffset]() {
+						goto l709
+					}
+					goto l700
+				l709:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleARMBaseIndexScale]() {
+						goto l710
+					}
+					goto l700
+				l710:
+					position, tokenIndex = position700, tokenIndex700
+					if !_rules[ruleBaseIndexScale]() {
+						goto l698
 					}
 				}
-			l691:
-				add(ruleMemoryRef, position690)
+			l700:
+				add(ruleMemoryRef, position699)
 			}
 			return true
-		l689:
-			position, tokenIndex = position689, tokenIndex689
+		l698:
+			position, tokenIndex = position698, tokenIndex698
 			return false
 		},
 		/* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
 		func() bool {
-			position702, tokenIndex702 := position, tokenIndex
+			position711, tokenIndex711 := position, tokenIndex
 			{
-				position703 := position
+				position712 := position
 				{
-					position704, tokenIndex704 := position, tokenIndex
-				l706:
+					position713, tokenIndex713 := position, tokenIndex
+				l715:
 					{
-						position707, tokenIndex707 := position, tokenIndex
+						position716, tokenIndex716 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l707
+							goto l716
 						}
-						goto l706
-					l707:
-						position, tokenIndex = position707, tokenIndex707
+						goto l715
+					l716:
+						position, tokenIndex = position716, tokenIndex716
 					}
 					if buffer[position] != rune('+') {
-						goto l704
+						goto l713
 					}
 					position++
-					goto l705
-				l704:
-					position, tokenIndex = position704, tokenIndex704
+					goto l714
+				l713:
+					position, tokenIndex = position713, tokenIndex713
 				}
-			l705:
+			l714:
 				{
-					position708, tokenIndex708 := position, tokenIndex
+					position717, tokenIndex717 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l709
+						goto l718
 					}
-					goto l708
-				l709:
-					position, tokenIndex = position708, tokenIndex708
+					goto l717
+				l718:
+					position, tokenIndex = position717, tokenIndex717
 					if !_rules[ruleSymbolName]() {
-						goto l702
-					}
-				}
-			l708:
-			l710:
-				{
-					position711, tokenIndex711 := position, tokenIndex
-					if !_rules[ruleOffset]() {
 						goto l711
 					}
-					goto l710
-				l711:
-					position, tokenIndex = position711, tokenIndex711
+				}
+			l717:
+			l719:
+				{
+					position720, tokenIndex720 := position, tokenIndex
+					if !_rules[ruleOffset]() {
+						goto l720
+					}
+					goto l719
+				l720:
+					position, tokenIndex = position720, tokenIndex720
 				}
 				{
-					position712, tokenIndex712 := position, tokenIndex
+					position721, tokenIndex721 := position, tokenIndex
 					if buffer[position] != rune('@') {
-						goto l712
+						goto l721
 					}
 					position++
 					if !_rules[ruleSection]() {
-						goto l712
+						goto l721
 					}
-				l714:
+				l723:
 					{
-						position715, tokenIndex715 := position, tokenIndex
+						position724, tokenIndex724 := position, tokenIndex
 						if !_rules[ruleOffset]() {
-							goto l715
+							goto l724
 						}
-						goto l714
-					l715:
-						position, tokenIndex = position715, tokenIndex715
+						goto l723
+					l724:
+						position, tokenIndex = position724, tokenIndex724
 					}
-					goto l713
-				l712:
-					position, tokenIndex = position712, tokenIndex712
+					goto l722
+				l721:
+					position, tokenIndex = position721, tokenIndex721
 				}
-			l713:
-				add(ruleSymbolRef, position703)
+			l722:
+				add(ruleSymbolRef, position712)
 			}
 			return true
-		l702:
-			position, tokenIndex = position702, tokenIndex702
+		l711:
+			position, tokenIndex = position711, tokenIndex711
 			return false
 		},
 		/* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
 		func() bool {
-			position716, tokenIndex716 := position, tokenIndex
+			position725, tokenIndex725 := position, tokenIndex
 			{
-				position717 := position
+				position726 := position
 				if buffer[position] != rune(':') {
-					goto l716
+					goto l725
 				}
 				position++
 				{
-					position718, tokenIndex718 := position, tokenIndex
+					position727, tokenIndex727 := position, tokenIndex
 					if buffer[position] != rune('l') {
-						goto l719
+						goto l728
 					}
 					position++
-					goto l718
-				l719:
-					position, tokenIndex = position718, tokenIndex718
+					goto l727
+				l728:
+					position, tokenIndex = position727, tokenIndex727
 					if buffer[position] != rune('L') {
-						goto l716
+						goto l725
 					}
 					position++
 				}
-			l718:
+			l727:
 				{
-					position720, tokenIndex720 := position, tokenIndex
+					position729, tokenIndex729 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l721
+						goto l730
 					}
 					position++
-					goto l720
-				l721:
-					position, tokenIndex = position720, tokenIndex720
+					goto l729
+				l730:
+					position, tokenIndex = position729, tokenIndex729
 					if buffer[position] != rune('O') {
-						goto l716
+						goto l725
 					}
 					position++
 				}
-			l720:
+			l729:
 				if buffer[position] != rune('1') {
-					goto l716
+					goto l725
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l716
+					goto l725
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l716
+					goto l725
 				}
 				position++
 				{
-					position722, tokenIndex722 := position, tokenIndex
+					position731, tokenIndex731 := position, tokenIndex
 					if !_rules[ruleLocalSymbol]() {
-						goto l723
+						goto l732
 					}
-					goto l722
-				l723:
-					position, tokenIndex = position722, tokenIndex722
+					goto l731
+				l732:
+					position, tokenIndex = position731, tokenIndex731
 					if !_rules[ruleSymbolName]() {
-						goto l716
+						goto l725
 					}
 				}
-			l722:
+			l731:
 				{
-					position724, tokenIndex724 := position, tokenIndex
+					position733, tokenIndex733 := position, tokenIndex
 					if !_rules[ruleOffset]() {
-						goto l724
+						goto l733
 					}
-					goto l725
-				l724:
-					position, tokenIndex = position724, tokenIndex724
+					goto l734
+				l733:
+					position, tokenIndex = position733, tokenIndex733
 				}
-			l725:
-				add(ruleLow12BitsSymbolRef, position717)
+			l734:
+				add(ruleLow12BitsSymbolRef, position726)
 			}
 			return true
-		l716:
-			position, tokenIndex = position716, tokenIndex716
+		l725:
+			position, tokenIndex = position725, tokenIndex725
 			return false
 		},
 		/* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
 		func() bool {
-			position726, tokenIndex726 := position, tokenIndex
+			position735, tokenIndex735 := position, tokenIndex
 			{
-				position727 := position
+				position736 := position
 				if buffer[position] != rune('[') {
-					goto l726
+					goto l735
 				}
 				position++
 				if !_rules[ruleARMRegister]() {
-					goto l726
+					goto l735
 				}
 				{
-					position728, tokenIndex728 := position, tokenIndex
+					position737, tokenIndex737 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l728
+						goto l737
 					}
 					position++
 					{
-						position730, tokenIndex730 := position, tokenIndex
+						position739, tokenIndex739 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l730
+							goto l739
 						}
-						goto l731
-					l730:
-						position, tokenIndex = position730, tokenIndex730
+						goto l740
+					l739:
+						position, tokenIndex = position739, tokenIndex739
 					}
-				l731:
+				l740:
 					{
-						position732, tokenIndex732 := position, tokenIndex
+						position741, tokenIndex741 := position, tokenIndex
 						if buffer[position] != rune('#') {
-							goto l733
+							goto l742
 						}
 						position++
 						if !_rules[ruleOffset]() {
-							goto l733
+							goto l742
 						}
 						{
-							position734, tokenIndex734 := position, tokenIndex
+							position743, tokenIndex743 := position, tokenIndex
 							if buffer[position] != rune('*') {
-								goto l734
+								goto l743
 							}
 							position++
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l734
+								goto l743
 							}
 							position++
-						l736:
+						l745:
 							{
-								position737, tokenIndex737 := position, tokenIndex
+								position746, tokenIndex746 := position, tokenIndex
 								if c := buffer[position]; c < rune('0') || c > rune('9') {
-									goto l737
+									goto l746
 								}
 								position++
-								goto l736
-							l737:
-								position, tokenIndex = position737, tokenIndex737
+								goto l745
+							l746:
+								position, tokenIndex = position746, tokenIndex746
 							}
-							goto l735
-						l734:
-							position, tokenIndex = position734, tokenIndex734
+							goto l744
+						l743:
+							position, tokenIndex = position743, tokenIndex743
 						}
-					l735:
-						goto l732
-					l733:
-						position, tokenIndex = position732, tokenIndex732
+					l744:
+						goto l741
+					l742:
+						position, tokenIndex = position741, tokenIndex741
 						if !_rules[ruleARMGOTLow12]() {
-							goto l738
+							goto l747
 						}
-						goto l732
-					l738:
-						position, tokenIndex = position732, tokenIndex732
+						goto l741
+					l747:
+						position, tokenIndex = position741, tokenIndex741
 						if !_rules[ruleLow12BitsSymbolRef]() {
-							goto l739
+							goto l748
 						}
-						goto l732
-					l739:
-						position, tokenIndex = position732, tokenIndex732
+						goto l741
+					l748:
+						position, tokenIndex = position741, tokenIndex741
 						if !_rules[ruleARMRegister]() {
-							goto l728
+							goto l737
 						}
 					}
-				l732:
+				l741:
 					{
-						position740, tokenIndex740 := position, tokenIndex
+						position749, tokenIndex749 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l740
+							goto l749
 						}
 						position++
 						{
-							position742, tokenIndex742 := position, tokenIndex
+							position751, tokenIndex751 := position, tokenIndex
 							if !_rules[ruleWS]() {
-								goto l742
+								goto l751
 							}
-							goto l743
-						l742:
-							position, tokenIndex = position742, tokenIndex742
+							goto l752
+						l751:
+							position, tokenIndex = position751, tokenIndex751
 						}
-					l743:
+					l752:
 						if !_rules[ruleARMConstantTweak]() {
-							goto l740
+							goto l749
 						}
-						goto l741
-					l740:
-						position, tokenIndex = position740, tokenIndex740
+						goto l750
+					l749:
+						position, tokenIndex = position749, tokenIndex749
 					}
-				l741:
-					goto l729
-				l728:
-					position, tokenIndex = position728, tokenIndex728
+				l750:
+					goto l738
+				l737:
+					position, tokenIndex = position737, tokenIndex737
 				}
-			l729:
+			l738:
 				if buffer[position] != rune(']') {
-					goto l726
+					goto l735
 				}
 				position++
 				{
-					position744, tokenIndex744 := position, tokenIndex
+					position753, tokenIndex753 := position, tokenIndex
 					if !_rules[ruleARMPostincrement]() {
-						goto l744
+						goto l753
 					}
-					goto l745
-				l744:
-					position, tokenIndex = position744, tokenIndex744
+					goto l754
+				l753:
+					position, tokenIndex = position753, tokenIndex753
 				}
-			l745:
-				add(ruleARMBaseIndexScale, position727)
+			l754:
+				add(ruleARMBaseIndexScale, position736)
 			}
 			return true
-		l726:
-			position, tokenIndex = position726, tokenIndex726
+		l735:
+			position, tokenIndex = position735, tokenIndex735
 			return false
 		},
 		/* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
 		func() bool {
-			position746, tokenIndex746 := position, tokenIndex
+			position755, tokenIndex755 := position, tokenIndex
 			{
-				position747 := position
+				position756 := position
 				if buffer[position] != rune(':') {
-					goto l746
+					goto l755
 				}
 				position++
 				{
-					position748, tokenIndex748 := position, tokenIndex
+					position757, tokenIndex757 := position, tokenIndex
 					if buffer[position] != rune('g') {
-						goto l749
+						goto l758
 					}
 					position++
-					goto l748
-				l749:
-					position, tokenIndex = position748, tokenIndex748
+					goto l757
+				l758:
+					position, tokenIndex = position757, tokenIndex757
 					if buffer[position] != rune('G') {
-						goto l746
-					}
-					position++
-				}
-			l748:
-				{
-					position750, tokenIndex750 := position, tokenIndex
-					if buffer[position] != rune('o') {
-						goto l751
-					}
-					position++
-					goto l750
-				l751:
-					position, tokenIndex = position750, tokenIndex750
-					if buffer[position] != rune('O') {
-						goto l746
-					}
-					position++
-				}
-			l750:
-				{
-					position752, tokenIndex752 := position, tokenIndex
-					if buffer[position] != rune('t') {
-						goto l753
-					}
-					position++
-					goto l752
-				l753:
-					position, tokenIndex = position752, tokenIndex752
-					if buffer[position] != rune('T') {
-						goto l746
-					}
-					position++
-				}
-			l752:
-				if buffer[position] != rune('_') {
-					goto l746
-				}
-				position++
-				{
-					position754, tokenIndex754 := position, tokenIndex
-					if buffer[position] != rune('l') {
 						goto l755
 					}
 					position++
-					goto l754
-				l755:
-					position, tokenIndex = position754, tokenIndex754
-					if buffer[position] != rune('L') {
-						goto l746
-					}
-					position++
 				}
-			l754:
+			l757:
 				{
-					position756, tokenIndex756 := position, tokenIndex
+					position759, tokenIndex759 := position, tokenIndex
 					if buffer[position] != rune('o') {
-						goto l757
+						goto l760
 					}
 					position++
-					goto l756
-				l757:
-					position, tokenIndex = position756, tokenIndex756
+					goto l759
+				l760:
+					position, tokenIndex = position759, tokenIndex759
 					if buffer[position] != rune('O') {
-						goto l746
+						goto l755
 					}
 					position++
 				}
-			l756:
+			l759:
+				{
+					position761, tokenIndex761 := position, tokenIndex
+					if buffer[position] != rune('t') {
+						goto l762
+					}
+					position++
+					goto l761
+				l762:
+					position, tokenIndex = position761, tokenIndex761
+					if buffer[position] != rune('T') {
+						goto l755
+					}
+					position++
+				}
+			l761:
+				if buffer[position] != rune('_') {
+					goto l755
+				}
+				position++
+				{
+					position763, tokenIndex763 := position, tokenIndex
+					if buffer[position] != rune('l') {
+						goto l764
+					}
+					position++
+					goto l763
+				l764:
+					position, tokenIndex = position763, tokenIndex763
+					if buffer[position] != rune('L') {
+						goto l755
+					}
+					position++
+				}
+			l763:
+				{
+					position765, tokenIndex765 := position, tokenIndex
+					if buffer[position] != rune('o') {
+						goto l766
+					}
+					position++
+					goto l765
+				l766:
+					position, tokenIndex = position765, tokenIndex765
+					if buffer[position] != rune('O') {
+						goto l755
+					}
+					position++
+				}
+			l765:
 				if buffer[position] != rune('1') {
-					goto l746
+					goto l755
 				}
 				position++
 				if buffer[position] != rune('2') {
-					goto l746
+					goto l755
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l746
+					goto l755
 				}
 				position++
 				if !_rules[ruleSymbolName]() {
-					goto l746
+					goto l755
 				}
-				add(ruleARMGOTLow12, position747)
+				add(ruleARMGOTLow12, position756)
 			}
 			return true
-		l746:
-			position, tokenIndex = position746, tokenIndex746
+		l755:
+			position, tokenIndex = position755, tokenIndex755
 			return false
 		},
 		/* 48 ARMPostincrement <- <'!'> */
 		func() bool {
-			position758, tokenIndex758 := position, tokenIndex
+			position767, tokenIndex767 := position, tokenIndex
 			{
-				position759 := position
+				position768 := position
 				if buffer[position] != rune('!') {
-					goto l758
+					goto l767
 				}
 				position++
-				add(ruleARMPostincrement, position759)
+				add(ruleARMPostincrement, position768)
 			}
 			return true
-		l758:
-			position, tokenIndex = position758, tokenIndex758
+		l767:
+			position, tokenIndex = position767, tokenIndex767
 			return false
 		},
 		/* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
 		func() bool {
-			position760, tokenIndex760 := position, tokenIndex
+			position769, tokenIndex769 := position, tokenIndex
 			{
-				position761 := position
+				position770 := position
 				if buffer[position] != rune('(') {
-					goto l760
+					goto l769
 				}
 				position++
 				{
-					position762, tokenIndex762 := position, tokenIndex
+					position771, tokenIndex771 := position, tokenIndex
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l762
+						goto l771
 					}
-					goto l763
-				l762:
-					position, tokenIndex = position762, tokenIndex762
+					goto l772
+				l771:
+					position, tokenIndex = position771, tokenIndex771
 				}
-			l763:
+			l772:
 				{
-					position764, tokenIndex764 := position, tokenIndex
+					position773, tokenIndex773 := position, tokenIndex
 					if !_rules[ruleWS]() {
-						goto l764
+						goto l773
 					}
-					goto l765
-				l764:
-					position, tokenIndex = position764, tokenIndex764
+					goto l774
+				l773:
+					position, tokenIndex = position773, tokenIndex773
 				}
-			l765:
+			l774:
 				{
-					position766, tokenIndex766 := position, tokenIndex
+					position775, tokenIndex775 := position, tokenIndex
 					if buffer[position] != rune(',') {
-						goto l766
+						goto l775
 					}
 					position++
 					{
-						position768, tokenIndex768 := position, tokenIndex
+						position777, tokenIndex777 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l768
+							goto l777
 						}
-						goto l769
-					l768:
-						position, tokenIndex = position768, tokenIndex768
+						goto l778
+					l777:
+						position, tokenIndex = position777, tokenIndex777
 					}
-				l769:
+				l778:
 					if !_rules[ruleRegisterOrConstant]() {
-						goto l766
+						goto l775
 					}
 					{
-						position770, tokenIndex770 := position, tokenIndex
+						position779, tokenIndex779 := position, tokenIndex
 						if !_rules[ruleWS]() {
-							goto l770
+							goto l779
 						}
-						goto l771
-					l770:
-						position, tokenIndex = position770, tokenIndex770
+						goto l780
+					l779:
+						position, tokenIndex = position779, tokenIndex779
 					}
-				l771:
+				l780:
 					{
-						position772, tokenIndex772 := position, tokenIndex
+						position781, tokenIndex781 := position, tokenIndex
 						if buffer[position] != rune(',') {
-							goto l772
+							goto l781
 						}
 						position++
 						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l772
+							goto l781
 						}
 						position++
-					l774:
+					l783:
 						{
-							position775, tokenIndex775 := position, tokenIndex
+							position784, tokenIndex784 := position, tokenIndex
 							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l775
+								goto l784
 							}
 							position++
-							goto l774
-						l775:
-							position, tokenIndex = position775, tokenIndex775
+							goto l783
+						l784:
+							position, tokenIndex = position784, tokenIndex784
 						}
-						goto l773
-					l772:
-						position, tokenIndex = position772, tokenIndex772
+						goto l782
+					l781:
+						position, tokenIndex = position781, tokenIndex781
 					}
-				l773:
-					goto l767
-				l766:
-					position, tokenIndex = position766, tokenIndex766
+				l782:
+					goto l776
+				l775:
+					position, tokenIndex = position775, tokenIndex775
 				}
-			l767:
+			l776:
 				if buffer[position] != rune(')') {
-					goto l760
+					goto l769
 				}
 				position++
-				add(ruleBaseIndexScale, position761)
+				add(ruleBaseIndexScale, position770)
 			}
 			return true
-		l760:
-			position, tokenIndex = position760, tokenIndex760
+		l769:
+			position, tokenIndex = position769, tokenIndex769
 			return false
 		},
 		/* 50 Operator <- <('+' / '-')> */
 		func() bool {
-			position776, tokenIndex776 := position, tokenIndex
+			position785, tokenIndex785 := position, tokenIndex
 			{
-				position777 := position
+				position786 := position
 				{
-					position778, tokenIndex778 := position, tokenIndex
+					position787, tokenIndex787 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l779
+						goto l788
 					}
 					position++
-					goto l778
-				l779:
-					position, tokenIndex = position778, tokenIndex778
+					goto l787
+				l788:
+					position, tokenIndex = position787, tokenIndex787
 					if buffer[position] != rune('-') {
-						goto l776
+						goto l785
 					}
 					position++
 				}
-			l778:
-				add(ruleOperator, position777)
+			l787:
+				add(ruleOperator, position786)
 			}
 			return true
-		l776:
-			position, tokenIndex = position776, tokenIndex776
+		l785:
+			position, tokenIndex = position785, tokenIndex785
 			return false
 		},
 		/* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
 		func() bool {
-			position780, tokenIndex780 := position, tokenIndex
+			position789, tokenIndex789 := position, tokenIndex
 			{
-				position781 := position
+				position790 := position
 				{
-					position782, tokenIndex782 := position, tokenIndex
+					position791, tokenIndex791 := position, tokenIndex
 					if buffer[position] != rune('+') {
-						goto l782
+						goto l791
 					}
 					position++
-					goto l783
-				l782:
-					position, tokenIndex = position782, tokenIndex782
+					goto l792
+				l791:
+					position, tokenIndex = position791, tokenIndex791
 				}
-			l783:
+			l792:
 				{
-					position784, tokenIndex784 := position, tokenIndex
+					position793, tokenIndex793 := position, tokenIndex
 					if buffer[position] != rune('-') {
-						goto l784
+						goto l793
 					}
 					position++
-					goto l785
-				l784:
-					position, tokenIndex = position784, tokenIndex784
+					goto l794
+				l793:
+					position, tokenIndex = position793, tokenIndex793
 				}
-			l785:
+			l794:
 				{
-					position786, tokenIndex786 := position, tokenIndex
-					if buffer[position] != rune('0') {
-						goto l787
-					}
-					position++
-					{
-						position788, tokenIndex788 := position, tokenIndex
-						if buffer[position] != rune('b') {
-							goto l789
-						}
-						position++
-						goto l788
-					l789:
-						position, tokenIndex = position788, tokenIndex788
-						if buffer[position] != rune('B') {
-							goto l787
-						}
-						position++
-					}
-				l788:
-					{
-						position792, tokenIndex792 := position, tokenIndex
-						if buffer[position] != rune('0') {
-							goto l793
-						}
-						position++
-						goto l792
-					l793:
-						position, tokenIndex = position792, tokenIndex792
-						if buffer[position] != rune('1') {
-							goto l787
-						}
-						position++
-					}
-				l792:
-				l790:
-					{
-						position791, tokenIndex791 := position, tokenIndex
-						{
-							position794, tokenIndex794 := position, tokenIndex
-							if buffer[position] != rune('0') {
-								goto l795
-							}
-							position++
-							goto l794
-						l795:
-							position, tokenIndex = position794, tokenIndex794
-							if buffer[position] != rune('1') {
-								goto l791
-							}
-							position++
-						}
-					l794:
-						goto l790
-					l791:
-						position, tokenIndex = position791, tokenIndex791
-					}
-					goto l786
-				l787:
-					position, tokenIndex = position786, tokenIndex786
+					position795, tokenIndex795 := position, tokenIndex
 					if buffer[position] != rune('0') {
 						goto l796
 					}
 					position++
 					{
 						position797, tokenIndex797 := position, tokenIndex
-						if buffer[position] != rune('x') {
+						if buffer[position] != rune('b') {
 							goto l798
 						}
 						position++
 						goto l797
 					l798:
 						position, tokenIndex = position797, tokenIndex797
-						if buffer[position] != rune('X') {
+						if buffer[position] != rune('B') {
 							goto l796
 						}
 						position++
@@ -6133,204 +6137,263 @@
 				l797:
 					{
 						position801, tokenIndex801 := position, tokenIndex
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
+						if buffer[position] != rune('0') {
 							goto l802
 						}
 						position++
 						goto l801
 					l802:
 						position, tokenIndex = position801, tokenIndex801
-						if c := buffer[position]; c < rune('0') || c > rune('9') {
-							goto l803
+						if buffer[position] != rune('1') {
+							goto l796
 						}
 						position++
-						goto l801
-					l803:
-						position, tokenIndex = position801, tokenIndex801
-						{
-							position804, tokenIndex804 := position, tokenIndex
-							if c := buffer[position]; c < rune('a') || c > rune('f') {
-								goto l805
-							}
-							position++
-							goto l804
-						l805:
-							position, tokenIndex = position804, tokenIndex804
-							if c := buffer[position]; c < rune('A') || c > rune('F') {
-								goto l796
-							}
-							position++
-						}
-					l804:
 					}
 				l801:
 				l799:
 					{
 						position800, tokenIndex800 := position, tokenIndex
 						{
-							position806, tokenIndex806 := position, tokenIndex
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l807
+							position803, tokenIndex803 := position, tokenIndex
+							if buffer[position] != rune('0') {
+								goto l804
 							}
 							position++
-							goto l806
-						l807:
-							position, tokenIndex = position806, tokenIndex806
-							if c := buffer[position]; c < rune('0') || c > rune('9') {
-								goto l808
+							goto l803
+						l804:
+							position, tokenIndex = position803, tokenIndex803
+							if buffer[position] != rune('1') {
+								goto l800
 							}
 							position++
-							goto l806
-						l808:
-							position, tokenIndex = position806, tokenIndex806
-							{
-								position809, tokenIndex809 := position, tokenIndex
-								if c := buffer[position]; c < rune('a') || c > rune('f') {
-									goto l810
-								}
-								position++
-								goto l809
-							l810:
-								position, tokenIndex = position809, tokenIndex809
-								if c := buffer[position]; c < rune('A') || c > rune('F') {
-									goto l800
-								}
-								position++
-							}
-						l809:
 						}
-					l806:
+					l803:
 						goto l799
 					l800:
 						position, tokenIndex = position800, tokenIndex800
 					}
-					goto l786
+					goto l795
 				l796:
-					position, tokenIndex = position786, tokenIndex786
-					if c := buffer[position]; c < rune('0') || c > rune('9') {
-						goto l780
+					position, tokenIndex = position795, tokenIndex795
+					if buffer[position] != rune('0') {
+						goto l805
 					}
 					position++
-				l811:
 					{
-						position812, tokenIndex812 := position, tokenIndex
+						position806, tokenIndex806 := position, tokenIndex
+						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 l811
+						goto l810
 					l812:
-						position, tokenIndex = position812, tokenIndex812
+						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:
 					}
-				}
-			l786:
-				add(ruleOffset, position781)
-			}
-			return true
-		l780:
-			position, tokenIndex = position780, tokenIndex780
-			return false
-		},
-		/* 52 Section <- <([a-z] / [A-Z] / '@')+> */
-		func() bool {
-			position813, tokenIndex813 := position, tokenIndex
-			{
-				position814 := position
-				{
-					position817, tokenIndex817 := position, tokenIndex
-					if c := buffer[position]; c < rune('a') || c > rune('z') {
-						goto l818
-					}
-					position++
-					goto l817
-				l818:
-					position, tokenIndex = position817, tokenIndex817
-					if c := buffer[position]; c < rune('A') || c > rune('Z') {
-						goto l819
-					}
-					position++
-					goto l817
-				l819:
-					position, tokenIndex = position817, tokenIndex817
-					if buffer[position] != rune('@') {
-						goto l813
-					}
-					position++
-				}
-			l817:
-			l815:
-				{
-					position816, tokenIndex816 := position, tokenIndex
+				l810:
+				l808:
 					{
-						position820, tokenIndex820 := position, tokenIndex
-						if c := buffer[position]; c < rune('a') || c > rune('z') {
+						position809, tokenIndex809 := position, tokenIndex
+						{
+							position815, tokenIndex815 := position, tokenIndex
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l816
+							}
+							position++
+							goto l815
+						l816:
+							position, tokenIndex = position815, tokenIndex815
+							if c := buffer[position]; c < rune('0') || c > rune('9') {
+								goto l817
+							}
+							position++
+							goto l815
+						l817:
+							position, tokenIndex = position815, tokenIndex815
+							{
+								position818, tokenIndex818 := position, tokenIndex
+								if c := buffer[position]; c < rune('a') || c > rune('f') {
+									goto l819
+								}
+								position++
+								goto l818
+							l819:
+								position, tokenIndex = position818, tokenIndex818
+								if c := buffer[position]; c < rune('A') || c > rune('F') {
+									goto l809
+								}
+								position++
+							}
+						l818:
+						}
+					l815:
+						goto l808
+					l809:
+						position, tokenIndex = position809, tokenIndex809
+					}
+					goto l795
+				l805:
+					position, tokenIndex = position795, tokenIndex795
+					if c := buffer[position]; c < rune('0') || c > rune('9') {
+						goto l789
+					}
+					position++
+				l820:
+					{
+						position821, tokenIndex821 := position, tokenIndex
+						if c := buffer[position]; c < rune('0') || c > rune('9') {
 							goto l821
 						}
 						position++
 						goto l820
 					l821:
-						position, tokenIndex = position820, tokenIndex820
-						if c := buffer[position]; c < rune('A') || c > rune('Z') {
-							goto l822
+						position, tokenIndex = position821, tokenIndex821
+					}
+				}
+			l795:
+				add(ruleOffset, position790)
+			}
+			return true
+		l789:
+			position, tokenIndex = position789, tokenIndex789
+			return false
+		},
+		/* 52 Section <- <([a-z] / [A-Z] / '@')+> */
+		func() bool {
+			position822, tokenIndex822 := position, tokenIndex
+			{
+				position823 := position
+				{
+					position826, tokenIndex826 := position, tokenIndex
+					if c := buffer[position]; c < rune('a') || c > rune('z') {
+						goto l827
+					}
+					position++
+					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++
+				}
+			l826:
+			l824:
+				{
+					position825, tokenIndex825 := position, tokenIndex
+					{
+						position829, tokenIndex829 := position, tokenIndex
+						if c := buffer[position]; c < rune('a') || c > rune('z') {
+							goto l830
 						}
 						position++
-						goto l820
-					l822:
-						position, tokenIndex = position820, tokenIndex820
+						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 l816
+							goto l825
 						}
 						position++
 					}
-				l820:
-					goto l815
-				l816:
-					position, tokenIndex = position816, tokenIndex816
+				l829:
+					goto l824
+				l825:
+					position, tokenIndex = position825, tokenIndex825
 				}
-				add(ruleSection, position814)
+				add(ruleSection, position823)
 			}
 			return true
-		l813:
-			position, tokenIndex = position813, tokenIndex813
+		l822:
+			position, tokenIndex = position822, tokenIndex822
 			return false
 		},
 		/* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
 		func() bool {
-			position823, tokenIndex823 := position, tokenIndex
+			position832, tokenIndex832 := position, tokenIndex
 			{
-				position824 := position
+				position833 := position
 				if buffer[position] != rune('%') {
-					goto l823
+					goto l832
 				}
 				position++
 				{
-					position825, tokenIndex825 := position, tokenIndex
+					position834, tokenIndex834 := position, tokenIndex
 					if c := buffer[position]; c < rune('c') || c > rune('g') {
-						goto l826
+						goto l835
 					}
 					position++
-					goto l825
-				l826:
-					position, tokenIndex = position825, tokenIndex825
+					goto l834
+				l835:
+					position, tokenIndex = position834, tokenIndex834
 					if buffer[position] != rune('s') {
-						goto l823
+						goto l832
 					}
 					position++
 				}
-			l825:
+			l834:
 				if buffer[position] != rune('s') {
-					goto l823
+					goto l832
 				}
 				position++
 				if buffer[position] != rune(':') {
-					goto l823
+					goto l832
 				}
 				position++
-				add(ruleSegmentRegister, position824)
+				add(ruleSegmentRegister, position833)
 			}
 			return true
-		l823:
-			position, tokenIndex = position823, tokenIndex823
+		l832:
+			position, tokenIndex = position832, tokenIndex832
 			return false
 		},
 	}