diff --git a/src/cmd/9a/a.h b/src/cmd/9a/a.h
index a2280b1e986b3a823955e551c65b75eb755ce4ea..d4f2fee1190bb49d7ba39223880e645ef5d5cbc5 100644
--- a/src/cmd/9a/a.h
+++ b/src/cmd/9a/a.h
@@ -118,6 +118,7 @@ EXTERN	char*	outfile;
 EXTERN	int	pass;
 EXTERN	int32	pc;
 EXTERN	int	peekc;
+EXTERN	int32	stmtline;
 EXTERN	int	sym;
 EXTERN	char*	symb;
 EXTERN	int	thechar;
diff --git a/src/cmd/9a/a.y b/src/cmd/9a/a.y
index 71d714b0d149a7facf5f91778b004a7b23c887ee..7c55af96c2c7d037c72b25fdfe066ff3f9629177 100644
--- a/src/cmd/9a/a.y
+++ b/src/cmd/9a/a.y
@@ -64,7 +64,11 @@
 %type	<addr>	imm ximm fimm rel psr lcr cbit fpscr msr mask
 %%
 prog:
-|	prog line
+|	prog
+	{
+		stmtline = lineno;
+	}
+	line
 
 line:
 	LNAME ':'
diff --git a/src/cmd/9a/lex.c b/src/cmd/9a/lex.c
index 942791247e45762437fe38df4e4b0a8901b5a951..ad552370d4346e6ed3450b8f06011fb5235e8539 100644
--- a/src/cmd/9a/lex.c
+++ b/src/cmd/9a/lex.c
@@ -672,7 +672,7 @@ outcode(int a, Addr *g1, int reg, Addr *g2)
 
 	p = emallocz(sizeof(Prog));
 	p->as = a;
-	p->lineno = lineno;
+	p->lineno = stmtline;
 	if(nosched)
 		p->mark |= NOSCHED;
 	p->from = *g1;
@@ -702,7 +702,7 @@ outgcode(int a, Addr *g1, int reg, Addr *g2, Addr *g3)
 
 	p = emallocz(sizeof(Prog));
 	p->as = a;
-	p->lineno = lineno;
+	p->lineno = stmtline;
 	if(nosched)
 		p->mark |= NOSCHED;
 	p->from = *g1;
diff --git a/src/cmd/9a/y.tab.c b/src/cmd/9a/y.tab.c
index 178dfe1bca75fe65e10cf05da03b14ac50fe49aa..e89d94d43dabd51de7cf3c3ae4ae34a44d7952b9 100644
--- a/src/cmd/9a/y.tab.c
+++ b/src/cmd/9a/y.tab.c
@@ -462,16 +462,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   932
+#define YYLAST   880
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  82
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  31
+#define YYNNTS  32
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  186
+#define YYNRULES  187
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  462
+#define YYNSTATES  463
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -522,140 +522,140 @@ static const yytype_uint8 yytranslate[] =
    YYRHS.  */
 static const yytype_uint16 yyprhs[] =
 {
-       0,     0,     3,     4,     7,     8,    13,    18,    23,    26,
-      28,    31,    34,    39,    44,    49,    54,    59,    64,    69,
-      74,    79,    84,    89,    94,    99,   104,   109,   114,   119,
-     124,   129,   134,   141,   146,   151,   158,   163,   168,   175,
-     182,   189,   194,   199,   206,   211,   218,   223,   230,   235,
-     240,   243,   250,   255,   260,   265,   272,   277,   282,   287,
-     292,   297,   302,   307,   312,   315,   318,   323,   327,   331,
-     337,   342,   347,   354,   359,   364,   371,   378,   385,   394,
-     399,   404,   408,   411,   416,   421,   428,   437,   442,   449,
-     454,   459,   466,   473,   482,   491,   500,   509,   514,   519,
-     524,   531,   536,   543,   548,   553,   556,   559,   563,   567,
-     571,   575,   578,   582,   586,   591,   596,   599,   605,   613,
-     618,   625,   632,   639,   646,   649,   654,   657,   659,   661,
-     663,   665,   667,   669,   671,   673,   678,   680,   682,   684,
-     689,   691,   696,   698,   702,   704,   707,   711,   716,   719,
-     722,   725,   729,   732,   734,   739,   743,   749,   751,   756,
-     761,   767,   775,   776,   778,   779,   782,   785,   787,   789,
-     791,   793,   795,   798,   801,   804,   808,   810,   814,   818,
-     822,   826,   830,   835,   840,   844,   848
+       0,     0,     3,     4,     5,     9,    10,    15,    20,    25,
+      28,    30,    33,    36,    41,    46,    51,    56,    61,    66,
+      71,    76,    81,    86,    91,    96,   101,   106,   111,   116,
+     121,   126,   131,   136,   143,   148,   153,   160,   165,   170,
+     177,   184,   191,   196,   201,   208,   213,   220,   225,   232,
+     237,   242,   245,   252,   257,   262,   267,   274,   279,   284,
+     289,   294,   299,   304,   309,   314,   317,   320,   325,   329,
+     333,   339,   344,   349,   356,   361,   366,   373,   380,   387,
+     396,   401,   406,   410,   413,   418,   423,   430,   439,   444,
+     451,   456,   461,   468,   475,   484,   493,   502,   511,   516,
+     521,   526,   533,   538,   545,   550,   555,   558,   561,   565,
+     569,   573,   577,   580,   584,   588,   593,   598,   601,   607,
+     615,   620,   627,   634,   641,   648,   651,   656,   659,   661,
+     663,   665,   667,   669,   671,   673,   675,   680,   682,   684,
+     686,   691,   693,   698,   700,   704,   706,   709,   713,   718,
+     721,   724,   727,   731,   734,   736,   741,   745,   751,   753,
+     758,   763,   769,   777,   778,   780,   781,   784,   787,   789,
+     791,   793,   795,   797,   800,   803,   806,   810,   812,   816,
+     820,   824,   828,   832,   837,   842,   846,   850
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      83,     0,    -1,    -1,    83,    84,    -1,    -1,    71,    74,
-      85,    84,    -1,    71,    75,   112,    76,    -1,    73,    75,
-     112,    76,    -1,    58,    76,    -1,    76,    -1,    86,    76,
-      -1,     1,    76,    -1,    13,    88,    77,    88,    -1,    13,
-     106,    77,    88,    -1,    13,   105,    77,    88,    -1,    14,
-      88,    77,    88,    -1,    14,   106,    77,    88,    -1,    14,
-     105,    77,    88,    -1,    22,   106,    77,    96,    -1,    22,
-     105,    77,    96,    -1,    22,   102,    77,    96,    -1,    22,
-      96,    77,    96,    -1,    22,    96,    77,   106,    -1,    22,
-      96,    77,   105,    -1,    13,    88,    77,   106,    -1,    13,
-      88,    77,   105,    -1,    14,    88,    77,   106,    -1,    14,
-      88,    77,   105,    -1,    13,    96,    77,   106,    -1,    13,
-      96,    77,   105,    -1,    13,    95,    77,    96,    -1,    13,
-      96,    77,    95,    -1,    13,    96,    77,   103,    77,    95,
-      -1,    13,    95,    77,    97,    -1,    67,   103,    77,   111,
-      -1,    13,    88,    77,   103,    77,    91,    -1,    13,    88,
-      77,    97,    -1,    13,    88,    77,    91,    -1,    18,    88,
-      77,   104,    77,    88,    -1,    18,   103,    77,   104,    77,
-      88,    -1,    18,    88,    77,   103,    77,    88,    -1,    18,
-      88,    77,    88,    -1,    18,   103,    77,    88,    -1,    16,
-      88,    77,   104,    77,    88,    -1,    16,    88,    77,    88,
-      -1,    17,    88,    77,   104,    77,    88,    -1,    17,    88,
-      77,    88,    -1,    17,   103,    77,   104,    77,    88,    -1,
-      17,   103,    77,    88,    -1,    15,    88,    77,    88,    -1,
-      15,    88,    -1,    68,    88,    77,   104,    77,    88,    -1,
-      13,   103,    77,    88,    -1,    13,   101,    77,    88,    -1,
-      20,    98,    77,    98,    -1,    20,    98,    77,   111,    77,
-      98,    -1,    13,    97,    77,    97,    -1,    13,    94,    77,
-      97,    -1,    13,    91,    77,    88,    -1,    13,    94,    77,
-      88,    -1,    13,    89,    77,    88,    -1,    13,    88,    77,
-      89,    -1,    13,    97,    77,    94,    -1,    13,    88,    77,
-      94,    -1,    21,    87,    -1,    21,   106,    -1,    21,    78,
-      89,    79,    -1,    21,    77,    87,    -1,    21,    77,   106,
-      -1,    21,    77,    78,    89,    79,    -1,    21,    97,    77,
-      87,    -1,    21,    97,    77,   106,    -1,    21,    97,    77,
-      78,    89,    79,    -1,    21,   111,    77,    87,    -1,    21,
-     111,    77,   106,    -1,    21,   111,    77,    78,    89,    79,
-      -1,    21,   111,    77,   111,    77,    87,    -1,    21,   111,
-      77,   111,    77,   106,    -1,    21,   111,    77,   111,    77,
-      78,    89,    79,    -1,    27,    88,    77,   104,    -1,    27,
-     103,    77,   104,    -1,    27,    88,   108,    -1,    27,   108,
-      -1,    23,    96,    77,    96,    -1,    25,    96,    77,    96,
-      -1,    25,    96,    77,    96,    77,    96,    -1,    26,    96,
-      77,    96,    77,    96,    77,    96,    -1,    24,    96,    77,
-      96,    -1,    24,    96,    77,    96,    77,    97,    -1,    19,
-      88,    77,    88,    -1,    19,    88,    77,   103,    -1,    19,
-      88,    77,    88,    77,    97,    -1,    19,    88,    77,   103,
-      77,    97,    -1,    63,   103,    77,    88,    77,   103,    77,
-      88,    -1,    63,   103,    77,    88,    77,    99,    77,    88,
-      -1,    63,    88,    77,    88,    77,   103,    77,    88,    -1,
-      63,    88,    77,    88,    77,    99,    77,    88,    -1,    64,
-     106,    77,    88,    -1,    64,    88,    77,   106,    -1,    59,
-     105,    77,    88,    -1,    59,   105,    77,   103,    77,    88,
-      -1,    60,    88,    77,   105,    -1,    60,    88,    77,   103,
-      77,   105,    -1,    62,   105,    77,    88,    -1,    62,    88,
-      77,   105,    -1,    61,   105,    -1,    29,   108,    -1,    29,
-      88,   108,    -1,    29,    96,   108,    -1,    29,    77,    88,
-      -1,    29,    77,    96,    -1,    29,   103,    -1,    32,   103,
-     108,    -1,    32,   101,   108,    -1,    56,   103,    77,   103,
-      -1,    57,   103,    77,   106,    -1,    30,   108,    -1,    33,
-     107,    77,    80,   100,    -1,    33,   107,    77,   111,    77,
-      80,   100,    -1,    34,   107,    77,   103,    -1,    34,   107,
-      77,   111,    77,   103,    -1,    35,   107,    11,   111,    77,
-     103,    -1,    35,   107,    11,   111,    77,   101,    -1,    35,
-     107,    11,   111,    77,   102,    -1,    36,   108,    -1,   111,
-      78,    41,    79,    -1,    71,   109,    -1,   104,    -1,    90,
-      -1,    92,    -1,    50,    -1,    47,    -1,    51,    -1,    55,
-      -1,    53,    -1,    52,    78,   111,    79,    -1,    93,    -1,
-      49,    -1,    45,    -1,    48,    78,   111,    79,    -1,    42,
-      -1,    47,    78,   111,    79,    -1,   111,    -1,   111,    77,
-     111,    -1,    37,    -1,     9,    37,    -1,    37,     9,    37,
-      -1,     9,    37,     9,    37,    -1,    80,   106,    -1,    80,
-      70,    -1,    80,    69,    -1,    80,     9,    69,    -1,    80,
-     111,    -1,    44,    -1,    46,    78,   111,    79,    -1,    78,
-     104,    79,    -1,    78,   104,     8,   104,    79,    -1,   107,
-      -1,   111,    78,   104,    79,    -1,   111,    78,   110,    79,
-      -1,    71,   109,    78,   110,    79,    -1,    71,     6,     7,
-     109,    78,    39,    79,    -1,    -1,    77,    -1,    -1,     8,
-     111,    -1,     9,   111,    -1,    39,    -1,    38,    -1,    40,
-      -1,    37,    -1,    73,    -1,     9,   111,    -1,     8,   111,
-      -1,    81,   111,    -1,    78,   112,    79,    -1,   111,    -1,
-     112,     8,   112,    -1,   112,     9,   112,    -1,   112,    10,
-     112,    -1,   112,    11,   112,    -1,   112,    12,   112,    -1,
-     112,     6,     6,   112,    -1,   112,     7,     7,   112,    -1,
-     112,     5,   112,    -1,   112,     4,   112,    -1,   112,     3,
-     112,    -1
+      83,     0,    -1,    -1,    -1,    83,    84,    85,    -1,    -1,
+      71,    74,    86,    85,    -1,    71,    75,   113,    76,    -1,
+      73,    75,   113,    76,    -1,    58,    76,    -1,    76,    -1,
+      87,    76,    -1,     1,    76,    -1,    13,    89,    77,    89,
+      -1,    13,   107,    77,    89,    -1,    13,   106,    77,    89,
+      -1,    14,    89,    77,    89,    -1,    14,   107,    77,    89,
+      -1,    14,   106,    77,    89,    -1,    22,   107,    77,    97,
+      -1,    22,   106,    77,    97,    -1,    22,   103,    77,    97,
+      -1,    22,    97,    77,    97,    -1,    22,    97,    77,   107,
+      -1,    22,    97,    77,   106,    -1,    13,    89,    77,   107,
+      -1,    13,    89,    77,   106,    -1,    14,    89,    77,   107,
+      -1,    14,    89,    77,   106,    -1,    13,    97,    77,   107,
+      -1,    13,    97,    77,   106,    -1,    13,    96,    77,    97,
+      -1,    13,    97,    77,    96,    -1,    13,    97,    77,   104,
+      77,    96,    -1,    13,    96,    77,    98,    -1,    67,   104,
+      77,   112,    -1,    13,    89,    77,   104,    77,    92,    -1,
+      13,    89,    77,    98,    -1,    13,    89,    77,    92,    -1,
+      18,    89,    77,   105,    77,    89,    -1,    18,   104,    77,
+     105,    77,    89,    -1,    18,    89,    77,   104,    77,    89,
+      -1,    18,    89,    77,    89,    -1,    18,   104,    77,    89,
+      -1,    16,    89,    77,   105,    77,    89,    -1,    16,    89,
+      77,    89,    -1,    17,    89,    77,   105,    77,    89,    -1,
+      17,    89,    77,    89,    -1,    17,   104,    77,   105,    77,
+      89,    -1,    17,   104,    77,    89,    -1,    15,    89,    77,
+      89,    -1,    15,    89,    -1,    68,    89,    77,   105,    77,
+      89,    -1,    13,   104,    77,    89,    -1,    13,   102,    77,
+      89,    -1,    20,    99,    77,    99,    -1,    20,    99,    77,
+     112,    77,    99,    -1,    13,    98,    77,    98,    -1,    13,
+      95,    77,    98,    -1,    13,    92,    77,    89,    -1,    13,
+      95,    77,    89,    -1,    13,    90,    77,    89,    -1,    13,
+      89,    77,    90,    -1,    13,    98,    77,    95,    -1,    13,
+      89,    77,    95,    -1,    21,    88,    -1,    21,   107,    -1,
+      21,    78,    90,    79,    -1,    21,    77,    88,    -1,    21,
+      77,   107,    -1,    21,    77,    78,    90,    79,    -1,    21,
+      98,    77,    88,    -1,    21,    98,    77,   107,    -1,    21,
+      98,    77,    78,    90,    79,    -1,    21,   112,    77,    88,
+      -1,    21,   112,    77,   107,    -1,    21,   112,    77,    78,
+      90,    79,    -1,    21,   112,    77,   112,    77,    88,    -1,
+      21,   112,    77,   112,    77,   107,    -1,    21,   112,    77,
+     112,    77,    78,    90,    79,    -1,    27,    89,    77,   105,
+      -1,    27,   104,    77,   105,    -1,    27,    89,   109,    -1,
+      27,   109,    -1,    23,    97,    77,    97,    -1,    25,    97,
+      77,    97,    -1,    25,    97,    77,    97,    77,    97,    -1,
+      26,    97,    77,    97,    77,    97,    77,    97,    -1,    24,
+      97,    77,    97,    -1,    24,    97,    77,    97,    77,    98,
+      -1,    19,    89,    77,    89,    -1,    19,    89,    77,   104,
+      -1,    19,    89,    77,    89,    77,    98,    -1,    19,    89,
+      77,   104,    77,    98,    -1,    63,   104,    77,    89,    77,
+     104,    77,    89,    -1,    63,   104,    77,    89,    77,   100,
+      77,    89,    -1,    63,    89,    77,    89,    77,   104,    77,
+      89,    -1,    63,    89,    77,    89,    77,   100,    77,    89,
+      -1,    64,   107,    77,    89,    -1,    64,    89,    77,   107,
+      -1,    59,   106,    77,    89,    -1,    59,   106,    77,   104,
+      77,    89,    -1,    60,    89,    77,   106,    -1,    60,    89,
+      77,   104,    77,   106,    -1,    62,   106,    77,    89,    -1,
+      62,    89,    77,   106,    -1,    61,   106,    -1,    29,   109,
+      -1,    29,    89,   109,    -1,    29,    97,   109,    -1,    29,
+      77,    89,    -1,    29,    77,    97,    -1,    29,   104,    -1,
+      32,   104,   109,    -1,    32,   102,   109,    -1,    56,   104,
+      77,   104,    -1,    57,   104,    77,   107,    -1,    30,   109,
+      -1,    33,   108,    77,    80,   101,    -1,    33,   108,    77,
+     112,    77,    80,   101,    -1,    34,   108,    77,   104,    -1,
+      34,   108,    77,   112,    77,   104,    -1,    35,   108,    11,
+     112,    77,   104,    -1,    35,   108,    11,   112,    77,   102,
+      -1,    35,   108,    11,   112,    77,   103,    -1,    36,   109,
+      -1,   112,    78,    41,    79,    -1,    71,   110,    -1,   105,
+      -1,    91,    -1,    93,    -1,    50,    -1,    47,    -1,    51,
+      -1,    55,    -1,    53,    -1,    52,    78,   112,    79,    -1,
+      94,    -1,    49,    -1,    45,    -1,    48,    78,   112,    79,
+      -1,    42,    -1,    47,    78,   112,    79,    -1,   112,    -1,
+     112,    77,   112,    -1,    37,    -1,     9,    37,    -1,    37,
+       9,    37,    -1,     9,    37,     9,    37,    -1,    80,   107,
+      -1,    80,    70,    -1,    80,    69,    -1,    80,     9,    69,
+      -1,    80,   112,    -1,    44,    -1,    46,    78,   112,    79,
+      -1,    78,   105,    79,    -1,    78,   105,     8,   105,    79,
+      -1,   108,    -1,   112,    78,   105,    79,    -1,   112,    78,
+     111,    79,    -1,    71,   110,    78,   111,    79,    -1,    71,
+       6,     7,   110,    78,    39,    79,    -1,    -1,    77,    -1,
+      -1,     8,   112,    -1,     9,   112,    -1,    39,    -1,    38,
+      -1,    40,    -1,    37,    -1,    73,    -1,     9,   112,    -1,
+       8,   112,    -1,    81,   112,    -1,    78,   113,    79,    -1,
+     112,    -1,   113,     8,   113,    -1,   113,     9,   113,    -1,
+     113,    10,   113,    -1,   113,    11,   113,    -1,   113,    12,
+     113,    -1,   113,     6,     6,   113,    -1,   113,     7,     7,
+     113,    -1,   113,     5,   113,    -1,   113,     4,   113,    -1,
+     113,     3,   113,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,    66,    66,    67,    71,    70,    79,    84,    90,    94,
-      95,    96,   102,   106,   110,   114,   118,   122,   129,   133,
-     137,   141,   145,   149,   156,   160,   164,   168,   175,   179,
-     186,   190,   194,   198,   202,   209,   213,   217,   227,   231,
+       0,    66,    66,    68,    67,    75,    74,    83,    88,    94,
+      98,    99,   100,   106,   110,   114,   118,   122,   126,   133,
+     137,   141,   145,   149,   153,   160,   164,   168,   172,   179,
+     183,   190,   194,   198,   202,   206,   213,   217,   221,   231,
      235,   239,   243,   247,   251,   255,   259,   263,   267,   271,
-     275,   282,   289,   293,   300,   304,   312,   316,   320,   324,
-     328,   332,   336,   340,   349,   353,   357,   361,   365,   369,
-     373,   377,   381,   385,   389,   393,   397,   405,   413,   424,
-     428,   432,   436,   443,   447,   451,   455,   459,   463,   470,
-     474,   478,   482,   489,   493,   497,   501,   508,   512,   520,
-     524,   528,   532,   536,   540,   544,   551,   555,   559,   563,
-     567,   571,   578,   582,   589,   598,   609,   616,   621,   633,
-     638,   651,   659,   667,   678,   684,   690,   701,   709,   710,
-     713,   721,   729,   737,   745,   751,   759,   762,   770,   776,
-     784,   790,   798,   806,   827,   834,   841,   848,   857,   862,
-     870,   876,   883,   891,   892,   900,   907,   917,   918,   927,
-     935,   943,   952,   953,   956,   959,   963,   969,   970,   971,
-     974,   975,   979,   983,   987,   991,   997,   998,  1002,  1006,
-    1010,  1014,  1018,  1022,  1026,  1030,  1034
+     275,   279,   286,   293,   297,   304,   308,   316,   320,   324,
+     328,   332,   336,   340,   344,   353,   357,   361,   365,   369,
+     373,   377,   381,   385,   389,   393,   397,   401,   409,   417,
+     428,   432,   436,   440,   447,   451,   455,   459,   463,   467,
+     474,   478,   482,   486,   493,   497,   501,   505,   512,   516,
+     524,   528,   532,   536,   540,   544,   548,   555,   559,   563,
+     567,   571,   575,   582,   586,   593,   602,   613,   620,   625,
+     637,   642,   655,   663,   671,   682,   688,   694,   705,   713,
+     714,   717,   725,   733,   741,   749,   755,   763,   766,   774,
+     780,   788,   794,   802,   810,   831,   838,   845,   852,   861,
+     866,   874,   880,   887,   895,   896,   904,   911,   921,   922,
+     931,   939,   947,   956,   957,   960,   963,   967,   973,   974,
+     975,   978,   979,   983,   987,   991,   995,  1001,  1002,  1006,
+    1010,  1014,  1018,  1022,  1026,  1030,  1034,  1038
 };
 #endif
 
