aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Chamberlain <sac@cygnus>1994-01-31 16:53:03 +0000
committerSteve Chamberlain <sac@cygnus>1994-01-31 16:53:03 +0000
commit3981bad3ee102077ef9fe4d3ad46972809719743 (patch)
tree06d8158063bb2c538394c5e1e936e059a4e3137b
parenta5a4b5acdce926afa084bb59ea014eefd56933d6 (diff)
downloadgdb-3981bad3ee102077ef9fe4d3ad46972809719743.zip
gdb-3981bad3ee102077ef9fe4d3ad46972809719743.tar.gz
gdb-3981bad3ee102077ef9fe4d3ad46972809719743.tar.bz2
New files for testing gasp.
-rw-r--r--gas/testsuite/gasp/INC1.H3
-rw-r--r--gas/testsuite/gasp/INC2.H2
-rw-r--r--gas/testsuite/gasp/assign.asm13
-rw-r--r--gas/testsuite/gasp/assign.is25
-rw-r--r--gas/testsuite/gasp/assign.was25
-rw-r--r--gas/testsuite/gasp/condass.asm129
-rw-r--r--gas/testsuite/gasp/condass.is155
-rw-r--r--gas/testsuite/gasp/condass.was155
-rw-r--r--gas/testsuite/gasp/crash.asm22
-rw-r--r--gas/testsuite/gasp/crash.is3061
-rw-r--r--gas/testsuite/gasp/crash.was3061
-rw-r--r--gas/testsuite/gasp/crash1.asm13
-rw-r--r--gas/testsuite/gasp/crash1.is26
-rw-r--r--gas/testsuite/gasp/crash1.was26
-rw-r--r--gas/testsuite/gasp/crash2.asm41
-rw-r--r--gas/testsuite/gasp/data.asm23
-rw-r--r--gas/testsuite/gasp/data.is46
-rw-r--r--gas/testsuite/gasp/data.was46
-rw-r--r--gas/testsuite/gasp/exp.asm80
-rw-r--r--gas/testsuite/gasp/exp.is133
-rw-r--r--gas/testsuite/gasp/exp.was133
-rw-r--r--gas/testsuite/gasp/include.asm4
-rw-r--r--gas/testsuite/gasp/include.is16
-rw-r--r--gas/testsuite/gasp/include.was16
-rw-r--r--gas/testsuite/gasp/listing.asm15
-rw-r--r--gas/testsuite/gasp/listing.is32
-rw-r--r--gas/testsuite/gasp/listing.was32
-rw-r--r--gas/testsuite/gasp/macro.asm102
-rw-r--r--gas/testsuite/gasp/macro.is375
-rw-r--r--gas/testsuite/gasp/macro.was375
-rw-r--r--gas/testsuite/gasp/reg.asm9
-rw-r--r--gas/testsuite/gasp/reg.is16
-rw-r--r--gas/testsuite/gasp/reg.was16
-rw-r--r--gas/testsuite/gasp/rep.asm13
-rw-r--r--gas/testsuite/gasp/rep.is392
-rw-r--r--gas/testsuite/gasp/rep.was392
-rw-r--r--gas/testsuite/gasp/repeat.asm14
-rw-r--r--gas/testsuite/gasp/repeat.is212
-rw-r--r--gas/testsuite/gasp/repeat.was212
-rw-r--r--gas/testsuite/gasp/reperr.asm2
-rw-r--r--gas/testsuite/gasp/reperr1.asm3
-rw-r--r--gas/testsuite/gasp/reperr1.is6
-rw-r--r--gas/testsuite/gasp/reperr1.was6
-rw-r--r--gas/testsuite/gasp/reperr2.asm6
-rw-r--r--gas/testsuite/gasp/reperr2.is16
-rw-r--r--gas/testsuite/gasp/reperr2.was16
-rw-r--r--gas/testsuite/gasp/reperr3.asm21
-rw-r--r--gas/testsuite/gasp/reperr3.is2042
-rw-r--r--gas/testsuite/gasp/reperr3.was2042
-rw-r--r--gas/testsuite/gasp/sdata.asm24
-rw-r--r--gas/testsuite/gasp/sdata.is62
-rw-r--r--gas/testsuite/gasp/sdata.was62
-rw-r--r--gas/testsuite/gasp/sfunc.asm26
-rw-r--r--gas/testsuite/gasp/sfunc.is50
-rw-r--r--gas/testsuite/gasp/sfunc.was50
-rw-r--r--gas/testsuite/gasp/t1.asm3
-rw-r--r--gas/testsuite/gasp/t1.is6
-rw-r--r--gas/testsuite/gasp/t1.was6
-rw-r--r--gas/testsuite/gasp/t2.asm8
-rw-r--r--gas/testsuite/gasp/t2.is14
-rw-r--r--gas/testsuite/gasp/t2.was14
-rw-r--r--gas/testsuite/gasp/t3.asm12
-rw-r--r--gas/testsuite/gasp/t3.is26
-rw-r--r--gas/testsuite/gasp/t3.was26
-rw-r--r--gas/testsuite/gasp/while.asm18
-rw-r--r--gas/testsuite/gasp/while.is389
-rw-r--r--gas/testsuite/gasp/while.was389
67 files changed, 14806 insertions, 0 deletions
diff --git a/gas/testsuite/gasp/INC1.H b/gas/testsuite/gasp/INC1.H
new file mode 100644
index 0000000..0d37323
--- /dev/null
+++ b/gas/testsuite/gasp/INC1.H
@@ -0,0 +1,3 @@
+FILE 1 FIRST LINE
+ .INCLUDE "INC2.H"
+FILE 1 LAST LINE
diff --git a/gas/testsuite/gasp/INC2.H b/gas/testsuite/gasp/INC2.H
new file mode 100644
index 0000000..083c3dc
--- /dev/null
+++ b/gas/testsuite/gasp/INC2.H
@@ -0,0 +1,2 @@
+ FILE 2 FIRST LINE
+ FILE 2 LAST LINE
diff --git a/gas/testsuite/gasp/assign.asm b/gas/testsuite/gasp/assign.asm
new file mode 100644
index 0000000..7f66718
--- /dev/null
+++ b/gas/testsuite/gasp/assign.asm
@@ -0,0 +1,13 @@
+
+foo: .ASSIGNC "hello"
+BAR: .ASSIGNA 12+34
+
+ \&foo'foo
+ \&foo\&foo\&foo
+ \&foo \&foo \&foo
+ \&BAR\&bar\&BAR
+
+
+
+
+ .END
diff --git a/gas/testsuite/gasp/assign.is b/gas/testsuite/gasp/assign.is
new file mode 100644
index 0000000..65aadf3
--- /dev/null
+++ b/gas/testsuite/gasp/assign.is
@@ -0,0 +1,25 @@
+******** assign.amp
+!
+
+!foo: .ASSIGNC "hello"
+!BAR: .ASSIGNA 12+34
+!
+
+! \&foo'foo
+ hellofoo
+! \&foo\&foo\&foo
+ hellohellohello
+! \&foo \&foo \&foo
+ hello hello hello
+! \&BAR\&bar\&BAR
+ 4646
+!
+
+!
+
+!
+
+!
+
+! .END
+assign.amp:8 Can't find preprocessor variable bar.
diff --git a/gas/testsuite/gasp/assign.was b/gas/testsuite/gasp/assign.was
new file mode 100644
index 0000000..65aadf3
--- /dev/null
+++ b/gas/testsuite/gasp/assign.was
@@ -0,0 +1,25 @@
+******** assign.amp
+!
+
+!foo: .ASSIGNC "hello"
+!BAR: .ASSIGNA 12+34
+!
+
+! \&foo'foo
+ hellofoo
+! \&foo\&foo\&foo
+ hellohellohello
+! \&foo \&foo \&foo
+ hello hello hello
+! \&BAR\&bar\&BAR
+ 4646
+!
+
+!
+
+!
+
+!
+
+! .END
+assign.amp:8 Can't find preprocessor variable bar.
diff --git a/gas/testsuite/gasp/condass.asm b/gas/testsuite/gasp/condass.asm
new file mode 100644
index 0000000..2bd9f07
--- /dev/null
+++ b/gas/testsuite/gasp/condass.asm
@@ -0,0 +1,129 @@
+ .AIF 1 EQ 1
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 2
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ .AIF 1 EQ 2
+ BAD
+ .AELSE
+ OK
+ .AIF 1 EQ 2
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ .AENDI
+ .AIF 1 LT 2
+ OK
+ .AENDI
+ .AIF 1 EQ 2
+ BAD
+ .AENDI
+ .AIF 1 NE 2
+ OK
+ .AENDI
+ .AIF 1 LE 2
+ OK
+ .AENDI
+ .AIF 1 GT 2
+ BAD
+ .AENDI
+ .AIF 3 GE 2
+ OK
+ .AENDI
+ .AIF 3 LT 2
+ BAD
+ .AENDI
+ .AIF 3 EQ 2
+ BAD
+ .AENDI
+ .AIF 3 NE 2
+ OK
+ .AENDI
+ .AIF 3 LE 2
+ BAD
+ .AENDI
+ .AIF 3 GT 2
+ OK
+ .AENDI
+ .AIF 3 GE 2
+ OK
+ .AENDI
+ .AIF "FOO" EQ "BAR"
+ BAD
+ .AENDI
+ .AIF "FOO" EQ "FOO"
+ OK
+ .AENDI
+ .AIF "FOO" NE "BAR"
+ OK
+ .AENDI
+ .AIF "FOO" EQ "FOO"
+ OK
+ .AENDI
+ .AIF 1 EQ 1
+ .AIF 1 EQ 1
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ .AIF 1 EQ 1
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ .AIF 1 EQ 1
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ OK
+ .AENDI
+ .AIF 1 EQ 1
+ OK
+ .AIF 1 EQ 1
+ OK
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ .AELSE
+ BAD
+ .AENDI
+ .AIF 1 EQ 0
+ BAD
+ .AELSE
+ OK
+ .AENDI
+ .END
diff --git a/gas/testsuite/gasp/condass.is b/gas/testsuite/gasp/condass.is
new file mode 100644
index 0000000..a1093a7
--- /dev/null
+++ b/gas/testsuite/gasp/condass.is
@@ -0,0 +1,155 @@
+******** condass.amp
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AENDI
+! .AIF 1 LT 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AENDI
+! .AIF 1 NE 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 LE 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 GT 2
+! BAD
+! .AENDI
+! .AIF 3 GE 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 LT 2
+! BAD
+! .AENDI
+! .AIF 3 EQ 2
+! BAD
+! .AENDI
+! .AIF 3 NE 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 LE 2
+! BAD
+! .AENDI
+! .AIF 3 GT 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 GE 2
+! OK
+ OK
+! .AENDI
+! .AIF "FOO" EQ "BAR"
+! BAD
+! .AENDI
+! .AIF "FOO" EQ "FOO"
+! OK
+ OK
+! .AENDI
+! .AIF "FOO" NE "BAR"
+! OK
+! .AENDI
+! .AIF "FOO" EQ "FOO"
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .END
diff --git a/gas/testsuite/gasp/condass.was b/gas/testsuite/gasp/condass.was
new file mode 100644
index 0000000..a1093a7
--- /dev/null
+++ b/gas/testsuite/gasp/condass.was
@@ -0,0 +1,155 @@
+******** condass.amp
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AIF 1 EQ 2
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AENDI
+! .AIF 1 LT 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 2
+! BAD
+! .AENDI
+! .AIF 1 NE 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 LE 2
+! OK
+ OK
+! .AENDI
+! .AIF 1 GT 2
+! BAD
+! .AENDI
+! .AIF 3 GE 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 LT 2
+! BAD
+! .AENDI
+! .AIF 3 EQ 2
+! BAD
+! .AENDI
+! .AIF 3 NE 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 LE 2
+! BAD
+! .AENDI
+! .AIF 3 GT 2
+! OK
+ OK
+! .AENDI
+! .AIF 3 GE 2
+! OK
+ OK
+! .AENDI
+! .AIF "FOO" EQ "BAR"
+! BAD
+! .AENDI
+! .AIF "FOO" EQ "FOO"
+! OK
+ OK
+! .AENDI
+! .AIF "FOO" NE "BAR"
+! OK
+! .AENDI
+! .AIF "FOO" EQ "FOO"
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! OK
+ OK
+! .AENDI
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AIF 1 EQ 1
+! OK
+ OK
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .AELSE
+! BAD
+! .AENDI
+! .AIF 1 EQ 0
+! BAD
+! .AELSE
+! OK
+ OK
+! .AENDI
+! .END
diff --git a/gas/testsuite/gasp/crash.asm b/gas/testsuite/gasp/crash.asm
new file mode 100644
index 0000000..0014bfd
--- /dev/null
+++ b/gas/testsuite/gasp/crash.asm
@@ -0,0 +1,22 @@
+
+ Stuff to try and crash it
+
+foo: .MACRO
+ HI
+bar: .MACRO
+ THERE
+ bar
+ .ENDM
+
+
+ .ENDM
+ foo
+ foo
+ foo
+ foo
+ foo
+ bar
+
+
+
+ \ No newline at end of file
diff --git a/gas/testsuite/gasp/crash.is b/gas/testsuite/gasp/crash.is
new file mode 100644
index 0000000..9d12fe1
--- /dev/null
+++ b/gas/testsuite/gasp/crash.is
@@ -0,0 +1,3061 @@
+******** crash.amp
+!
+
+! Stuff to try and crash it
+ Stuff to try and crash it
+!
+
+!foo: .MACRO
+! HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+!
+! .ENDM
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+crash.amp:18 Unreasonable expansion (-u turns off check).
diff --git a/gas/testsuite/gasp/crash.was b/gas/testsuite/gasp/crash.was
new file mode 100644
index 0000000..9d12fe1
--- /dev/null
+++ b/gas/testsuite/gasp/crash.was
@@ -0,0 +1,3061 @@
+******** crash.amp
+!
+
+! Stuff to try and crash it
+ Stuff to try and crash it
+!
+
+!foo: .MACRO
+! HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+!
+! .ENDM
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! foo
+! HI
+ HI
+!bar: .MACRO
+! THERE
+! bar
+! .ENDM
+!
+
+!
+
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+! THERE
+ THERE
+! bar
+crash.amp:18 Unreasonable expansion (-u turns off check).
diff --git a/gas/testsuite/gasp/crash1.asm b/gas/testsuite/gasp/crash1.asm
new file mode 100644
index 0000000..d2b6b30
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.asm
@@ -0,0 +1,13 @@
+
+
+ .MACRO foo a b c=a
+ \a \b \c \d
+ .ENDM
+
+ foo 1 2
+ foo 1 2 3 4
+ foo 1
+ foo
+
+
+ .END
diff --git a/gas/testsuite/gasp/crash1.is b/gas/testsuite/gasp/crash1.is
new file mode 100644
index 0000000..d2c6b46
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.is
@@ -0,0 +1,26 @@
+******** crash1.amp
+!
+
+!
+
+! .MACRO foo a b c=a
+! \a \b \c \d
+! .ENDM
+!
+
+! foo 1 2
+! 1 2 a \d
+ 1 2 a \d
+! foo 1 2 3 4
+! foo 1
+! 1 a \d
+ 1 a \d
+! foo
+! a \d
+ a \d
+!
+
+!
+
+! .END
+crash1.amp:8 Too many positional arguments.
diff --git a/gas/testsuite/gasp/crash1.was b/gas/testsuite/gasp/crash1.was
new file mode 100644
index 0000000..d2c6b46
--- /dev/null
+++ b/gas/testsuite/gasp/crash1.was
@@ -0,0 +1,26 @@
+******** crash1.amp
+!
+
+!
+
+! .MACRO foo a b c=a
+! \a \b \c \d
+! .ENDM
+!
+
+! foo 1 2
+! 1 2 a \d
+ 1 2 a \d
+! foo 1 2 3 4
+! foo 1
+! 1 a \d
+ 1 a \d
+! foo
+! a \d
+ a \d
+!
+
+!
+
+! .END
+crash1.amp:8 Too many positional arguments.
diff --git a/gas/testsuite/gasp/crash2.asm b/gas/testsuite/gasp/crash2.asm
new file mode 100644
index 0000000..288a003
--- /dev/null
+++ b/gas/testsuite/gasp/crash2.asm
@@ -0,0 +1,41 @@
+
+foo: .ASSIGNA 1
+ \&foo+1
+ \&foo+1
+foo: .ASSIGNC "foo"
+ \&foo+1
+ \&foo+1
+
+foo: .ASSIGNA 1
+ \&foo+1
+ \&foo+1
+foo: .ASSIGNC "foo"
+ \&foo+1
+ \&foo+1
+
+foo: .ASSIGNA 1
+ \&foo+1
+ \&foo+1
+foo: .ASSIGNC "foo"
+ \&foo+1
+ \&foo+1
+
+foo: .ASSIGNA 1
+ \&foo+1
+ \&foo+1
+foo: .ASSIGNC "foo"
+ \&foo+1
+ \&foo+1
+
+foo: .ASSIGNA 1
+ \&foo+1
+ \&foo+1
+foo: .ASSIGNC "foo"
+ \&foo+1
+ \&foo+1
+ foo
+ foo foo
+ foo foo
+ foo
+ .END
+
diff --git a/gas/testsuite/gasp/data.asm b/gas/testsuite/gasp/data.asm
new file mode 100644
index 0000000..ba6b0a0
--- /dev/null
+++ b/gas/testsuite/gasp/data.asm
@@ -0,0 +1,23 @@
+
+foo .DATA 1,2,3
+bar .DATA 1,2,3,4,5 ,6
+ .DATA.B 12345,12,2
+ .DATA.W 9,2,12,3,13+41,foo+9
+ .DATA.L 2~99
+
+
+
+ .DATAB 1,2,3
+ .DATAB 1,2,3
+
+
+
+
+ .DATAB 1,9+32
+
+ .DATAB.L 1,H'11111111
+ .DATAB.W 2,H'2222
+ .DATAB.B 3,H'333
+
+
+ .END
diff --git a/gas/testsuite/gasp/data.is b/gas/testsuite/gasp/data.is
new file mode 100644
index 0000000..0fe6974
--- /dev/null
+++ b/gas/testsuite/gasp/data.is
@@ -0,0 +1,46 @@
+******** data.amp
+!
+
+!foo .DATA 1,2,3
+foo: .long 1,2,3
+!bar .DATA 1,2,3,4,5 ,6
+bar: .long 1,2,3,4,5,6
+! .DATA.B 12345,12,2
+ .byte 12345,12,2
+! .DATA.W 9,2,12,3,13+41,foo+9
+ .short 9,2,12,3,54,foo+9
+! .DATA.L 2~99
+ .long 97
+!
+
+!
+
+!
+
+! .DATAB 1,2,3
+ .fill 1,4,2
+! .DATAB 1,2,3
+ .fill 1,4,2
+!
+
+!
+
+!
+
+!
+
+! .DATAB 1,9+32
+ .fill 1,4,41
+!
+
+! .DATAB.L 1,H'11111111
+ .fill 1,4,286331153
+! .DATAB.W 2,H'2222
+ .fill 2,2,8738
+! .DATAB.B 3,H'333
+ .fill 3,1,819
+!
+
+!
+
+! .END
diff --git a/gas/testsuite/gasp/data.was b/gas/testsuite/gasp/data.was
new file mode 100644
index 0000000..0fe6974
--- /dev/null
+++ b/gas/testsuite/gasp/data.was
@@ -0,0 +1,46 @@
+******** data.amp
+!
+
+!foo .DATA 1,2,3
+foo: .long 1,2,3
+!bar .DATA 1,2,3,4,5 ,6
+bar: .long 1,2,3,4,5,6
+! .DATA.B 12345,12,2
+ .byte 12345,12,2
+! .DATA.W 9,2,12,3,13+41,foo+9
+ .short 9,2,12,3,54,foo+9
+! .DATA.L 2~99
+ .long 97
+!
+
+!
+
+!
+
+! .DATAB 1,2,3
+ .fill 1,4,2
+! .DATAB 1,2,3
+ .fill 1,4,2
+!
+
+!
+
+!
+
+!
+
+! .DATAB 1,9+32
+ .fill 1,4,41
+!
+
+! .DATAB.L 1,H'11111111
+ .fill 1,4,286331153
+! .DATAB.W 2,H'2222
+ .fill 2,2,8738
+! .DATAB.B 3,H'333
+ .fill 3,1,819
+!
+
+!
+
+! .END
diff --git a/gas/testsuite/gasp/exp.asm b/gas/testsuite/gasp/exp.asm
new file mode 100644
index 0000000..041608a
--- /dev/null
+++ b/gas/testsuite/gasp/exp.asm
@@ -0,0 +1,80 @@
+
+; test all ops
+
+a1 .EQU 4+10
+a2 .EQU 4-10
+a3 .EQU 4&10
+a4 .EQU 4|2
+a5 .EQU 4~2
+a6 .EQU 4*10
+a7 .EQU 40/10
+a8 .EQU +7
+a9 .EQU -7
+a10 .EQU ~7
+
+
+ a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+
+; test the priorities
+
+b1 .EQU 1|2~3&4+5-8*7/2
+b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
+b3 .EQU 10*2/3*4
+b4 .EQU (((10*2)/3)*4)
+b5 .EQU 10+2-3+4
+b6 .EQU (((10+2)-3)+4)
+
+ b1 b2 b3 b4
+
+; test association
+
+c1 .EQU -~3
+c2 .EQU ~-3
+c3 .EQU -(~3)
+c4 .EQU ~(-3)
+
+ c1 c2 c3 c4
+
+; test rules for symbols
+
+ok1 .EQU FOO
+ok2 .EQU FOO+10
+ok3 .EQU 10+FOO
+ok4 .EQU FOO-10
+
+ ok1
+ ok2
+ ok3
+ ok4
+
+ok5 .EQU FOO+3+4+5+6
+ok6 .EQU FOO-BAR
+
+ ok5
+ ok6
+
+bad1 .EQU FOO+FOO
+bad2 .EQU FOO*2
+bad3 .EQU FOO/2
+bad4 .EQU FOO|2
+bad5 .EQU FOO&2
+bad6 .EQU FOO~2
+bad7 .EQU FOO*2
+
+; test spacing
+
+space1 .EQU 1 + 2 +3+FOO + 3
+space2
+
+; from the SH manual
+
+ .DATA.L 1+(2-(3+(4-5))),1
+
+ .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+
+ .DATA.L -~-~H'0000000f,H'00
+
+
+
+
+ .END
diff --git a/gas/testsuite/gasp/exp.is b/gas/testsuite/gasp/exp.is
new file mode 100644
index 0000000..ab2b5ee
--- /dev/null
+++ b/gas/testsuite/gasp/exp.is
@@ -0,0 +1,133 @@
+******** exp.amp
+!
+
+!; test all ops
+ ; test all ops
+!
+
+!a1 .EQU 4+10
+!a2 .EQU 4-10
+!a3 .EQU 4&10
+!a4 .EQU 4|2
+!a5 .EQU 4~2
+!a6 .EQU 4*10
+!a7 .EQU 40/10
+!a8 .EQU +7
+!a9 .EQU -7
+!a10 .EQU ~7
+!
+
+!
+
+! a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+ 14 -6 0 6 6 40 4 7 -7 -8
+!
+
+!; test the priorities
+ ; test the priorities
+!
+
+!b1 .EQU 1|2~3&4+5-8*7/2
+!b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
+!b3 .EQU 10*2/3*4
+!b4 .EQU (((10*2)/3)*4)
+!b5 .EQU 10+2-3+4
+!b6 .EQU (((10+2)-3)+4)
+!
+
+! b1 b2 b3 b4
+ 2 2 24 24
+!
+
+!; test association
+ ; test association
+!
+
+!c1 .EQU -~3
+!c2 .EQU ~-3
+!c3 .EQU -(~3)
+!c4 .EQU ~(-3)
+!
+
+! c1 c2 c3 c4
+ 4 2 4 2
+!
+
+!; test rules for symbols
+ ; test rules for symbols
+!
+
+!ok1 .EQU FOO
+!ok2 .EQU FOO+10
+!ok3 .EQU 10+FOO
+!ok4 .EQU FOO-10
+!
+
+! ok1
+ FOO
+! ok2
+ FOO+10
+! ok3
+ FOO+10
+! ok4
+ FOO+-10
+!
+
+!ok5 .EQU FOO+3+4+5+6
+!ok6 .EQU FOO-BAR
+!
+
+! ok5
+ FOO+18
+! ok6
+ FOO-FOO
+!
+
+!bad1 .EQU FOO+FOO
+!bad2 .EQU FOO*2
+!bad3 .EQU FOO/2
+!bad4 .EQU FOO|2
+!bad5 .EQU FOO&2
+!bad6 .EQU FOO~2
+!bad7 .EQU FOO*2
+!
+
+!; test spacing
+ ; test spacing
+!
+
+!space1 .EQU 1 + 2 +3+FOO + 3
+!space2
+space2:
+!
+
+!; from the SH manual
+ ; from the SH manual
+!
+
+! .DATA.L 1+(2-(3+(4-5))),1
+ .long 1,1
+!
+
+! .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+ .long 4095,4095
+!
+
+! .DATA.L -~-~H'0000000f,H'00
+ .long 17,0
+!
+
+!
+
+!
+
+!
+
+! .END
+exp.amp:56 can't add two relocatable expressions
+exp.amp:57 the * operator cannot take non-absolute arguments.
+exp.amp:58 the / operator cannot take non-absolute arguments.
+exp.amp:59 the | operator cannot take non-absolute arguments.
+exp.amp:60 the & operator cannot take non-absolute arguments.
+exp.amp:61 the ~ operator cannot take non-absolute arguments.
+exp.amp:62 the * operator cannot take non-absolute arguments.
diff --git a/gas/testsuite/gasp/exp.was b/gas/testsuite/gasp/exp.was
new file mode 100644
index 0000000..ab2b5ee
--- /dev/null
+++ b/gas/testsuite/gasp/exp.was
@@ -0,0 +1,133 @@
+******** exp.amp
+!
+
+!; test all ops
+ ; test all ops
+!
+
+!a1 .EQU 4+10
+!a2 .EQU 4-10
+!a3 .EQU 4&10
+!a4 .EQU 4|2
+!a5 .EQU 4~2
+!a6 .EQU 4*10
+!a7 .EQU 40/10
+!a8 .EQU +7
+!a9 .EQU -7
+!a10 .EQU ~7
+!
+
+!
+
+! a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
+ 14 -6 0 6 6 40 4 7 -7 -8
+!
+
+!; test the priorities
+ ; test the priorities
+!
+
+!b1 .EQU 1|2~3&4+5-8*7/2
+!b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
+!b3 .EQU 10*2/3*4
+!b4 .EQU (((10*2)/3)*4)
+!b5 .EQU 10+2-3+4
+!b6 .EQU (((10+2)-3)+4)
+!
+
+! b1 b2 b3 b4
+ 2 2 24 24
+!
+
+!; test association
+ ; test association
+!
+
+!c1 .EQU -~3
+!c2 .EQU ~-3
+!c3 .EQU -(~3)
+!c4 .EQU ~(-3)
+!
+
+! c1 c2 c3 c4
+ 4 2 4 2
+!
+
+!; test rules for symbols
+ ; test rules for symbols
+!
+
+!ok1 .EQU FOO
+!ok2 .EQU FOO+10
+!ok3 .EQU 10+FOO
+!ok4 .EQU FOO-10
+!
+
+! ok1
+ FOO
+! ok2
+ FOO+10
+! ok3
+ FOO+10
+! ok4
+ FOO+-10
+!
+
+!ok5 .EQU FOO+3+4+5+6
+!ok6 .EQU FOO-BAR
+!
+
+! ok5
+ FOO+18
+! ok6
+ FOO-FOO
+!
+
+!bad1 .EQU FOO+FOO
+!bad2 .EQU FOO*2
+!bad3 .EQU FOO/2
+!bad4 .EQU FOO|2
+!bad5 .EQU FOO&2
+!bad6 .EQU FOO~2
+!bad7 .EQU FOO*2
+!
+
+!; test spacing
+ ; test spacing
+!
+
+!space1 .EQU 1 + 2 +3+FOO + 3
+!space2
+space2:
+!
+
+!; from the SH manual
+ ; from the SH manual
+!
+
+! .DATA.L 1+(2-(3+(4-5))),1
+ .long 1,1
+!
+
+! .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
+ .long 4095,4095
+!
+
+! .DATA.L -~-~H'0000000f,H'00
+ .long 17,0
+!
+
+!
+
+!
+
+!
+
+! .END
+exp.amp:56 can't add two relocatable expressions
+exp.amp:57 the * operator cannot take non-absolute arguments.
+exp.amp:58 the / operator cannot take non-absolute arguments.
+exp.amp:59 the | operator cannot take non-absolute arguments.
+exp.amp:60 the & operator cannot take non-absolute arguments.
+exp.amp:61 the ~ operator cannot take non-absolute arguments.
+exp.amp:62 the * operator cannot take non-absolute arguments.
diff --git a/gas/testsuite/gasp/include.asm b/gas/testsuite/gasp/include.asm
new file mode 100644
index 0000000..69ed1dd
--- /dev/null
+++ b/gas/testsuite/gasp/include.asm
@@ -0,0 +1,4 @@
+ HI
+ .INCLUDE "INC1.H"
+ THERE
+ .END
diff --git a/gas/testsuite/gasp/include.is b/gas/testsuite/gasp/include.is
new file mode 100644
index 0000000..3d35d85
--- /dev/null
+++ b/gas/testsuite/gasp/include.is
@@ -0,0 +1,16 @@
+******** include.amp
+! HI
+ HI
+! .INCLUDE "INC1.H"
+!FILE 1 FIRST LINE
+FILE: 1 FIRST LINE
+! .INCLUDE "INC2.H"
+! FILE 2 FIRST LINE
+ FILE 2 FIRST LINE
+! FILE 2 LAST LINE
+ FILE 2 LAST LINE
+!FILE 1 LAST LINE
+FILE: 1 LAST LINE
+! THERE
+ THERE
+! .END
diff --git a/gas/testsuite/gasp/include.was b/gas/testsuite/gasp/include.was
new file mode 100644
index 0000000..3d35d85
--- /dev/null
+++ b/gas/testsuite/gasp/include.was
@@ -0,0 +1,16 @@
+******** include.amp
+! HI
+ HI
+! .INCLUDE "INC1.H"
+!FILE 1 FIRST LINE
+FILE: 1 FIRST LINE
+! .INCLUDE "INC2.H"
+! FILE 2 FIRST LINE
+ FILE 2 FIRST LINE
+! FILE 2 LAST LINE
+ FILE 2 LAST LINE
+!FILE 1 LAST LINE
+FILE: 1 LAST LINE
+! THERE
+ THERE
+! .END
diff --git a/gas/testsuite/gasp/listing.asm b/gas/testsuite/gasp/listing.asm
new file mode 100644
index 0000000..b98ce96
--- /dev/null
+++ b/gas/testsuite/gasp/listing.asm
@@ -0,0 +1,15 @@
+
+
+ .HEADING " ""QUOTE"" "
+ .PAGE
+ .PRINT LIST
+ foo
+ .PRINT NOLIST
+ foo
+
+
+ .FORM LIN=12
+ .FORM COL=90
+ .FORM LIN=123 COL=23
+
+ .END \ No newline at end of file
diff --git a/gas/testsuite/gasp/listing.is b/gas/testsuite/gasp/listing.is
new file mode 100644
index 0000000..e4c50a2
--- /dev/null
+++ b/gas/testsuite/gasp/listing.is
@@ -0,0 +1,32 @@
+******** listing.amp
+!
+
+!
+
+! .HEADING " ""QUOTE"" "
+ .title " "QUOTE" "
+! .PAGE
+ .eject
+! .PRINT LIST
+ .list
+! foo
+ foo
+! .PRINT NOLIST
+ .nolist
+! foo
+ foo
+!
+
+!
+
+! .FORM LIN=12
+ .psize 12,132
+! .FORM COL=90
+ .psize 60,90
+! .FORM LIN=123 COL=23
+ .psize 123,23
+!
+
+! .END
+end of file not at start of line.
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/listing.was b/gas/testsuite/gasp/listing.was
new file mode 100644
index 0000000..4003fba
--- /dev/null
+++ b/gas/testsuite/gasp/listing.was
@@ -0,0 +1,32 @@
+******** listing.amp
+!
+
+!
+
+! .HEADING " ""QUOTE"" "
+ .title " "QUOTE" "
+! .PAGE
+ .eject
+! .PRINT LIST
+ .list
+! foo
+ foo
+! .PRINT NOLIST
+ .nolist
+! foo
+ foo
+!
+
+!
+
+! .FORM LIN=12
+ .psize 12,132
+! .FORM COL=90
+ .psize 60,90
+! .FORM LIN=123 COL=23
+ .psize 123,23
+!
+
+! .END
+End of file not at start of line.
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/macro.asm b/gas/testsuite/gasp/macro.asm
new file mode 100644
index 0000000..dfb16bf
--- /dev/null
+++ b/gas/testsuite/gasp/macro.asm
@@ -0,0 +1,102 @@
+ .MACRO SUM FROM=0, TO=9
+ ; \FROM \TO
+ MOV R\FROM,R10
+COUNT .ASSIGNA \FROM+1
+ .AWHILE \&COUNT LE \TO
+ MOV R\&COUNT,R10
+COUNT .ASSIGNA \&COUNT+1
+ .AENDW
+ .ENDM
+
+ SUM 0,5
+ SUM TO=5
+ SUM FROM=2, TO=5
+
+
+; hi this is a comment
+ .MACRO BACK_SLASH_SET
+ \(MOV #"\",R0)
+ .ENDM
+ BACK_SLASH_SET
+ .MACRO COMM
+ bar ; this comment will get copied out
+ foo \; this one will get dropped
+ .ENDM
+ COMM
+ BACK_SLASH_SET
+ .MACRO PLUS2
+ ADD #1,R\&V1
+ .SDATA "\&V'1"
+ .ENDM
+V .ASSIGNC "R"
+V1 .ASSIGNA 1
+ PLUS2
+ .MACRO PLUS1 P,P1
+ ADD #1,\P1
+ .SDATA "\P'1"
+ .ENDM
+ PLUS1 R,R1
+
+ .MACRO SUM P1
+ MOV R0,R10
+ ADD R1,R10
+ ADD R2,R10
+ \P1
+ ADD R3,R10
+ .ENDM
+
+ SUM .EXITM
+
+ .MACRO foo bar=a default=b
+ \bar
+ \default
+ bar
+ default
+ .ENDM
+ foo default=dog bar=cat
+ foo X Y
+ foo
+ foo bar=cat default=dog
+
+
+ .MACRO foo bar
+ HI
+ HI \bar
+ HI
+ .ENDM
+
+ foo 1
+ foo 123
+ foo 1 2 3 4
+ foo
+
+
+ .MACRO PUSH Rn
+ MOV.L \Rn,@-r15
+ .ENDM
+ PUSH R0
+ PUSH R1
+
+
+ .MACRO RES_STR STR, Rn
+ MOV.L #str\@,\Rn
+ BRA end_str\@
+ NOP
+str\@ .SDATA "\STR"
+ .ALIGN 2
+end_str\@
+ .ENDM
+
+ RES_STR "ONE",R0
+ RES_STR "TWO",R1
+ RES_STR "THREE",R2
+
+
+
+ RES_STR STR=donkey Rn=R1
+ RES_STR donkey,R1
+ RES_STR donkey Rn=R1
+ .END
+
+
+
diff --git a/gas/testsuite/gasp/macro.is b/gas/testsuite/gasp/macro.is
new file mode 100644
index 0000000..57211cb
--- /dev/null
+++ b/gas/testsuite/gasp/macro.is
@@ -0,0 +1,375 @@
+******** macro.amp
+! .MACRO SUM FROM=0, TO=9
+! ; \FROM \TO
+! MOV R\FROM,R10
+!COUNT .ASSIGNA \FROM+1
+! .AWHILE \&COUNT LE \TO
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! .ENDM
+!
+
+! SUM 0,5
+! ; 0 5
+ ; 0 5
+! MOV R0,R10
+ MOV R0,R10
+!COUNT .ASSIGNA 0+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R1,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R2,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! SUM TO=5
+! ; 0 5
+ ; 0 5
+! MOV R0,R10
+ MOV R0,R10
+!COUNT .ASSIGNA 0+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R1,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R2,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! SUM FROM=2, TO=5
+! ; 2 5
+ ; 2 5
+! MOV R2,R10
+ MOV R2,R10
+!COUNT .ASSIGNA 2+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+!
+
+!
+
+!; hi this is a comment
+ ; hi this is a comment
+! .MACRO BACK_SLASH_SET
+! \(MOV #"\",R0)
+! .ENDM
+! BACK_SLASH_SET
+! MOV #"\",R0
+ MOV #"\",R0
+! .MACRO COMM
+! bar ; this comment will get copied out
+! foo \; this one will get dropped
+! .ENDM
+! COMM
+! bar ; this comment will get copied out
+ bar ; this comment will get copied out
+! foo
+ foo
+! BACK_SLASH_SET
+! MOV #"\",R0
+ MOV #"\",R0
+! .MACRO PLUS2
+! ADD #1,R\&V1
+! .SDATA "\&V'1"
+! .ENDM
+!V .ASSIGNC "R"
+!V1 .ASSIGNA 1
+! PLUS2
+! ADD #1,R\&V1
+ ADD #1,R1
+! .SDATA "\&V'1"
+ .byte 82,49
+! .MACRO PLUS1 P,P1
+! ADD #1,\P1
+! .SDATA "\P'1"
+! .ENDM
+! PLUS1 R,R1
+! ADD #1,R1
+ ADD #1,R1
+! .SDATA "R1"
+ .byte 82,49
+!
+
+! .MACRO SUM P1
+! MOV R0,R10
+! ADD R1,R10
+! ADD R2,R10
+! \P1
+! ADD R3,R10
+! .ENDM
+!
+
+! SUM .EXITM
+! MOV R0,R10
+ MOV R0,R10
+! ADD R1,R10
+ ADD R1,R10
+! ADD R2,R10
+ ADD R2,R10
+! .EXITM
+!
+
+! .MACRO foo bar=a default=b
+! \bar
+! \default
+! bar
+! default
+! .ENDM
+! foo default=dog bar=cat
+! cat
+ cat
+! dog
+ dog
+! bar
+ bar
+! default
+ default
+! foo X Y
+! X
+ X
+! Y
+ Y
+! bar
+ bar
+! default
+ default
+! foo
+! a
+ a
+! b
+ b
+! bar
+ bar
+! default
+ default
+! foo bar=cat default=dog
+! cat
+ cat
+! dog
+ dog
+! bar
+ bar
+! default
+ default
+!
+
+!
+
+! .MACRO foo bar
+! HI
+! HI \bar
+! HI
+! .ENDM
+!
+
+! foo 1
+! HI
+ HI
+! HI 1
+ HI 1
+! HI
+ HI
+! foo 123
+! HI
+ HI
+! HI 123
+ HI 123
+! HI
+ HI
+! foo 1 2 3 4
+! foo
+! HI
+ HI
+! HI
+ HI
+! HI
+ HI
+!
+
+!
+
+! .MACRO PUSH Rn
+! MOV.L \Rn,@-r15
+! .ENDM
+! PUSH R0
+! MOV.L R0,@-r15
+ MOV.L R0,@-r15
+! PUSH R1
+! MOV.L R1,@-r15
+ MOV.L R1,@-r15
+!
+
+!
+
+! .MACRO RES_STR STR, Rn
+! MOV.L #str\@,\Rn
+! BRA end_str\@
+! NOP
+!str\@ .SDATA "\STR"
+! .ALIGN 2
+!end_str\@
+! .ENDM
+!
+
+! RES_STR "ONE",R0
+! MOV.L #str00018,R0
+ MOV.L #str00018,R0
+! BRA end_str00018
+ BRA end_str00018
+! NOP
+ NOP
+!str00018 .SDATA "ONE"
+str00018: .byte 79,78,69
+! .ALIGN 2
+ .align 2
+!end_str00018
+end_str00018:
+! RES_STR "TWO",R1
+! MOV.L #str00019,R1
+ MOV.L #str00019,R1
+! BRA end_str00019
+ BRA end_str00019
+! NOP
+ NOP
+!str00019 .SDATA "TWO"
+str00019: .byte 84,87,79
+! .ALIGN 2
+ .align 2
+!end_str00019
+end_str00019:
+! RES_STR "THREE",R2
+! MOV.L #str00020,R2
+ MOV.L #str00020,R2
+! BRA end_str00020
+ BRA end_str00020
+! NOP
+ NOP
+!str00020 .SDATA "THREE"
+str00020: .byte 84,72,82,69,69
+! .ALIGN 2
+ .align 2
+!end_str00020
+end_str00020:
+!
+
+!
+
+!
+
+! RES_STR STR=donkey Rn=R1
+! MOV.L #str00021,R1
+ MOV.L #str00021,R1
+! BRA end_str00021
+ BRA end_str00021
+! NOP
+ NOP
+!str00021 .SDATA "donkey"
+str00021: .byte 100,111,110,107,101,121
+! .ALIGN 2
+ .align 2
+!end_str00021
+end_str00021:
+! RES_STR donkey,R1
+! MOV.L #str00022,R1
+ MOV.L #str00022,R1
+! BRA end_str00022
+ BRA end_str00022
+! NOP
+ NOP
+!str00022 .SDATA "donkey"
+str00022: .byte 100,111,110,107,101,121
+! .ALIGN 2
+ .align 2
+!end_str00022
+end_str00022:
+! RES_STR donkey Rn=R1
+! .END
+macro.amp:70 Too many positional arguments.
+macro.amp:98 Can't mix positional and keyword arguments.
diff --git a/gas/testsuite/gasp/macro.was b/gas/testsuite/gasp/macro.was
new file mode 100644
index 0000000..57211cb
--- /dev/null
+++ b/gas/testsuite/gasp/macro.was
@@ -0,0 +1,375 @@
+******** macro.amp
+! .MACRO SUM FROM=0, TO=9
+! ; \FROM \TO
+! MOV R\FROM,R10
+!COUNT .ASSIGNA \FROM+1
+! .AWHILE \&COUNT LE \TO
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! .ENDM
+!
+
+! SUM 0,5
+! ; 0 5
+ ; 0 5
+! MOV R0,R10
+ MOV R0,R10
+!COUNT .ASSIGNA 0+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R1,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R2,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! SUM TO=5
+! ; 0 5
+ ; 0 5
+! MOV R0,R10
+ MOV R0,R10
+!COUNT .ASSIGNA 0+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R1,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R2,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! SUM FROM=2, TO=5
+! ; 2 5
+ ; 2 5
+! MOV R2,R10
+ MOV R2,R10
+!COUNT .ASSIGNA 2+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R3,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R4,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+! MOV R\&COUNT,R10
+ MOV R5,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AWHILE \&COUNT LE 5
+! MOV R\&COUNT,R10
+!COUNT .ASSIGNA \&COUNT+1
+! .AENDW
+!
+
+!
+
+!; hi this is a comment
+ ; hi this is a comment
+! .MACRO BACK_SLASH_SET
+! \(MOV #"\",R0)
+! .ENDM
+! BACK_SLASH_SET
+! MOV #"\",R0
+ MOV #"\",R0
+! .MACRO COMM
+! bar ; this comment will get copied out
+! foo \; this one will get dropped
+! .ENDM
+! COMM
+! bar ; this comment will get copied out
+ bar ; this comment will get copied out
+! foo
+ foo
+! BACK_SLASH_SET
+! MOV #"\",R0
+ MOV #"\",R0
+! .MACRO PLUS2
+! ADD #1,R\&V1
+! .SDATA "\&V'1"
+! .ENDM
+!V .ASSIGNC "R"
+!V1 .ASSIGNA 1
+! PLUS2
+! ADD #1,R\&V1
+ ADD #1,R1
+! .SDATA "\&V'1"
+ .byte 82,49
+! .MACRO PLUS1 P,P1
+! ADD #1,\P1
+! .SDATA "\P'1"
+! .ENDM
+! PLUS1 R,R1
+! ADD #1,R1
+ ADD #1,R1
+! .SDATA "R1"
+ .byte 82,49
+!
+
+! .MACRO SUM P1
+! MOV R0,R10
+! ADD R1,R10
+! ADD R2,R10
+! \P1
+! ADD R3,R10
+! .ENDM
+!
+
+! SUM .EXITM
+! MOV R0,R10
+ MOV R0,R10
+! ADD R1,R10
+ ADD R1,R10
+! ADD R2,R10
+ ADD R2,R10
+! .EXITM
+!
+
+! .MACRO foo bar=a default=b
+! \bar
+! \default
+! bar
+! default
+! .ENDM
+! foo default=dog bar=cat
+! cat
+ cat
+! dog
+ dog
+! bar
+ bar
+! default
+ default
+! foo X Y
+! X
+ X
+! Y
+ Y
+! bar
+ bar
+! default
+ default
+! foo
+! a
+ a
+! b
+ b
+! bar
+ bar
+! default
+ default
+! foo bar=cat default=dog
+! cat
+ cat
+! dog
+ dog
+! bar
+ bar
+! default
+ default
+!
+
+!
+
+! .MACRO foo bar
+! HI
+! HI \bar
+! HI
+! .ENDM
+!
+
+! foo 1
+! HI
+ HI
+! HI 1
+ HI 1
+! HI
+ HI
+! foo 123
+! HI
+ HI
+! HI 123
+ HI 123
+! HI
+ HI
+! foo 1 2 3 4
+! foo
+! HI
+ HI
+! HI
+ HI
+! HI
+ HI
+!
+
+!
+
+! .MACRO PUSH Rn
+! MOV.L \Rn,@-r15
+! .ENDM
+! PUSH R0
+! MOV.L R0,@-r15
+ MOV.L R0,@-r15
+! PUSH R1
+! MOV.L R1,@-r15
+ MOV.L R1,@-r15
+!
+
+!
+
+! .MACRO RES_STR STR, Rn
+! MOV.L #str\@,\Rn
+! BRA end_str\@
+! NOP
+!str\@ .SDATA "\STR"
+! .ALIGN 2
+!end_str\@
+! .ENDM
+!
+
+! RES_STR "ONE",R0
+! MOV.L #str00018,R0
+ MOV.L #str00018,R0
+! BRA end_str00018
+ BRA end_str00018
+! NOP
+ NOP
+!str00018 .SDATA "ONE"
+str00018: .byte 79,78,69
+! .ALIGN 2
+ .align 2
+!end_str00018
+end_str00018:
+! RES_STR "TWO",R1
+! MOV.L #str00019,R1
+ MOV.L #str00019,R1
+! BRA end_str00019
+ BRA end_str00019
+! NOP
+ NOP
+!str00019 .SDATA "TWO"
+str00019: .byte 84,87,79
+! .ALIGN 2
+ .align 2
+!end_str00019
+end_str00019:
+! RES_STR "THREE",R2
+! MOV.L #str00020,R2
+ MOV.L #str00020,R2
+! BRA end_str00020
+ BRA end_str00020
+! NOP
+ NOP
+!str00020 .SDATA "THREE"
+str00020: .byte 84,72,82,69,69
+! .ALIGN 2
+ .align 2
+!end_str00020
+end_str00020:
+!
+
+!
+
+!
+
+! RES_STR STR=donkey Rn=R1
+! MOV.L #str00021,R1
+ MOV.L #str00021,R1
+! BRA end_str00021
+ BRA end_str00021
+! NOP
+ NOP
+!str00021 .SDATA "donkey"
+str00021: .byte 100,111,110,107,101,121
+! .ALIGN 2
+ .align 2
+!end_str00021
+end_str00021:
+! RES_STR donkey,R1
+! MOV.L #str00022,R1
+ MOV.L #str00022,R1
+! BRA end_str00022
+ BRA end_str00022
+! NOP
+ NOP
+!str00022 .SDATA "donkey"
+str00022: .byte 100,111,110,107,101,121
+! .ALIGN 2
+ .align 2
+!end_str00022
+end_str00022:
+! RES_STR donkey Rn=R1
+! .END
+macro.amp:70 Too many positional arguments.
+macro.amp:98 Can't mix positional and keyword arguments.
diff --git a/gas/testsuite/gasp/reg.asm b/gas/testsuite/gasp/reg.asm
new file mode 100644
index 0000000..eb463ed
--- /dev/null
+++ b/gas/testsuite/gasp/reg.asm
@@ -0,0 +1,9 @@
+
+
+foo .REG (r1)
+ add foo,foo
+
+bar .reg (r2)
+ add bar,foo
+
+ .END
diff --git a/gas/testsuite/gasp/reg.is b/gas/testsuite/gasp/reg.is
new file mode 100644
index 0000000..27f3d2b
--- /dev/null
+++ b/gas/testsuite/gasp/reg.is
@@ -0,0 +1,16 @@
+******** reg.amp
+!
+
+!
+
+!foo .REG (r1)
+! add foo,foo
+ add r1,r1
+!
+
+!bar .reg (r2)
+! add bar,foo
+ add r2,r1
+!
+
+! .END
diff --git a/gas/testsuite/gasp/reg.was b/gas/testsuite/gasp/reg.was
new file mode 100644
index 0000000..27f3d2b
--- /dev/null
+++ b/gas/testsuite/gasp/reg.was
@@ -0,0 +1,16 @@
+******** reg.amp
+!
+
+!
+
+!foo .REG (r1)
+! add foo,foo
+ add r1,r1
+!
+
+!bar .reg (r2)
+! add bar,foo
+ add r2,r1
+!
+
+! .END
diff --git a/gas/testsuite/gasp/rep.asm b/gas/testsuite/gasp/rep.asm
new file mode 100644
index 0000000..027ac47
--- /dev/null
+++ b/gas/testsuite/gasp/rep.asm
@@ -0,0 +1,13 @@
+ .AREPEAT 5
+ FIVE
+ .AREPEAT 2
+ TWO
+ .AENDR
+ .AREPEAT 3
+ THREE
+ .AREPEAT 2
+ TWO
+ .AENDR
+ .AENDR
+ .AENDR
+ .END
diff --git a/gas/testsuite/gasp/rep.is b/gas/testsuite/gasp/rep.is
new file mode 100644
index 0000000..5271b3e
--- /dev/null
+++ b/gas/testsuite/gasp/rep.is
@@ -0,0 +1,392 @@
+******** rep.amp
+! .AREPEAT 5
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 4
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .END
diff --git a/gas/testsuite/gasp/rep.was b/gas/testsuite/gasp/rep.was
new file mode 100644
index 0000000..5271b3e
--- /dev/null
+++ b/gas/testsuite/gasp/rep.was
@@ -0,0 +1,392 @@
+******** rep.amp
+! .AREPEAT 5
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 4
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! .AENDR
+! FIVE
+ FIVE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 3
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 2
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! .AENDR
+! THREE
+ THREE
+! .AREPEAT 2
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .AREPEAT 1
+! TWO
+! .AENDR
+! TWO
+ TWO
+! .END
diff --git a/gas/testsuite/gasp/repeat.asm b/gas/testsuite/gasp/repeat.asm
new file mode 100644
index 0000000..7a85da3
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.asm
@@ -0,0 +1,14 @@
+
+ .AREPEAT 10
+ TEN
+ .AREPEAT 2
+ TWENTY
+ .AENDR
+ .AENDR
+
+ .AREPEAT 3
+ ROTCL R2
+ DIV1 R0,R1
+ .AENDR
+
+ .END
diff --git a/gas/testsuite/gasp/repeat.is b/gas/testsuite/gasp/repeat.is
new file mode 100644
index 0000000..eb6c967
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.is
@@ -0,0 +1,212 @@
+******** repeat.amp
+!
+
+! .AREPEAT 10
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 9
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 8
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 7
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 6
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 5
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 4
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 3
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 2
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+!
+
+! .AREPEAT 3
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+! .AREPEAT 2
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+! .AREPEAT 1
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+!
+
+! .END
diff --git a/gas/testsuite/gasp/repeat.was b/gas/testsuite/gasp/repeat.was
new file mode 100644
index 0000000..eb6c967
--- /dev/null
+++ b/gas/testsuite/gasp/repeat.was
@@ -0,0 +1,212 @@
+******** repeat.amp
+!
+
+! .AREPEAT 10
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 9
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 8
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 7
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 6
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 5
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 4
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 3
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 2
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! .AENDR
+! TEN
+ TEN
+! .AREPEAT 2
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+! .AREPEAT 1
+! TWENTY
+! .AENDR
+! TWENTY
+ TWENTY
+!
+
+! .AREPEAT 3
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+! .AREPEAT 2
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+! .AREPEAT 1
+! ROTCL R2
+! DIV1 R0,R1
+! .AENDR
+! ROTCL R2
+ ROTCL R2
+! DIV1 R0,R1
+ DIV1 R0,R1
+!
+
+! .END
diff --git a/gas/testsuite/gasp/reperr.asm b/gas/testsuite/gasp/reperr.asm
new file mode 100644
index 0000000..60882b2
--- /dev/null
+++ b/gas/testsuite/gasp/reperr.asm
@@ -0,0 +1,2 @@
+
+ .REPEAT 10
diff --git a/gas/testsuite/gasp/reperr1.asm b/gas/testsuite/gasp/reperr1.asm
new file mode 100644
index 0000000..2d987e4
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.asm
@@ -0,0 +1,3 @@
+
+ .AREPEAT 10
+ .END
diff --git a/gas/testsuite/gasp/reperr1.is b/gas/testsuite/gasp/reperr1.is
new file mode 100644
index 0000000..72ae1bb
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.is
@@ -0,0 +1,6 @@
+******** reperr1.amp
+!
+
+! .AREPEAT 10
+! .END
+!End of file whilst inside .AREPEAT, started on line 3.
diff --git a/gas/testsuite/gasp/reperr1.was b/gas/testsuite/gasp/reperr1.was
new file mode 100644
index 0000000..72ae1bb
--- /dev/null
+++ b/gas/testsuite/gasp/reperr1.was
@@ -0,0 +1,6 @@
+******** reperr1.amp
+!
+
+! .AREPEAT 10
+! .END
+!End of file whilst inside .AREPEAT, started on line 3.
diff --git a/gas/testsuite/gasp/reperr2.asm b/gas/testsuite/gasp/reperr2.asm
new file mode 100644
index 0000000..de06a71
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.asm
@@ -0,0 +1,6 @@
+
+ .AREPEAT 5
+ .AENDR
+ .AENDR
+ .END
+
diff --git a/gas/testsuite/gasp/reperr2.is b/gas/testsuite/gasp/reperr2.is
new file mode 100644
index 0000000..bbcd1bf
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.is
@@ -0,0 +1,16 @@
+******** reperr2.amp
+!
+
+! .AREPEAT 5
+! .AENDR
+! .AREPEAT 4
+! .AENDR
+! .AREPEAT 3
+! .AENDR
+! .AREPEAT 2
+! .AENDR
+! .AREPEAT 1
+! .AENDR
+! .AENDR
+! .END
+reperr2.amp:4 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr2.was b/gas/testsuite/gasp/reperr2.was
new file mode 100644
index 0000000..bbcd1bf
--- /dev/null
+++ b/gas/testsuite/gasp/reperr2.was
@@ -0,0 +1,16 @@
+******** reperr2.amp
+!
+
+! .AREPEAT 5
+! .AENDR
+! .AREPEAT 4
+! .AENDR
+! .AREPEAT 3
+! .AENDR
+! .AREPEAT 2
+! .AENDR
+! .AREPEAT 1
+! .AENDR
+! .AENDR
+! .END
+reperr2.amp:4 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr3.asm b/gas/testsuite/gasp/reperr3.asm
new file mode 100644
index 0000000..464bc79
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.asm
@@ -0,0 +1,21 @@
+ .AREPEAT 4
+ .AREPEAT 4
+ .AREPEAT 4
+ .AREPEAT 4
+ stuff
+ .AENDR
+ which
+ .AENDR
+ will
+ .AENDR
+ get
+ .AENDR
+ repetaed
+ .AENDR
+
+ .AENDR
+ .AENDR
+ .AENDR
+ .AENDR
+ .AENDR
+ .END
diff --git a/gas/testsuite/gasp/reperr3.is b/gas/testsuite/gasp/reperr3.is
new file mode 100644
index 0000000..8bb555e
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.is
@@ -0,0 +1,2042 @@
+******** reperr3.amp
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! repetaed
+ repetaed
+! .AENDR
+!
+
+! .AENDR
+! .AENDR
+! .AENDR
+! .AENDR
+! .AENDR
+! .END
+reperr3.amp:14 AENDR without a AREPEAT.
+reperr3.amp:16 AENDR without a AREPEAT.
+reperr3.amp:17 AENDR without a AREPEAT.
+reperr3.amp:18 AENDR without a AREPEAT.
+reperr3.amp:19 AENDR without a AREPEAT.
+reperr3.amp:20 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/reperr3.was b/gas/testsuite/gasp/reperr3.was
new file mode 100644
index 0000000..8bb555e
--- /dev/null
+++ b/gas/testsuite/gasp/reperr3.was
@@ -0,0 +1,2042 @@
+******** reperr3.amp
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! get
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 3
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 2
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! .AREPEAT 1
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! will
+! .AENDR
+! .AREPEAT 4
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 3
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 2
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! .AREPEAT 1
+! .AREPEAT 4
+! stuff
+! .AENDR
+! which
+! .AENDR
+! .AREPEAT 4
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 3
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 2
+! stuff
+! .AENDR
+! stuff
+ stuff
+! .AREPEAT 1
+! stuff
+! .AENDR
+! stuff
+ stuff
+! which
+ which
+! will
+ will
+! get
+ get
+! repetaed
+ repetaed
+! .AENDR
+!
+
+! .AENDR
+! .AENDR
+! .AENDR
+! .AENDR
+! .AENDR
+! .END
+reperr3.amp:14 AENDR without a AREPEAT.
+reperr3.amp:16 AENDR without a AREPEAT.
+reperr3.amp:17 AENDR without a AREPEAT.
+reperr3.amp:18 AENDR without a AREPEAT.
+reperr3.amp:19 AENDR without a AREPEAT.
+reperr3.amp:20 AENDR without a AREPEAT.
diff --git a/gas/testsuite/gasp/sdata.asm b/gas/testsuite/gasp/sdata.asm
new file mode 100644
index 0000000..d6bd23c
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.asm
@@ -0,0 +1,24 @@
+
+
+ .SDATA "HI","STEVE"
+ .SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+
+ .SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+
+
+
+ .SDATA "SHOULD NOT FAIL" "HERE"
+ .SDATA "SHOULD FAIL" foo "HERE"
+
+ .SDATAB 8,"BOINK"
+
+ ; examples from book
+
+ .SDATAB 2,"AAAAA"
+ .SDATAB 2,"""BBB"""
+ .SDATAB 2,"AABB"<H'07>
+
+
+a1: .SDATAZ "HI"
+a2: .SDATAC "HI"
+a3: .SDATA "HI"
diff --git a/gas/testsuite/gasp/sdata.is b/gas/testsuite/gasp/sdata.is
new file mode 100644
index 0000000..57eef2f
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.is
@@ -0,0 +1,62 @@
+******** sdata.amp
+!
+
+!
+
+! .SDATA "HI","STEVE"
+ .byte 72,73,83,84,69,86,69
+! .SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+ .byte 72,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+! .SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+ .byte 72,34,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!
+
+!
+
+! .SDATA "SHOULD NOT FAIL" "HERE"
+ .byte 83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
+! .SDATA "SHOULD FAIL" foo "HERE"
+ .byte 83,72,79,85,76,68,32,70,65,73,76
+
+!
+
+! .SDATAB 8,"BOINK"
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+!
+
+! ; examples from book
+ ; examples from book
+!
+
+! .SDATAB 2,"AAAAA"
+ .byte 65,65,65,65,65
+ .byte 65,65,65,65,65
+! .SDATAB 2,"""BBB"""
+ .byte 34,66,66,66,34
+ .byte 34,66,66,66,34
+! .SDATAB 2,"AABB"<H'07>
+ .byte 65,65,66,66,7
+ .byte 65,65,66,66,7
+!
+
+!
+
+!a1: .SDATAZ "HI"
+a1: .byte 72,73,0
+!a2: .SDATAC "HI"
+a2: .byte 2,72,73
+!a3: .SDATA "HI"
+a3: .byte 72,73
+!sdata.amp:11 illegal character in SDATA line (0x66).
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/sdata.was b/gas/testsuite/gasp/sdata.was
new file mode 100644
index 0000000..57eef2f
--- /dev/null
+++ b/gas/testsuite/gasp/sdata.was
@@ -0,0 +1,62 @@
+******** sdata.amp
+!
+
+!
+
+! .SDATA "HI","STEVE"
+ .byte 72,73,83,84,69,86,69
+! .SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
+ .byte 72,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+! .SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
+ .byte 72,34,73,83,84,69,86,69,72,73,83,69,86,69
+!
+
+!
+
+!
+
+! .SDATA "SHOULD NOT FAIL" "HERE"
+ .byte 83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
+! .SDATA "SHOULD FAIL" foo "HERE"
+ .byte 83,72,79,85,76,68,32,70,65,73,76
+
+!
+
+! .SDATAB 8,"BOINK"
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+ .byte 66,79,73,78,75
+!
+
+! ; examples from book
+ ; examples from book
+!
+
+! .SDATAB 2,"AAAAA"
+ .byte 65,65,65,65,65
+ .byte 65,65,65,65,65
+! .SDATAB 2,"""BBB"""
+ .byte 34,66,66,66,34
+ .byte 34,66,66,66,34
+! .SDATAB 2,"AABB"<H'07>
+ .byte 65,65,66,66,7
+ .byte 65,65,66,66,7
+!
+
+!
+
+!a1: .SDATAZ "HI"
+a1: .byte 72,73,0
+!a2: .SDATAC "HI"
+a2: .byte 2,72,73
+!a3: .SDATA "HI"
+a3: .byte 72,73
+!sdata.amp:11 illegal character in SDATA line (0x66).
+.END missing from end of file.
diff --git a/gas/testsuite/gasp/sfunc.asm b/gas/testsuite/gasp/sfunc.asm
new file mode 100644
index 0000000..b59949a
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.asm
@@ -0,0 +1,26 @@
+
+ .MACRO RESERVE_STR P1=0 P2
+ .SDATA .SUBSTR("ABCDEFG",\P1,\P2)
+ .ENDM
+
+ RESERVE_STR 2,2
+ RESERVE_STR ,3
+
+
+ .MACRO FIND_STR P1
+ .DATA.W .INSTR("ABCDEFG","\P1", 0)
+ .ENDM
+
+ FIND_STR CDE
+ FIND_STR H
+
+ .MACRO RESERVE_LENGTH P1
+ .ALIGN 4
+ .SRES .LEN("\P1")
+ .ENDM
+
+ RESERVE_LENGTH ABCDEF
+ RESERVE_LENGTH ABC
+
+ .END
+
diff --git a/gas/testsuite/gasp/sfunc.is b/gas/testsuite/gasp/sfunc.is
new file mode 100644
index 0000000..98e80d5
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.is
@@ -0,0 +1,50 @@
+******** sfunc.amp
+!
+
+! .MACRO RESERVE_STR P1=0 P2
+! .SDATA .SUBSTR("ABCDEFG",\P1,\P2)
+! .ENDM
+!
+
+! RESERVE_STR 2,2
+! .SDATA .SUBSTR("ABCDEFG",2,2)
+ .byte 67,68
+! RESERVE_STR ,3
+! .SDATA .SUBSTR("ABCDEFG",0,3)
+ .byte 65,66,67
+!
+
+!
+
+! .MACRO FIND_STR P1
+! .DATA.W .INSTR("ABCDEFG","\P1", 0)
+! .ENDM
+!
+
+! FIND_STR CDE
+! .DATA.W .INSTR("ABCDEFG","CDE", 0)
+ .short 2
+! FIND_STR H
+! .DATA.W .INSTR("ABCDEFG","H", 0)
+ .short -1
+!
+
+! .MACRO RESERVE_LENGTH P1
+! .ALIGN 4
+! .SRES .LEN("\P1")
+! .ENDM
+!
+
+! RESERVE_LENGTH ABCDEF
+! .ALIGN 4
+ .align 4
+! .SRES .LEN("ABCDEF")
+ .space 24
+! RESERVE_LENGTH ABC
+! .ALIGN 4
+ .align 4
+! .SRES .LEN("ABC")
+ .space 12
+!
+
+! .END
diff --git a/gas/testsuite/gasp/sfunc.was b/gas/testsuite/gasp/sfunc.was
new file mode 100644
index 0000000..98e80d5
--- /dev/null
+++ b/gas/testsuite/gasp/sfunc.was
@@ -0,0 +1,50 @@
+******** sfunc.amp
+!
+
+! .MACRO RESERVE_STR P1=0 P2
+! .SDATA .SUBSTR("ABCDEFG",\P1,\P2)
+! .ENDM
+!
+
+! RESERVE_STR 2,2
+! .SDATA .SUBSTR("ABCDEFG",2,2)
+ .byte 67,68
+! RESERVE_STR ,3
+! .SDATA .SUBSTR("ABCDEFG",0,3)
+ .byte 65,66,67
+!
+
+!
+
+! .MACRO FIND_STR P1
+! .DATA.W .INSTR("ABCDEFG","\P1", 0)
+! .ENDM
+!
+
+! FIND_STR CDE
+! .DATA.W .INSTR("ABCDEFG","CDE", 0)
+ .short 2
+! FIND_STR H
+! .DATA.W .INSTR("ABCDEFG","H", 0)
+ .short -1
+!
+
+! .MACRO RESERVE_LENGTH P1
+! .ALIGN 4
+! .SRES .LEN("\P1")
+! .ENDM
+!
+
+! RESERVE_LENGTH ABCDEF
+! .ALIGN 4
+ .align 4
+! .SRES .LEN("ABCDEF")
+ .space 24
+! RESERVE_LENGTH ABC
+! .ALIGN 4
+ .align 4
+! .SRES .LEN("ABC")
+ .space 12
+!
+
+! .END
diff --git a/gas/testsuite/gasp/t1.asm b/gas/testsuite/gasp/t1.asm
new file mode 100644
index 0000000..df54c6c
--- /dev/null
+++ b/gas/testsuite/gasp/t1.asm
@@ -0,0 +1,3 @@
+
+ test for eof in middle of line
+ .END
diff --git a/gas/testsuite/gasp/t1.is b/gas/testsuite/gasp/t1.is
new file mode 100644
index 0000000..63ba4af
--- /dev/null
+++ b/gas/testsuite/gasp/t1.is
@@ -0,0 +1,6 @@
+******** t1.amp
+!
+
+! test for eof in middle of line
+ test for eof in middle of line
+! .END
diff --git a/gas/testsuite/gasp/t1.was b/gas/testsuite/gasp/t1.was
new file mode 100644
index 0000000..63ba4af
--- /dev/null
+++ b/gas/testsuite/gasp/t1.was
@@ -0,0 +1,6 @@
+******** t1.amp
+!
+
+! test for eof in middle of line
+ test for eof in middle of line
+! .END
diff --git a/gas/testsuite/gasp/t2.asm b/gas/testsuite/gasp/t2.asm
new file mode 100644
index 0000000..38a351a
--- /dev/null
+++ b/gas/testsuite/gasp/t2.asm
@@ -0,0 +1,8 @@
+
+
+ test
++ continued
++ lines
+
+
+ .END
diff --git a/gas/testsuite/gasp/t2.is b/gas/testsuite/gasp/t2.is
new file mode 100644
index 0000000..3df17e0
--- /dev/null
+++ b/gas/testsuite/gasp/t2.is
@@ -0,0 +1,14 @@
+******** t2.amp
+!
+
+!
+
+! test
+!+continued
+!+lines
+ testcontinuedlines
+!
+
+!
+
+! .END
diff --git a/gas/testsuite/gasp/t2.was b/gas/testsuite/gasp/t2.was
new file mode 100644
index 0000000..3df17e0
--- /dev/null
+++ b/gas/testsuite/gasp/t2.was
@@ -0,0 +1,14 @@
+******** t2.amp
+!
+
+!
+
+! test
+!+continued
+!+lines
+ testcontinuedlines
+!
+
+!
+
+! .END
diff --git a/gas/testsuite/gasp/t3.asm b/gas/testsuite/gasp/t3.asm
new file mode 100644
index 0000000..27702db
--- /dev/null
+++ b/gas/testsuite/gasp/t3.asm
@@ -0,0 +1,12 @@
+
+ test base convertions
+
+ B'1001000
+ Q'210
+ D'136
+ H'88
+
+ FOOB'1001000BAR
+ FOOQ'210BAR
+ FOOD'136BAR
+ FOOH'88BAR
diff --git a/gas/testsuite/gasp/t3.is b/gas/testsuite/gasp/t3.is
new file mode 100644
index 0000000..a16b5e8
--- /dev/null
+++ b/gas/testsuite/gasp/t3.is
@@ -0,0 +1,26 @@
+******** t3.amp
+!
+
+! test base convertions
+ test base convertions
+!
+
+! B'1001000
+ 72
+! Q'210
+ 136
+! D'136
+ 136
+! H'88
+ 136
+!
+
+! FOOB'1001000BAR
+ FOOB'1001000BAR
+! FOOQ'210BAR
+ FOOQ'210BAR
+! FOOD'136BAR
+ FOOD'136BAR
+! FOOH'88BAR
+ FOOH'88BAR
+!.END missing from end of file.
diff --git a/gas/testsuite/gasp/t3.was b/gas/testsuite/gasp/t3.was
new file mode 100644
index 0000000..a16b5e8
--- /dev/null
+++ b/gas/testsuite/gasp/t3.was
@@ -0,0 +1,26 @@
+******** t3.amp
+!
+
+! test base convertions
+ test base convertions
+!
+
+! B'1001000
+ 72
+! Q'210
+ 136
+! D'136
+ 136
+! H'88
+ 136
+!
+
+! FOOB'1001000BAR
+ FOOB'1001000BAR
+! FOOQ'210BAR
+ FOOQ'210BAR
+! FOOD'136BAR
+ FOOD'136BAR
+! FOOH'88BAR
+ FOOH'88BAR
+!.END missing from end of file.
diff --git a/gas/testsuite/gasp/while.asm b/gas/testsuite/gasp/while.asm
new file mode 100644
index 0000000..09143cc
--- /dev/null
+++ b/gas/testsuite/gasp/while.asm
@@ -0,0 +1,18 @@
+ donkey
+bar .ASSIGNA 0
+ .AWHILE \&bar LT 5
+ HI BAR IS \&bar
+foo .ASSIGNA 0
+ .AWHILE \&foo LT 2
+ HI BEFORE
+ .AREPEAT 2
+ HI MEDIUM \&foo \&bar
+ .AENDR
+ HI AFTER
+foo .ASSIGNA \&foo + 1
+ .AENDW
+bar .ASSIGNA \&bar + 1
+ AND ITS NOW \&bar
+ .AENDW
+ .END
+
diff --git a/gas/testsuite/gasp/while.is b/gas/testsuite/gasp/while.is
new file mode 100644
index 0000000..d33fbc4
--- /dev/null
+++ b/gas/testsuite/gasp/while.is
@@ -0,0 +1,389 @@
+******** while.amp
+! donkey
+ donkey
+!bar .ASSIGNA 0
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 0
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 0
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 0
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 0
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 0
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 1
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 1
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 1
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 1
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 1
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 1
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 2
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 2
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 2
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 2
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 2
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 2
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 3
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 3
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 3
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 3
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 3
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 3
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 4
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 4
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 4
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 4
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 4
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 4
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 5
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! .END
diff --git a/gas/testsuite/gasp/while.was b/gas/testsuite/gasp/while.was
new file mode 100644
index 0000000..d33fbc4
--- /dev/null
+++ b/gas/testsuite/gasp/while.was
@@ -0,0 +1,389 @@
+******** while.amp
+! donkey
+ donkey
+!bar .ASSIGNA 0
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 0
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 0
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 0
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 0
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 0
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 1
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 1
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 1
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 1
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 1
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 1
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 2
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 2
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 2
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 2
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 2
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 2
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 3
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 3
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 3
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 3
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 3
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 3
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 4
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! HI BAR IS \&bar
+ HI BAR IS 4
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 4
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 0 4
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+! HI BEFORE
+ HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 4
+! .AREPEAT 1
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI MEDIUM \&foo \&bar
+ HI MEDIUM 1 4
+! HI AFTER
+ HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+ AND ITS NOW 5
+! .AWHILE \&bar LT 5
+! HI BAR IS \&bar
+!foo .ASSIGNA 0
+! .AWHILE \&foo LT 2
+! HI BEFORE
+! .AREPEAT 2
+! HI MEDIUM \&foo \&bar
+! .AENDR
+! HI AFTER
+!foo .ASSIGNA \&foo + 1
+! .AENDW
+!bar .ASSIGNA \&bar + 1
+! AND ITS NOW \&bar
+! .AENDW
+! .END