#include "c.h"
typedef Node NODEPTR_TYPE;
#define OP_LABEL(p)     (specific((p)->op))
#define LEFT_CHILD(p)   ((p)->kids[0])
#define RIGHT_CHILD(p)  ((p)->kids[1])
#define STATE_LABEL(p)  ((p)->x.state)
#define PANIC	   error
/*
generated at Mon Oct 16 20:02:11 2023
by lburg.c - faked rcsid
*/
static void _kids(NODEPTR_TYPE, int, NODEPTR_TYPE[]);
static void _label(NODEPTR_TYPE);
static int _rule(void*, int);

#define _stmt_NT 1
#define _P_NT 2
#define _V_NT 3
#define _bogus_NT 4
#define _I_NT 5
#define _U_NT 6
#define _F_NT 7
#define _B_NT 8

static char *_ntname[] = {
	0,
	"stmt",
	"P",
	"V",
	"bogus",
	"I",
	"U",
	"F",
	"B",
	0
};

struct _state {
	short cost[9];
	struct {
		unsigned int _stmt:4;
		unsigned int _P:4;
		unsigned int _V:6;
		unsigned int _bogus:3;
		unsigned int _I:5;
		unsigned int _U:5;
		unsigned int _F:4;
		unsigned int _B:2;
	} rule;
};

static short _nts_0[] = { _P_NT, 0 };
static short _nts_1[] = { _V_NT, 0 };
static short _nts_2[] = { _I_NT, 0 };
static short _nts_3[] = { _U_NT, 0 };
static short _nts_4[] = { _F_NT, 0 };
static short _nts_5[] = { _B_NT, 0 };
static short _nts_6[] = { _bogus_NT, 0 };
static short _nts_7[] = { 0 };
static short _nts_8[] = { _P_NT, _B_NT, 0 };
static short _nts_9[] = { _P_NT, _F_NT, 0 };
static short _nts_10[] = { _P_NT, _I_NT, 0 };
static short _nts_11[] = { _P_NT, _U_NT, 0 };
static short _nts_12[] = { _P_NT, _P_NT, 0 };
static short _nts_13[] = { _F_NT, _F_NT, 0 };
static short _nts_14[] = { _I_NT, _I_NT, 0 };
static short _nts_15[] = { _I_NT, _P_NT, 0 };
static short _nts_16[] = { _U_NT, _P_NT, 0 };
static short _nts_17[] = { _U_NT, _U_NT, 0 };
static short _nts_18[] = { _U_NT, _I_NT, 0 };

static short *_nts[] = {
	0,	/* 0 */
	_nts_0,	/* 1 */
	_nts_0,	/* 2 */
	_nts_0,	/* 3 */
	_nts_0,	/* 4 */
	_nts_0,	/* 5 */
	_nts_0,	/* 6 */
	_nts_0,	/* 7 */
	_nts_0,	/* 8 */
	_nts_0,	/* 9 */
	_nts_1,	/* 10 */
	_nts_2,	/* 11 */
	_nts_3,	/* 12 */
	_nts_0,	/* 13 */
	_nts_4,	/* 14 */
	_nts_5,	/* 15 */
	_nts_1,	/* 16 */
	_nts_6,	/* 17 */
	_nts_6,	/* 18 */
	_nts_6,	/* 19 */
	_nts_6,	/* 20 */
	_nts_6,	/* 21 */
	_nts_6,	/* 22 */
	_nts_7,	/* 23 */
	_nts_7,	/* 24 */
	_nts_7,	/* 25 */
	_nts_7,	/* 26 */
	_nts_5,	/* 27 */
	_nts_4,	/* 28 */
	_nts_2,	/* 29 */
	_nts_3,	/* 30 */
	_nts_0,	/* 31 */
	_nts_8,	/* 32 */
	_nts_9,	/* 33 */
	_nts_10,	/* 34 */
	_nts_11,	/* 35 */
	_nts_12,	/* 36 */
	_nts_0,	/* 37 */
	_nts_0,	/* 38 */
	_nts_0,	/* 39 */
	_nts_0,	/* 40 */
	_nts_0,	/* 41 */
	_nts_2,	/* 42 */
	_nts_3,	/* 43 */
	_nts_4,	/* 44 */
	_nts_2,	/* 45 */
	_nts_3,	/* 46 */
	_nts_0,	/* 47 */
	_nts_2,	/* 48 */
	_nts_4,	/* 49 */
	_nts_3,	/* 50 */
	_nts_0,	/* 51 */
	_nts_4,	/* 52 */
	_nts_2,	/* 53 */
	_nts_12,	/* 54 */
	_nts_0,	/* 55 */
	_nts_0,	/* 56 */
	_nts_0,	/* 57 */
	_nts_0,	/* 58 */
	_nts_0,	/* 59 */
	_nts_4,	/* 60 */
	_nts_2,	/* 61 */
	_nts_3,	/* 62 */
	_nts_0,	/* 63 */
	_nts_7,	/* 64 */
	_nts_7,	/* 65 */
	_nts_7,	/* 66 */
	_nts_7,	/* 67 */
	_nts_13,	/* 68 */
	_nts_14,	/* 69 */
	_nts_10,	/* 70 */
	_nts_15,	/* 71 */
	_nts_16,	/* 72 */
	_nts_11,	/* 73 */
	_nts_17,	/* 74 */
	_nts_13,	/* 75 */
	_nts_14,	/* 76 */
	_nts_10,	/* 77 */
	_nts_11,	/* 78 */
	_nts_17,	/* 79 */
	_nts_14,	/* 80 */
	_nts_18,	/* 81 */
	_nts_14,	/* 82 */
	_nts_17,	/* 83 */
	_nts_14,	/* 84 */
	_nts_18,	/* 85 */
	_nts_17,	/* 86 */
	_nts_14,	/* 87 */
	_nts_3,	/* 88 */
	_nts_2,	/* 89 */
	_nts_14,	/* 90 */
	_nts_17,	/* 91 */
	_nts_17,	/* 92 */
	_nts_14,	/* 93 */
	_nts_13,	/* 94 */
	_nts_14,	/* 95 */
	_nts_17,	/* 96 */
	_nts_13,	/* 97 */
	_nts_14,	/* 98 */
	_nts_17,	/* 99 */
	_nts_13,	/* 100 */
	_nts_14,	/* 101 */
	_nts_17,	/* 102 */
	_nts_13,	/* 103 */
	_nts_14,	/* 104 */
	_nts_17,	/* 105 */
	_nts_13,	/* 106 */
	_nts_14,	/* 107 */
	_nts_17,	/* 108 */
	_nts_13,	/* 109 */
	_nts_14,	/* 110 */
	_nts_17,	/* 111 */
	_nts_13,	/* 112 */
	_nts_14,	/* 113 */
	_nts_17,	/* 114 */
	_nts_13,	/* 115 */
	_nts_14,	/* 116 */
	_nts_17,	/* 117 */
	_nts_0,	/* 118 */
	_nts_7,	/* 119 */
};