@@ -673,8 +673,8 @@ static const char *const yytname[] =
   "LCTR", "LSPR", "LSPREG", "LSEG", "LMSR", "LPCDAT", "LFUNCDAT", "LSCHED",
   "LXLD", "LXST", "LXOP", "LXMV", "LRLWM", "LMOVMW", "LMOVEM", "LMOVFL",
   "LMTFSB", "LMA", "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'",
-  "'='", "';'", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog",
-  "line", "@1", "inst", "rel", "rreg", "xlreg", "lr", "lcr", "ctr", "msr",
+  "'='", "';'", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1",
+  "line", "@2", "inst", "rel", "rreg", "xlreg", "lr", "lcr", "ctr", "msr",
   "psr", "fpscr", "freg", "creg", "cbit", "mask", "textsize", "ximm",
   "fimm", "imm", "sreg", "regaddr", "addr", "name", "comma", "offset",
   "pointer", "con", "expr", 0
@@ -701,49 +701,49 @@ static const yytype_uint16 yytoknum[] =
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    82,    83,    83,    85,    84,    84,    84,    84,    84,
-      84,    84,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    86,    86,    86,    87,    87,    88,    89,    89,
-      90,    91,    92,    93,    94,    94,    94,    95,    96,    96,
-      97,    97,    98,    99,   100,   100,   100,   100,   101,   101,
-     102,   102,   103,   104,   104,   105,   105,   106,   106,   107,
-     107,   107,   108,   108,   109,   109,   109,   110,   110,   110,
-     111,   111,   111,   111,   111,   111,   112,   112,   112,   112,
-     112,   112,   112,   112,   112,   112,   112
+       0,    82,    83,    84,    83,    86,    85,    85,    85,    85,
+      85,    85,    85,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    88,    88,    89,    90,
+      90,    91,    92,    93,    94,    95,    95,    95,    96,    97,
+      97,    98,    98,    99,   100,   101,   101,   101,   101,   102,
+     102,   103,   103,   104,   105,   105,   106,   106,   107,   107,
+     108,   108,   108,   109,   109,   110,   110,   110,   111,   111,
+     111,   112,   112,   112,   112,   112,   112,   113,   113,   113,
+     113,   113,   113,   113,   113,   113,   113,   113
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     0,     2,     0,     4,     4,     4,     2,     1,
-       2,     2,     4,     4,     4,     4,     4,     4,     4,     4,
+       0,     2,     0,     0,     3,     0,     4,     4,     4,     2,
+       1,     2,     2,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     6,     4,     4,     6,     4,     4,     6,     6,
-       6,     4,     4,     6,     4,     6,     4,     6,     4,     4,
-       2,     6,     4,     4,     4,     6,     4,     4,     4,     4,
-       4,     4,     4,     4,     2,     2,     4,     3,     3,     5,
-       4,     4,     6,     4,     4,     6,     6,     6,     8,     4,
-       4,     3,     2,     4,     4,     6,     8,     4,     6,     4,
-       4,     6,     6,     8,     8,     8,     8,     4,     4,     4,
-       6,     4,     6,     4,     4,     2,     2,     3,     3,     3,
-       3,     2,     3,     3,     4,     4,     2,     5,     7,     4,
-       6,     6,     6,     6,     2,     4,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     4,     1,     1,     1,     4,
-       1,     4,     1,     3,     1,     2,     3,     4,     2,     2,
-       2,     3,     2,     1,     4,     3,     5,     1,     4,     4,
-       5,     7,     0,     1,     0,     2,     2,     1,     1,     1,
-       1,     1,     2,     2,     2,     3,     1,     3,     3,     3,
-       3,     3,     4,     4,     3,     3,     3
+       4,     4,     4,     6,     4,     4,     6,     4,     4,     6,
+       6,     6,     4,     4,     6,     4,     6,     4,     6,     4,
+       4,     2,     6,     4,     4,     4,     6,     4,     4,     4,
+       4,     4,     4,     4,     4,     2,     2,     4,     3,     3,
+       5,     4,     4,     6,     4,     4,     6,     6,     6,     8,
+       4,     4,     3,     2,     4,     4,     6,     8,     4,     6,
+       4,     4,     6,     6,     8,     8,     8,     8,     4,     4,
+       4,     6,     4,     6,     4,     4,     2,     2,     3,     3,
+       3,     3,     2,     3,     3,     4,     4,     2,     5,     7,
+       4,     6,     6,     6,     6,     2,     4,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     4,     1,     1,     1,
+       4,     1,     4,     1,     3,     1,     2,     3,     4,     2,
+       2,     2,     3,     2,     1,     4,     3,     5,     1,     4,
+       4,     5,     7,     0,     1,     0,     2,     2,     1,     1,
+       1,     1,     1,     2,     2,     2,     3,     1,     3,     3,
+       3,     3,     3,     4,     4,     3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -751,125 +751,125 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   162,   162,
-     162,     0,     0,     0,     0,   162,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     9,
-       3,     0,    11,     0,     0,   170,   140,   153,   138,     0,
-     131,     0,   137,   130,   132,     0,   134,   133,   164,   171,
-       0,     0,     0,     0,     0,   128,     0,   129,   136,     0,
-       0,     0,     0,     0,     0,   127,     0,     0,   157,     0,
-       0,     0,     0,    50,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   142,     0,   164,     0,     0,    64,     0,
-      65,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   163,   162,     0,    82,   163,   162,   162,   111,   106,
-     116,   162,   162,     0,     0,     0,     0,   124,     0,     0,
-       8,     0,     0,     0,   105,     0,     0,     0,     0,     0,
-       0,     0,     0,     4,     0,     0,    10,   173,   172,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   176,     0,
-     149,   148,   152,   174,     0,     0,     0,     0,     0,     0,
+       2,     3,     1,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   163,
+     163,   163,     0,     0,     0,     0,   163,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   152,     0,     0,     0,     0,     0,     0,   126,     0,
-      67,    68,     0,     0,     0,     0,     0,     0,   150,     0,
-       0,     0,     0,     0,     0,     0,     0,   163,    81,     0,
-     109,   110,   107,   108,   113,   112,     0,     0,     0,     0,
+      10,     4,     0,    12,     0,     0,   171,   141,   154,   139,
+       0,   132,     0,   138,   131,   133,     0,   135,   134,   165,
+     172,     0,     0,     0,     0,     0,   129,     0,   130,   137,
+       0,     0,     0,     0,     0,     0,   128,     0,     0,   158,
+       0,     0,     0,     0,    51,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   143,     0,   165,     0,     0,    65,
+       0,    66,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   164,   163,     0,    83,   164,   163,   163,   112,
+     107,   117,   163,   163,     0,     0,     0,     0,   125,     0,
+       0,     9,     0,     0,     0,   106,     0,     0,     0,     0,
+       0,     0,     0,     0,     5,     0,     0,    11,   174,   173,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   177,
+       0,   150,   149,   153,   175,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   164,
-     165,   166,     0,     0,   155,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   175,    12,    61,    37,    63,
-      36,     0,    25,    24,    60,    58,    59,    57,    30,    33,
-      31,     0,    29,    28,    62,    56,    53,    52,    14,    13,
-     168,   167,   169,     0,     0,    15,    27,    26,    17,    16,
-      49,    44,   127,    46,   127,    48,   127,    41,     0,   127,
-      42,   127,    89,    90,    54,   142,     0,    66,     0,    70,
-      71,     0,    73,    74,     0,     0,   151,    21,    23,    22,
-      20,    19,    18,    83,    87,    84,     0,    79,    80,     0,
-       0,   119,     0,     0,   114,   115,    99,     0,     0,   101,
-     104,   103,     0,     0,    98,    97,    34,     0,     5,     6,
-       7,   154,   141,   139,   135,     0,     0,     0,   186,   185,
-     184,     0,     0,   177,   178,   179,   180,   181,     0,     0,
-     158,   159,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    69,     0,     0,     0,   125,     0,     0,     0,     0,
-     144,   117,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   160,   156,   182,   183,   131,    35,    32,    43,    45,
-      47,    40,    38,    39,    91,    92,    55,    72,    75,     0,
-      76,    77,    88,    85,     0,   145,     0,     0,   120,     0,
-     122,   123,   121,   100,   102,     0,     0,     0,     0,     0,
-      51,     0,     0,     0,     0,   146,   118,     0,     0,     0,
-       0,     0,     0,   161,    78,    86,   147,    96,    95,   143,
-      94,    93
+       0,     0,   153,     0,     0,     0,     0,     0,     0,   127,
+       0,    68,    69,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,   164,    82,
+       0,   110,   111,   108,   109,   114,   113,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     165,   166,   167,     0,     0,   156,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   176,    13,    62,    38,
+      64,    37,     0,    26,    25,    61,    59,    60,    58,    31,
+      34,    32,     0,    30,    29,    63,    57,    54,    53,    15,
+      14,   169,   168,   170,     0,     0,    16,    28,    27,    18,
+      17,    50,    45,   128,    47,   128,    49,   128,    42,     0,
+     128,    43,   128,    90,    91,    55,   143,     0,    67,     0,
+      71,    72,     0,    74,    75,     0,     0,   152,    22,    24,
+      23,    21,    20,    19,    84,    88,    85,     0,    80,    81,
+       0,     0,   120,     0,     0,   115,   116,   100,     0,     0,
+     102,   105,   104,     0,     0,    99,    98,    35,     0,     6,
+       7,     8,   155,   142,   140,   136,     0,     0,     0,   187,
+     186,   185,     0,     0,   178,   179,   180,   181,   182,     0,
+       0,   159,   160,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    70,     0,     0,     0,   126,     0,     0,     0,
+       0,   145,   118,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   161,   157,   183,   184,   132,    36,    33,    44,
+      46,    48,    41,    39,    40,    92,    93,    56,    73,    76,
+       0,    77,    78,    89,    86,     0,   146,     0,     0,   121,
+       0,   123,   124,   122,   101,   103,     0,     0,     0,     0,
+       0,    52,     0,     0,     0,     0,   147,   119,     0,     0,
+       0,     0,     0,     0,   162,    79,    87,   148,    97,    96,
+     144,    95,    94
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    40,   232,    41,    98,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    92,   435,   391,    73,
-     104,    74,    75,    76,   161,    78,   114,   156,   284,   158,
-     159
+      -1,     1,     3,    41,   233,    42,    99,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    93,   436,   392,
+      74,   105,    75,    76,    77,   162,    79,   115,   157,   285,
+     159,   160
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -179
+#define YYPACT_NINF -180
 static const yytype_int16 yypact[] =
 {
-    -179,   484,  -179,   -64,   581,   686,    74,    74,   -24,   -24,
-      74,   845,   641,   656,   -29,   -29,   -29,   -29,    19,   -11,
-     -54,   -38,   747,   747,   747,   -54,   -19,   -19,   -50,    -6,
-      74,    -6,   -14,   -24,   707,   -19,    74,   -36,    18,  -179,
-    -179,     2,  -179,   845,   845,  -179,  -179,  -179,  -179,    24,
-      27,    48,  -179,  -179,  -179,    61,  -179,  -179,   188,  -179,
-     717,   738,   845,    79,    81,  -179,    93,  -179,  -179,    99,
-     107,   116,   126,   127,   130,  -179,   132,   133,  -179,    87,
-     136,   138,   157,   159,   171,   845,   176,   179,   182,   184,
-     186,   845,   194,  -179,    27,   188,   762,   764,  -179,   196,
-    -179,    66,     8,   198,   200,   201,   202,   203,   206,   215,
-     216,  -179,   217,   219,  -179,   181,   -54,   -54,  -179,  -179,
-    -179,   -54,   -54,   220,   167,   221,   178,  -179,   223,   224,
-    -179,    74,   225,   226,  -179,   227,   231,   232,   233,   234,
-     236,   237,   238,  -179,   845,   845,  -179,  -179,  -179,   845,
-     845,   845,   845,   242,   845,   845,   229,     3,  -179,   377,
-    -179,  -179,    87,  -179,   629,    74,    74,   172,    26,   732,
-      39,    74,    74,    74,    74,   230,   686,    74,    74,    74,
-      74,  -179,    74,    74,   -24,    74,   -24,   845,   229,   764,
-    -179,  -179,   241,   243,   784,   814,   111,   254,  -179,    67,
-     -29,   -29,   -29,   -29,   -29,   -29,   -29,    74,  -179,    74,
-    -179,  -179,  -179,  -179,  -179,  -179,   821,    45,   830,   845,
-     -19,   747,   -24,    49,    -6,    74,    74,    74,   747,    74,
-     845,    74,   548,   463,   518,   246,   247,   248,   249,   155,
-    -179,  -179,    45,    74,  -179,   845,   845,   845,   323,   325,
-     845,   845,   845,   845,   845,  -179,  -179,  -179,  -179,  -179,
-    -179,   259,  -179,  -179,  -179,  -179,  -179,  -179,  -179,  -179,
-    -179,   260,  -179,  -179,  -179,  -179,  -179,  -179,  -179,  -179,
-    -179,  -179,  -179,   265,   266,  -179,  -179,  -179,  -179,  -179,
-    -179,  -179,   269,  -179,   270,  -179,   272,  -179,   278,   279,
-    -179,   280,   283,   284,  -179,   285,   275,  -179,   764,  -179,
-    -179,   764,  -179,  -179,   105,   286,  -179,  -179,  -179,  -179,
-    -179,  -179,  -179,  -179,   289,   296,   297,  -179,  -179,     9,
-     299,  -179,   301,   319,  -179,  -179,  -179,   320,   321,  -179,
-    -179,  -179,   324,   327,  -179,  -179,  -179,   328,  -179,  -179,
-    -179,  -179,  -179,  -179,  -179,   329,   333,   334,   591,   430,
-     451,   845,   845,    78,    78,  -179,  -179,  -179,   316,   353,
-    -179,  -179,    74,    74,    74,    74,    74,    74,    20,    20,
-     845,  -179,   335,   336,   841,  -179,    20,   -29,   -29,   369,
-     399,  -179,   338,   -19,   339,    74,    -6,   830,   830,    74,
-     382,  -179,  -179,   277,   277,  -179,  -179,  -179,  -179,  -179,
-    -179,  -179,  -179,  -179,  -179,  -179,  -179,  -179,  -179,   764,
-    -179,  -179,  -179,  -179,   345,   414,   387,     9,  -179,   322,
-    -179,  -179,  -179,  -179,  -179,   350,   351,   352,   354,   355,
-    -179,   366,   372,   -29,   393,  -179,  -179,   851,    74,    74,
-     845,    74,    74,  -179,  -179,  -179,  -179,  -179,  -179,  -179,
-    -179,  -179
+    -180,    12,  -180,   484,   -53,   517,   619,    28,    28,   -24,
+     -24,    28,   799,   577,   596,   -29,   -29,   -29,   -29,    19,
+     -11,   -51,   -38,   701,   701,   701,   -51,   -19,   -19,    -8,
+      -7,    28,    -7,   -14,   -24,   643,   -19,    28,   -36,     6,
+    -180,  -180,    26,  -180,   799,   799,  -180,  -180,  -180,  -180,
+       7,    27,    51,  -180,  -180,  -180,    61,  -180,  -180,   188,
+    -180,   662,   674,   799,    79,    93,  -180,    99,  -180,  -180,
+     112,   116,   126,   136,   138,   157,  -180,   168,   176,  -180,
+      80,   179,   182,   184,   186,   194,   799,   196,   198,   200,
+     201,   202,   799,   203,  -180,    27,   188,   714,   676,  -180,
+     206,  -180,    49,     8,   215,   216,   217,   219,   220,   221,
+     223,   224,  -180,   225,   226,  -180,   181,   -51,   -51,  -180,
+    -180,  -180,   -51,   -51,   227,   158,   231,   296,  -180,   232,
+     233,  -180,    28,   234,   236,  -180,   237,   238,   242,   245,
+     246,   248,   249,   250,  -180,   799,   799,  -180,  -180,  -180,
+     799,   799,   799,   799,   321,   799,   799,   251,     3,  -180,
+     377,  -180,  -180,    80,  -180,   565,    28,    28,   172,   162,
+     623,    31,    28,    28,    28,    28,   230,   619,    28,    28,
+      28,    28,  -180,    28,    28,   -24,    28,   -24,   799,   251,
+     676,  -180,  -180,   254,   257,   723,   753,   111,   268,  -180,
+      67,   -29,   -29,   -29,   -29,   -29,   -29,   -29,    28,  -180,
+      28,  -180,  -180,  -180,  -180,  -180,  -180,   733,    96,   760,
+     799,   -19,   701,   -24,    40,    -7,    28,    28,    28,   701,
+      28,   799,    28,   484,   463,   524,   265,   266,   267,   270,
+     135,  -180,  -180,    96,    28,  -180,   799,   799,   799,   341,
+     347,   799,   799,   799,   799,   799,  -180,  -180,  -180,  -180,
+    -180,  -180,   278,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
+    -180,  -180,   279,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
+    -180,  -180,  -180,  -180,   281,   282,  -180,  -180,  -180,  -180,
+    -180,  -180,  -180,   280,  -180,   285,  -180,   286,  -180,   288,
+     289,  -180,   297,   299,   301,  -180,   319,   294,  -180,   676,
+    -180,  -180,   676,  -180,  -180,   171,   318,  -180,  -180,  -180,
+    -180,  -180,  -180,  -180,  -180,   324,   325,   327,  -180,  -180,
+       9,   328,  -180,   329,   330,  -180,  -180,  -180,   331,   335,
+    -180,  -180,  -180,   336,   337,  -180,  -180,  -180,   338,  -180,
+    -180,  -180,  -180,  -180,  -180,  -180,   320,   339,   340,   571,
+     430,    82,   799,   799,   153,   153,  -180,  -180,  -180,   374,
+     373,  -180,  -180,    28,    28,    28,    28,    28,    28,    20,
+      20,   799,  -180,   344,   345,   772,  -180,    20,   -29,   -29,
+     390,   419,  -180,   349,   -19,   350,    28,    -7,   760,   760,
+      28,   392,  -180,  -180,   277,   277,  -180,  -180,  -180,  -180,
+    -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
+     676,  -180,  -180,  -180,  -180,   355,   436,   411,     9,  -180,
+     322,  -180,  -180,  -180,  -180,  -180,   375,   376,   378,   380,
+     381,  -180,   372,   382,   -29,   417,  -180,  -180,   790,    28,
+      28,   799,    28,    28,  -180,  -180,  -180,  -180,  -180,  -180,
+    -180,  -180,  -180
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -179,  -179,   222,  -179,  -179,   -72,    -5,   -61,  -179,  -157,
-    -179,  -179,  -149,  -161,    38,    31,  -178,    50,    28,   -15,
-      58,    98,   168,    82,    96,   112,    25,   -85,   211,    36,
-      88
+    -180,  -180,  -180,   229,  -180,  -180,   -73,    -6,   -62,  -180,
+    -158,  -180,  -180,  -150,  -162,    37,    30,  -179,    60,    32,
+     -16,    68,    97,   167,    81,    95,   159,    24,   -86,   239,
+      35,    87
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -879,251 +879,241 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint16 yytable[] =
 {
-      80,    83,    84,    86,    88,    90,   121,   258,   270,   304,
-     188,   243,    42,   112,   116,   259,    48,   197,   389,    51,
-      47,   274,    49,   111,   190,   133,   130,   135,   137,   139,
-      47,   142,    49,    47,    48,    49,   193,    51,   143,   144,
-      79,    79,    61,    99,   119,   120,   390,    93,   101,    79,
-     127,   103,   107,   108,   109,   110,    85,   117,   124,   124,
-     124,    85,    46,    47,   131,    49,   115,    94,    46,    85,
-      79,    48,   131,    94,    51,    43,    44,   198,   146,   147,
-     148,    46,   244,   280,   281,   282,    94,    81,   252,   253,
-     254,    55,    56,   145,    57,   105,   111,   162,   163,    85,
-      77,    82,   149,   257,    45,   150,    87,    89,   100,   106,
-     210,   132,    48,   134,   136,    51,   113,   118,    47,   122,
-      49,   181,   309,   312,   128,   129,   151,   131,   306,    85,
-     140,   138,   192,   141,   123,   125,   126,   208,    58,   152,
-      59,   212,   213,   195,   196,    60,   214,   215,    62,   280,
-     281,   282,   315,   211,   355,    47,   164,    49,   165,   256,
-     264,   265,   266,   154,   155,   175,   276,   277,   278,   279,
-     166,   285,   288,   289,   290,   291,   167,   293,   295,   297,
-     300,   302,   384,   196,   168,   235,   236,   237,   238,   219,
-     240,   241,   191,   169,   153,   260,   154,   155,   267,   269,
-      79,   275,   416,   170,   171,    79,   268,   172,   407,   173,
-     174,   406,    79,   176,    46,   177,    47,   336,    49,    94,
-     341,   342,   343,   305,   345,    47,    48,    49,   157,    51,
-     192,   314,   233,   234,   178,    79,   179,   317,   320,   321,
-     322,   323,   324,   325,   326,   217,   262,   382,   180,   239,
-     383,   272,   330,   182,   332,   333,   183,    79,   286,   184,
-     263,   185,   261,   186,    79,   273,   346,   271,   280,   281,
-     282,   187,   287,   194,    47,   199,    49,   200,   201,   202,
-     203,   318,   298,   204,   303,   250,   251,   252,   253,   254,
-     310,   313,   205,   206,   207,   319,   209,   216,   218,   157,
-     220,   221,   222,   223,   224,   339,   340,   242,   225,   226,
-     227,   228,   420,   229,   230,   231,   331,   335,   334,   196,
-     337,   338,   307,   316,   344,   351,   352,   353,   354,   361,
-      43,   447,   362,   358,   359,   360,   368,   369,   363,   364,
-     365,   366,   367,   283,   370,   371,   372,   373,   292,   374,
-     294,   296,   299,   301,   381,   375,   376,   377,   442,    45,
-     378,   379,   380,   405,   283,   385,   386,   408,   409,   410,
-     411,   412,   413,   387,   388,   327,   392,   328,   393,   430,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     433,   198,   160,    58,   440,    59,   394,   395,   396,   347,
-      91,   397,    52,    62,   398,   399,   425,   400,   426,   414,
-     415,   357,   401,   402,   417,   418,    93,   422,   427,   429,
-     192,   441,   443,   444,   445,   423,   424,   448,   449,   450,
-     456,   451,   452,   437,   437,   247,   248,   249,   250,   251,
-     252,   253,   254,   457,   458,   453,   460,   461,   438,   403,
-     404,   454,   431,   356,   348,   446,   255,   248,   249,   250,
-     251,   252,   253,   254,     0,   162,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,     0,     0,   434,     0,
-     421,   455,     0,   148,     2,     3,   459,     0,     0,     0,
-       0,   428,   432,     0,     0,   436,   439,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,     0,    19,    20,     0,    21,    22,    23,    24,
-      25,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,     0,     0,     0,     0,     0,     0,     0,     0,   349,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,     3,
-       0,    35,    36,     0,     0,    37,     0,    38,     0,     0,
-      39,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,     0,    19,    20,     0,
-      21,    22,    23,    24,    25,     0,     0,     0,     0,    43,
-      44,     0,     0,     0,   350,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,     0,     0,    35,    36,     0,    45,    37,
-       0,    38,     0,    46,    39,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,     0,    57,    43,    44,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
-      44,     0,    58,     0,    59,     0,     0,     0,     0,    60,
-       0,    61,    62,     0,    43,    44,    45,     0,     0,     0,
-       0,    46,     0,    47,     0,    49,    50,     0,    45,    53,
-      54,    55,    56,    46,    57,     0,     0,     0,    94,     0,
-       0,     0,     0,    45,    43,    44,     0,     0,     0,     0,
-      58,    48,    59,     0,    51,     0,     0,    60,     0,    85,
-      62,     0,    95,     0,    59,    43,    44,     0,    96,    97,
-       0,     0,    62,    45,     0,    43,    44,    58,     0,    59,
-      47,     0,    49,     0,    60,     0,   102,    62,     0,     0,
-      43,    44,     0,     0,    45,     0,    43,    44,     0,     0,
-       0,    47,     0,    49,    45,    43,    44,    58,     0,    59,
-       0,    47,     0,    49,    60,     0,     0,    62,     0,    45,
-      43,    44,    43,    44,     0,    45,     0,     0,    58,     0,
-      59,    52,     0,     0,    45,    91,     0,     0,    62,     0,
-      59,     0,    43,    44,     0,    91,     0,     0,    62,    45,
-       0,    45,     0,    58,     0,    59,     0,     0,   160,    58,
-      60,    59,    85,    62,    53,    54,    91,     0,    58,    62,
-      59,    45,    43,    44,     0,    91,     0,     0,    62,    43,
-      44,     0,     0,    95,     0,    59,     0,    59,    43,    44,
-     189,     0,    91,    62,     0,    62,     0,     0,     0,    43,
-      44,    45,     0,    43,    44,    95,     0,    59,    45,    43,
-      44,     0,   308,     0,     0,    62,     0,    45,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    45,     0,
-       0,     0,    45,     0,     0,    95,     0,    59,    45,     0,
-       0,     0,   311,     0,    59,    62,     0,     0,     0,    91,
-       0,   329,    62,    59,     0,     0,     0,     0,    91,     0,
-      85,    62,    95,     0,    59,     0,     0,     0,    59,   419,
-     316,     0,    62,    91,    59,     0,    62,     0,     0,    91,
-       0,     0,    62
+      81,    84,    85,    87,    89,    91,   122,   259,   271,   305,
+     189,   244,     2,   113,   117,   260,    49,   198,   390,    52,
+      48,   275,    50,    43,   191,   134,   112,   136,   138,   140,
+      48,   143,    50,    48,    49,    50,   194,    52,   144,   145,
+      80,    80,    62,   100,   120,   121,   391,    94,   102,    80,
+     128,   104,   108,   109,   110,   111,    86,   118,   125,   125,
+     125,    86,    47,    48,   132,    50,   116,    95,   131,    86,
+      80,   132,    48,    47,    50,    44,    45,   199,    95,   148,
+     149,   146,   245,    56,    57,   150,    58,    82,   249,   250,
+     251,   252,   253,   254,   255,   106,   112,   163,   164,    86,
+      78,    83,   147,   258,    46,   151,    88,    90,   101,   107,
+     211,   133,    49,   135,   137,    52,   114,   119,   132,   123,
+      86,   182,   310,   313,   129,   130,   196,   197,   307,   152,
+     141,   139,   193,   142,   281,   282,   283,   209,    59,   153,
+      60,   213,   214,   155,   156,    61,   215,   216,    63,   281,
+     282,   283,   316,   212,   356,    48,   165,    50,   176,   257,
+     265,   266,   267,   253,   254,   255,   277,   278,   279,   280,
+     166,   286,   289,   290,   291,   292,   167,   294,   296,   298,
+     301,   303,   124,   126,   127,   236,   237,   238,   239,   168,
+     241,   242,   192,   169,   154,   261,   155,   156,   268,   270,
+      80,   276,   417,   170,    47,    80,   269,    49,   408,    95,
+      52,   407,    80,   171,    47,   172,    48,   337,    50,    95,
+     342,   343,   344,   306,   346,    48,    49,    50,   158,    52,
+     193,   315,   234,   235,   173,    80,   218,   318,   321,   322,
+     323,   324,   325,   326,   327,   174,   263,   383,   385,   197,
+     384,   273,   331,   175,   333,   334,   177,    80,   287,   178,
+     264,   179,   262,   180,    80,   274,   347,   272,   281,   282,
+     283,   181,   288,   183,    48,   184,    50,   185,   186,   187,
+     188,   319,   299,   195,   304,   251,   252,   253,   254,   255,
+     311,   314,   200,   201,   202,   320,   203,   204,   205,   158,
+     206,   207,   208,   210,   217,   340,   341,   220,   219,   221,
+     222,   223,   421,   224,   225,   226,   332,   336,   335,   227,
+     338,   339,   228,   229,   345,   230,   231,   232,   240,   243,
+      44,   448,   197,   359,   360,   361,   308,   317,   364,   365,
+     366,   367,   368,   284,   352,   353,   354,   362,   293,   355,
+     295,   297,   300,   302,   363,   369,   370,   373,   443,    46,
+     371,   372,   374,   375,   284,   376,   377,   409,   410,   411,
+     412,   413,   414,   382,   378,   328,   379,   329,   380,   431,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     434,   199,   161,    59,   441,    60,   381,   386,   401,   348,
+      92,   387,   388,    63,   389,   393,   394,   395,   396,   415,
+     416,   358,   397,   398,   399,   400,    94,   423,   402,   403,
+     193,   406,    53,   418,   419,   424,   425,   426,   427,   428,
+     430,   442,   444,   438,   438,   248,   249,   250,   251,   252,
+     253,   254,   255,   458,   459,   445,   461,   462,   446,   404,
+     405,   454,   449,   450,   457,   451,   256,   452,   453,   439,
+     447,   455,   349,   432,     0,   163,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,     0,     0,   435,     0,
+     422,   456,   357,   149,     0,     4,   460,     0,     0,     0,
+       0,   429,   433,     0,     0,   437,   440,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,     0,    20,    21,     0,    22,    23,    24,    25,
+      26,     0,     0,     0,     0,    44,    45,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,     0,     0,   350,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,     0,
+       0,    36,    37,     0,    46,    38,     0,    39,     0,    47,
+      40,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,     0,    58,    44,    45,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,     0,    44,    45,     0,    59,     0,
+      60,     0,     0,     0,     0,    61,     0,    62,    63,     0,
+     351,     0,    46,     0,    44,    45,     0,    47,     0,    48,
+       0,    50,    51,     0,    46,    54,    55,    56,    57,    47,
+      58,     0,     0,     0,    95,     0,     0,    44,    45,     0,
+       0,    44,    45,    46,     0,     0,    59,     0,    60,     0,
+       0,    49,     0,    61,    52,    86,    63,     0,    96,     0,
+      60,    44,    45,     0,    97,    98,    46,     0,    63,     0,
+      46,     0,     0,    48,     0,    50,     0,    59,     0,    60,
+      44,    45,    53,     0,    61,     0,   103,    63,     0,     0,
+      46,     0,    44,    45,    44,    45,     0,    48,     0,    50,
+      59,     0,    60,     0,    59,     0,    60,    61,     0,    46,
+      63,    61,     0,    86,    63,     0,    48,     0,    50,    44,
+      45,    46,     0,    46,    59,     0,    60,     0,     0,     0,
+       0,    92,    44,    45,    63,     0,    54,    55,     0,     0,
+       0,    44,    45,     0,     0,    60,     0,     0,    46,     0,
+      92,    44,    45,    63,   161,    59,     0,    60,     0,    60,
+       0,    46,    92,     0,    92,    63,     0,    63,     0,     0,
+      46,    44,    45,     0,     0,     0,     0,     0,    44,    45,
+      46,     0,    59,     0,    60,     0,     0,     0,     0,    92,
+      44,    45,    63,     0,     0,    96,     0,    60,     0,     0,
+      46,     0,   190,     0,    96,    63,    60,    46,    44,    45,
+       0,   309,     0,     0,    63,     0,    60,    44,    45,    46,
+       0,    92,     0,   330,    63,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    96,     0,    60,    46,     0,     0,
+       0,   312,     0,    60,    63,     0,    46,     0,    92,     0,
+      86,    63,     0,    96,     0,    60,     0,     0,     0,     0,
+     420,     0,     0,    63,     0,     0,     0,     0,     0,   317,
+       0,     0,     0,    60,     0,     0,     0,     0,    92,     0,
+       0,    63,    60,     0,     0,     0,     0,    92,     0,     0,
+      63
 };
 
 static const yytype_int16 yycheck[] =
 {
-       5,     6,     7,     8,     9,    10,    21,   164,   169,   187,
-      95,     8,    76,    18,    19,   164,    45,     9,     9,    48,
-      44,   170,    46,    77,    96,    30,    76,    32,    33,    34,
-      44,    36,    46,    44,    45,    46,    97,    48,    74,    75,
-       4,     5,    80,    12,    19,    20,    37,    11,    12,    13,
-      25,    13,    14,    15,    16,    17,    80,    19,    22,    23,
-      24,    80,    42,    44,    78,    46,    77,    47,    42,    80,
-      34,    45,    78,    47,    48,     8,     9,    69,    76,    43,
-      44,    42,    79,    38,    39,    40,    47,     5,    10,    11,
-      12,    52,    53,    75,    55,    13,    77,    61,    62,    80,
-       4,     5,    78,   164,    37,    78,     8,     9,    12,    13,
-     115,    29,    45,    31,    32,    48,    18,    19,    44,    21,
-      46,    85,   194,   195,    26,    27,    78,    78,   189,    80,
-      34,    33,    96,    35,    22,    23,    24,   112,    71,    78,
-      73,   116,   117,    77,    78,    78,   121,   122,    81,    38,
-      39,    40,    41,   115,   239,    44,    77,    46,    77,   164,
-     165,   166,   167,     8,     9,    78,   171,   172,   173,   174,
-      77,   176,   177,   178,   179,   180,    77,   182,   183,   184,
-     185,   186,    77,    78,    77,   149,   150,   151,   152,    11,
-     154,   155,    96,    77,     6,   164,     8,     9,   167,   168,
-     164,   170,   380,    77,    77,   169,   168,    77,   369,    77,
-      77,   368,   176,    77,    42,    77,    44,   222,    46,    47,
-     225,   226,   227,   187,   229,    44,    45,    46,    60,    48,
-     194,   195,   144,   145,    77,   199,    77,   199,   200,   201,
-     202,   203,   204,   205,   206,    78,   164,   308,    77,     7,
-     311,   169,   216,    77,   218,   219,    77,   221,   176,    77,
-     164,    77,   164,    77,   228,   169,   230,   169,    38,    39,
-      40,    77,   176,    77,    44,    77,    46,    77,    77,    77,
-      77,   199,   184,    77,   186,     8,     9,    10,    11,    12,
-     194,   195,    77,    77,    77,   199,    77,    77,    77,   131,
-      77,    77,    77,    77,    77,   223,   224,    78,    77,    77,
-      77,    77,   384,    77,    77,    77,   218,   221,   220,    78,
-     222,   223,    79,    69,   228,    79,    79,    79,    79,     6,
-       8,     9,     7,   245,   246,   247,    77,    77,   250,   251,
-     252,   253,   254,   175,    79,    79,    77,    77,   180,    77,
-     182,   183,   184,   185,    79,    77,    77,    77,   419,    37,
-      77,    77,    77,    47,   196,    79,    77,   372,   373,   374,
-     375,   376,   377,    77,    77,   207,    77,   209,    77,   394,
+       6,     7,     8,     9,    10,    11,    22,   165,   170,   188,
+      96,     8,     0,    19,    20,   165,    45,     9,     9,    48,
+      44,   171,    46,    76,    97,    31,    77,    33,    34,    35,
+      44,    37,    46,    44,    45,    46,    98,    48,    74,    75,
+       5,     6,    80,    13,    20,    21,    37,    12,    13,    14,
+      26,    14,    15,    16,    17,    18,    80,    20,    23,    24,
+      25,    80,    42,    44,    78,    46,    77,    47,    76,    80,
+      35,    78,    44,    42,    46,     8,     9,    69,    47,    44,
+      45,    75,    79,    52,    53,    78,    55,     6,     6,     7,
+       8,     9,    10,    11,    12,    14,    77,    62,    63,    80,
+       5,     6,    76,   165,    37,    78,     9,    10,    13,    14,
+     116,    30,    45,    32,    33,    48,    19,    20,    78,    22,
+      80,    86,   195,   196,    27,    28,    77,    78,   190,    78,
+      35,    34,    97,    36,    38,    39,    40,   113,    71,    78,
+      73,   117,   118,     8,     9,    78,   122,   123,    81,    38,
+      39,    40,    41,   116,   240,    44,    77,    46,    78,   165,
+     166,   167,   168,    10,    11,    12,   172,   173,   174,   175,
+      77,   177,   178,   179,   180,   181,    77,   183,   184,   185,
+     186,   187,    23,    24,    25,   150,   151,   152,   153,    77,
+     155,   156,    97,    77,     6,   165,     8,     9,   168,   169,
+     165,   171,   381,    77,    42,   170,   169,    45,   370,    47,
+      48,   369,   177,    77,    42,    77,    44,   223,    46,    47,
+     226,   227,   228,   188,   230,    44,    45,    46,    61,    48,
+     195,   196,   145,   146,    77,   200,    78,   200,   201,   202,
+     203,   204,   205,   206,   207,    77,   165,   309,    77,    78,
+     312,   170,   217,    77,   219,   220,    77,   222,   177,    77,
+     165,    77,   165,    77,   229,   170,   231,   170,    38,    39,
+      40,    77,   177,    77,    44,    77,    46,    77,    77,    77,
+      77,   200,   185,    77,   187,     8,     9,    10,    11,    12,
+     195,   196,    77,    77,    77,   200,    77,    77,    77,   132,
+      77,    77,    77,    77,    77,   224,   225,    11,    77,    77,
+      77,    77,   385,    77,    77,    77,   219,   222,   221,    77,
+     223,   224,    77,    77,   229,    77,    77,    77,     7,    78,
+       8,     9,    78,   246,   247,   248,    79,    69,   251,   252,
+     253,   254,   255,   176,    79,    79,    79,     6,   181,    79,
+     183,   184,   185,   186,     7,    77,    77,    77,   420,    37,
+      79,    79,    77,    77,   197,    77,    77,   373,   374,   375,
+     376,   377,   378,    79,    77,   208,    77,   210,    77,   395,
        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-     395,    69,    70,    71,   399,    73,    77,    77,    77,   231,
-      78,    77,    49,    81,    77,    77,    37,    78,     9,   378,
-     379,   243,    79,    79,    79,    79,   380,   386,    80,    80,
-     384,    39,    77,     9,    37,   387,   388,    77,    77,    77,
-      37,    77,    77,   397,   398,     5,     6,     7,     8,     9,
-      10,    11,    12,   448,   449,    79,   451,   452,   398,   361,
-     362,    79,   394,   242,   232,   427,    79,     6,     7,     8,
-       9,    10,    11,    12,    -1,   429,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    -1,    -1,   396,    -1,
-     384,   443,    -1,   447,     0,     1,   450,    -1,    -1,    -1,
-      -1,   393,   394,    -1,    -1,   397,   398,    13,    14,    15,
+     396,    69,    70,    71,   400,    73,    77,    79,    78,   232,
+      78,    77,    77,    81,    77,    77,    77,    77,    77,   379,
+     380,   244,    77,    77,    77,    77,   381,   387,    79,    79,
+     385,    47,    49,    79,    79,   388,   389,    37,     9,    80,
+      80,    39,    77,   398,   399,     5,     6,     7,     8,     9,
+      10,    11,    12,   449,   450,     9,   452,   453,    37,   362,
+     363,    79,    77,    77,    37,    77,    79,    77,    77,   399,
+     428,    79,   233,   395,    -1,   430,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    -1,   397,    -1,
+     385,   444,   243,   448,    -1,     1,   451,    -1,    -1,    -1,
+      -1,   394,   395,    -1,    -1,   398,   399,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    -1,    29,    30,    -1,    32,    33,    34,    35,
-      36,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,     1,
-      -1,    67,    68,    -1,    -1,    71,    -1,    73,    -1,    -1,
-      76,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    -1,
-      32,    33,    34,    35,    36,    -1,    -1,    -1,    -1,     8,
-       9,    -1,    -1,    -1,    76,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    -1,    -1,    67,    68,    -1,    37,    71,
-      -1,    73,    -1,    42,    76,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    -1,    55,     8,     9,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     8,
-       9,    -1,    71,    -1,    73,    -1,    -1,    -1,    -1,    78,
-      -1,    80,    81,    -1,     8,     9,    37,    -1,    -1,    -1,
-      -1,    42,    -1,    44,    -1,    46,    47,    -1,    37,    50,
-      51,    52,    53,    42,    55,    -1,    -1,    -1,    47,    -1,
-      -1,    -1,    -1,    37,     8,     9,    -1,    -1,    -1,    -1,
-      71,    45,    73,    -1,    48,    -1,    -1,    78,    -1,    80,
-      81,    -1,    71,    -1,    73,     8,     9,    -1,    77,    78,
-      -1,    -1,    81,    37,    -1,     8,     9,    71,    -1,    73,
-      44,    -1,    46,    -1,    78,    -1,    80,    81,    -1,    -1,
-       8,     9,    -1,    -1,    37,    -1,     8,     9,    -1,    -1,
-      -1,    44,    -1,    46,    37,     8,     9,    71,    -1,    73,
-      -1,    44,    -1,    46,    78,    -1,    -1,    81,    -1,    37,
-       8,     9,     8,     9,    -1,    37,    -1,    -1,    71,    -1,
-      73,    49,    -1,    -1,    37,    78,    -1,    -1,    81,    -1,
-      73,    -1,     8,     9,    -1,    78,    -1,    -1,    81,    37,
-      -1,    37,    -1,    71,    -1,    73,    -1,    -1,    70,    71,
-      78,    73,    80,    81,    50,    51,    78,    -1,    71,    81,
-      73,    37,     8,     9,    -1,    78,    -1,    -1,    81,     8,
-       9,    -1,    -1,    71,    -1,    73,    -1,    73,     8,     9,
-      78,    -1,    78,    81,    -1,    81,    -1,    -1,    -1,     8,
-       9,    37,    -1,     8,     9,    71,    -1,    73,    37,     8,
-       9,    -1,    78,    -1,    -1,    81,    -1,    37,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,
-      -1,    -1,    37,    -1,    -1,    71,    -1,    73,    37,    -1,
-      -1,    -1,    78,    -1,    73,    81,    -1,    -1,    -1,    78,
-      -1,    80,    81,    73,    -1,    -1,    -1,    -1,    78,    -1,
-      80,    81,    71,    -1,    73,    -1,    -1,    -1,    73,    78,
-      69,    -1,    81,    78,    73,    -1,    81,    -1,    -1,    78,
-      -1,    -1,    81
+      36,    -1,    -1,    -1,    -1,     8,     9,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    76,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    -1,
+      -1,    67,    68,    -1,    37,    71,    -1,    73,    -1,    42,
+      76,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    -1,    55,     8,     9,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    -1,     8,     9,    -1,    71,    -1,
+      73,    -1,    -1,    -1,    -1,    78,    -1,    80,    81,    -1,
+      76,    -1,    37,    -1,     8,     9,    -1,    42,    -1,    44,
+      -1,    46,    47,    -1,    37,    50,    51,    52,    53,    42,
+      55,    -1,    -1,    -1,    47,    -1,    -1,     8,     9,    -1,
+      -1,     8,     9,    37,    -1,    -1,    71,    -1,    73,    -1,
+      -1,    45,    -1,    78,    48,    80,    81,    -1,    71,    -1,
+      73,     8,     9,    -1,    77,    78,    37,    -1,    81,    -1,
+      37,    -1,    -1,    44,    -1,    46,    -1,    71,    -1,    73,
+       8,     9,    49,    -1,    78,    -1,    80,    81,    -1,    -1,
+      37,    -1,     8,     9,     8,     9,    -1,    44,    -1,    46,
+      71,    -1,    73,    -1,    71,    -1,    73,    78,    -1,    37,
+      81,    78,    -1,    80,    81,    -1,    44,    -1,    46,     8,
+       9,    37,    -1,    37,    71,    -1,    73,    -1,    -1,    -1,
+      -1,    78,     8,     9,    81,    -1,    50,    51,    -1,    -1,
+      -1,     8,     9,    -1,    -1,    73,    -1,    -1,    37,    -1,
+      78,     8,     9,    81,    70,    71,    -1,    73,    -1,    73,
+      -1,    37,    78,    -1,    78,    81,    -1,    81,    -1,    -1,
+      37,     8,     9,    -1,    -1,    -1,    -1,    -1,     8,     9,
+      37,    -1,    71,    -1,    73,    -1,    -1,    -1,    -1,    78,
+       8,     9,    81,    -1,    -1,    71,    -1,    73,    -1,    -1,
+      37,    -1,    78,    -1,    71,    81,    73,    37,     8,     9,
+      -1,    78,    -1,    -1,    81,    -1,    73,     8,     9,    37,
+      -1,    78,    -1,    80,    81,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    73,    37,    -1,    -1,
+      -1,    78,    -1,    73,    81,    -1,    37,    -1,    78,    -1,
+      80,    81,    -1,    71,    -1,    73,    -1,    -1,    -1,    -1,
+      78,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    78,    -1,
+      -1,    81,    73,    -1,    -1,    -1,    -1,    78,    -1,    -1,
+      81
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    83,     0,     1,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    29,
-      30,    32,    33,    34,    35,    36,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    67,    68,    71,    73,    76,
-      84,    86,    76,     8,     9,    37,    42,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    55,    71,    73,
-      78,    80,    81,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,   101,   103,   104,   105,   106,   107,   111,
-      88,   105,   106,    88,    88,    80,    88,   103,    88,   103,
-      88,    78,    98,   111,    47,    71,    77,    78,    87,    97,
-     106,   111,    80,    96,   102,   105,   106,    96,    96,    96,
-      96,    77,    88,   103,   108,    77,    88,    96,   103,   108,
-     108,   101,   103,   107,   111,   107,   107,   108,   103,   103,
-      76,    78,   105,    88,   105,    88,   105,    88,   103,    88,
-     106,   103,    88,    74,    75,    75,    76,   111,   111,    78,
-      78,    78,    78,     6,     8,     9,   109,   104,   111,   112,
-      70,   106,   111,   111,    77,    77,    77,    77,    77,    77,
-      77,    77,    77,    77,    77,    78,    77,    77,    77,    77,
-      77,   111,    77,    77,    77,    77,    77,    77,   109,    78,
-      87,   106,   111,    89,    77,    77,    78,     9,    69,    77,
-      77,    77,    77,    77,    77,    77,    77,    77,   108,    77,
-      88,    96,   108,   108,   108,   108,    77,    78,    77,    11,
-      77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
-      77,    77,    85,   112,   112,   111,   111,   111,   111,     7,
-     111,   111,    78,     8,    79,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    79,    88,    89,    91,    94,
-      97,   103,   105,   106,    88,    88,    88,    97,    96,    97,
-      95,   103,   105,   106,    94,    97,    88,    88,    88,    88,
-      38,    39,    40,   104,   110,    88,   105,   106,    88,    88,
-      88,    88,   104,    88,   104,    88,   104,    88,   103,   104,
-      88,   104,    88,   103,    98,   111,    89,    79,    78,    87,
-     106,    78,    87,   106,   111,    41,    69,    96,   105,   106,
-      96,    96,    96,    96,    96,    96,    96,   104,   104,    80,
-     111,   103,   111,   111,   103,   106,    88,   103,   103,   105,
-     105,    88,    88,    88,   106,    88,   111,   104,    84,    76,
-      76,    79,    79,    79,    79,   109,   110,   104,   112,   112,
-     112,     6,     7,   112,   112,   112,   112,   112,    77,    77,
-      79,    79,    77,    77,    77,    77,    77,    77,    77,    77,
-      77,    79,    89,    89,    77,    79,    77,    77,    77,     9,
-      37,   100,    77,    77,    77,    77,    77,    77,    77,    77,
-      78,    79,    79,   112,   112,    47,    91,    95,    88,    88,
-      88,    88,    88,    88,    97,    97,    98,    79,    79,    78,
-      87,   106,    97,    96,    96,    37,     9,    80,   103,    80,
-     101,   102,   103,    88,   105,    99,   103,   111,    99,   103,
-      88,    39,    89,    77,     9,    37,   100,     9,    77,    77,
-      77,    77,    77,    79,    79,    96,    37,    88,    88,   111,
-      88,    88
+       0,    83,     0,    84,     1,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      29,    30,    32,    33,    34,    35,    36,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    67,    68,    71,    73,
+      76,    85,    87,    76,     8,     9,    37,    42,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    55,    71,
+      73,    78,    80,    81,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,   102,   104,   105,   106,   107,   108,
+     112,    89,   106,   107,    89,    89,    80,    89,   104,    89,
+     104,    89,    78,    99,   112,    47,    71,    77,    78,    88,
+      98,   107,   112,    80,    97,   103,   106,   107,    97,    97,
+      97,    97,    77,    89,   104,   109,    77,    89,    97,   104,
+     109,   109,   102,   104,   108,   112,   108,   108,   109,   104,
+     104,    76,    78,   106,    89,   106,    89,   106,    89,   104,
+      89,   107,   104,    89,    74,    75,    75,    76,   112,   112,
+      78,    78,    78,    78,     6,     8,     9,   110,   105,   112,
+     113,    70,   107,   112,   112,    77,    77,    77,    77,    77,
+      77,    77,    77,    77,    77,    77,    78,    77,    77,    77,
+      77,    77,   112,    77,    77,    77,    77,    77,    77,   110,
+      78,    88,   107,   112,    90,    77,    77,    78,     9,    69,
+      77,    77,    77,    77,    77,    77,    77,    77,    77,   109,
+      77,    89,    97,   109,   109,   109,   109,    77,    78,    77,
+      11,    77,    77,    77,    77,    77,    77,    77,    77,    77,
+      77,    77,    77,    86,   113,   113,   112,   112,   112,   112,
+       7,   112,   112,    78,     8,    79,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    79,    89,    90,    92,
+      95,    98,   104,   106,   107,    89,    89,    89,    98,    97,
+      98,    96,   104,   106,   107,    95,    98,    89,    89,    89,
+      89,    38,    39,    40,   105,   111,    89,   106,   107,    89,
+      89,    89,    89,   105,    89,   105,    89,   105,    89,   104,
+     105,    89,   105,    89,   104,    99,   112,    90,    79,    78,
+      88,   107,    78,    88,   107,   112,    41,    69,    97,   106,
+     107,    97,    97,    97,    97,    97,    97,    97,   105,   105,
+      80,   112,   104,   112,   112,   104,   107,    89,   104,   104,
+     106,   106,    89,    89,    89,   107,    89,   112,   105,    85,
+      76,    76,    79,    79,    79,    79,   110,   111,   105,   113,
+     113,   113,     6,     7,   113,   113,   113,   113,   113,    77,
+      77,    79,    79,    77,    77,    77,    77,    77,    77,    77,
+      77,    77,    79,    90,    90,    77,    79,    77,    77,    77,
+       9,    37,   101,    77,    77,    77,    77,    77,    77,    77,
+      77,    78,    79,    79,   113,   113,    47,    92,    96,    89,
+      89,    89,    89,    89,    89,    98,    98,    99,    79,    79,
+      78,    88,   107,    98,    97,    97,    37,     9,    80,   104,
+      80,   102,   103,   104,    89,   106,   100,   104,   112,   100,
+     104,    89,    39,    90,    77,     9,    37,   101,     9,    77,
+      77,    77,    77,    77,    79,    79,    97,    37,    89,    89,
+     112,    89,    89
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1937,8 +1927,15 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-#line 71 "a.y"
+        case 3:
+#line 68 "a.y"
+    {
+		stmtline = lineno;
+	}
+    break;
+
+  case 5:
+#line 75 "a.y"
     {
 		(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
 		if((yyvsp[(1) - (2)].sym)->type == LLAB && (yyvsp[(1) - (2)].sym)->value != pc)
@@ -1948,16 +1945,16 @@ yyreduce:
 	}
     break;
 
-  case 6:
-#line 80 "a.y"
+  case 7:
+#line 84 "a.y"
     {
 		(yyvsp[(1) - (4)].sym)->type = LVAR;
 		(yyvsp[(1) - (4)].sym)->value = (yyvsp[(3) - (4)].lval);
 	}
     break;
 
-  case 7:
-#line 85 "a.y"
+  case 8:
+#line 89 "a.y"
     {
 		if((yyvsp[(1) - (4)].sym)->value != (yyvsp[(3) - (4)].lval))
 			yyerror("redeclaration of %s", (yyvsp[(1) - (4)].sym)->name);
@@ -1965,20 +1962,13 @@ yyreduce:
 	}
     break;
 
-  case 8:
-#line 91 "a.y"
+  case 9:
+#line 95 "a.y"
     {
 		nosched = (yyvsp[(1) - (2)].lval);
 	}
     break;
 
-  case 12:
-#line 103 "a.y"
-    {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
-	}
-    break;
-
   case 13:
 #line 107 "a.y"
     {
@@ -2015,7 +2005,7 @@ yyreduce:
     break;
 
   case 18:
-#line 130 "a.y"
+#line 127 "a.y"
     {
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
@@ -2057,7 +2047,7 @@ yyreduce:
     break;
 
   case 24:
-#line 157 "a.y"
+#line 154 "a.y"
     {
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
@@ -2085,7 +2075,7 @@ yyreduce:
     break;
 
   case 28:
-#line 176 "a.y"
+#line 173 "a.y"
     {
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
@@ -2099,7 +2089,7 @@ yyreduce:
     break;
 
   case 30:
-#line 187 "a.y"
+#line 184 "a.y"
     {
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
@@ -2115,35 +2105,35 @@ yyreduce:
   case 32:
 #line 195 "a.y"
     {
-		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 33:
 #line 199 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 34:
 #line 203 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].lval), &nullgen);
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 35:
-#line 210 "a.y"
+#line 207 "a.y"
     {
-		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].lval), &nullgen);
 	}
     break;
 
   case 36:
 #line 214 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2155,9 +2145,9 @@ yyreduce:
     break;
 
   case 38:
-#line 228 "a.y"
+#line 222 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
@@ -2171,14 +2161,14 @@ yyreduce:
   case 40:
 #line 236 "a.y"
     {
-		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 41:
 #line 240 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2192,42 +2182,42 @@ yyreduce:
   case 43:
 #line 248 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 44:
 #line 252 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 45:
 #line 256 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 46:
 #line 260 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 47:
 #line 264 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 48:
 #line 268 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2241,21 +2231,21 @@ yyreduce:
   case 50:
 #line 276 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &(yyvsp[(2) - (2)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 51:
-#line 283 "a.y"
+#line 280 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &(yyvsp[(2) - (2)].addr));
 	}
     break;
 
   case 52:
-#line 290 "a.y"
+#line 287 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2267,23 +2257,23 @@ yyreduce:
     break;
 
   case 54:
-#line 301 "a.y"
+#line 298 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].addr).reg, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 55:
 #line 305 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].addr).reg, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 56:
-#line 313 "a.y"
+#line 309 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2337,9 +2327,9 @@ yyreduce:
     break;
 
   case 64:
-#line 350 "a.y"
+#line 345 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &(yyvsp[(2) - (2)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
@@ -2353,14 +2343,14 @@ yyreduce:
   case 66:
 #line 358 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &nullgen, 0, &(yyvsp[(3) - (4)].addr));
+		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &(yyvsp[(2) - (2)].addr));
 	}
     break;
 
   case 67:
 #line 362 "a.y"
     {
-		outcode((yyvsp[(1) - (3)].lval), &nullgen, 0, &(yyvsp[(3) - (3)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &nullgen, 0, &(yyvsp[(3) - (4)].addr));
 	}
     break;
 
@@ -2374,14 +2364,14 @@ yyreduce:
   case 69:
 #line 370 "a.y"
     {
-		outcode((yyvsp[(1) - (5)].lval), &nullgen, 0, &(yyvsp[(4) - (5)].addr));
+		outcode((yyvsp[(1) - (3)].lval), &nullgen, 0, &(yyvsp[(3) - (3)].addr));
 	}
     break;
 
   case 70:
 #line 374 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (5)].lval), &nullgen, 0, &(yyvsp[(4) - (5)].addr));
 	}
     break;
 
@@ -2395,14 +2385,14 @@ yyreduce:
   case 72:
 #line 382 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(5) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 73:
 #line 386 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &nullgen, (yyvsp[(2) - (4)].lval), &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(5) - (6)].addr));
 	}
     break;
 
@@ -2416,23 +2406,19 @@ yyreduce:
   case 75:
 #line 394 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &nullgen, (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &nullgen, (yyvsp[(2) - (4)].lval), &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 76:
 #line 398 "a.y"
     {
-		Addr g;
-		g = nullgen;
-		g.type = TYPE_CONST;
-		g.offset = (yyvsp[(2) - (6)].lval);
-		outcode((yyvsp[(1) - (6)].lval), &g, REG_R0+(yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &nullgen, (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].addr));
 	}
     break;
 
   case 77:
-#line 406 "a.y"
+#line 402 "a.y"
     {
 		Addr g;
 		g = nullgen;
@@ -2443,20 +2429,24 @@ yyreduce:
     break;
 
   case 78:
-#line 414 "a.y"
+#line 410 "a.y"
     {
 		Addr g;
 		g = nullgen;
 		g.type = TYPE_CONST;
-		g.offset = (yyvsp[(2) - (8)].lval);
-		outcode((yyvsp[(1) - (8)].lval), &g, REG_R0+(yyvsp[(4) - (8)].lval), &(yyvsp[(7) - (8)].addr));
+		g.offset = (yyvsp[(2) - (6)].lval);
+		outcode((yyvsp[(1) - (6)].lval), &g, REG_R0+(yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 79:
-#line 425 "a.y"
+#line 418 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].lval), &nullgen);
+		Addr g;
+		g = nullgen;
+		g.type = TYPE_CONST;
+		g.offset = (yyvsp[(2) - (8)].lval);
+		outcode((yyvsp[(1) - (8)].lval), &g, REG_R0+(yyvsp[(4) - (8)].lval), &(yyvsp[(7) - (8)].addr));
 	}
     break;
 
@@ -2470,21 +2460,21 @@ yyreduce:
   case 81:
 #line 433 "a.y"
     {
-		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), (yyvsp[(4) - (4)].lval), &nullgen);
 	}
     break;
 
   case 82:
 #line 437 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
+		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
 	}
     break;
 
   case 83:
-#line 444 "a.y"
+#line 441 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
 	}
     break;
 
@@ -2498,35 +2488,35 @@ yyreduce:
   case 85:
 #line 452 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].addr).reg, &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 86:
 #line 456 "a.y"
     {
-		outgcode((yyvsp[(1) - (8)].lval), &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].addr).reg, &(yyvsp[(6) - (8)].addr), &(yyvsp[(8) - (8)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].addr).reg, &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 87:
 #line 460 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (8)].lval), &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].addr).reg, &(yyvsp[(6) - (8)].addr), &(yyvsp[(8) - (8)].addr));
 	}
     break;
 
   case 88:
 #line 464 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(4) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 89:
-#line 471 "a.y"
+#line 468 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(4) - (6)].addr));
 	}
     break;
 
@@ -2540,7 +2530,7 @@ yyreduce:
   case 91:
 #line 479 "a.y"
     {
-		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(4) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
@@ -2552,9 +2542,9 @@ yyreduce:
     break;
 
   case 93:
-#line 490 "a.y"
+#line 487 "a.y"
     {
-		outgcode((yyvsp[(1) - (8)].lval), &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].addr).reg, &(yyvsp[(6) - (8)].addr), &(yyvsp[(8) - (8)].addr));
+		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(4) - (6)].addr));
 	}
     break;
 