static char *_templates[] = {
/* 0 */	0,
/* 1 */	"",	/* stmt: INDIRB(P) */
/* 2 */	"",	/* stmt: INDIRF(P) */
/* 3 */	"",	/* stmt: INDIRI(P) */
/* 4 */	"",	/* stmt: INDIRU(P) */
/* 5 */	"",	/* stmt: INDIRP(P) */
/* 6 */	"",	/* stmt: CALLF(P) */
/* 7 */	"",	/* stmt: CALLI(P) */
/* 8 */	"",	/* stmt: CALLU(P) */
/* 9 */	"",	/* stmt: CALLP(P) */
/* 10 */	"",	/* stmt: V */
/* 11 */	"",	/* bogus: I */
/* 12 */	"",	/* bogus: U */
/* 13 */	"",	/* bogus: P */
/* 14 */	"",	/* bogus: F */
/* 15 */	"",	/* bogus: B */
/* 16 */	"",	/* bogus: V */
/* 17 */	"",	/* I: bogus */
/* 18 */	"",	/* U: bogus */
/* 19 */	"",	/* P: bogus */
/* 20 */	"",	/* F: bogus */
/* 21 */	"",	/* B: bogus */
/* 22 */	"",	/* V: bogus */
/* 23 */	"",	/* F: CNSTF */
/* 24 */	"",	/* I: CNSTI */
/* 25 */	"",	/* P: CNSTP */
/* 26 */	"",	/* U: CNSTU */
/* 27 */	"",	/* V: ARGB(B) */
/* 28 */	"",	/* V: ARGF(F) */
/* 29 */	"",	/* V: ARGI(I) */
/* 30 */	"",	/* V: ARGU(U) */
/* 31 */	"",	/* V: ARGP(P) */
/* 32 */	"",	/* V: ASGNB(P,B) */
/* 33 */	"",	/* V: ASGNF(P,F) */
/* 34 */	"",	/* V: ASGNI(P,I) */
/* 35 */	"",	/* V: ASGNU(P,U) */
/* 36 */	"",	/* V: ASGNP(P,P) */
/* 37 */	"",	/* B: INDIRB(P) */
/* 38 */	"",	/* F: INDIRF(P) */
/* 39 */	"",	/* I: INDIRI(P) */
/* 40 */	"",	/* U: INDIRU(P) */
/* 41 */	"",	/* P: INDIRP(P) */
/* 42 */	"",	/* I: CVII(I) */
/* 43 */	"",	/* I: CVUI(U) */
/* 44 */	"",	/* I: CVFI(F) */
/* 45 */	"",	/* U: CVIU(I) */
/* 46 */	"",	/* U: CVUU(U) */
/* 47 */	"",	/* U: CVPU(P) */
/* 48 */	"",	/* F: CVIF(I) */
/* 49 */	"",	/* F: CVFF(F) */
/* 50 */	"",	/* P: CVUP(U) */
/* 51 */	"",	/* P: CVPP(P) */
/* 52 */	"",	/* F: NEGF(F) */
/* 53 */	"",	/* I: NEGI(I) */
/* 54 */	"",	/* V: CALLB(P,P) */
/* 55 */	"",	/* F: CALLF(P) */
/* 56 */	"",	/* I: CALLI(P) */
/* 57 */	"",	/* U: CALLU(P) */
/* 58 */	"",	/* P: CALLP(P) */
/* 59 */	"",	/* V: CALLV(P) */
/* 60 */	"",	/* V: RETF(F) */
/* 61 */	"",	/* V: RETI(I) */
/* 62 */	"",	/* V: RETU(U) */
/* 63 */	"",	/* V: RETP(P) */
/* 64 */	"",	/* V: RETV */
/* 65 */	"",	/* P: ADDRGP */
/* 66 */	"",	/* P: ADDRFP */
/* 67 */	"",	/* P: ADDRLP */
/* 68 */	"",	/* F: ADDF(F,F) */
/* 69 */	"",	/* I: ADDI(I,I) */
/* 70 */	"",	/* P: ADDP(P,I) */
/* 71 */	"",	/* P: ADDP(I,P) */
/* 72 */	"",	/* P: ADDP(U,P) */
/* 73 */	"",	/* P: ADDP(P,U) */
/* 74 */	"",	/* U: ADDU(U,U) */
/* 75 */	"",	/* F: SUBF(F,F) */
/* 76 */	"",	/* I: SUBI(I,I) */
/* 77 */	"",	/* P: SUBP(P,I) */
/* 78 */	"",	/* P: SUBP(P,U) */
/* 79 */	"",	/* U: SUBU(U,U) */
/* 80 */	"",	/* I: LSHI(I,I) */
/* 81 */	"",	/* U: LSHU(U,I) */
/* 82 */	"",	/* I: MODI(I,I) */
/* 83 */	"",	/* U: MODU(U,U) */
/* 84 */	"",	/* I: RSHI(I,I) */
/* 85 */	"",	/* U: RSHU(U,I) */
/* 86 */	"",	/* U: BANDU(U,U) */
/* 87 */	"",	/* I: BANDI(I,I) */
/* 88 */	"",	/* U: BCOMU(U) */
/* 89 */	"",	/* I: BCOMI(I) */
/* 90 */	"",	/* I: BORI(I,I) */
/* 91 */	"",	/* U: BORU(U,U) */
/* 92 */	"",	/* U: BXORU(U,U) */
/* 93 */	"",	/* I: BXORI(I,I) */
/* 94 */	"",	/* F: DIVF(F,F) */
/* 95 */	"",	/* I: DIVI(I,I) */
/* 96 */	"",	/* U: DIVU(U,U) */
/* 97 */	"",	/* F: MULF(F,F) */
/* 98 */	"",	/* I: MULI(I,I) */
/* 99 */	"",	/* U: MULU(U,U) */
/* 100 */	"",	/* V: EQF(F,F) */
/* 101 */	"",	/* V: EQI(I,I) */
/* 102 */	"",	/* V: EQU(U,U) */
/* 103 */	"",	/* V: GEF(F,F) */
/* 104 */	"",	/* V: GEI(I,I) */
/* 105 */	"",	/* V: GEU(U,U) */
/* 106 */	"",	/* V: GTF(F,F) */
/* 107 */	"",	/* V: GTI(I,I) */
/* 108 */	"",	/* V: GTU(U,U) */
/* 109 */	"",	/* V: LEF(F,F) */
/* 110 */	"",	/* V: LEI(I,I) */
/* 111 */	"",	/* V: LEU(U,U) */
/* 112 */	"",	/* V: LTF(F,F) */
/* 113 */	"",	/* V: LTI(I,I) */
/* 114 */	"",	/* V: LTU(U,U) */
/* 115 */	"",	/* V: NEF(F,F) */
/* 116 */	"",	/* V: NEI(I,I) */
/* 117 */	"",	/* V: NEU(U,U) */
/* 118 */	"",	/* V: JUMPV(P) */
/* 119 */	"",	/* V: LABELV */
};