@@ -2580,9 +2570,9 @@ yyreduce:
     break;
 
   case 97:
-#line 509 "a.y"
+#line 506 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (8)].lval), &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].addr).reg, &(yyvsp[(6) - (8)].addr), &(yyvsp[(8) - (8)].addr));
 	}
     break;
 
@@ -2594,7 +2584,7 @@ yyreduce:
     break;
 
   case 99:
-#line 521 "a.y"
+#line 517 "a.y"
     {
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
@@ -2603,28 +2593,28 @@ yyreduce:
   case 100:
 #line 525 "a.y"
     {
-		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 101:
 #line 529 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
   case 102:
 #line 533 "a.y"
     {
-		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 103:
 #line 537 "a.y"
     {
-		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
+		outgcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(4) - (6)].addr), &(yyvsp[(6) - (6)].addr));
 	}
     break;
 
@@ -2638,21 +2628,21 @@ yyreduce:
   case 105:
 #line 545 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &nullgen);
+		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
   case 106:
-#line 552 "a.y"
+#line 549 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
+		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &nullgen);
 	}
     break;
 
   case 107:
 #line 556 "a.y"
     {
-		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
+		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
 	}
     break;
 
@@ -2666,7 +2656,7 @@ yyreduce:
   case 109:
 #line 564 "a.y"
     {
-		outcode((yyvsp[(1) - (3)].lval), &nullgen, 0, &(yyvsp[(3) - (3)].addr));
+		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
 	}
     break;
 