static char _isinstruction[] = {
/* 0 */	0,
/* 1 */	0,	/*  */
/* 2 */	0,	/*  */
/* 3 */	0,	/*  */
/* 4 */	0,	/*  */
/* 5 */	0,	/*  */
/* 6 */	0,	/*  */
/* 7 */	0,	/*  */
/* 8 */	0,	/*  */
/* 9 */	0,	/*  */
/* 10 */	0,	/*  */
/* 11 */	0,	/*  */
/* 12 */	0,	/*  */
/* 13 */	0,	/*  */
/* 14 */	0,	/*  */
/* 15 */	0,	/*  */
/* 16 */	0,	/*  */
/* 17 */	0,	/*  */
/* 18 */	0,	/*  */
/* 19 */	0,	/*  */
/* 20 */	0,	/*  */
/* 21 */	0,	/*  */
/* 22 */	0,	/*  */
/* 23 */	0,	/*  */
/* 24 */	0,	/*  */
/* 25 */	0,	/*  */
/* 26 */	0,	/*  */
/* 27 */	0,	/*  */
/* 28 */	0,	/*  */
/* 29 */	0,	/*  */
/* 30 */	0,	/*  */
/* 31 */	0,	/*  */
/* 32 */	0,	/*  */
/* 33 */	0,	/*  */
/* 34 */	0,	/*  */
/* 35 */	0,	/*  */
/* 36 */	0,	/*  */
/* 37 */	0,	/*  */
/* 38 */	0,	/*  */
/* 39 */	0,	/*  */
/* 40 */	0,	/*  */
/* 41 */	0,	/*  */
/* 42 */	0,	/*  */
/* 43 */	0,	/*  */
/* 44 */	0,	/*  */
/* 45 */	0,	/*  */
/* 46 */	0,	/*  */
/* 47 */	0,	/*  */
/* 48 */	0,	/*  */
/* 49 */	0,	/*  */
/* 50 */	0,	/*  */
/* 51 */	0,	/*  */
/* 52 */	0,	/*  */
/* 53 */	0,	/*  */
/* 54 */	0,	/*  */
/* 55 */	0,	/*  */
/* 56 */	0,	/*  */
/* 57 */	0,	/*  */
/* 58 */	0,	/*  */
/* 59 */	0,	/*  */
/* 60 */	0,	/*  */
/* 61 */	0,	/*  */
/* 62 */	0,	/*  */
/* 63 */	0,	/*  */
/* 64 */	0,	/*  */
/* 65 */	0,	/*  */
/* 66 */	0,	/*  */
/* 67 */	0,	/*  */
/* 68 */	0,	/*  */
/* 69 */	0,	/*  */
/* 70 */	0,	/*  */
/* 71 */	0,	/*  */
/* 72 */	0,	/*  */
/* 73 */	0,	/*  */
/* 74 */	0,	/*  */
/* 75 */	0,	/*  */
/* 76 */	0,	/*  */
/* 77 */	0,	/*  */
/* 78 */	0,	/*  */
/* 79 */	0,	/*  */
/* 80 */	0,	/*  */
/* 81 */	0,	/*  */
/* 82 */	0,	/*  */
/* 83 */	0,	/*  */
/* 84 */	0,	/*  */
/* 85 */	0,	/*  */
/* 86 */	0,	/*  */
/* 87 */	0,	/*  */
/* 88 */	0,	/*  */
/* 89 */	0,	/*  */
/* 90 */	0,	/*  */
/* 91 */	0,	/*  */
/* 92 */	0,	/*  */
/* 93 */	0,	/*  */
/* 94 */	0,	/*  */
/* 95 */	0,	/*  */
/* 96 */	0,	/*  */
/* 97 */	0,	/*  */
/* 98 */	0,	/*  */
/* 99 */	0,	/*  */
/* 100 */	0,	/*  */
/* 101 */	0,	/*  */
/* 102 */	0,	/*  */
/* 103 */	0,	/*  */
/* 104 */	0,	/*  */
/* 105 */	0,	/*  */
/* 106 */	0,	/*  */
/* 107 */	0,	/*  */
/* 108 */	0,	/*  */
/* 109 */	0,	/*  */
/* 110 */	0,	/*  */
/* 111 */	0,	/*  */
/* 112 */	0,	/*  */
/* 113 */	0,	/*  */
/* 114 */	0,	/*  */
/* 115 */	0,	/*  */
/* 116 */	0,	/*  */
/* 117 */	0,	/*  */
/* 118 */	0,	/*  */
/* 119 */	0,	/*  */
};