@@ -2680,14 +2670,14 @@ yyreduce:
   case 111:
 #line 572 "a.y"
     {
-		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &nullgen);
+		outcode((yyvsp[(1) - (3)].lval), &nullgen, 0, &(yyvsp[(3) - (3)].addr));
 	}
     break;
 
   case 112:
-#line 579 "a.y"
+#line 576 "a.y"
     {
-		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
+		outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr), 0, &nullgen);
 	}
     break;
 
@@ -2699,7 +2689,14 @@ yyreduce:
     break;
 
   case 114:
-#line 590 "a.y"
+#line 587 "a.y"
+    {
+		outcode((yyvsp[(1) - (3)].lval), &(yyvsp[(2) - (3)].addr), 0, &nullgen);
+	}
+    break;
+
+  case 115:
+#line 594 "a.y"
     {
 		if((yyvsp[(2) - (4)].addr).type != TYPE_CONST || (yyvsp[(4) - (4)].addr).type != TYPE_CONST)
 			yyerror("arguments to PCDATA must be integer constants");
@@ -2707,8 +2704,8 @@ yyreduce:
 	}
     break;
 
-  case 115:
-#line 599 "a.y"
+  case 116:
+#line 603 "a.y"
     {
 		if((yyvsp[(2) - (4)].addr).type != TYPE_CONST)
 			yyerror("index for FUNCDATA must be integer constant");
@@ -2718,23 +2715,23 @@ yyreduce:
 	}
     break;
 
-  case 116:
-#line 610 "a.y"
+  case 117:
+#line 614 "a.y"
     {
 		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
 	}
     break;
 
-  case 117:
-#line 617 "a.y"
+  case 118:
+#line 621 "a.y"
     {
 		settext((yyvsp[(2) - (5)].addr).sym);
 		outcode((yyvsp[(1) - (5)].lval), &(yyvsp[(2) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr));
 	}
     break;
 
-  case 118:
-#line 622 "a.y"
+  case 119:
+#line 626 "a.y"
     {
 		settext((yyvsp[(2) - (7)].addr).sym);
 		outcode((yyvsp[(1) - (7)].lval), &(yyvsp[(2) - (7)].addr), 0, &(yyvsp[(7) - (7)].addr));
@@ -2745,16 +2742,16 @@ yyreduce:
 	}
     break;
 
-  case 119:
-#line 634 "a.y"
+  case 120:
+#line 638 "a.y"
     {
 		settext((yyvsp[(2) - (4)].addr).sym);
 		outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
 	}
     break;
 
-  case 120:
-#line 639 "a.y"
+  case 121:
+#line 643 "a.y"
     {
 		settext((yyvsp[(2) - (6)].addr).sym);
 		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
@@ -2765,8 +2762,8 @@ yyreduce:
 	}
     break;
 
-  case 121:
-#line 652 "a.y"
+  case 122:
+#line 656 "a.y"
     {
 		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
 		if(pass > 1) {
@@ -2776,8 +2773,8 @@ yyreduce:
 	}
     break;
 
-  case 122:
-#line 660 "a.y"
+  case 123:
+#line 664 "a.y"
     {
 		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
 		if(pass > 1) {
@@ -2787,8 +2784,8 @@ yyreduce:
 	}
     break;
 
-  case 123:
-#line 668 "a.y"
+  case 124:
+#line 672 "a.y"
     {
 		outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
 		if(pass > 1) {
@@ -2798,15 +2795,15 @@ yyreduce:
 	}
     break;
 
-  case 124:
-#line 679 "a.y"
+  case 125:
+#line 683 "a.y"
     {
 		outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
 	}
     break;
 
-  case 125:
-#line 685 "a.y"
+  case 126:
+#line 689 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_BRANCH;
@@ -2814,8 +2811,8 @@ yyreduce:
 	}
     break;
 
-  case 126:
-#line 691 "a.y"
+  case 127:
+#line 695 "a.y"
     {
 		(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
 		(yyval.addr) = nullgen;
@@ -2826,8 +2823,8 @@ yyreduce:
 	}
     break;
 
-  case 127:
-#line 702 "a.y"
+  case 128:
+#line 706 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2835,8 +2832,8 @@ yyreduce:
 	}
     break;
 
-  case 130:
-#line 714 "a.y"
+  case 131:
+#line 718 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2844,8 +2841,8 @@ yyreduce:
 	}
     break;
 
-  case 131:
-#line 722 "a.y"
+  case 132:
+#line 726 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2853,8 +2850,8 @@ yyreduce:
 	}
     break;
 
-  case 132:
-#line 730 "a.y"
+  case 133:
+#line 734 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2862,8 +2859,8 @@ yyreduce:
 	}
     break;
 
-  case 133:
-#line 738 "a.y"
+  case 134:
+#line 742 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2871,8 +2868,8 @@ yyreduce:
 	}
     break;
 
-  case 134:
-#line 746 "a.y"
+  case 135:
+#line 750 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2880,8 +2877,8 @@ yyreduce:
 	}
     break;
 
-  case 135:
-#line 752 "a.y"
+  case 136:
+#line 756 "a.y"
     {
 		if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= 1024)
 			yyerror("SPR/DCR out of range");
@@ -2891,8 +2888,8 @@ yyreduce:
 	}
     break;
 
-  case 137:
-#line 763 "a.y"
+  case 138:
+#line 767 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2900,8 +2897,8 @@ yyreduce:
 	}
     break;
 
-  case 138:
-#line 771 "a.y"
+  case 139:
+#line 775 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2909,8 +2906,8 @@ yyreduce:
 	}
     break;
 
-  case 139:
-#line 777 "a.y"
+  case 140:
+#line 781 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2918,8 +2915,8 @@ yyreduce:
 	}
     break;
 
-  case 140:
-#line 785 "a.y"
+  case 141:
+#line 789 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2927,8 +2924,8 @@ yyreduce:
 	}
     break;
 
-  case 141:
-#line 791 "a.y"
+  case 142:
+#line 795 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2936,8 +2933,8 @@ yyreduce:
 	}
     break;
 
-  case 142:
-#line 799 "a.y"
+  case 143:
+#line 803 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_REG;
@@ -2945,8 +2942,8 @@ yyreduce:
 	}
     break;
 
-  case 143:
-#line 807 "a.y"
+  case 144:
+#line 811 "a.y"
     {
 		int mb, me;
 		uint32 v;
@@ -2967,8 +2964,8 @@ yyreduce:
 	}
     break;
 
-  case 144:
-#line 828 "a.y"
+  case 145:
+#line 832 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_TEXTSIZE;
@@ -2977,8 +2974,8 @@ yyreduce:
 	}
     break;
 
-  case 145:
-#line 835 "a.y"
+  case 146:
+#line 839 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_TEXTSIZE;
@@ -2987,8 +2984,8 @@ yyreduce:
 	}
     break;
 
-  case 146:
-#line 842 "a.y"
+  case 147:
+#line 846 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_TEXTSIZE;
@@ -2997,8 +2994,8 @@ yyreduce:
 	}
     break;
 
-  case 147:
-#line 849 "a.y"
+  case 148:
+#line 853 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_TEXTSIZE;
@@ -3007,16 +3004,16 @@ yyreduce:
 	}
     break;
 
-  case 148:
-#line 858 "a.y"
+  case 149:
+#line 862 "a.y"
     {
 		(yyval.addr) = (yyvsp[(2) - (2)].addr);
 		(yyval.addr).type = TYPE_ADDR;
 	}
     break;
 
-  case 149:
-#line 863 "a.y"
+  case 150:
+#line 867 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_SCONST;
@@ -3024,8 +3021,8 @@ yyreduce:
 	}
     break;
 
-  case 150:
-#line 871 "a.y"
+  case 151:
+#line 875 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_FCONST;
@@ -3033,8 +3030,8 @@ yyreduce:
 	}
     break;
 
-  case 151:
-#line 877 "a.y"
+  case 152:
+#line 881 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_FCONST;
@@ -3042,8 +3039,8 @@ yyreduce:
 	}
     break;
 
-  case 152:
-#line 884 "a.y"
+  case 153:
+#line 888 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_CONST;
@@ -3051,8 +3048,8 @@ yyreduce:
 	}
     break;
 
-  case 154:
-#line 893 "a.y"
+  case 155:
+#line 897 "a.y"
     {
 		if((yyval.lval) < 0 || (yyval.lval) >= NREG)
 			print("register value out of range\n");
@@ -3060,8 +3057,8 @@ yyreduce:
 	}
     break;
 
-  case 155:
-#line 901 "a.y"
+  case 156:
+#line 905 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3070,8 +3067,8 @@ yyreduce:
 	}
     break;
 
-  case 156:
-#line 908 "a.y"
+  case 157:
+#line 912 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3081,8 +3078,8 @@ yyreduce:
 	}
     break;
 
-  case 158:
-#line 919 "a.y"
+  case 159:
+#line 923 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3091,8 +3088,8 @@ yyreduce:
 	}
     break;
 
-  case 159:
-#line 928 "a.y"
+  case 160:
+#line 932 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3102,8 +3099,8 @@ yyreduce:
 	}
     break;
 
-  case 160:
-#line 936 "a.y"
+  case 161:
+#line 940 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3113,8 +3110,8 @@ yyreduce:
 	}
     break;
 
-  case 161:
-#line 944 "a.y"
+  case 162:
+#line 948 "a.y"
     {
 		(yyval.addr) = nullgen;
 		(yyval.addr).type = TYPE_MEM;
@@ -3124,127 +3121,127 @@ yyreduce:
 	}
     break;
 
-  case 164:
-#line 956 "a.y"
-    {
-		(yyval.lval) = 0;
-	}
-    break;
-
   case 165:
 #line 960 "a.y"
     {
-		(yyval.lval) = (yyvsp[(2) - (2)].lval);
+		(yyval.lval) = 0;
 	}
     break;
 
   case 166:
 #line 964 "a.y"
     {
-		(yyval.lval) = -(yyvsp[(2) - (2)].lval);
+		(yyval.lval) = (yyvsp[(2) - (2)].lval);
 	}
     break;
 