static char *_string[] = {
/* 0 */	0,
/* 1 */	"stmt: INDIRB(P)",
/* 2 */	"stmt: INDIRF(P)",
/* 3 */	"stmt: INDIRI(P)",
/* 4 */	"stmt: INDIRU(P)",
/* 5 */	"stmt: INDIRP(P)",
/* 6 */	"stmt: CALLF(P)",
/* 7 */	"stmt: CALLI(P)",
/* 8 */	"stmt: CALLU(P)",
/* 9 */	"stmt: CALLP(P)",
/* 10 */	"stmt: V",
/* 11 */	"bogus: I",
/* 12 */	"bogus: U",
/* 13 */	"bogus: P",
/* 14 */	"bogus: F",
/* 15 */	"bogus: B",
/* 16 */	"bogus: V",
/* 17 */	"I: bogus",
/* 18 */	"U: bogus",
/* 19 */	"P: bogus",
/* 20 */	"F: bogus",
/* 21 */	"B: bogus",
/* 22 */	"V: bogus",
/* 23 */	"F: CNSTF",
/* 24 */	"I: CNSTI",
/* 25 */	"P: CNSTP",
/* 26 */	"U: CNSTU",
/* 27 */	"V: ARGB(B)",
/* 28 */	"V: ARGF(F)",
/* 29 */	"V: ARGI(I)",
/* 30 */	"V: ARGU(U)",
/* 31 */	"V: ARGP(P)",
/* 32 */	"V: ASGNB(P,B)",
/* 33 */	"V: ASGNF(P,F)",
/* 34 */	"V: ASGNI(P,I)",
/* 35 */	"V: ASGNU(P,U)",
/* 36 */	"V: ASGNP(P,P)",
/* 37 */	"B: INDIRB(P)",
/* 38 */	"F: INDIRF(P)",
/* 39 */	"I: INDIRI(P)",
/* 40 */	"U: INDIRU(P)",
/* 41 */	"P: INDIRP(P)",
/* 42 */	"I: CVII(I)",
/* 43 */	"I: CVUI(U)",
/* 44 */	"I: CVFI(F)",
/* 45 */	"U: CVIU(I)",
/* 46 */	"U: CVUU(U)",
/* 47 */	"U: CVPU(P)",
/* 48 */	"F: CVIF(I)",
/* 49 */	"F: CVFF(F)",
/* 50 */	"P: CVUP(U)",
/* 51 */	"P: CVPP(P)",
/* 52 */	"F: NEGF(F)",
/* 53 */	"I: NEGI(I)",
/* 54 */	"V: CALLB(P,P)",
/* 55 */	"F: CALLF(P)",
/* 56 */	"I: CALLI(P)",
/* 57 */	"U: CALLU(P)",
/* 58 */	"P: CALLP(P)",
/* 59 */	"V: CALLV(P)",
/* 60 */	"V: RETF(F)",
/* 61 */	"V: RETI(I)",
/* 62 */	"V: RETU(U)",
/* 63 */	"V: RETP(P)",
/* 64 */	"V: RETV",
/* 65 */	"P: ADDRGP",
/* 66 */	"P: ADDRFP",
/* 67 */	"P: ADDRLP",
/* 68 */	"F: ADDF(F,F)",
/* 69 */	"I: ADDI(I,I)",
/* 70 */	"P: ADDP(P,I)",
/* 71 */	"P: ADDP(I,P)",
/* 72 */	"P: ADDP(U,P)",
/* 73 */	"P: ADDP(P,U)",
/* 74 */	"U: ADDU(U,U)",
/* 75 */	"F: SUBF(F,F)",
/* 76 */	"I: SUBI(I,I)",
/* 77 */	"P: SUBP(P,I)",
/* 78 */	"P: SUBP(P,U)",
/* 79 */	"U: SUBU(U,U)",
/* 80 */	"I: LSHI(I,I)",
/* 81 */	"U: LSHU(U,I)",
/* 82 */	"I: MODI(I,I)",
/* 83 */	"U: MODU(U,U)",
/* 84 */	"I: RSHI(I,I)",
/* 85 */	"U: RSHU(U,I)",
/* 86 */	"U: BANDU(U,U)",
/* 87 */	"I: BANDI(I,I)",
/* 88 */	"U: BCOMU(U)",
/* 89 */	"I: BCOMI(I)",
/* 90 */	"I: BORI(I,I)",
/* 91 */	"U: BORU(U,U)",
/* 92 */	"U: BXORU(U,U)",
/* 93 */	"I: BXORI(I,I)",
/* 94 */	"F: DIVF(F,F)",
/* 95 */	"I: DIVI(I,I)",
/* 96 */	"U: DIVU(U,U)",
/* 97 */	"F: MULF(F,F)",
/* 98 */	"I: MULI(I,I)",
/* 99 */	"U: MULU(U,U)",
/* 100 */	"V: EQF(F,F)",
/* 101 */	"V: EQI(I,I)",
/* 102 */	"V: EQU(U,U)",
/* 103 */	"V: GEF(F,F)",
/* 104 */	"V: GEI(I,I)",
/* 105 */	"V: GEU(U,U)",
/* 106 */	"V: GTF(F,F)",
/* 107 */	"V: GTI(I,I)",
/* 108 */	"V: GTU(U,U)",
/* 109 */	"V: LEF(F,F)",
/* 110 */	"V: LEI(I,I)",
/* 111 */	"V: LEU(U,U)",
/* 112 */	"V: LTF(F,F)",
/* 113 */	"V: LTI(I,I)",
/* 114 */	"V: LTU(U,U)",
/* 115 */	"V: NEF(F,F)",
/* 116 */	"V: NEI(I,I)",
/* 117 */	"V: NEU(U,U)",
/* 118 */	"V: JUMPV(P)",
/* 119 */	"V: LABELV",
};

static short _decode_stmt[] = {
	0,
	1,
	2,
	3,
	4,
	5,
	6,
	7,
	8,
	9,
	10,
};

static short _decode_P[] = {
	0,
	19,
	25,
	41,
	50,
	51,
	58,
	65,
	66,
	67,
	70,
	71,
	72,
	73,
	77,
	78,
};

static short _decode_V[] = {
	0,
	22,
	27,
	28,
	29,
	30,
	31,
	32,
	33,
	34,
	35,
	36,
	54,
	59,
	60,
	61,
	62,
	63,
	64,
	100,
	101,
	102,
	103,
	104,
	105,
	106,
	107,
	108,
	109,
	110,
	111,
	112,
	113,
	114,
	115,
	116,
	117,
	118,
	119,
};

static short _decode_bogus[] = {
	0,
	11,
	12,
	13,
	14,
	15,
	16,
};

static short _decode_I[] = {
	0,
	17,
	24,
	39,
	42,
	43,
	44,
	53,
	56,
	69,
	76,
	80,
	82,
	84,
	87,
	89,
	90,
	93,
	95,
	98,
};

static short _decode_U[] = {
	0,
	18,
	26,
	40,
	45,
	46,
	47,
	57,
	74,
	79,
	81,
	83,
	85,
	86,
	88,
	91,
	92,
	96,
	99,
};

static short _decode_F[] = {
	0,
	20,
	23,
	38,
	48,
	49,
	52,
	55,
	68,
	75,
	94,
	97,
};