-  case 171:
-#line 976 "a.y"
+  case 167:
+#line 968 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
+		(yyval.lval) = -(yyvsp[(2) - (2)].lval);
 	}
     break;
 
   case 172:
 #line 980 "a.y"
     {
-		(yyval.lval) = -(yyvsp[(2) - (2)].lval);
+		(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
 	}
     break;
 
   case 173:
 #line 984 "a.y"
     {
-		(yyval.lval) = (yyvsp[(2) - (2)].lval);
+		(yyval.lval) = -(yyvsp[(2) - (2)].lval);
 	}
     break;
 
   case 174:
 #line 988 "a.y"
     {
-		(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
+		(yyval.lval) = (yyvsp[(2) - (2)].lval);
 	}
     break;
 
   case 175:
 #line 992 "a.y"
     {
-		(yyval.lval) = (yyvsp[(2) - (3)].lval);
+		(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
 	}
     break;
 
-  case 177:
-#line 999 "a.y"
+  case 176:
+#line 996 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(2) - (3)].lval);
 	}
     break;
 
   case 178:
 #line 1003 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 179:
 #line 1007 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 180:
 #line 1011 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 181:
 #line 1015 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 182:
 #line 1019 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 183:
 #line 1023 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
+		(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
 	}
     break;
 
   case 184:
 #line 1027 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
 	}
     break;
 
   case 185:
 #line 1031 "a.y"
     {
-		(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
 	}
     break;
 
   case 186:
 #line 1035 "a.y"
+    {
+		(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
+	}
+    break;
+
+  case 187:
+#line 1039 "a.y"
     {
 		(yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
 	}
@@ -3252,7 +3249,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 3256 "y.tab.c"
+#line 3253 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/src/cmd/new9a/a.y b/src/cmd/new9a/a.y
index 6177577951b4c8f3bfc87ece742e454e6af3b292..b6e76d8e033617f71edb911d5b4ad26c91ffdf16 100644
--- a/src/cmd/new9a/a.y
+++ b/src/cmd/new9a/a.y
@@ -68,7 +68,11 @@ import (
 %type	<addr>	imm ximm fimm rel psr lcr cbit fpscr msr mask
 %%
 prog:
-|	prog line
+|	prog
+	{
+		stmtline = asm.Lineno
+	}
+	line
 
 line:
 	LNAME ':'
diff --git a/src/cmd/new9a/lex.go b/src/cmd/new9a/lex.go
index bb6df238dc74772add5ae206d077ae8e99527dae..d480e4540e784c278e8b09a30b8499d78f7f7b33 100644
--- a/src/cmd/new9a/lex.go
+++ b/src/cmd/new9a/lex.go
@@ -38,8 +38,9 @@ import (
 )
 
 var (
-	yyerror = asm.Yyerror
-	nullgen obj.Addr
+	yyerror  = asm.Yyerror
+	nullgen  obj.Addr
+	stmtline int32
 )
 
 func main() {
@@ -496,7 +497,7 @@ func outcode(a int, g1 *obj.Addr, reg int, g2 *obj.Addr) {
 
 	p = asm.Ctxt.NewProg()
 	p.As = int16(a)
-	p.Lineno = asm.Lineno
+	p.Lineno = stmtline
 	if nosched != 0 {
 		p.Mark |= ppc64.NOSCHED
 	}
@@ -529,7 +530,7 @@ func outgcode(a int, g1 *obj.Addr, reg int, g2, g3 *obj.Addr) {
 
 	p = asm.Ctxt.NewProg()
 	p.As = int16(a)
-	p.Lineno = asm.Lineno
+	p.Lineno = stmtline
 	if nosched != 0 {
 		p.Mark |= ppc64.NOSCHED
 	}
diff --git a/src/cmd/new9a/y.go b/src/cmd/new9a/y.go
index 3b2663d95d087b22daef90e05b1e0b181777ffd9..4444f70579f762664edacbe80084dd9d34a02ebd 100644
--- a/src/cmd/new9a/y.go
+++ b/src/cmd/new9a/y.go
@@ -165,313 +165,310 @@ const yyMaxDepth = 200
 var yyExca = []int{
 	-1, 1,
 	1, -1,
-	-2, 0,
+	-2, 2,
 }
 
-const yyNprod = 186
+const yyNprod = 187
 const yyPrivate = 57344
 
 var yyTokenNames []string
 var yyStates []string
 
-const yyLast = 922
+const yyLast = 900
 
 var yyAct = []int{
 
-	47, 393, 53, 89, 426, 272, 439, 57, 51, 101,
-	93, 84, 171, 55, 94, 96, 97, 99, 100, 56,
-	50, 112, 73, 434, 74, 2, 120, 122, 124, 65,
-	127, 129, 90, 132, 104, 52, 137, 126, 277, 93,
-	453, 452, 116, 117, 118, 119, 416, 415, 92, 95,
-	114, 98, 73, 133, 74, 115, 113, 73, 93, 74,
-	405, 404, 121, 383, 382, 204, 447, 379, 135, 136,
-	138, 139, 245, 244, 243, 241, 242, 236, 237, 238,
-	239, 240, 368, 131, 367, 366, 126, 140, 148, 365,
-	49, 145, 126, 93, 363, 163, 362, 315, 60, 60,
-	60, 86, 88, 203, 204, 406, 283, 102, 109, 276,
-	204, 73, 62, 74, 197, 63, 60, 161, 231, 125,
-	165, 128, 130, 205, 168, 170, 142, 142, 142, 54,
-	48, 85, 87, 169, 164, 224, 446, 445, 147, 149,
-	105, 444, 198, 443, 134, 246, 46, 93, 123, 108,
-	442, 247, 255, 256, 167, 225, 263, 264, 253, 268,
-	269, 270, 259, 207, 254, 398, 397, 175, 176, 177,
-	252, 266, 234, 396, 392, 261, 391, 390, 389, 287,
-	290, 291, 188, 222, 223, 388, 250, 226, 227, 260,
-	302, 304, 306, 308, 310, 311, 201, 387, 386, 385,
-	384, 378, 292, 293, 294, 295, 313, 377, 316, 376,
-	375, 374, 373, 372, 331, 333, 334, 335, 371, 337,
-	361, 341, 360, 232, 230, 301, 229, 228, 199, 115,
-	327, 328, 329, 330, 221, 220, 219, 317, 320, 60,
-	218, 249, 60, 217, 258, 216, 215, 214, 213, 332,
-	212, 211, 210, 279, 338, 340, 209, 280, 281, 282,
-	208, 206, 285, 286, 343, 202, 196, 60, 347, 289,
-	195, 248, 194, 60, 257, 297, 299, 193, 192, 191,
-	251, 190, 79, 451, 262, 314, 189, 265, 267, 369,
-	187, 201, 323, 184, 183, 58, 182, 370, 181, 288,
-	180, 179, 178, 160, 159, 296, 60, 158, 157, 156,
-	339, 76, 342, 155, 154, 153, 152, 151, 60, 346,
-	150, 348, 349, 318, 321, 45, 44, 380, 41, 42,
-	381, 43, 350, 351, 352, 353, 354, 186, 336, 357,
-	358, 359, 298, 185, 166, 75, 62, 77, 64, 63,
-	344, 66, 103, 402, 440, 80, 111, 162, 79, 78,
-	66, 69, 68, 62, 81, 111, 63, 73, 62, 74,
-	403, 63, 407, 408, 409, 410, 411, 412, 413, 66,
-	401, 73, 460, 74, 111, 79, 78, 76, 414, 79,
-	78, 395, 430, 66, 73, 429, 74, 185, 111, 448,
-	433, 437, 438, 79, 78, 420, 421, 274, 273, 275,
-	324, 233, 449, 73, 76, 74, 432, 417, 76, 394,
-	356, 75, 162, 77, 284, 425, 428, 441, 61, 173,
-	174, 80, 76, 435, 436, 355, 450, 66, 73, 7,
-	74, 146, 111, 1, 455, 456, 298, 458, 459, 70,
-	77, 399, 400, 72, 77, 103, 71, 271, 80, 103,
-	0, 93, 80, 454, 0, 0, 110, 102, 77, 0,
-	0, 201, 107, 106, 0, 0, 80, 0, 427, 427,
-	274, 273, 275, 431, 59, 300, 303, 305, 307, 309,
-	0, 312, 0, 274, 273, 275, 238, 239, 240, 73,
-	271, 74, 325, 418, 326, 245, 244, 243, 241, 242,
-	236, 237, 238, 239, 240, 0, 422, 423, 424, 0,
-	0, 0, 141, 143, 144, 0, 0, 0, 167, 8,
-	172, 0, 173, 174, 457, 236, 237, 238, 239, 240,
-	175, 9, 10, 16, 14, 15, 13, 25, 18, 19,
-	11, 21, 24, 22, 23, 20, 0, 32, 36, 0,
-	33, 37, 39, 38, 40, 79, 78, 0, 0, 79,
-	78, 0, 0, 364, 241, 242, 236, 237, 238, 239,
-	240, 278, 0, 0, 34, 35, 5, 28, 29, 31,
-	30, 26, 27, 0, 76, 12, 17, 0, 76, 3,
-	0, 4, 0, 66, 6, 73, 62, 74, 67, 63,
-	64, 82, 83, 69, 68, 0, 81, 79, 78, 244,
-	243, 241, 242, 236, 237, 238, 239, 240, 79, 78,
-	77, 0, 75, 0, 77, 103, 0, 345, 80, 61,
-	0, 65, 80, 0, 79, 78, 76, 0, 0, 0,
-	0, 66, 0, 73, 0, 74, 67, 76, 0, 82,
-	83, 69, 68, 0, 81, 62, 79, 78, 63, 0,
-	79, 78, 0, 76, 0, 0, 79, 78, 0, 0,
-	75, 62, 77, 0, 63, 0, 0, 61, 0, 93,
-	80, 75, 0, 77, 0, 76, 79, 78, 61, 76,
-	91, 80, 73, 0, 74, 76, 0, 75, 0, 77,
-	0, 64, 0, 0, 61, 79, 78, 80, 82, 83,
-	0, 79, 78, 0, 0, 76, 0, 79, 78, 75,
-	0, 77, 0, 75, 0, 77, 103, 0, 0, 80,
-	61, 77, 93, 80, 76, 0, 103, 79, 78, 80,
-	76, 73, 0, 74, 0, 0, 76, 0, 166, 75,
-	0, 77, 0, 0, 79, 78, 103, 0, 0, 80,
-	79, 78, 0, 0, 79, 78, 76, 0, 0, 0,
-	77, 0, 0, 0, 110, 103, 77, 0, 80, 0,
-	75, 419, 77, 76, 80, 0, 0, 103, 0, 76,
-	80, 0, 0, 76, 0, 0, 0, 0, 0, 0,
-	110, 0, 77, 0, 0, 0, 0, 322, 0, 0,
-	80, 0, 0, 0, 0, 0, 0, 110, 0, 77,
-	0, 0, 0, 110, 319, 77, 0, 80, 0, 77,
-	200, 0, 0, 80, 103, 0, 0, 80, 245, 244,
-	243, 241, 242, 236, 237, 238, 239, 240, 243, 241,
-	242, 236, 237, 238, 239, 240, 0, 0, 0, 0,
+	48, 394, 54, 90, 427, 273, 440, 58, 52, 102,
+	80, 79, 85, 172, 94, 95, 97, 98, 100, 101,
+	51, 57, 113, 3, 80, 79, 56, 121, 123, 125,
+	435, 128, 130, 91, 133, 53, 278, 138, 74, 77,
+	75, 66, 164, 117, 118, 119, 120, 454, 453, 93,
+	96, 65, 99, 77, 134, 417, 127, 114, 94, 74,
+	416, 75, 74, 122, 75, 406, 83, 84, 105, 136,
+	137, 139, 140, 76, 94, 78, 80, 79, 405, 384,
+	62, 127, 94, 81, 383, 205, 148, 150, 149, 78,
+	50, 380, 116, 369, 104, 94, 127, 81, 368, 61,
+	61, 61, 87, 89, 367, 77, 366, 277, 103, 110,
+	364, 363, 316, 63, 407, 198, 64, 61, 284, 55,
+	126, 205, 129, 131, 162, 206, 232, 143, 143, 143,
+	169, 74, 63, 75, 171, 64, 225, 204, 205, 76,
+	109, 78, 170, 165, 448, 47, 62, 447, 92, 81,
+	446, 445, 248, 256, 257, 168, 226, 264, 265, 254,
+	269, 270, 271, 260, 135, 444, 443, 94, 176, 177,
+	178, 235, 399, 253, 398, 397, 262, 199, 255, 393,
+	288, 291, 292, 189, 392, 267, 391, 251, 390, 389,
+	261, 303, 305, 307, 309, 311, 312, 202, 388, 387,
+	166, 386, 385, 293, 294, 295, 296, 314, 379, 317,
+	115, 49, 86, 88, 378, 332, 334, 335, 336, 377,
+	338, 106, 342, 376, 375, 374, 302, 373, 372, 124,
+	362, 328, 329, 330, 331, 361, 233, 231, 230, 229,
+	61, 116, 250, 61, 132, 259, 222, 221, 141, 220,
+	333, 219, 146, 218, 280, 339, 341, 217, 281, 282,
+	283, 216, 215, 286, 287, 344, 214, 213, 61, 348,
+	290, 252, 318, 321, 61, 263, 298, 300, 266, 268,
+	351, 352, 353, 354, 355, 212, 315, 358, 359, 360,
+	370, 211, 202, 324, 59, 210, 80, 79, 209, 371,
+	207, 203, 197, 196, 195, 194, 193, 61, 192, 200,
+	191, 340, 190, 343, 188, 185, 184, 80, 79, 61,
+	347, 183, 349, 350, 208, 77, 182, 181, 381, 180,
+	67, 382, 74, 63, 75, 68, 64, 65, 83, 84,
+	70, 69, 179, 82, 223, 224, 77, 161, 227, 228,
+	160, 159, 249, 158, 157, 258, 156, 163, 155, 76,
+	154, 78, 153, 152, 151, 46, 62, 45, 66, 81,
+	44, 404, 187, 408, 409, 410, 411, 412, 413, 414,
+	289, 299, 78, 402, 42, 43, 297, 104, 63, 415,
+	81, 64, 67, 431, 65, 63, 430, 112, 64, 400,
+	401, 403, 438, 439, 319, 322, 421, 422, 246, 245,
+	244, 242, 243, 237, 238, 239, 240, 241, 67, 337,
+	441, 461, 163, 112, 449, 434, 426, 429, 442, 234,
+	450, 345, 186, 433, 436, 437, 357, 451, 74, 63,
+	75, 74, 64, 75, 285, 456, 457, 356, 459, 460,
+	67, 8, 418, 60, 67, 112, 74, 272, 75, 112,
+	70, 69, 396, 82, 455, 275, 274, 276, 103, 174,
+	175, 74, 202, 75, 275, 274, 276, 80, 452, 428,
+	428, 247, 147, 2, 432, 301, 304, 306, 308, 310,
+	395, 313, 142, 144, 145, 275, 274, 276, 325, 9,
+	272, 74, 326, 75, 327, 1, 77, 423, 424, 425,
+	71, 10, 11, 17, 15, 16, 14, 26, 19, 20,
+	12, 22, 25, 23, 24, 21, 73, 33, 37, 168,
+	34, 38, 40, 39, 41, 458, 72, 0, 186, 167,
+	76, 176, 78, 80, 79, 0, 173, 104, 174, 175,
+	81, 239, 240, 241, 35, 36, 6, 29, 30, 32,
+	31, 27, 28, 80, 79, 13, 18, 0, 0, 4,
+	0, 5, 77, 365, 7, 0, 0, 67, 0, 74,
+	0, 75, 68, 0, 419, 83, 84, 70, 69, 0,
+	82, 0, 77, 0, 80, 79, 0, 67, 0, 0,
+	80, 79, 112, 0, 0, 0, 76, 0, 78, 80,
+	79, 0, 0, 62, 0, 94, 81, 237, 238, 239,
+	240, 241, 0, 77, 0, 0, 111, 0, 78, 77,
+	0, 63, 108, 107, 64, 0, 81, 0, 77, 80,
+	79, 0, 0, 0, 0, 74, 0, 75, 245, 244,
+	242, 243, 237, 238, 239, 240, 241, 76, 0, 78,
+	0, 0, 167, 76, 62, 78, 0, 81, 77, 0,
+	104, 0, 76, 81, 78, 74, 0, 75, 0, 62,
+	0, 0, 81, 246, 245, 244, 242, 243, 237, 238,
+	239, 240, 241, 80, 79, 80, 79, 80, 79, 0,
+	0, 0, 76, 0, 78, 0, 80, 79, 0, 104,
+	80, 79, 81, 0, 0, 0, 0, 0, 0, 80,
+	79, 0, 77, 0, 77, 0, 77, 0, 0, 74,
+	0, 75, 80, 79, 0, 77, 0, 0, 0, 77,
+	0, 0, 0, 80, 79, 0, 0, 0, 77, 0,
+	0, 0, 80, 79, 0, 0, 299, 0, 78, 279,
+	78, 77, 78, 104, 0, 104, 81, 104, 81, 94,
+	81, 78, 77, 111, 0, 78, 104, 0, 346, 81,
+	420, 77, 76, 81, 78, 0, 0, 0, 0, 104,
+	0, 0, 81, 0, 0, 111, 0, 78, 0, 0,
+	0, 0, 323, 0, 0, 81, 111, 0, 78, 0,
+	0, 0, 0, 320, 0, 111, 81, 78, 0, 0,
+	0, 0, 201, 0, 0, 81, 246, 245, 244, 242,
+	243, 237, 238, 239, 240, 241, 244, 242, 243, 237,
+	238, 239, 240, 241, 242, 243, 237, 238, 239, 240,
+	241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 235,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
 }
 var yyPact = []int{
 
-	-1000, 527, -1000, 253, 255, 249, -1000, 248, 69, 560,
-	349, 619, -71, 12, 393, 12, 393, 393, 765, 394,
-	-23, 300, 300, 300, 300, 393, 12, 657, 13, 393,
-	7, 13, 66, -52, -71, -71, 151, 718, 718, 718,
-	151, -1000, 765, 765, -1000, -1000, -1000, 242, 239, 238,
-	237, 236, 235, 231, 230, 229, 226, 225, -1000, -1000,
-	38, 706, -1000, 55, -1000, 687, -1000, 45, -1000, 54,
-	-1000, -1000, -1000, -1000, 46, 523, -1000, -1000, 765, 765,
-	765, -1000, -1000, -1000, 224, 223, 222, 220, 218, 216,
-	215, 327, 212, 765, 208, 203, 201, 200, 199, 194,
-	192, 188, -1000, 765, -1000, -1000, 667, 761, 187, 25,
-	523, 45, 183, 182, -1000, -1000, 178, 174, 173, 172,
-	170, 169, 168, 167, 165, 162, 393, 158, 157, 156,
-	-1000, -1000, 151, 151, 322, -1000, 151, 151, 149, 148,
-	-1000, 146, 39, 145, 399, -1000, 527, 844, -1000, 68,
-	608, 393, 393, 661, 317, 393, 393, 308, 336, 393,
-	393, 454, 29, 501, 765, -1000, -1000, 38, 765, 765,
-	765, 27, 416, 765, 765, -1000, -1000, -1000, 349, 393,
-	393, 300, 300, 300, 635, -1000, 272, 765, -1000, 12,
-	393, 393, 393, 393, 393, 393, 765, 17, -1000, -1000,
-	667, 31, 755, 738, 368, 27, 393, -1000, 393, 300,
-	300, 300, 300, 12, 393, 393, 393, 718, 12, -42,
-	393, 13, -1000, -1000, -1000, -1000, -1000, -1000, -71, 718,
-	556, 441, 380, 765, -1000, -1000, 765, 765, 765, 765,
-	765, 428, 412, 765, 765, 765, -1000, -1000, -1000, -1000,
-	144, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	142, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000, 16, 14, -1000, -1000, -1000, -1000, 393, -1000, 9,
-	5, 4, 2, 441, 420, -1000, -1000, -1000, -1000, -1000,
+	-1000, -1000, 497, -1000, 309, 294, 290, -1000, 288, 68,
+	287, 600, 67, -67, -7, 396, -7, 396, 396, 308,
+	554, 14, 342, 342, 342, 342, 396, -7, 630, 2,
+	396, 17, 2, 86, -40, -67, -67, 163, 710, 710,
+	710, 163, -1000, 308, 308, -1000, -1000, -1000, 286, 285,
+	284, 282, 280, 278, 276, 275, 273, 272, 269, -1000,
+	-1000, 45, 684, -1000, 64, -1000, 591, -1000, 51, -1000,
+	63, -1000, -1000, -1000, -1000, 55, 539, -1000, -1000, 308,
+	308, 308, -1000, -1000, -1000, 264, 251, 249, 248, 243,
+	238, 237, 362, 236, 308, 234, 232, 230, 228, 227,
+	226, 225, 224, -1000, 308, -1000, -1000, 15, 743, 223,
+	59, 539, 51, 222, 220, -1000, -1000, 217, 213, 207,
+	189, 188, 184, 183, 179, 175, 173, 396, 171, 169,
+	168, -1000, -1000, 163, 163, 393, -1000, 163, 163, 161,
+	160, -1000, 159, 47, 158, 417, -1000, 497, 822, -1000,
+	404, 534, 396, 396, 1, 349, 396, 396, 407, 411,
+	396, 396, 426, 27, 679, 308, -1000, -1000, 45, 308,
+	308, 308, 39, 436, 308, 308, -1000, -1000, -1000, 600,
+	396, 396, 342, 342, 342, 585, -1000, 311, 308, -1000,
+	-7, 396, 396, 396, 396, 396, 396, 308, 32, -1000,
+	-1000, 15, 42, 734, 723, 456, 39, 396, -1000, 396,
+	342, 342, 342, 342, -7, 396, 396, 396, 710, -7,
+	-23, 396, 2, -1000, -1000, -1000, -1000, -1000, -1000, -67,
+	710, 697, 435, 688, 308, -1000, -1000, 308, 308, 308,
+	308, 308, 440, 428, 308, 308, 308, -1000, -1000, -1000,
+	-1000, 157, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, 152, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, -1000, 31, 30, -1000, -1000, -1000, -1000, 396, -1000,
+	26, 24, 18, 13, 435, 460, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	140, 135, -1000, 134, -1000, 133, -1000, 132, -1000, 131,
-	-1000, -1000, 129, -1000, 123, -1000, -13, -1000, -1000, 667,
-	-1000, -1000, 667, -14, -17, -1000, -1000, -1000, 122, 121,
-	120, 119, 107, 100, 99, -1000, -1000, -1000, 98, -1000,
-	96, -1000, -1000, -1000, -1000, 381, 95, -1000, 88, 87,
-	485, 485, -1000, -1000, -1000, 765, 765, 567, 852, 614,
-	305, 298, -1000, -1000, -19, -1000, -1000, -1000, -1000, -20,
-	26, 393, 393, 393, 393, 393, 393, 393, 765, -1000,
-	-33, -34, 712, -1000, 300, 300, 350, 350, 350, 380,
-	380, 393, 13, -1000, 406, 362, -58, -71, -75, 526,
-	526, -1000, -1000, -1000, -1000, -1000, 314, -1000, -1000, -1000,
-	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 667,
-	-1000, 72, -1000, -1000, -1000, 65, 63, 59, 58, -12,
-	-1000, -1000, 361, 402, 381, -1000, -1000, -1000, -1000, 273,
-	-39, -40, 300, 393, 393, 765, 393, 393, -1000, 344,
-	-1000, 376, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000,
+	-1000, 150, 149, -1000, 147, -1000, 146, -1000, 145, -1000,
+	141, -1000, -1000, 136, -1000, 130, -1000, 11, -1000, -1000,
+	15, -1000, -1000, 15, 6, -1, -1000, -1000, -1000, 124,
+	123, 121, 120, 111, 110, 108, -1000, -1000, -1000, 106,
+	-1000, 101, -1000, -1000, -1000, -1000, 452, 97, -1000, 96,
+	94, 540, 540, -1000, -1000, -1000, 308, 308, 837, 830,
+	643, 353, 344, -1000, -1000, -2, -1000, -1000, -1000, -1000,
+	-15, 35, 396, 396, 396, 396, 396, 396, 396, 308,
+	-1000, -20, -25, 701, -1000, 342, 342, 375, 375, 375,
+	688, 688, 396, 2, -1000, 423, 387, -51, -67, -75,
+	608, 608, -1000, -1000, -1000, -1000, -1000, 380, -1000, -1000,
+	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	15, -1000, 88, -1000, -1000, -1000, 87, 73, 72, 69,
+	66, -1000, -1000, 386, 420, 452, -1000, -1000, -1000, -1000,
+	468, -32, -33, 342, 396, 396, 308, 396, 396, -1000,
+	383, -1000, 686, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, -1000,
 }
 var yyPgo = []int{
 
-	0, 88, 95, 5, 12, 295, 120, 0, 90, 484,
-	129, 20, 7, 456, 453, 1, 35, 2, 3, 34,
-	13, 19, 9, 8, 449, 4, 443, 25, 441, 439,
-	50,
+	0, 88, 42, 5, 13, 294, 200, 0, 90, 453,
+	119, 20, 7, 536, 526, 1, 35, 2, 3, 68,
+	26, 21, 9, 8, 510, 4, 505, 483, 23, 482,
+	451, 210,
 }
 var yyR1 = []int{
 
-	0, 26, 26, 28, 27, 27, 27, 27, 27, 27,
-	27, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-	29, 29, 29, 29, 19, 19, 7, 12, 12, 13,
-	21, 14, 24, 20, 20, 20, 23, 11, 11, 10,
-	10, 22, 25, 15, 15, 15, 15, 17, 17, 18,
-	18, 16, 5, 5, 8, 8, 6, 6, 9, 9,
-	9, 30, 30, 4, 4, 4, 3, 3, 3, 1,
-	1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
-	2, 2, 2, 2, 2, 2,
+	0, 26, 27, 26, 29, 28, 28, 28, 28, 28,
+	28, 28, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+	30, 30, 30, 30, 30, 19, 19, 7, 12, 12,
+	13, 21, 14, 24, 20, 20, 20, 23, 11, 11,
+	10, 10, 22, 25, 15, 15, 15, 15, 17, 17,
+	18, 18, 16, 5, 5, 8, 8, 6, 6, 9,
+	9, 9, 31, 31, 4, 4, 4, 3, 3, 3,
+	1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
+	2, 2, 2, 2, 2, 2, 2,
 }
 var yyR2 = []int{
 
-	0, 0, 2, 0, 4, 4, 4, 2, 1, 2,
-	2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+	0, 0, 0, 3, 0, 4, 4, 4, 2, 1,
+	2, 2, 4, 4, 4, 4, 4, 4, 4, 4,
 	4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-	4, 6, 4, 4, 6, 4, 4, 6, 6, 6,
-	4, 4, 6, 4, 6, 4, 6, 4, 4, 2,
-	6, 4, 4, 4, 6, 4, 4, 4, 4, 4,
-	4, 4, 4, 2, 2, 4, 3, 3, 5, 4,
-	4, 6, 4, 4, 6, 6, 6, 8, 4, 4,
-	3, 2, 4, 4, 6, 8, 4, 6, 4, 4,
-	6, 6, 8, 8, 8, 8, 4, 4, 4, 6,
-	4, 6, 4, 4, 2, 2, 3, 3, 3, 3,
-	2, 3, 3, 4, 4, 2, 5, 7, 4, 6,
-	6, 6, 6, 2, 4, 2, 1, 1, 1, 1,
-	1, 1, 1, 1, 4, 1, 1, 1, 4, 1,
-	4, 1, 3, 1, 2, 3, 4, 2, 2, 2,
-	3, 2, 1, 4, 3, 5, 1, 4, 4, 5,
-	7, 0, 1, 0, 2, 2, 1, 1, 1, 1,
-	1, 2, 2, 2, 3, 1, 3, 3, 3, 3,
-	3, 4, 4, 3, 3, 3,
+	4, 4, 6, 4, 4, 6, 4, 4, 6, 6,
+	6, 4, 4, 6, 4, 6, 4, 6, 4, 4,
+	2, 6, 4, 4, 4, 6, 4, 4, 4, 4,
+	4, 4, 4, 4, 2, 2, 4, 3, 3, 5,
+	4, 4, 6, 4, 4, 6, 6, 6, 8, 4,
+	4, 3, 2, 4, 4, 6, 8, 4, 6, 4,
+	4, 6, 6, 8, 8, 8, 8, 4, 4, 4,
+	6, 4, 6, 4, 4, 2, 2, 3, 3, 3,
+	3, 2, 3, 3, 4, 4, 2, 5, 7, 4,
+	6, 6, 6, 6, 2, 4, 2, 1, 1, 1,
+	1, 1, 1, 1, 1, 4, 1, 1, 1, 4,
+	1, 4, 1, 3, 1, 2, 3, 4, 2, 2,
+	2, 3, 2, 1, 4, 3, 5, 1, 4, 4,
+	5, 7, 0, 1, 0, 2, 2, 1, 1, 1,
+	1, 1, 2, 2, 2, 3, 1, 3, 3, 3,
+	3, 3, 4, 4, 3, 3, 3,
 }
 var yyChk = []int{
 
-	-1000, -26, -27, 72, 74, 59, 77, -29, 2, 14,
-	15, 23, 68, 19, 17, 18, 16, 69, 21, 22,
-	28, 24, 26, 27, 25, 20, 64, 65, 60, 61,
-	63, 62, 30, 33, 57, 58, 31, 34, 36, 35,
-	37, 75, 76, 76, 77, 77, 77, -7, -6, -8,
-	-11, -23, -16, -17, -10, -20, -21, -12, -5, -9,
-	-1, 79, 46, 49, 50, 81, 43, 48, 54, 53,
-	-24, -13, -14, 45, 47, 72, 38, 74, 10, 9,
-	82, 56, 51, 52, -7, -6, -8, -6, -8, -18,
-	-11, 81, -16, 81, -7, -16, -7, -7, -16, -7,
-	-7, -22, -1, 79, -19, -6, 79, 78, -10, -1,
-	72, 48, -7, -16, -30, 78, -11, -11, -11, -11,
-	-7, -16, -7, -6, -7, -8, 79, -7, -8, -7,
-	-8, -30, -7, -11, 78, -16, -16, -17, -16, -16,
-	-30, -9, -1, -9, -9, -30, -28, -2, -1, -2,
-	78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-	78, 79, -5, -2, 79, -6, 71, -1, 79, 79,
-	79, -4, 7, 9, 10, -1, -1, -1, 78, 78,
-	78, 78, 78, 78, 78, 70, 10, 78, -1, 78,
-	78, 78, 78, 78, 78, 78, 78, -12, -19, -6,
-	79, -1, 78, 78, 79, -4, 78, -30, 78, 78,
+	-1000, -26, -27, -28, 72, 74, 59, 77, -30, 2,
+	14, 15, 23, 68, 19, 17, 18, 16, 69, 21,
+	22, 28, 24, 26, 27, 25, 20, 64, 65, 60,
+	61, 63, 62, 30, 33, 57, 58, 31, 34, 36,
+	35, 37, 75, 76, 76, 77, 77, 77, -7, -6,
+	-8, -11, -23, -16, -17, -10, -20, -21, -12, -5,
+	-9, -1, 79, 46, 49, 50, 81, 43, 48, 54,
+	53, -24, -13, -14, 45, 47, 72, 38, 74, 10,
+	9, 82, 56, 51, 52, -7, -6, -8, -6, -8,
+	-18, -11, 81, -16, 81, -7, -16, -7, -7, -16,
+	-7, -7, -22, -1, 79, -19, -6, 79, 78, -10,
+	-1, 72, 48, -7, -16, -31, 78, -11, -11, -11,
+	-11, -7, -16, -7, -6, -7, -8, 79, -7, -8,
+	-7, -8, -31, -7, -11, 78, -16, -16, -17, -16,
+	-16, -31, -9, -1, -9, -9, -31, -29, -2, -1,
+	-2, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+	78, 78, 79, -5, -2, 79, -6, 71, -1, 79,
+	79, 79, -4, 7, 9, 10, -1, -1, -1, 78,
+	78, 78, 78, 78, 78, 78, 70, 10, 78, -1,
+	78, 78, 78, 78, 78, 78, 78, 78, -12, -19,
+	-6, 79, -1, 78, 78, 79, -4, 78, -31, 78,
 	78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-	78, 78, -30, -30, -7, -11, -30, -30, 78, 78,
-	78, 79, 78, 12, -27, 77, 9, 10, 11, 12,
-	13, 7, 8, 6, 5, 4, 77, -7, -6, -8,
-	-16, -10, -21, -12, -20, -7, -7, -6, -8, -23,
-	-16, -11, -10, -7, -7, -10, -20, -10, -7, -7,
-	-7, -5, -3, 40, 39, 41, 80, 9, 80, -1,
-	-1, -1, -1, 79, 8, -1, -1, -7, -6, -8,
-	-7, -7, -11, -11, -11, -11, -6, -8, 70, -1,
-	-5, -16, -7, -5, -7, -5, -7, -5, -7, -5,
-	-7, -7, -5, -22, -1, 80, -12, -19, -6, 79,
-	-19, -6, 79, -1, 42, -5, -5, -11, -11, -11,
-	-11, -7, -16, -7, -7, -7, -6, -7, -16, -8,
-	-16, -7, -8, -16, -6, 81, -1, -16, -1, -1,
-	-2, -2, -2, -2, -2, 7, 8, -2, -2, -2,
-	78, 78, 80, 80, -5, 80, 80, 80, 80, -3,
-	-4, 78, 78, 78, 78, 78, 78, 78, 78, 80,
-	-12, -12, 78, 80, 78, 78, 78, 78, 78, 78,
-	78, 78, 78, -15, 38, 10, 78, 78, 78, -2,
-	-2, -21, 48, -23, 80, 80, 79, -7, -7, -7,
-	-7, -7, -7, -7, -22, 80, 80, -19, -6, 79,
-	-11, -11, -10, -10, -10, -16, -25, -1, -16, -25,
-	-7, -8, 10, 38, 81, -16, -16, -17, -18, 81,
-	40, -12, 78, 78, 78, 78, 78, 78, 38, 10,
-	-15, 10, 80, 80, -11, -7, -7, -1, -7, -7,
-	38,
+	78, 78, 78, -31, -31, -7, -11, -31, -31, 78,
+	78, 78, 79, 78, 12, -28, 77, 9, 10, 11,
+	12, 13, 7, 8, 6, 5, 4, 77, -7, -6,
+	-8, -16, -10, -21, -12, -20, -7, -7, -6, -8,
+	-23, -16, -11, -10, -7, -7, -10, -20, -10, -7,
+	-7, -7, -5, -3, 40, 39, 41, 80, 9, 80,
+	-1, -1, -1, -1, 79, 8, -1, -1, -7, -6,
+	-8, -7, -7, -11, -11, -11, -11, -6, -8, 70,
+	-1, -5, -16, -7, -5, -7, -5, -7, -5, -7,
+	-5, -7, -7, -5, -22, -1, 80, -12, -19, -6,
+	79, -19, -6, 79, -1, 42, -5, -5, -11, -11,
+	-11, -11, -7, -16, -7, -7, -7, -6, -7, -16,
+	-8, -16, -7, -8, -16, -6, 81, -1, -16, -1,
+	-1, -2, -2, -2, -2, -2, 7, 8, -2, -2,
+	-2, 78, 78, 80, 80, -5, 80, 80, 80, 80,
+	-3, -4, 78, 78, 78, 78, 78, 78, 78, 78,
+	80, -12, -12, 78, 80, 78, 78, 78, 78, 78,
+	78, 78, 78, 78, -15, 38, 10, 78, 78, 78,
+	-2, -2, -21, 48, -23, 80, 80, 79, -7, -7,
+	-7, -7, -7, -7, -7, -22, 80, 80, -19, -6,
+	79, -11, -11, -10, -10, -10, -16, -25, -1, -16,
+	-25, -7, -8, 10, 38, 81, -16, -16, -17, -18,
+	81, 40, -12, 78, 78, 78, 78, 78, 78, 38,
+	10, -15, 10, 80, 80, -11, -7, -7, -1, -7,
+	-7, 38,
 }
 var yyDef = []int{
 
-	1, -2, 2, 0, 0, 0, 8, 0, 0, 0,
+	1, -2, 0, 3, 0, 0, 0, 9, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 161, 0, 0, 0, 161, 0, 0, 0,
-	161, 3, 0, 0, 7, 9, 10, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 126, 156,
-	0, 0, 137, 0, 136, 0, 139, 130, 133, 0,
-	135, 127, 128, 152, 0, 163, 169, 170, 0, 0,
-	0, 132, 129, 131, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
-	0, 0, 141, 0, 63, 64, 0, 0, 0, 0,
-	163, 0, 161, 0, 81, 162, 0, 0, 0, 0,
+	0, 162, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 162, 0, 0, 0, 162, 0, 0,
+	0, 162, 4, 0, 0, 8, 10, 11, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
+	157, 0, 0, 138, 0, 137, 0, 140, 131, 134,
+	0, 136, 128, 129, 153, 0, 164, 170, 171, 0,
+	0, 0, 133, 130, 132, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	104, 105, 161, 161, 162, 110, 161, 161, 0, 0,
-	115, 0, 0, 0, 0, 123, 0, 0, 175, 0,
+	50, 0, 0, 142, 0, 64, 65, 0, 0, 0,
+	0, 164, 0, 162, 0, 82, 163, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 147, 148, 151, 0, 0,
-	0, 0, 0, 0, 0, 171, 172, 173, 0, 0,
-	0, 0, 0, 0, 0, 149, 0, 0, 151, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
-	0, 0, 0, 0, 0, 125, 162, 80, 0, 0,
+	0, 105, 106, 162, 162, 163, 111, 162, 162, 0,
+	0, 116, 0, 0, 0, 0, 124, 0, 0, 176,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 106, 107, 108, 109, 111, 112, 0, 0,
-	0, 0, 0, 0, 4, 5, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 6, 11, 23, 24,
-	0, 35, 36, 60, 62, 12, 13, 27, 28, 30,
-	0, 29, 32, 51, 52, 55, 61, 56, 58, 57,
-	59, 0, 0, 166, 167, 168, 154, 0, 174, 0,
-	0, 0, 0, 0, 163, 164, 165, 14, 25, 26,
-	15, 16, 17, 18, 19, 20, 21, 22, 150, 33,
-	126, 0, 40, 126, 41, 126, 43, 126, 45, 126,
-	47, 48, 0, 53, 141, 65, 0, 69, 70, 0,
-	72, 73, 0, 0, 0, 78, 79, 82, 83, 0,
-	86, 88, 89, 0, 0, 96, 97, 98, 0, 100,
-	0, 102, 103, 113, 114, 0, 0, 118, 0, 0,
-	176, 177, 178, 179, 180, 0, 0, 183, 184, 185,
-	0, 0, 157, 158, 0, 138, 140, 134, 153, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
-	0, 0, 0, 124, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 116, 143, 0, 0, 0, 0, 181,
-	182, 34, 130, 31, 155, 159, 0, 37, 39, 38,
-	42, 44, 46, 50, 54, 71, 74, 75, 76, 0,
-	84, 0, 87, 90, 91, 0, 0, 0, 0, 0,
-	99, 101, 0, 144, 0, 119, 120, 121, 122, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 145, 0,
-	117, 0, 160, 77, 85, 92, 93, 142, 94, 95,
-	146,
+	0, 0, 0, 0, 0, 0, 148, 149, 152, 0,
+	0, 0, 0, 0, 0, 0, 172, 173, 174, 0,
+	0, 0, 0, 0, 0, 0, 150, 0, 0, 152,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
+	68, 0, 0, 0, 0, 0, 126, 163, 81, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 107, 108, 109, 110, 112, 113, 0,
+	0, 0, 0, 0, 0, 5, 6, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 7, 12, 24,
+	25, 0, 36, 37, 61, 63, 13, 14, 28, 29,
+	31, 0, 30, 33, 52, 53, 56, 62, 57, 59,
+	58, 60, 0, 0, 167, 168, 169, 155, 0, 175,
+	0, 0, 0, 0, 0, 164, 165, 166, 15, 26,
+	27, 16, 17, 18, 19, 20, 21, 22, 23, 151,
+	34, 127, 0, 41, 127, 42, 127, 44, 127, 46,
+	127, 48, 49, 0, 54, 142, 66, 0, 70, 71,
+	0, 73, 74, 0, 0, 0, 79, 80, 83, 84,
+	0, 87, 89, 90, 0, 0, 97, 98, 99, 0,
+	101, 0, 103, 104, 114, 115, 0, 0, 119, 0,
+	0, 177, 178, 179, 180, 181, 0, 0, 184, 185,
+	186, 0, 0, 158, 159, 0, 139, 141, 135, 154,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	69, 0, 0, 0, 125, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 117, 144, 0, 0, 0, 0,
+	182, 183, 35, 131, 32, 156, 160, 0, 38, 40,
+	39, 43, 45, 47, 51, 55, 72, 75, 76, 77,
+	0, 85, 0, 88, 91, 92, 0, 0, 0, 0,
+	0, 100, 102, 0, 145, 0, 120, 121, 122, 123,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 146,
+	0, 118, 0, 161, 78, 86, 93, 94, 143, 95,
+	96, 147,
 }
 var yyTok1 = []int{
 
@@ -514,6 +511,26 @@ type yyLexer interface {
 	Error(s string)
 }
 
+type yyParser interface {
+	Parse(yyLexer) int
+	Lookahead() int
+}
+
+type yyParserImpl struct {
+	lookahead func() int
+}
+
+func (p *yyParserImpl) Lookahead() int {
+	return p.lookahead()
+}
+
+func yyNewParser() yyParser {
+	p := &yyParserImpl{
+		lookahead: func() int { return -1 },
+	}
+	return p
+}
+
 const yyFlag = -1000
 
 func yyTokname(c int) string {
@@ -535,51 +552,63 @@ func yyStatname(s int) string {
 	return __yyfmt__.Sprintf("state-%v", s)
 }
 
-func yylex1(lex yyLexer, lval *yySymType) int {
-	c := 0
-	char := lex.Lex(lval)
+func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
+	token = 0
+	char = lex.Lex(lval)
 	if char <= 0 {
-		c = yyTok1[0]
+		token = yyTok1[0]
 		goto out
 	}
 	if char < len(yyTok1) {
-		c = yyTok1[char]
+		token = yyTok1[char]
 		goto out
 	}
 	if char >= yyPrivate {
 		if char < yyPrivate+len(yyTok2) {
-			c = yyTok2[char-yyPrivate]
+			token = yyTok2[char-yyPrivate]
 			goto out
 		}
 	}
 	for i := 0; i < len(yyTok3); i += 2 {
-		c = yyTok3[i+0]
-		if c == char {
-			c = yyTok3[i+1]
+		token = yyTok3[i+0]
+		if token == char {
+			token = yyTok3[i+1]
 			goto out
 		}
 	}
 
 out:
-	if c == 0 {
-		c = yyTok2[1] /* unknown char */
+	if token == 0 {
+		token = yyTok2[1] /* unknown char */
 	}
 	if yyDebug >= 3 {
-		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(c), uint(char))
+		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
 	}
-	return c
+	return char, token
 }
 
 func yyParse(yylex yyLexer) int {
+	return yyNewParser().Parse(yylex)
+}
+
+func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
 	var yyn int
 	var yylval yySymType
 	var yyVAL yySymType
+	var yyDollar []yySymType
 	yyS := make([]yySymType, yyMaxDepth)
 
 	Nerrs := 0   /* number of errors */
 	Errflag := 0 /* error recovery flag */
 	yystate := 0
 	yychar := -1
+	yytoken := -1 // yychar translated into internal numbering
+	yyrcvr.lookahead = func() int { return yychar }
+	defer func() {
+		// Make sure we report no lookahead when not parsing.
+		yychar = -1
+		yytoken = -1
+	}()
 	yyp := -1
 	goto yystack
 
@@ -592,7 +621,7 @@ ret1:
 yystack:
 	/* put a state and value onto the stack */
 	if yyDebug >= 4 {
-		__yyfmt__.Printf("char %v in %v\n", yyTokname(yychar), yyStatname(yystate))
+		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
 	}
 
 	yyp++
@@ -610,15 +639,16 @@ yynewstate:
 		goto yydefault /* simple state */
 	}
 	if yychar < 0 {
-		yychar = yylex1(yylex, &yylval)
+		yychar, yytoken = yylex1(yylex, &yylval)
 	}
-	yyn += yychar
+	yyn += yytoken
 	if yyn < 0 || yyn >= yyLast {
 		goto yydefault
 	}
 	yyn = yyAct[yyn]
-	if yyChk[yyn] == yychar { /* valid shift */
+	if yyChk[yyn] == yytoken { /* valid shift */
 		yychar = -1
+		yytoken = -1
 		yyVAL = yylval
 		yystate = yyn
 		if Errflag > 0 {
@@ -632,7 +662,7 @@ yydefault:
 	yyn = yyDef[yystate]
 	if yyn == -2 {
 		if yychar < 0 {
-			yychar = yylex1(yylex, &yylval)
+			yychar, yytoken = yylex1(yylex, &yylval)
 		}
 
 		/* look through exception table */
@@ -645,7 +675,7 @@ yydefault:
 		}
 		for xi += 2; ; xi += 2 {
 			yyn = yyExca[xi+0]
-			if yyn < 0 || yyn == yychar {
+			if yyn < 0 || yyn == yytoken {
 				break
 			}
 		}
@@ -662,7 +692,7 @@ yydefault:
 			Nerrs++
 			if yyDebug >= 1 {
 				__yyfmt__.Printf("%s", yyStatname(yystate))
-				__yyfmt__.Printf(" saw %s\n", yyTokname(yychar))
+				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
 			}
 			fallthrough
 
@@ -690,12 +720,13 @@ yydefault:
 
 		case 3: /* no shift yet; clobber input char */
 			if yyDebug >= 2 {
-				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yychar))
+				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
 			}
-			if yychar == yyEofCode {
+			if yytoken == yyEofCode {
 				goto ret1
 			}
 			yychar = -1
+			yytoken = -1
 			goto yynewstate /* try again in the same state */
 		}
 	}
@@ -735,773 +766,912 @@ yydefault:
 	// dummy call; replaced with literal code
 	switch yynt {
 
-	case 3:
-		//line a.y:75
+	case 2:
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:72
 		{
-			yyS[yypt-1].sym = asm.LabelLookup(yyS[yypt-1].sym)
-			if yyS[yypt-1].sym.Type == LLAB && yyS[yypt-1].sym.Value != int64(asm.PC) {
-				yyerror("redeclaration of %s", yyS[yypt-1].sym.Labelname)
-			}
-			yyS[yypt-1].sym.Type = LLAB
-			yyS[yypt-1].sym.Value = int64(asm.PC)
+			stmtline = asm.Lineno
 		}
-	case 5:
-		//line a.y:85
+	case 4:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:79
 		{
-			yyS[yypt-3].sym.Type = LVAR
-			yyS[yypt-3].sym.Value = yyS[yypt-1].lval
+			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
+			if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
+				yyerror("redeclaration of %s", yyDollar[1].sym.Labelname)
+			}
+			yyDollar[1].sym.Type = LLAB
+			yyDollar[1].sym.Value = int64(asm.PC)
 		}
 	case 6:
-		//line a.y:90
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:89
 		{
-			if yyS[yypt-3].sym.Value != yyS[yypt-1].lval {
-				yyerror("redeclaration of %s", yyS[yypt-3].sym.Name)
-			}
-			yyS[yypt-3].sym.Value = yyS[yypt-1].lval
+			yyDollar[1].sym.Type = LVAR
+			yyDollar[1].sym.Value = yyDollar[3].lval
 		}
 	case 7:
-		//line a.y:97
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:94
 		{
-			nosched = int(yyS[yypt-1].lval)
+			if yyDollar[1].sym.Value != yyDollar[3].lval {
+				yyerror("redeclaration of %s", yyDollar[1].sym.Name)
+			}
+			yyDollar[1].sym.Value = yyDollar[3].lval
 		}
-	case 11:
-		//line a.y:109
+	case 8:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:101
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			nosched = int(yyDollar[1].lval)
 		}
 	case 12:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:113
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 13:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:117
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 14:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:121
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 15:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:125
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 16:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:129
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 17:
-		//line a.y:136
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:133
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 18:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:140
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 19:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:144
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 20:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:148
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 21:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:152
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 22:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:156
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 23:
-		//line a.y:163
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:160
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 24:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:167
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 25:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:171
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 26:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:175
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 27:
-		//line a.y:182
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:179
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 28:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:186
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 29:
-		//line a.y:193
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:190
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 30:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:197
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 31:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:201
 		{
-			outgcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 32:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:205
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
 		}
 	case 33:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:209
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, int(yyS[yypt-0].lval), &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 34:
-		//line a.y:216
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:213
 		{
-			outgcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
 		}
 	case 35:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:220
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
 		}
 	case 36:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:224
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 37:
-		//line a.y:234
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:228
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 38:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:238
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 39:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:242
 		{
-			outgcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 40:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:246
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
 		}
 	case 41:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:250
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 42:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:254
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 43:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:258
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 44:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:262
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 45:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:266
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 46:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:270
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 47:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:274
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 48:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:278
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 49:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:282
 		{
-			outcode(int(yyS[yypt-1].lval), &yyS[yypt-0].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 50:
-		//line a.y:289
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:286
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[2].addr)
 		}
 	case 51:
-		//line a.y:296
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:293
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 52:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:300
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 53:
-		//line a.y:307
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:304
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, int(yyS[yypt-0].addr.Reg), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 54:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:311
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[4].addr)
 		}
 	case 55:
-		//line a.y:319
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:315
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 56:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:323
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 57:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:327
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 58:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:331
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 59:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:335
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 60:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:339
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 61:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:343
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 62:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:347
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 63:
-		//line a.y:356
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:351
 		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 64:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:360
 		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr)
 		}
 	case 65:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:364
 		{
-			outcode(int(yyS[yypt-3].lval), &nullgen, 0, &yyS[yypt-1].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr)
 		}
 	case 66:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:368
 		{
-			outcode(int(yyS[yypt-2].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
 		}
 	case 67:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:372
 		{
-			outcode(int(yyS[yypt-2].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
 		}
 	case 68:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:376
 		{
-			outcode(int(yyS[yypt-4].lval), &nullgen, 0, &yyS[yypt-1].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
 		}
 	case 69:
+		yyDollar = yyS[yypt-5 : yypt+1]
 		//line a.y:380
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[4].addr)
 		}
 	case 70:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:384
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 71:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:388
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-1].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 72:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:392
 		{
-			outcode(int(yyS[yypt-3].lval), &nullgen, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr)
 		}
 	case 73:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:396
 		{
-			outcode(int(yyS[yypt-3].lval), &nullgen, int(yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr)
 		}
 	case 74:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:400
 		{
-			outcode(int(yyS[yypt-5].lval), &nullgen, int(yyS[yypt-4].lval), &yyS[yypt-1].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr)
 		}
 	case 75:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:404
 		{
-			var g obj.Addr
-			g = nullgen
-			g.Type = obj.TYPE_CONST
-			g.Offset = yyS[yypt-4].lval
-			outcode(int(yyS[yypt-5].lval), &g, int(REG_R0+yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[5].addr)
 		}
 	case 76:
-		//line a.y:412
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:408
 		{
 			var g obj.Addr
 			g = nullgen
 			g.Type = obj.TYPE_CONST
-			g.Offset = yyS[yypt-4].lval
-			outcode(int(yyS[yypt-5].lval), &g, int(REG_R0+yyS[yypt-2].lval), &yyS[yypt-0].addr)
+			g.Offset = yyDollar[2].lval
+			outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 77:
-		//line a.y:420
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:416
 		{
 			var g obj.Addr
 			g = nullgen
 			g.Type = obj.TYPE_CONST
-			g.Offset = yyS[yypt-6].lval
-			outcode(int(yyS[yypt-7].lval), &g, int(REG_R0+yyS[yypt-4].lval), &yyS[yypt-1].addr)
+			g.Offset = yyDollar[2].lval
+			outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr)
 		}
 	case 78:
-		//line a.y:431
+		yyDollar = yyS[yypt-8 : yypt+1]
+		//line a.y:424
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, int(yyS[yypt-0].lval), &nullgen)
+			var g obj.Addr
+			g = nullgen
+			g.Type = obj.TYPE_CONST
+			g.Offset = yyDollar[2].lval
+			outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[7].addr)
 		}
 	case 79:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:435
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, int(yyS[yypt-0].lval), &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
 		}
 	case 80:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:439
 		{
-			outcode(int(yyS[yypt-2].lval), &yyS[yypt-1].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
 		}
 	case 81:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:443
 		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 82:
-		//line a.y:450
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:447
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
 		}
 	case 83:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:454
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 84:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:458
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-2].addr.Reg), &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 85:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:462
 		{
-			outgcode(int(yyS[yypt-7].lval), &yyS[yypt-6].addr, int(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr)
 		}
 	case 86:
+		yyDollar = yyS[yypt-8 : yypt+1]
 		//line a.y:466
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
 		}
 	case 87:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:470
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-0].addr.Reg), &yyS[yypt-2].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 88:
-		//line a.y:477
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:474
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
 		}
 	case 89:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:481
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 90:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:485
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-0].addr.Reg), &yyS[yypt-2].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 91:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:489
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, int(yyS[yypt-0].addr.Reg), &yyS[yypt-2].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
 		}
 	case 92:
-		//line a.y:496
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:493
 		{
-			outgcode(int(yyS[yypt-7].lval), &yyS[yypt-6].addr, int(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
 		}
 	case 93:
+		yyDollar = yyS[yypt-8 : yypt+1]
 		//line a.y:500
 		{
-			outgcode(int(yyS[yypt-7].lval), &yyS[yypt-6].addr, int(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
 		}
 	case 94:
+		yyDollar = yyS[yypt-8 : yypt+1]
 		//line a.y:504
 		{
-			outgcode(int(yyS[yypt-7].lval), &yyS[yypt-6].addr, int(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
 		}
 	case 95:
+		yyDollar = yyS[yypt-8 : yypt+1]
 		//line a.y:508
 		{
-			outgcode(int(yyS[yypt-7].lval), &yyS[yypt-6].addr, int(yyS[yypt-4].addr.Reg), &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
 		}
 	case 96:
-		//line a.y:515
+		yyDollar = yyS[yypt-8 : yypt+1]
+		//line a.y:512
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
 		}
 	case 97:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:519
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 98:
-		//line a.y:527
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:523
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 99:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:531
 		{
-			outgcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 100:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:535
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
 		}
 	case 101:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:539
 		{
-			outgcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-2].addr, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 102:
+		yyDollar = yyS[yypt-6 : yypt+1]
 		//line a.y:543
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
 		}
 	case 103:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:547
 		{
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 104:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:551
 		{
-			outcode(int(yyS[yypt-1].lval), &yyS[yypt-0].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 105:
-		//line a.y:558
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:555
 		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 106:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:562
 		{
-			outcode(int(yyS[yypt-2].lval), &yyS[yypt-1].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
 		}
 	case 107:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:566
 		{
-			outcode(int(yyS[yypt-2].lval), &yyS[yypt-1].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 108:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:570
 		{
-			outcode(int(yyS[yypt-2].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 109:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:574
 		{
-			outcode(int(yyS[yypt-2].lval), &nullgen, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
 		}
 	case 110:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:578
 		{
-			outcode(int(yyS[yypt-1].lval), &yyS[yypt-0].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
 		}
 	case 111:
-		//line a.y:585
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:582
 		{
-			outcode(int(yyS[yypt-2].lval), &yyS[yypt-1].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 112:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:589
 		{
-			outcode(int(yyS[yypt-2].lval), &yyS[yypt-1].addr, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
 		}
 	case 113:
-		//line a.y:596
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:593
 		{
-			if yyS[yypt-2].addr.Type != obj.TYPE_CONST || yyS[yypt-0].addr.Type != obj.TYPE_CONST {
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
+		}
+	case 114:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:600
+		{
+			if yyDollar[2].addr.Type != obj.TYPE_CONST || yyDollar[4].addr.Type != obj.TYPE_CONST {
 				yyerror("arguments to PCDATA must be integer constants")
 			}
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
-	case 114:
-		//line a.y:606
+	case 115:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:610
 		{
-			if yyS[yypt-2].addr.Type != obj.TYPE_CONST {
+			if yyDollar[2].addr.Type != obj.TYPE_CONST {
 				yyerror("index for FUNCDATA must be integer constant")
 			}
-			if yyS[yypt-0].addr.Type != obj.TYPE_MEM || (yyS[yypt-0].addr.Name != obj.NAME_EXTERN && yyS[yypt-0].addr.Name != obj.NAME_STATIC) {
+			if yyDollar[4].addr.Type != obj.TYPE_MEM || (yyDollar[4].addr.Name != obj.NAME_EXTERN && yyDollar[4].addr.Name != obj.NAME_STATIC) {
 				yyerror("value for FUNCDATA must be symbol reference")
 			}
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
-		}
-	case 115:
-		//line a.y:619
-		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
 		}
 	case 116:
-		//line a.y:626
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:623
 		{
-			asm.Settext(yyS[yypt-3].addr.Sym)
-			outcode(int(yyS[yypt-4].lval), &yyS[yypt-3].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
 		}
 	case 117:
-		//line a.y:631
+		yyDollar = yyS[yypt-5 : yypt+1]
+		//line a.y:630
 		{
-			asm.Settext(yyS[yypt-5].addr.Sym)
-			outcode(int(yyS[yypt-6].lval), &yyS[yypt-5].addr, int(yyS[yypt-3].lval), &yyS[yypt-0].addr)
-			if asm.Pass > 1 {
-				lastpc.From3.Type = obj.TYPE_CONST
-				lastpc.From3.Offset = yyS[yypt-3].lval
-			}
+			asm.Settext(yyDollar[2].addr.Sym)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr)
 		}
 	case 118:
-		//line a.y:643
-		{
-			asm.Settext(yyS[yypt-2].addr.Sym)
-			outcode(int(yyS[yypt-3].lval), &yyS[yypt-2].addr, 0, &yyS[yypt-0].addr)
-		}
-	case 119:
-		//line a.y:648
+		yyDollar = yyS[yypt-7 : yypt+1]
+		//line a.y:635
 		{
-			asm.Settext(yyS[yypt-4].addr.Sym)
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-0].addr)
+			asm.Settext(yyDollar[2].addr.Sym)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[7].addr)
 			if asm.Pass > 1 {
 				lastpc.From3.Type = obj.TYPE_CONST
-				lastpc.From3.Offset = yyS[yypt-2].lval
+				lastpc.From3.Offset = yyDollar[4].lval
 			}
 		}
+	case 119:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:647
+		{
+			asm.Settext(yyDollar[2].addr.Sym)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
+		}
 	case 120:
-		//line a.y:661
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:652
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-0].addr)
+			asm.Settext(yyDollar[2].addr.Sym)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
 			if asm.Pass > 1 {
 				lastpc.From3.Type = obj.TYPE_CONST
-				lastpc.From3.Offset = yyS[yypt-2].lval
+				lastpc.From3.Offset = yyDollar[4].lval
 			}
 		}
 	case 121:
-		//line a.y:669
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:665
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
 			if asm.Pass > 1 {
 				lastpc.From3.Type = obj.TYPE_CONST
-				lastpc.From3.Offset = yyS[yypt-2].lval
+				lastpc.From3.Offset = yyDollar[4].lval
 			}
 		}
 	case 122:
-		//line a.y:677
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:673
 		{
-			outcode(int(yyS[yypt-5].lval), &yyS[yypt-4].addr, 0, &yyS[yypt-0].addr)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
 			if asm.Pass > 1 {
 				lastpc.From3.Type = obj.TYPE_CONST
-				lastpc.From3.Offset = yyS[yypt-2].lval
+				lastpc.From3.Offset = yyDollar[4].lval
 			}
 		}
 	case 123:
-		//line a.y:688
+		yyDollar = yyS[yypt-6 : yypt+1]
+		//line a.y:681
 		{
-			outcode(int(yyS[yypt-1].lval), &nullgen, 0, &nullgen)
+			outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
+			if asm.Pass > 1 {
+				lastpc.From3.Type = obj.TYPE_CONST
+				lastpc.From3.Offset = yyDollar[4].lval
+			}
 		}
 	case 124:
-		//line a.y:694
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:692
 		{
-			yyVAL.addr = nullgen
-			yyVAL.addr.Type = obj.TYPE_BRANCH
-			yyVAL.addr.Offset = yyS[yypt-3].lval + int64(asm.PC)
+			outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
 		}
 	case 125:
-		//line a.y:700
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:698
 		{
-			yyS[yypt-1].sym = asm.LabelLookup(yyS[yypt-1].sym)
 			yyVAL.addr = nullgen
-			if asm.Pass == 2 && yyS[yypt-1].sym.Type != LLAB {
-				yyerror("undefined label: %s", yyS[yypt-1].sym.Labelname)
-			}
 			yyVAL.addr.Type = obj.TYPE_BRANCH
-			yyVAL.addr.Offset = yyS[yypt-1].sym.Value + yyS[yypt-0].lval
+			yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
 		}
 	case 126:
-		//line a.y:712
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:704
 		{
+			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
 			yyVAL.addr = nullgen
-			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
+				yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
+			}
+			yyVAL.addr.Type = obj.TYPE_BRANCH
+			yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
 		}
 	case 127:
-		yyVAL.addr = yyS[yypt-0].addr
-	case 128:
-		yyVAL.addr = yyS[yypt-0].addr
-	case 129:
-		//line a.y:724
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:716
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
+	case 128:
+		yyVAL.addr = yyS[yypt-0].addr
+	case 129:
+		yyVAL.addr = yyS[yypt-0].addr
 	case 130:
-		//line a.y:732
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:728
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval) /* whole register */
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 131:
-		//line a.y:739
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:736
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval) /* whole register */
 		}
 	case 132:
-		//line a.y:747
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:743
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 133:
-		//line a.y:755
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:751
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 134:
-		//line a.y:761
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:759
 		{
-			if yyS[yypt-1].lval < 0 || yyS[yypt-1].lval >= 1024 {
-				yyerror("SPR/DCR out of range")
-			}
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-3].lval + yyS[yypt-1].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 135:
-		yyVAL.addr = yyS[yypt-0].addr
-	case 136:
-		//line a.y:773
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:765
 		{
+			if yyDollar[3].lval < 0 || yyDollar[3].lval >= 1024 {
+				yyerror("SPR/DCR out of range")
+			}
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval + yyDollar[3].lval)
 		}
+	case 136:
+		yyVAL.addr = yyS[yypt-0].addr
 	case 137:
-		//line a.y:781
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:777
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 138:
-		//line a.y:787
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:785
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(REG_F0 + yyS[yypt-1].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 139:
-		//line a.y:795
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:791
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(REG_F0 + yyDollar[3].lval)
 		}
 	case 140:
-		//line a.y:801
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:799
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(REG_C0 + yyS[yypt-1].lval)
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
 		}
 	case 141:
-		//line a.y:809
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:805
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_REG
-			yyVAL.addr.Reg = int16(yyS[yypt-0].lval)
+			yyVAL.addr.Reg = int16(REG_C0 + yyDollar[3].lval)
 		}
 	case 142:
-		//line a.y:817
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:813
+		{
+			yyVAL.addr = nullgen
+			yyVAL.addr.Type = obj.TYPE_REG
+			yyVAL.addr.Reg = int16(yyDollar[1].lval)
+		}
+	case 143:
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:821
 		{
 			var mb, me int
 			var v uint32
 
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_CONST
-			mb = int(yyS[yypt-2].lval)
-			me = int(yyS[yypt-0].lval)
+			mb = int(yyDollar[1].lval)
+			me = int(yyDollar[3].lval)
 			if mb < 0 || mb > 31 || me < 0 || me > 31 {
 				yyerror("illegal mask start/end value(s)")
 				mb = 0
@@ -1514,153 +1684,170 @@ yydefault:
 			}
 			yyVAL.addr.Offset = int64(v)
 		}
-	case 143:
-		//line a.y:840
+	case 144:
+		yyDollar = yyS[yypt-1 : yypt+1]
+		//line a.y:844
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-			yyVAL.addr.Offset = int64(yyS[yypt-0].lval)
+			yyVAL.addr.Offset = int64(yyDollar[1].lval)
 			yyVAL.addr.U.Argsize = obj.ArgsSizeUnknown
 		}
-	case 144:
-		//line a.y:847
+	case 145:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:851
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-			yyVAL.addr.Offset = -int64(yyS[yypt-0].lval)
+			yyVAL.addr.Offset = -int64(yyDollar[2].lval)
 			yyVAL.addr.U.Argsize = obj.ArgsSizeUnknown
 		}
-	case 145:
-		//line a.y:854
+	case 146:
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:858
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-			yyVAL.addr.Offset = int64(yyS[yypt-2].lval)
-			yyVAL.addr.U.Argsize = int32(yyS[yypt-0].lval)
+			yyVAL.addr.Offset = int64(yyDollar[1].lval)
+			yyVAL.addr.U.Argsize = int32(yyDollar[3].lval)
 		}
-	case 146:
-		//line a.y:861
+	case 147:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:865
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-			yyVAL.addr.Offset = -int64(yyS[yypt-2].lval)
-			yyVAL.addr.U.Argsize = int32(yyS[yypt-0].lval)
+			yyVAL.addr.Offset = -int64(yyDollar[2].lval)
+			yyVAL.addr.U.Argsize = int32(yyDollar[4].lval)
 		}
-	case 147:
-		//line a.y:870
+	case 148:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:874
 		{
-			yyVAL.addr = yyS[yypt-0].addr
+			yyVAL.addr = yyDollar[2].addr
 			yyVAL.addr.Type = obj.TYPE_ADDR
 		}
-	case 148:
-		//line a.y:875
+	case 149:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:879
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_SCONST
-			yyVAL.addr.U.Sval = yyS[yypt-0].sval
+			yyVAL.addr.U.Sval = yyDollar[2].sval
 		}
-	case 149:
-		//line a.y:883
+	case 150:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:887
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_FCONST
-			yyVAL.addr.U.Dval = yyS[yypt-0].dval
+			yyVAL.addr.U.Dval = yyDollar[2].dval
 		}
-	case 150:
-		//line a.y:889
+	case 151:
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:893
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_FCONST
-			yyVAL.addr.U.Dval = -yyS[yypt-0].dval
+			yyVAL.addr.U.Dval = -yyDollar[3].dval
 		}
-	case 151:
-		//line a.y:896
+	case 152:
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:900
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_CONST
-			yyVAL.addr.Offset = yyS[yypt-0].lval
+			yyVAL.addr.Offset = yyDollar[2].lval
 		}