static short _decode_B[] = {
	0,
	21,
	37,
};

static int _rule(void *state, int goalnt) {
	if (goalnt < 1 || goalnt > 8)
		fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
	if (!state)
		return 0;
	switch (goalnt) {
	case _stmt_NT:	return _decode_stmt[((struct _state *)state)->rule._stmt];
	case _P_NT:	return _decode_P[((struct _state *)state)->rule._P];
	case _V_NT:	return _decode_V[((struct _state *)state)->rule._V];
	case _bogus_NT:	return _decode_bogus[((struct _state *)state)->rule._bogus];
	case _I_NT:	return _decode_I[((struct _state *)state)->rule._I];
	case _U_NT:	return _decode_U[((struct _state *)state)->rule._U];
	case _F_NT:	return _decode_F[((struct _state *)state)->rule._F];
	case _B_NT:	return _decode_B[((struct _state *)state)->rule._B];
	default:
		fatal("_rule", "Bad goal nonterminal %d\n", goalnt);
		return 0;
	}
}

static void _closure_P(NODEPTR_TYPE, int);
static void _closure_V(NODEPTR_TYPE, int);
static void _closure_bogus(NODEPTR_TYPE, int);
static void _closure_I(NODEPTR_TYPE, int);
static void _closure_U(NODEPTR_TYPE, int);
static void _closure_F(NODEPTR_TYPE, int);
static void _closure_B(NODEPTR_TYPE, int);

static void _closure_P(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 3;
		_closure_bogus(a, c + 1);
	}
}

static void _closure_V(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 6;
		_closure_bogus(a, c + 1);
	}
	if (c + 0 < p->cost[_stmt_NT]) {
		p->cost[_stmt_NT] = c + 0;
		p->rule._stmt = 10;
	}
}

static void _closure_bogus(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_V_NT]) {
		p->cost[_V_NT] = c + 1;
		p->rule._V = 1;
		_closure_V(a, c + 1);
	}
	if (c + 1 < p->cost[_B_NT]) {
		p->cost[_B_NT] = c + 1;
		p->rule._B = 1;
		_closure_B(a, c + 1);
	}
	if (c + 1 < p->cost[_F_NT]) {
		p->cost[_F_NT] = c + 1;
		p->rule._F = 1;
		_closure_F(a, c + 1);
	}
	if (c + 1 < p->cost[_P_NT]) {
		p->cost[_P_NT] = c + 1;
		p->rule._P = 1;
		_closure_P(a, c + 1);
	}
	if (c + 1 < p->cost[_U_NT]) {
		p->cost[_U_NT] = c + 1;
		p->rule._U = 1;
		_closure_U(a, c + 1);
	}
	if (c + 1 < p->cost[_I_NT]) {
		p->cost[_I_NT] = c + 1;
		p->rule._I = 1;
		_closure_I(a, c + 1);
	}
}

static void _closure_I(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 1;
		_closure_bogus(a, c + 1);
	}
}

static void _closure_U(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 2;
		_closure_bogus(a, c + 1);
	}
}

static void _closure_F(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 4;
		_closure_bogus(a, c + 1);
	}
}

static void _closure_B(NODEPTR_TYPE a, int c) {
	struct _state *p = STATE_LABEL(a);
	if (c + 1 < p->cost[_bogus_NT]) {
		p->cost[_bogus_NT] = c + 1;
		p->rule._bogus = 5;
		_closure_bogus(a, c + 1);
	}
}

static void _label(NODEPTR_TYPE a) {
	int c;
	struct _state *p;

	if (!a)
		fatal("_label", "Null tree\n", 0);
	STATE_LABEL(a) = p = allocate(sizeof *p, FUNC);
	p->rule._stmt = 0;
	p->cost[1] =
	p->cost[2] =
	p->cost[3] =
	p->cost[4] =
	p->cost[5] =
	p->cost[6] =
	p->cost[7] =
	p->cost[8] =
		0x7fff;
	switch (OP_LABEL(a)) {
	case 17: /* CNSTF */
		/* F: CNSTF */
		if (0 + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = 0 + 0;
			p->rule._F = 2;
			_closure_F(a, 0 + 0);
		}
		break;
	case 21: /* CNSTI */
		/* I: CNSTI */
		if (0 + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = 0 + 0;
			p->rule._I = 2;
			_closure_I(a, 0 + 0);
		}
		break;
	case 22: /* CNSTU */
		/* U: CNSTU */
		if (0 + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = 0 + 0;
			p->rule._U = 2;
			_closure_U(a, 0 + 0);
		}
		break;
	case 23: /* CNSTP */
		/* P: CNSTP */
		if (0 + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = 0 + 0;
			p->rule._P = 2;
			_closure_P(a, 0 + 0);
		}
		break;
	case 33: /* ARGF */
		_label(LEFT_CHILD(a));
		/* V: ARGF(F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 3;
			_closure_V(a, c + 0);
		}
		break;
	case 37: /* ARGI */
		_label(LEFT_CHILD(a));
		/* V: ARGI(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 4;
			_closure_V(a, c + 0);
		}
		break;
	case 38: /* ARGU */
		_label(LEFT_CHILD(a));
		/* V: ARGU(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 5;
			_closure_V(a, c + 0);
		}
		break;
	case 39: /* ARGP */
		_label(LEFT_CHILD(a));
		/* V: ARGP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 6;
			_closure_V(a, c + 0);
		}
		break;
	case 41: /* ARGB */
		_label(LEFT_CHILD(a));
		/* V: ARGB(B) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_B_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 2;
			_closure_V(a, c + 0);
		}
		break;
	case 49: /* ASGNF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: ASGNF(P,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 8;
			_closure_V(a, c + 0);
		}
		break;
	case 53: /* ASGNI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: ASGNI(P,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 9;
			_closure_V(a, c + 0);
		}
		break;
	case 54: /* ASGNU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: ASGNU(P,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 10;
			_closure_V(a, c + 0);
		}
		break;
	case 55: /* ASGNP */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: ASGNP(P,P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 11;
			_closure_V(a, c + 0);
		}
		break;
	case 57: /* ASGNB */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: ASGNB(P,B) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_B_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 7;
			_closure_V(a, c + 0);
		}
		break;
	case 65: /* INDIRF */
		_label(LEFT_CHILD(a));
		/* stmt: INDIRF(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 2;
		}
		/* F: INDIRF(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 3;
			_closure_F(a, c + 0);
		}
		break;
	case 69: /* INDIRI */
		_label(LEFT_CHILD(a));
		/* stmt: INDIRI(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 3;
		}
		/* I: INDIRI(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 3;
			_closure_I(a, c + 0);
		}
		break;
	case 70: /* INDIRU */
		_label(LEFT_CHILD(a));
		/* stmt: INDIRU(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 4;
		}
		/* U: INDIRU(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 3;
			_closure_U(a, c + 0);
		}
		break;
	case 71: /* INDIRP */
		_label(LEFT_CHILD(a));
		/* stmt: INDIRP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 5;
		}
		/* P: INDIRP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 3;
			_closure_P(a, c + 0);
		}
		break;
	case 73: /* INDIRB */
		_label(LEFT_CHILD(a));
		/* stmt: INDIRB(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 1;
		}
		/* B: INDIRB(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_B_NT]) {
			p->cost[_B_NT] = c + 0;
			p->rule._B = 2;
			_closure_B(a, c + 0);
		}
		break;
	case 113: /* CVFF */
		_label(LEFT_CHILD(a));
		/* F: CVFF(F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 5;
			_closure_F(a, c + 0);
		}
		break;
	case 117: /* CVFI */
		_label(LEFT_CHILD(a));
		/* I: CVFI(F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 6;
			_closure_I(a, c + 0);
		}
		break;
	case 129: /* CVIF */
		_label(LEFT_CHILD(a));
		/* F: CVIF(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 4;
			_closure_F(a, c + 0);
		}
		break;
	case 133: /* CVII */
		_label(LEFT_CHILD(a));
		/* I: CVII(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 4;
			_closure_I(a, c + 0);
		}
		break;
	case 134: /* CVIU */
		_label(LEFT_CHILD(a));
		/* U: CVIU(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 4;
			_closure_U(a, c + 0);
		}
		break;
	case 150: /* CVPU */
		_label(LEFT_CHILD(a));
		/* U: CVPU(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 6;
			_closure_U(a, c + 0);
		}
		break;
	case 151: /* CVPP */
		_label(LEFT_CHILD(a));
		/* P: CVPP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 5;
			_closure_P(a, c + 0);
		}
		break;
	case 181: /* CVUI */
		_label(LEFT_CHILD(a));
		/* I: CVUI(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 5;
			_closure_I(a, c + 0);
		}
		break;
	case 182: /* CVUU */
		_label(LEFT_CHILD(a));
		/* U: CVUU(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 5;
			_closure_U(a, c + 0);
		}
		break;
	case 183: /* CVUP */
		_label(LEFT_CHILD(a));
		/* P: CVUP(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 4;
			_closure_P(a, c + 0);
		}
		break;
	case 193: /* NEGF */
		_label(LEFT_CHILD(a));
		/* F: NEGF(F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 6;
			_closure_F(a, c + 0);
		}
		break;
	case 197: /* NEGI */
		_label(LEFT_CHILD(a));
		/* I: NEGI(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 7;
			_closure_I(a, c + 0);
		}
		break;
	case 209: /* CALLF */
		_label(LEFT_CHILD(a));
		/* stmt: CALLF(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 6;
		}
		/* F: CALLF(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 7;
			_closure_F(a, c + 0);
		}
		break;
	case 213: /* CALLI */
		_label(LEFT_CHILD(a));
		/* stmt: CALLI(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 7;
		}
		/* I: CALLI(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 8;
			_closure_I(a, c + 0);
		}
		break;
	case 214: /* CALLU */
		_label(LEFT_CHILD(a));
		/* stmt: CALLU(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 8;
		}
		/* U: CALLU(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 7;
			_closure_U(a, c + 0);
		}
		break;
	case 215: /* CALLP */
		_label(LEFT_CHILD(a));
		/* stmt: CALLP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_stmt_NT]) {
			p->cost[_stmt_NT] = c + 0;
			p->rule._stmt = 9;
		}
		/* P: CALLP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 6;
			_closure_P(a, c + 0);
		}
		break;
	case 216: /* CALLV */
		_label(LEFT_CHILD(a));
		/* V: CALLV(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 13;
			_closure_V(a, c + 0);
		}
		break;
	case 217: /* CALLB */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: CALLB(P,P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 12;
			_closure_V(a, c + 0);
		}
		break;
	case 241: /* RETF */
		_label(LEFT_CHILD(a));
		/* V: RETF(F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 14;
			_closure_V(a, c + 0);
		}
		break;
	case 245: /* RETI */
		_label(LEFT_CHILD(a));
		/* V: RETI(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 15;
			_closure_V(a, c + 0);
		}
		break;
	case 246: /* RETU */
		_label(LEFT_CHILD(a));
		/* V: RETU(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 16;
			_closure_V(a, c + 0);
		}
		break;
	case 247: /* RETP */
		_label(LEFT_CHILD(a));
		/* V: RETP(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 17;
			_closure_V(a, c + 0);
		}
		break;
	case 248: /* RETV */
		/* V: RETV */
		if (0 + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = 0 + 0;
			p->rule._V = 18;
			_closure_V(a, 0 + 0);
		}
		break;
	case 263: /* ADDRGP */
		/* P: ADDRGP */
		if (0 + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = 0 + 0;
			p->rule._P = 7;
			_closure_P(a, 0 + 0);
		}
		break;
	case 279: /* ADDRFP */
		/* P: ADDRFP */
		if (0 + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = 0 + 0;
			p->rule._P = 8;
			_closure_P(a, 0 + 0);
		}
		break;
	case 295: /* ADDRLP */
		/* P: ADDRLP */
		if (0 + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = 0 + 0;
			p->rule._P = 9;
			_closure_P(a, 0 + 0);
		}
		break;
	case 305: /* ADDF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* F: ADDF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 8;
			_closure_F(a, c + 0);
		}
		break;
	case 309: /* ADDI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: ADDI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 9;
			_closure_I(a, c + 0);
		}
		break;
	case 310: /* ADDU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: ADDU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 8;
			_closure_U(a, c + 0);
		}
		break;
	case 311: /* ADDP */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* P: ADDP(P,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 10;
			_closure_P(a, c + 0);
		}
		/* P: ADDP(I,P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 11;
			_closure_P(a, c + 0);
		}
		/* P: ADDP(U,P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 12;
			_closure_P(a, c + 0);
		}
		/* P: ADDP(P,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 13;
			_closure_P(a, c + 0);
		}
		break;
	case 321: /* SUBF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* F: SUBF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 9;
			_closure_F(a, c + 0);
		}
		break;
	case 325: /* SUBI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: SUBI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 10;
			_closure_I(a, c + 0);
		}
		break;
	case 326: /* SUBU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: SUBU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 9;
			_closure_U(a, c + 0);
		}
		break;
	case 327: /* SUBP */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* P: SUBP(P,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 14;
			_closure_P(a, c + 0);
		}
		/* P: SUBP(P,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_P_NT]) {
			p->cost[_P_NT] = c + 0;
			p->rule._P = 15;
			_closure_P(a, c + 0);
		}
		break;
	case 341: /* LSHI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: LSHI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 11;
			_closure_I(a, c + 0);
		}
		break;
	case 342: /* LSHU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: LSHU(U,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 10;
			_closure_U(a, c + 0);
		}
		break;
	case 357: /* MODI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: MODI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 12;
			_closure_I(a, c + 0);
		}
		break;
	case 358: /* MODU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: MODU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 11;
			_closure_U(a, c + 0);
		}
		break;
	case 373: /* RSHI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: RSHI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 13;
			_closure_I(a, c + 0);
		}
		break;
	case 374: /* RSHU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: RSHU(U,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 12;
			_closure_U(a, c + 0);
		}
		break;
	case 389: /* BANDI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: BANDI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 14;
			_closure_I(a, c + 0);
		}
		break;
	case 390: /* BANDU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: BANDU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 13;
			_closure_U(a, c + 0);
		}
		break;
	case 405: /* BCOMI */
		_label(LEFT_CHILD(a));
		/* I: BCOMI(I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 15;
			_closure_I(a, c + 0);
		}
		break;
	case 406: /* BCOMU */
		_label(LEFT_CHILD(a));
		/* U: BCOMU(U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 14;
			_closure_U(a, c + 0);
		}
		break;
	case 421: /* BORI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: BORI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 16;
			_closure_I(a, c + 0);
		}
		break;
	case 422: /* BORU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: BORU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 15;
			_closure_U(a, c + 0);
		}
		break;
	case 437: /* BXORI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: BXORI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 17;
			_closure_I(a, c + 0);
		}
		break;
	case 438: /* BXORU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: BXORU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 16;
			_closure_U(a, c + 0);
		}
		break;
	case 449: /* DIVF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* F: DIVF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 10;
			_closure_F(a, c + 0);
		}
		break;
	case 453: /* DIVI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: DIVI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 18;
			_closure_I(a, c + 0);
		}
		break;
	case 454: /* DIVU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: DIVU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 17;
			_closure_U(a, c + 0);
		}
		break;
	case 465: /* MULF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* F: MULF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_F_NT]) {
			p->cost[_F_NT] = c + 0;
			p->rule._F = 11;
			_closure_F(a, c + 0);
		}
		break;
	case 469: /* MULI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* I: MULI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_I_NT]) {
			p->cost[_I_NT] = c + 0;
			p->rule._I = 19;
			_closure_I(a, c + 0);
		}
		break;
	case 470: /* MULU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* U: MULU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_U_NT]) {
			p->cost[_U_NT] = c + 0;
			p->rule._U = 18;
			_closure_U(a, c + 0);
		}
		break;
	case 481: /* EQF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: EQF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 19;
			_closure_V(a, c + 0);
		}
		break;
	case 485: /* EQI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: EQI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 20;
			_closure_V(a, c + 0);
		}
		break;
	case 486: /* EQU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: EQU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 21;
			_closure_V(a, c + 0);
		}
		break;
	case 497: /* GEF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GEF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 22;
			_closure_V(a, c + 0);
		}
		break;
	case 501: /* GEI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GEI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 23;
			_closure_V(a, c + 0);
		}
		break;
	case 502: /* GEU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GEU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 24;
			_closure_V(a, c + 0);
		}
		break;
	case 513: /* GTF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GTF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 25;
			_closure_V(a, c + 0);
		}
		break;
	case 517: /* GTI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GTI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 26;
			_closure_V(a, c + 0);
		}
		break;
	case 518: /* GTU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: GTU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 27;
			_closure_V(a, c + 0);
		}
		break;
	case 529: /* LEF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LEF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 28;
			_closure_V(a, c + 0);
		}
		break;
	case 533: /* LEI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LEI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 29;
			_closure_V(a, c + 0);
		}
		break;
	case 534: /* LEU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LEU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 30;
			_closure_V(a, c + 0);
		}
		break;
	case 545: /* LTF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LTF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 31;
			_closure_V(a, c + 0);
		}
		break;
	case 549: /* LTI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LTI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 32;
			_closure_V(a, c + 0);
		}
		break;
	case 550: /* LTU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: LTU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 33;
			_closure_V(a, c + 0);
		}
		break;
	case 561: /* NEF */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: NEF(F,F) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 34;
			_closure_V(a, c + 0);
		}
		break;
	case 565: /* NEI */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: NEI(I,I) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 35;
			_closure_V(a, c + 0);
		}
		break;
	case 566: /* NEU */
		_label(LEFT_CHILD(a));
		_label(RIGHT_CHILD(a));
		/* V: NEU(U,U) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 36;
			_closure_V(a, c + 0);
		}
		break;
	case 584: /* JUMPV */
		_label(LEFT_CHILD(a));
		/* V: JUMPV(P) */
		c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0;
		if (c + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = c + 0;
			p->rule._V = 37;
			_closure_V(a, c + 0);
		}
		break;
	case 600: /* LABELV */
		/* V: LABELV */
		if (0 + 0 < p->cost[_V_NT]) {
			p->cost[_V_NT] = 0 + 0;
			p->rule._V = 38;
			_closure_V(a, 0 + 0);
		}
		break;
	default:
		fatal("_label", "Bad terminal %d\n", OP_LABEL(a));
	}
}