-	case 152:
-		yyVAL.lval = yyS[yypt-0].lval
 	case 153:
-		//line a.y:905
+		yyVAL.lval = yyS[yypt-0].lval
+	case 154:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:909
 		{
 			if yyVAL.lval < 0 || yyVAL.lval >= NREG {
 				print("register value out of range\n")
 			}
-			yyVAL.lval = REG_R0 + yyS[yypt-1].lval
+			yyVAL.lval = REG_R0 + yyDollar[3].lval
 		}
-	case 154:
-		//line a.y:914
+	case 155:
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:918
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
-			yyVAL.addr.Reg = int16(yyS[yypt-1].lval)
+			yyVAL.addr.Reg = int16(yyDollar[2].lval)
 			yyVAL.addr.Offset = 0
 		}
-	case 155:
-		//line a.y:921
+	case 156:
+		yyDollar = yyS[yypt-5 : yypt+1]
+		//line a.y:925
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
-			yyVAL.addr.Reg = int16(yyS[yypt-3].lval)
-			yyVAL.addr.Scale = int8(yyS[yypt-1].lval)
+			yyVAL.addr.Reg = int16(yyDollar[2].lval)
+			yyVAL.addr.Scale = int8(yyDollar[4].lval)
 			yyVAL.addr.Offset = 0
 		}
-	case 156:
-		yyVAL.addr = yyS[yypt-0].addr
 	case 157:
-		//line a.y:932
+		yyVAL.addr = yyS[yypt-0].addr
+	case 158:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:936
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
-			yyVAL.addr.Reg = int16(yyS[yypt-1].lval)
-			yyVAL.addr.Offset = yyS[yypt-3].lval
+			yyVAL.addr.Reg = int16(yyDollar[3].lval)
+			yyVAL.addr.Offset = yyDollar[1].lval
 		}
-	case 158:
-		//line a.y:941
+	case 159:
+		yyDollar = yyS[yypt-4 : yypt+1]
+		//line a.y:945
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
-			yyVAL.addr.Name = int8(yyS[yypt-1].lval)
+			yyVAL.addr.Name = int8(yyDollar[3].lval)
 			yyVAL.addr.Sym = nil
-			yyVAL.addr.Offset = yyS[yypt-3].lval
+			yyVAL.addr.Offset = yyDollar[1].lval
 		}
-	case 159:
-		//line a.y:949
+	case 160:
+		yyDollar = yyS[yypt-5 : yypt+1]
+		//line a.y:953
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
-			yyVAL.addr.Name = int8(yyS[yypt-1].lval)
-			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyS[yypt-4].sym.Name, 0)
-			yyVAL.addr.Offset = yyS[yypt-3].lval
+			yyVAL.addr.Name = int8(yyDollar[4].lval)
+			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
+			yyVAL.addr.Offset = yyDollar[2].lval
 		}
-	case 160:
-		//line a.y:957
+	case 161:
+		yyDollar = yyS[yypt-7 : yypt+1]
+		//line a.y:961
 		{
 			yyVAL.addr = nullgen
 			yyVAL.addr.Type = obj.TYPE_MEM
 			yyVAL.addr.Name = obj.NAME_STATIC
-			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyS[yypt-6].sym.Name, 0)
-			yyVAL.addr.Offset = yyS[yypt-3].lval
-		}
-	case 163:
-		//line a.y:969
-		{
-			yyVAL.lval = 0
+			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
+			yyVAL.addr.Offset = yyDollar[4].lval
 		}
 	case 164:
+		yyDollar = yyS[yypt-0 : yypt+1]
 		//line a.y:973
 		{
-			yyVAL.lval = yyS[yypt-0].lval
+			yyVAL.lval = 0
 		}
 	case 165:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:977
 		{
-			yyVAL.lval = -yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[2].lval
 		}
 	case 166:
-		yyVAL.lval = yyS[yypt-0].lval
+		yyDollar = yyS[yypt-2 : yypt+1]
+		//line a.y:981
+		{
+			yyVAL.lval = -yyDollar[2].lval
+		}
 	case 167:
 		yyVAL.lval = yyS[yypt-0].lval
 	case 168:
@@ -1668,81 +1855,98 @@ yydefault:
 	case 169:
 		yyVAL.lval = yyS[yypt-0].lval
 	case 170:
-		//line a.y:989
-		{
-			yyVAL.lval = yyS[yypt-0].sym.Value
-		}
+		yyVAL.lval = yyS[yypt-0].lval
 	case 171:
+		yyDollar = yyS[yypt-1 : yypt+1]
 		//line a.y:993
 		{
-			yyVAL.lval = -yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].sym.Value
 		}
 	case 172:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:997
 		{
-			yyVAL.lval = yyS[yypt-0].lval
+			yyVAL.lval = -yyDollar[2].lval
 		}
 	case 173:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:1001
 		{
-			yyVAL.lval = ^yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[2].lval
 		}
 	case 174:
+		yyDollar = yyS[yypt-2 : yypt+1]
 		//line a.y:1005
 		{
-			yyVAL.lval = yyS[yypt-1].lval
+			yyVAL.lval = ^yyDollar[2].lval
 		}
 	case 175:
-		yyVAL.lval = yyS[yypt-0].lval
-	case 176:
-		//line a.y:1012
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:1009
 		{
-			yyVAL.lval = yyS[yypt-2].lval + yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[2].lval
 		}
+	case 176:
+		yyVAL.lval = yyS[yypt-0].lval
 	case 177:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1016
 		{
-			yyVAL.lval = yyS[yypt-2].lval - yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
 		}
 	case 178:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1020
 		{
-			yyVAL.lval = yyS[yypt-2].lval * yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
 		}
 	case 179:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1024
 		{
-			yyVAL.lval = yyS[yypt-2].lval / yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
 		}
 	case 180:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1028
 		{
-			yyVAL.lval = yyS[yypt-2].lval % yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
 		}
 	case 181:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1032
 		{
-			yyVAL.lval = yyS[yypt-3].lval << uint(yyS[yypt-0].lval)
+			yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
 		}
 	case 182:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:1036
 		{
-			yyVAL.lval = yyS[yypt-3].lval >> uint(yyS[yypt-0].lval)
+			yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
 		}
 	case 183:
+		yyDollar = yyS[yypt-4 : yypt+1]
 		//line a.y:1040
 		{
-			yyVAL.lval = yyS[yypt-2].lval & yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
 		}
 	case 184:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1044
 		{
-			yyVAL.lval = yyS[yypt-2].lval ^ yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
 		}
 	case 185:
+		yyDollar = yyS[yypt-3 : yypt+1]
 		//line a.y:1048
 		{
-			yyVAL.lval = yyS[yypt-2].lval | yyS[yypt-0].lval
+			yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
+		}
+	case 186:
+		yyDollar = yyS[yypt-3 : yypt+1]
+		//line a.y:1052
+		{
+			yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
 		}
 	}
 	goto yystack /* stack new state and value */