static void _kids(NODEPTR_TYPE p, int eruleno, NODEPTR_TYPE kids[]) {
	if (!p)
		fatal("_kids", "Null tree\n", 0);
	if (!kids)
		fatal("_kids", "Null kids\n", 0);
	switch (eruleno) {
	case 118: /* V: JUMPV(P) */
	case 89: /* I: BCOMI(I) */
	case 88: /* U: BCOMU(U) */
	case 63: /* V: RETP(P) */
	case 62: /* V: RETU(U) */
	case 61: /* V: RETI(I) */
	case 60: /* V: RETF(F) */
	case 59: /* V: CALLV(P) */
	case 58: /* P: CALLP(P) */
	case 57: /* U: CALLU(P) */
	case 56: /* I: CALLI(P) */
	case 55: /* F: CALLF(P) */
	case 53: /* I: NEGI(I) */
	case 52: /* F: NEGF(F) */
	case 51: /* P: CVPP(P) */
	case 50: /* P: CVUP(U) */
	case 49: /* F: CVFF(F) */
	case 48: /* F: CVIF(I) */
	case 47: /* U: CVPU(P) */
	case 46: /* U: CVUU(U) */
	case 45: /* U: CVIU(I) */
	case 44: /* I: CVFI(F) */
	case 43: /* I: CVUI(U) */
	case 42: /* I: CVII(I) */
	case 41: /* P: INDIRP(P) */
	case 40: /* U: INDIRU(P) */
	case 39: /* I: INDIRI(P) */
	case 38: /* F: INDIRF(P) */
	case 37: /* B: INDIRB(P) */
	case 31: /* V: ARGP(P) */
	case 30: /* V: ARGU(U) */
	case 29: /* V: ARGI(I) */
	case 28: /* V: ARGF(F) */
	case 27: /* V: ARGB(B) */
	case 9: /* stmt: CALLP(P) */
	case 8: /* stmt: CALLU(P) */
	case 7: /* stmt: CALLI(P) */
	case 6: /* stmt: CALLF(P) */
	case 5: /* stmt: INDIRP(P) */
	case 4: /* stmt: INDIRU(P) */
	case 3: /* stmt: INDIRI(P) */
	case 2: /* stmt: INDIRF(P) */
	case 1: /* stmt: INDIRB(P) */
		kids[0] = LEFT_CHILD(p);
		break;
	case 22: /* V: bogus */
	case 21: /* B: bogus */
	case 20: /* F: bogus */
	case 19: /* P: bogus */
	case 18: /* U: bogus */
	case 17: /* I: bogus */
	case 16: /* bogus: V */
	case 15: /* bogus: B */
	case 14: /* bogus: F */
	case 13: /* bogus: P */
	case 12: /* bogus: U */
	case 11: /* bogus: I */
	case 10: /* stmt: V */
		kids[0] = p;
		break;
	case 119: /* V: LABELV */
	case 67: /* P: ADDRLP */
	case 66: /* P: ADDRFP */
	case 65: /* P: ADDRGP */
	case 64: /* V: RETV */
	case 26: /* U: CNSTU */
	case 25: /* P: CNSTP */
	case 24: /* I: CNSTI */
	case 23: /* F: CNSTF */
		break;
	case 117: /* V: NEU(U,U) */
	case 116: /* V: NEI(I,I) */
	case 115: /* V: NEF(F,F) */
	case 114: /* V: LTU(U,U) */
	case 113: /* V: LTI(I,I) */
	case 112: /* V: LTF(F,F) */
	case 111: /* V: LEU(U,U) */
	case 110: /* V: LEI(I,I) */
	case 109: /* V: LEF(F,F) */
	case 108: /* V: GTU(U,U) */
	case 107: /* V: GTI(I,I) */
	case 106: /* V: GTF(F,F) */
	case 105: /* V: GEU(U,U) */
	case 104: /* V: GEI(I,I) */
	case 103: /* V: GEF(F,F) */
	case 102: /* V: EQU(U,U) */
	case 101: /* V: EQI(I,I) */
	case 100: /* V: EQF(F,F) */
	case 99: /* U: MULU(U,U) */
	case 98: /* I: MULI(I,I) */
	case 97: /* F: MULF(F,F) */
	case 96: /* U: DIVU(U,U) */
	case 95: /* I: DIVI(I,I) */
	case 94: /* F: DIVF(F,F) */
	case 93: /* I: BXORI(I,I) */
	case 92: /* U: BXORU(U,U) */
	case 91: /* U: BORU(U,U) */
	case 90: /* I: BORI(I,I) */
	case 87: /* I: BANDI(I,I) */
	case 86: /* U: BANDU(U,U) */
	case 85: /* U: RSHU(U,I) */
	case 84: /* I: RSHI(I,I) */
	case 83: /* U: MODU(U,U) */
	case 82: /* I: MODI(I,I) */
	case 81: /* U: LSHU(U,I) */
	case 80: /* I: LSHI(I,I) */
	case 79: /* U: SUBU(U,U) */
	case 78: /* P: SUBP(P,U) */
	case 77: /* P: SUBP(P,I) */
	case 76: /* I: SUBI(I,I) */
	case 75: /* F: SUBF(F,F) */
	case 74: /* U: ADDU(U,U) */
	case 73: /* P: ADDP(P,U) */
	case 72: /* P: ADDP(U,P) */
	case 71: /* P: ADDP(I,P) */
	case 70: /* P: ADDP(P,I) */
	case 69: /* I: ADDI(I,I) */
	case 68: /* F: ADDF(F,F) */
	case 54: /* V: CALLB(P,P) */
	case 36: /* V: ASGNP(P,P) */
	case 35: /* V: ASGNU(P,U) */
	case 34: /* V: ASGNI(P,I) */
	case 33: /* V: ASGNF(P,F) */
	case 32: /* V: ASGNB(P,B) */
		kids[0] = LEFT_CHILD(p);
		kids[1] = RIGHT_CHILD(p);
		break;
	default:
		fatal("_kids", "Bad rule number %d\n", eruleno);
	}
}


static void reduce(NODEPTR_TYPE p, int goalnt) {
	int i, sz = opsize(p->op), rulenumber = _rule(p->x.state, goalnt);
	short *nts = _nts[rulenumber];
	NODEPTR_TYPE kids[10];

	assert(rulenumber);
	_kids(p, rulenumber, kids);
	for (i = 0; nts[i]; i++)
		reduce(kids[i], nts[i]);
	switch (optype(p->op)) {
#define xx(ty) if (sz == ty->size) return
	case I:
	case U:
		xx(chartype);
		xx(shorttype);
		xx(inttype);
		xx(longtype);
		xx(longlong);
		break;
	case F:
		xx(floattype);
		xx(doubletype);
		xx(longdouble);
		break;
	case P:
		xx(voidptype);
		xx(funcptype);
		break;
	case V:
	case B: if (sz == 0) return;
#undef xx
	}
	printdag(p, 2);
	assert(0);
}

void check(Node p) {
	struct _state { short cost[1]; };

	_label(p);
	if (((struct _state *)p->x.state)->cost[1] > 0) {
		printdag(p, 2);
		assert(0);
	}
	reduce(p, 1);
}
