| /* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */ | 
 | #line 1 "msp430-decode.opc" | 
 | /* -*- c -*- */ | 
 | /* Copyright (C) 2013-2025 Free Software Foundation, Inc. | 
 |    Contributed by Red Hat. | 
 |    Written by DJ Delorie. | 
 |  | 
 |    This file is part of the GNU opcodes library. | 
 |  | 
 |    This library is free software; you can redistribute it and/or modify | 
 |    it under the terms of the GNU General Public License as published by | 
 |    the Free Software Foundation; either version 3, or (at your option) | 
 |    any later version. | 
 |  | 
 |    It is distributed in the hope that it will be useful, but WITHOUT | 
 |    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | 
 |    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public | 
 |    License for more details. | 
 |  | 
 |    You should have received a copy of the GNU General Public License | 
 |    along with this program; if not, write to the Free Software | 
 |    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, | 
 |    MA 02110-1301, USA.  */ | 
 |  | 
 | #include "sysdep.h" | 
 | #include <stdio.h> | 
 | #include <stdlib.h> | 
 | #include <string.h> | 
 | #include "bfd.h" | 
 | #include "opintl.h" | 
 | #include "opcode/msp430-decode.h" | 
 |  | 
 | static int trace = 0; | 
 |  | 
 | typedef struct | 
 | { | 
 |   MSP430_Opcode_Decoded *msp430; | 
 |   int (*getbyte)(void *); | 
 |   void *ptr; | 
 |   unsigned char *op; | 
 |   int op_ptr; | 
 |   int pc; | 
 | } LocalData; | 
 |  | 
 | #define AU ATTRIBUTE_UNUSED | 
 | #define GETBYTE() getbyte_swapped (ld) | 
 | #define B ((unsigned long) GETBYTE ()) | 
 |  | 
 | static int | 
 | getbyte_swapped (LocalData *ld) | 
 | { | 
 |   int b; | 
 |  | 
 |   if (ld->op_ptr == ld->msp430->n_bytes) | 
 |     { | 
 |       do | 
 | 	{ | 
 | 	  b = ld->getbyte (ld->ptr); | 
 | 	  ld->op [(ld->msp430->n_bytes++)^1] = b; | 
 | 	} | 
 |       while (ld->msp430->n_bytes & 1); | 
 |     } | 
 |   return ld->op[ld->op_ptr++]; | 
 | } | 
 |  | 
 | #define ID(x)		msp430->id = x | 
 |  | 
 | #define OP(n, t, r, a) (msp430->op[n].type = t,	     \ | 
 | 		        msp430->op[n].reg = r,	     \ | 
 | 		        msp430->op[n].addend = a) | 
 |  | 
 | #define OPX(n, t, r1, r2, a)	 \ | 
 |   (msp430->op[n].type = t,	 \ | 
 |    msp430->op[n].reg = r1,	 \ | 
 |    msp430->op[n].reg2 = r2,	 \ | 
 |    msp430->op[n].addend = a) | 
 |  | 
 | #define SYNTAX(x)	msp430->syntax = x | 
 | #define UNSUPPORTED()	msp430->syntax = "*unknown*" | 
 |  | 
 | #define DC(c)		OP (0, MSP430_Operand_Immediate, 0, c) | 
 | #define DR(r)		OP (0, MSP430_Operand_Register, r, 0) | 
 | #define DM(r, a)	OP (0, MSP430_Operand_Indirect, r, a) | 
 | #define DA(a)		OP (0, MSP430_Operand_Indirect, MSR_None, a) | 
 | #define AD(r, ad)	encode_ad (r, ad, ld, 0) | 
 | #define ADX(r, ad, x)	encode_ad (r, ad, ld, x) | 
 |  | 
 | #define SC(c)		OP (1, MSP430_Operand_Immediate, 0, c) | 
 | #define SR(r)		OP (1, MSP430_Operand_Register, r, 0) | 
 | #define SM(r, a)	OP (1, MSP430_Operand_Indirect, r, a) | 
 | #define SA(a)		OP (1, MSP430_Operand_Indirect, MSR_None, a) | 
 | #define SI(r)		OP (1, MSP430_Operand_Indirect_Postinc, r, 0) | 
 | #define AS(r, as)	encode_as (r, as, ld, 0) | 
 | #define ASX(r, as, x)	encode_as (r, as, ld, x) | 
 |  | 
 | #define BW(x)		msp430->size = (x ? 8 : 16) | 
 | /* The last 20 is for SWPBX.Z and SXTX.A.  */ | 
 | #define ABW(a,x)	msp430->size = (a ? ((x ? 8 : 16)) : (x ? 20 : 20)) | 
 |  | 
 | #define IMMU(bytes)	immediate (bytes, 0, ld) | 
 | #define IMMS(bytes)	immediate (bytes, 1, ld) | 
 |  | 
 | /* Helper macros for known status bits settings.  */ | 
 | #define	F_____		msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0 | 
 | #define	F_VNZC		msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0x87 | 
 | #define	F_0NZC		msp430->flags_1 = 0; msp430->flags_0 = 0x80; msp430->flags_set = 0x07 | 
 |  | 
 |  | 
 | /* The chip is little-endian, but GETBYTE byte-swaps words because the | 
 |    decoder is based on 16-bit "words" so *this* logic is big-endian.  */ | 
 |  | 
 | static int | 
 | immediate (int bytes, int sign_extend, LocalData *ld) | 
 | { | 
 |   unsigned long i = 0; | 
 |  | 
 |   switch (bytes) | 
 |     { | 
 |     case 1: | 
 |       i |= B; | 
 |       if (sign_extend && (i & 0x80)) | 
 | 	i -= 0x100; | 
 |       break; | 
 |     case 2: | 
 |       i |= B << 8; | 
 |       i |= B; | 
 |       if (sign_extend && (i & 0x8000)) | 
 | 	i -= 0x10000; | 
 |       break; | 
 |     case 3: | 
 |       i |= B << 16; | 
 |       i |= B << 8; | 
 |       i |= B; | 
 |       if (sign_extend && (i & 0x800000)) | 
 | 	i -= 0x1000000; | 
 |       break; | 
 |     case 4: | 
 |       i |= B << 24; | 
 |       i |= B << 16; | 
 |       i |= B << 8; | 
 |       i |= B; | 
 |       if (sign_extend && (i & 0x80000000ULL)) | 
 | 	i -= 0x100000000ULL; | 
 |       break; | 
 |     default: | 
 |       opcodes_error_handler | 
 | 	(_("internal error: immediate() called with invalid byte count %d"), | 
 | 	   bytes); | 
 |       abort (); | 
 |     } | 
 |   return i; | 
 | } | 
 |  | 
 | /* | 
 | 		PC	SP	SR	CG | 
 |   As | 
 |   00	Rn	-	-	R2	#0 | 
 |   01	X(Rn)	Sym	-	X(abs)	#1 | 
 |   10	(Rn)	-	-	#4	#2 | 
 |   11	(Rn++)	#imm	-	#8	#-1 | 
 |  | 
 |   Ad | 
 |   0	Rn	-	-	-	- | 
 |   1	X(Rn)	Sym	-	X(abs)	-   */ | 
 |  | 
 | static void | 
 | encode_ad (int reg, int ad, LocalData *ld, int ext) | 
 | { | 
 |   MSP430_Opcode_Decoded *msp430 = ld->msp430; | 
 |  | 
 |   if (ad) | 
 |     { | 
 |       int x = IMMU(2) | (ext << 16); | 
 |       switch (reg) | 
 | 	{ | 
 | 	case 0: /* (PC) -> Symbolic.  */ | 
 | 	  DA (x + ld->pc + ld->op_ptr - 2); | 
 | 	  break; | 
 | 	case 2: /* (SR) -> Absolute.  */ | 
 | 	  DA (x); | 
 | 	  break; | 
 | 	default: | 
 | 	  DM (reg, x); | 
 | 	  break; | 
 | 	} | 
 |     } | 
 |   else | 
 |     { | 
 |       DR (reg); | 
 |     } | 
 | } | 
 |  | 
 | static void | 
 | encode_as (int reg, int as, LocalData *ld, int ext) | 
 | { | 
 |   MSP430_Opcode_Decoded *msp430 = ld->msp430; | 
 |   int x; | 
 |  | 
 |   switch (as) | 
 |     { | 
 |     case 0: | 
 |       switch (reg) | 
 | 	{ | 
 | 	case 3: | 
 | 	  SC (0); | 
 | 	  break; | 
 | 	default: | 
 | 	  SR (reg); | 
 | 	  break; | 
 | 	} | 
 |       break; | 
 |     case 1: | 
 |       switch (reg) | 
 | 	{ | 
 | 	case 0: /* PC -> Symbolic.  */ | 
 | 	  x = IMMU(2) | (ext << 16); | 
 | 	  SA (x + ld->pc + ld->op_ptr - 2); | 
 | 	  break; | 
 | 	case 2: /* SR -> Absolute.  */ | 
 | 	  x = IMMU(2) | (ext << 16); | 
 | 	  SA (x); | 
 | 	  break; | 
 | 	case 3: | 
 | 	  SC (1); | 
 | 	  break; | 
 | 	default: | 
 | 	  x = IMMU(2) | (ext << 16); | 
 | 	  SM (reg, x); | 
 | 	  break; | 
 | 	} | 
 |       break; | 
 |     case 2: | 
 |       switch (reg) | 
 | 	{ | 
 | 	case 2: | 
 | 	  SC (4); | 
 | 	  break; | 
 | 	case 3: | 
 | 	  SC (2); | 
 | 	  break; | 
 | 	case MSR_None: | 
 | 	  SA (0); | 
 | 	  break; | 
 | 	default: | 
 | 	  SM (reg, 0); | 
 | 	  break; | 
 | 	} | 
 |       break; | 
 |     case 3: | 
 |       switch (reg) | 
 | 	{ | 
 | 	case 0: | 
 | 	  { | 
 | 	    /* This fetch *is* the *PC++ that the opcode encodes :-)  */ | 
 | 	    x = IMMU(2) | (ext << 16); | 
 | 	    SC (x); | 
 | 	  } | 
 | 	  break; | 
 | 	case 2: | 
 | 	  SC (8); | 
 | 	  break; | 
 | 	case 3: | 
 | 	  SC (-1); | 
 | 	  break; | 
 | 	default: | 
 | 	  SI (reg); | 
 | 	  break; | 
 | 	} | 
 |       break; | 
 |     } | 
 | } | 
 |  | 
 | static void | 
 | encode_rep_zc (int srxt, int dsxt, LocalData *ld) | 
 | { | 
 |   MSP430_Opcode_Decoded *msp430 = ld->msp430; | 
 |  | 
 |   msp430->repeat_reg = srxt & 1; | 
 |   msp430->repeats = dsxt; | 
 |   msp430->zc = (srxt & 2) ? 1 : 0; | 
 | } | 
 |  | 
 | #define REPZC(s,d) encode_rep_zc (s, d, ld) | 
 |  | 
 | static int | 
 | dopc_to_id (int dopc) | 
 | { | 
 |   switch (dopc) | 
 |     { | 
 |     case 4: return MSO_mov; | 
 |     case 5: return MSO_add; | 
 |     case 6: return MSO_addc; | 
 |     case 7: return MSO_subc; | 
 |     case 8: return MSO_sub; | 
 |     case 9: return MSO_cmp; | 
 |     case 10: return MSO_dadd; | 
 |     case 11: return MSO_bit; | 
 |     case 12: return MSO_bic; | 
 |     case 13: return MSO_bis; | 
 |     case 14: return MSO_xor; | 
 |     case 15: return MSO_and; | 
 |     default: return MSO_unknown; | 
 |     } | 
 | } | 
 |  | 
 | static int | 
 | sopc_to_id (int sop, int c) | 
 | { | 
 |   switch (sop * 2 + c) | 
 |     { | 
 |     case 0: return MSO_rrc; | 
 |     case 1: return MSO_swpb; | 
 |     case 2: return MSO_rra; | 
 |     case 3: return MSO_sxt; | 
 |     case 4: return MSO_push; | 
 |     case 5: return MSO_call; | 
 |     case 6: return MSO_reti; | 
 |     default: return MSO_unknown; | 
 |     } | 
 | } | 
 |  | 
 | int | 
 | msp430_decode_opcode (unsigned long pc, | 
 | 		      MSP430_Opcode_Decoded *msp430, | 
 | 		      int (*getbyte)(void *), | 
 | 		      void *ptr) | 
 | { | 
 |   LocalData lds, *ld = &lds; | 
 |   unsigned char op_buf[20] = {0}; | 
 |   unsigned char *op = op_buf; | 
 |   int raddr; | 
 |   int al_bit; | 
 |   int srxt_bits, dsxt_bits; | 
 |  | 
 |   lds.msp430 = msp430; | 
 |   lds.getbyte = getbyte; | 
 |   lds.ptr = ptr; | 
 |   lds.op = op; | 
 |   lds.op_ptr = 0; | 
 |   lds.pc = pc; | 
 |  | 
 |   memset (msp430, 0, sizeof (*msp430)); | 
 |  | 
 |   /* These are overridden by an extension word.  */ | 
 |   al_bit = 1; | 
 |   srxt_bits = 0; | 
 |   dsxt_bits = 0; | 
 |  | 
 |  post_extension_word: | 
 |   ; | 
 |  | 
 |   /* 430X extention word.  */ | 
 |   GETBYTE (); | 
 |   switch (op[0] & 0xff) | 
 |   { | 
 |     case 0x00: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_1: | 
 |               { | 
 |                 /** 0000 srcr 0000 dstr		MOVA @%1, %0 */ | 
 | #line 440 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 440 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0000 dstr		MOVA @%1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA @%1, %0"); | 
 | #line 440 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SM (srcr, 0); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x10: | 
 |             op_semantics_2: | 
 |               { | 
 |                 /** 0000 srcr 0001 dstr		MOVA @%1+, %0 */ | 
 | #line 445 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 445 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0001 dstr		MOVA @%1+, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA @%1+, %0"); | 
 | #line 445 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SI (srcr); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x20: | 
 |             op_semantics_3: | 
 |               { | 
 |                 /** 0000 srcr 0010 dstr		MOVA &%1, %0 */ | 
 | #line 450 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 450 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0010 dstr		MOVA &%1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA &%1, %0"); | 
 | #line 450 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x30: | 
 |             op_semantics_4: | 
 |               { | 
 |                 /** 0000 srcr 0011 dstr		MOVA %1, %0 */ | 
 | #line 455 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 455 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0011 dstr		MOVA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA %1, %0"); | 
 | #line 455 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             op_semantics_5: | 
 |               { | 
 |                 /** 0000 bt00 010w dstr		RRCM.A %c, %0 */ | 
 | #line 522 "msp430-decode.opc" | 
 |                 int bt AU = (op[0] >> 2) & 0x03; | 
 | #line 522 "msp430-decode.opc" | 
 |                 int w AU = (op[1] >> 4) & 0x01; | 
 | #line 522 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 bt00 010w dstr		RRCM.A %c, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  bt = 0x%x,", bt); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("RRCM.A %c, %0"); | 
 | #line 522 "msp430-decode.opc" | 
 |                 ID (MSO_rrc); DR (dstr); SR (dstr); | 
 |                 msp430->repeats = bt; | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_0NZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x60: | 
 |             op_semantics_6: | 
 |               { | 
 |                 /** 0000 srcr 0110 dstr		MOVA %1, &%0 */ | 
 | #line 460 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 460 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0110 dstr		MOVA %1, &%0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA %1, &%0"); | 
 | #line 460 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2)); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x70: | 
 |             op_semantics_7: | 
 |               { | 
 |                 /** 0000 srcr 0111 dstr		MOVA %1, &%0 */ | 
 | #line 465 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 465 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 0111 dstr		MOVA %1, &%0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA %1, &%0"); | 
 | #line 465 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2)); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x80: | 
 |             op_semantics_8: | 
 |               { | 
 |                 /** 0000 srcr 1000 dstr		MOVA %1, %0 */ | 
 | #line 470 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 470 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1000 dstr		MOVA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA %1, %0"); | 
 | #line 470 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x90: | 
 |             op_semantics_9: | 
 |               { | 
 |                 /** 0000 srcr 1001 dstr		CMPA %1, %0 */ | 
 | #line 475 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 475 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1001 dstr		CMPA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("CMPA %1, %0"); | 
 | #line 475 "msp430-decode.opc" | 
 |                 ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xa0: | 
 |             op_semantics_10: | 
 |               { | 
 |                 /** 0000 srcr 1010 dstr		ADDA %1, %0 */ | 
 | #line 481 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 481 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1010 dstr		ADDA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("ADDA %1, %0"); | 
 | #line 481 "msp430-decode.opc" | 
 |                 ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xb0: | 
 |             op_semantics_11: | 
 |               { | 
 |                 /** 0000 srcr 1011 dstr		SUBA %1, %0 */ | 
 | #line 487 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 487 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1011 dstr		SUBA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("SUBA %1, %0"); | 
 | #line 487 "msp430-decode.opc" | 
 |                 ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xc0: | 
 |             op_semantics_12: | 
 |               { | 
 |                 /** 0000 srcr 1100 dstr		MOVA %1, %0 */ | 
 | #line 499 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 499 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1100 dstr		MOVA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("MOVA %1, %0"); | 
 | #line 499 "msp430-decode.opc" | 
 |                 ID (MSO_mov); SR (srcr); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xd0: | 
 |             op_semantics_13: | 
 |               { | 
 |                 /** 0000 srcr 1101 dstr		CMPA %1, %0 */ | 
 | #line 504 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 504 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1101 dstr		CMPA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("CMPA %1, %0"); | 
 | #line 504 "msp430-decode.opc" | 
 |                 ID (MSO_cmp); SR (srcr); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xe0: | 
 |             op_semantics_14: | 
 |               { | 
 |                 /** 0000 srcr 1110 dstr		ADDA %1, %0 */ | 
 | #line 510 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 510 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1110 dstr		ADDA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("ADDA %1, %0"); | 
 | #line 510 "msp430-decode.opc" | 
 |                 ID (MSO_add); SR (srcr); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xf0: | 
 |             op_semantics_15: | 
 |               { | 
 |                 /** 0000 srcr 1111 dstr		SUBA %1, %0 */ | 
 | #line 516 "msp430-decode.opc" | 
 |                 int srcr AU = op[0] & 0x0f; | 
 | #line 516 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 srcr 1111 dstr		SUBA %1, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srcr = 0x%x,", srcr); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("SUBA %1, %0"); | 
 | #line 516 "msp430-decode.opc" | 
 |                 ID (MSO_sub); SR (srcr); DR (dstr); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_VNZC; | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x01: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             op_semantics_16: | 
 |               { | 
 |                 /** 0000 bt01 010w dstr		RRAM.A %c, %0 */ | 
 | #line 529 "msp430-decode.opc" | 
 |                 int bt AU = (op[0] >> 2) & 0x03; | 
 | #line 529 "msp430-decode.opc" | 
 |                 int w AU = (op[1] >> 4) & 0x01; | 
 | #line 529 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 bt01 010w dstr		RRAM.A %c, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  bt = 0x%x,", bt); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("RRAM.A %c, %0"); | 
 | #line 529 "msp430-decode.opc" | 
 |                 ID (MSO_rra); DR (dstr); SR (dstr); | 
 |                 msp430->repeats = bt; | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_0NZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x02: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             op_semantics_17: | 
 |               { | 
 |                 /** 0000 bt10 010w dstr		RLAM.A %c, %0 */ | 
 | #line 536 "msp430-decode.opc" | 
 |                 int bt AU = (op[0] >> 2) & 0x03; | 
 | #line 536 "msp430-decode.opc" | 
 |                 int w AU = (op[1] >> 4) & 0x01; | 
 | #line 536 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 bt10 010w dstr		RLAM.A %c, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  bt = 0x%x,", bt); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("RLAM.A %c, %0"); | 
 | #line 536 "msp430-decode.opc" | 
 |                 ID (MSO_add); DR (dstr); SR (dstr); | 
 |                 msp430->repeats = bt; | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_0NZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x03: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             op_semantics_18: | 
 |               { | 
 |                 /** 0000 bt11 010w dstr		RRUM.A %c, %0 */ | 
 | #line 543 "msp430-decode.opc" | 
 |                 int bt AU = (op[0] >> 2) & 0x03; | 
 | #line 543 "msp430-decode.opc" | 
 |                 int w AU = (op[1] >> 4) & 0x01; | 
 | #line 543 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0000 bt11 010w dstr		RRUM.A %c, %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  bt = 0x%x,", bt); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("RRUM.A %c, %0"); | 
 | #line 543 "msp430-decode.opc" | 
 |                 ID (MSO_rru); DR (dstr); SR (dstr); | 
 |                 msp430->repeats = bt; | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->ofs_430x = 1; | 
 |                 F_0NZC; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x04: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_5; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x05: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_16; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x06: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_17; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x07: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_18; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x08: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_5; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x09: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_16; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_17; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_18; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_5; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_16; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_17; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x0f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xf0) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_1; | 
 |             break; | 
 |           case 0x10: | 
 |             goto op_semantics_2; | 
 |             break; | 
 |           case 0x20: | 
 |             goto op_semantics_3; | 
 |             break; | 
 |           case 0x30: | 
 |             goto op_semantics_4; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x50: | 
 |             goto op_semantics_18; | 
 |             break; | 
 |           case 0x60: | 
 |             goto op_semantics_6; | 
 |             break; | 
 |           case 0x70: | 
 |             goto op_semantics_7; | 
 |             break; | 
 |           case 0x80: | 
 |             goto op_semantics_8; | 
 |             break; | 
 |           case 0x90: | 
 |             goto op_semantics_9; | 
 |             break; | 
 |           case 0xa0: | 
 |             goto op_semantics_10; | 
 |             break; | 
 |           case 0xb0: | 
 |             goto op_semantics_11; | 
 |             break; | 
 |           case 0xc0: | 
 |             goto op_semantics_12; | 
 |             break; | 
 |           case 0xd0: | 
 |             goto op_semantics_13; | 
 |             break; | 
 |           case 0xe0: | 
 |             goto op_semantics_14; | 
 |             break; | 
 |           case 0xf0: | 
 |             goto op_semantics_15; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x10: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_19: | 
 |               { | 
 |                 /** 0001 00so c b ad dreg	%S%b	%1				*/ | 
 | #line 396 "msp430-decode.opc" | 
 |                 int so AU = op[0] & 0x03; | 
 | #line 396 "msp430-decode.opc" | 
 |                 int c AU = (op[1] >> 7) & 0x01; | 
 | #line 396 "msp430-decode.opc" | 
 |                 int b AU = (op[1] >> 6) & 0x01; | 
 | #line 396 "msp430-decode.opc" | 
 |                 int ad AU = (op[1] >> 4) & 0x03; | 
 | #line 396 "msp430-decode.opc" | 
 |                 int dreg AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 00so c b ad dreg	%S%b	%1				*/", | 
 |                            op[0], op[1]); | 
 |                     printf ("  so = 0x%x,", so); | 
 |                     printf ("  c = 0x%x,", c); | 
 |                     printf ("  b = 0x%x,", b); | 
 |                     printf ("  ad = 0x%x,", ad); | 
 |                     printf ("  dreg = 0x%x\n", dreg); | 
 |                   } | 
 |                 SYNTAX("%S%b	%1"); | 
 | #line 396 "msp430-decode.opc" | 
 |  | 
 |                 ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b); | 
 |  | 
 |                 if (ad == 0) | 
 |                   REPZC (srxt_bits, dsxt_bits); | 
 |  | 
 |                 /* The helper functions encode for source, but it's | 
 |                    both source and dest, with a few documented exceptions.  */ | 
 |                 msp430->op[0] = msp430->op[1]; | 
 |  | 
 |                 /* RETI ignores the operand.  */ | 
 |                 if (msp430->id == MSO_reti) | 
 |                   msp430->syntax = "%S"; | 
 |  | 
 |                 switch (msp430->id) | 
 |                   { | 
 |                   case MSO_rrc:	F_VNZC; break; | 
 |                   case MSO_swpb:	F_____; break; | 
 |                   case MSO_rra:	F_0NZC; break; | 
 |                   case MSO_sxt:	F_0NZC; break; | 
 |                   case MSO_push:	F_____; break; | 
 |                   case MSO_call:	F_____; break; | 
 |                   case MSO_reti:	F_VNZC; break; | 
 |                   default: break; | 
 |                   } | 
 |  | 
 |                 /* 20xx 0010 0000 ---- ---- | 
 |                    3cxx 0011 1100 ---- ---- | 
 |                         001j mp-- ---- ----.  */ | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x11: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_19; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x12: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_19; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x13: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0xff) | 
 |         { | 
 |           case 0x00: | 
 |               { | 
 |                 /** 0001 0011 0000 0000		RETI */ | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 0011 0000 0000		RETI */", | 
 |                            op[0], op[1]); | 
 |                   } | 
 |                 SYNTAX("RETI"); | 
 | #line 550 "msp430-decode.opc" | 
 |                 ID (MSO_reti); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x01: | 
 |           case 0x02: | 
 |           case 0x03: | 
 |           case 0x04: | 
 |           case 0x05: | 
 |           case 0x06: | 
 |           case 0x07: | 
 |           case 0x08: | 
 |           case 0x09: | 
 |           case 0x0a: | 
 |           case 0x0b: | 
 |           case 0x0c: | 
 |           case 0x0d: | 
 |           case 0x0e: | 
 |           case 0x0f: | 
 |           case 0x10: | 
 |           case 0x11: | 
 |           case 0x12: | 
 |           case 0x13: | 
 |           case 0x14: | 
 |           case 0x15: | 
 |           case 0x16: | 
 |           case 0x17: | 
 |           case 0x18: | 
 |           case 0x19: | 
 |           case 0x1a: | 
 |           case 0x1b: | 
 |           case 0x1c: | 
 |           case 0x1d: | 
 |           case 0x1e: | 
 |           case 0x1f: | 
 |           case 0x20: | 
 |           case 0x21: | 
 |           case 0x22: | 
 |           case 0x23: | 
 |           case 0x24: | 
 |           case 0x25: | 
 |           case 0x26: | 
 |           case 0x27: | 
 |           case 0x28: | 
 |           case 0x29: | 
 |           case 0x2a: | 
 |           case 0x2b: | 
 |           case 0x2c: | 
 |           case 0x2d: | 
 |           case 0x2e: | 
 |           case 0x2f: | 
 |           case 0x30: | 
 |           case 0x31: | 
 |           case 0x32: | 
 |           case 0x33: | 
 |           case 0x34: | 
 |           case 0x35: | 
 |           case 0x36: | 
 |           case 0x37: | 
 |           case 0x38: | 
 |           case 0x39: | 
 |           case 0x3a: | 
 |           case 0x3b: | 
 |           case 0x3c: | 
 |           case 0x3d: | 
 |           case 0x3e: | 
 |           case 0x3f: | 
 |           case 0xa0: | 
 |           case 0xa1: | 
 |           case 0xa2: | 
 |           case 0xa3: | 
 |           case 0xa4: | 
 |           case 0xa5: | 
 |           case 0xa6: | 
 |           case 0xa7: | 
 |           case 0xa8: | 
 |           case 0xa9: | 
 |           case 0xaa: | 
 |           case 0xab: | 
 |           case 0xac: | 
 |           case 0xad: | 
 |           case 0xae: | 
 |           case 0xaf: | 
 |           case 0xc0: | 
 |           case 0xc1: | 
 |           case 0xc2: | 
 |           case 0xc3: | 
 |           case 0xc4: | 
 |           case 0xc5: | 
 |           case 0xc6: | 
 |           case 0xc7: | 
 |           case 0xc8: | 
 |           case 0xc9: | 
 |           case 0xca: | 
 |           case 0xcb: | 
 |           case 0xcc: | 
 |           case 0xcd: | 
 |           case 0xce: | 
 |           case 0xcf: | 
 |           case 0xd0: | 
 |           case 0xd1: | 
 |           case 0xd2: | 
 |           case 0xd3: | 
 |           case 0xd4: | 
 |           case 0xd5: | 
 |           case 0xd6: | 
 |           case 0xd7: | 
 |           case 0xd8: | 
 |           case 0xd9: | 
 |           case 0xda: | 
 |           case 0xdb: | 
 |           case 0xdc: | 
 |           case 0xdd: | 
 |           case 0xde: | 
 |           case 0xdf: | 
 |           case 0xe0: | 
 |           case 0xe1: | 
 |           case 0xe2: | 
 |           case 0xe3: | 
 |           case 0xe4: | 
 |           case 0xe5: | 
 |           case 0xe6: | 
 |           case 0xe7: | 
 |           case 0xe8: | 
 |           case 0xe9: | 
 |           case 0xea: | 
 |           case 0xeb: | 
 |           case 0xec: | 
 |           case 0xed: | 
 |           case 0xee: | 
 |           case 0xef: | 
 |           case 0xf0: | 
 |           case 0xf1: | 
 |           case 0xf2: | 
 |           case 0xf3: | 
 |           case 0xf4: | 
 |           case 0xf5: | 
 |           case 0xf6: | 
 |           case 0xf7: | 
 |           case 0xf8: | 
 |           case 0xf9: | 
 |           case 0xfa: | 
 |           case 0xfb: | 
 |           case 0xfc: | 
 |           case 0xfd: | 
 |           case 0xfe: | 
 |           case 0xff: | 
 |             goto op_semantics_19; | 
 |             break; | 
 |           case 0x40: | 
 |           case 0x41: | 
 |           case 0x42: | 
 |           case 0x43: | 
 |           case 0x44: | 
 |           case 0x45: | 
 |           case 0x46: | 
 |           case 0x47: | 
 |           case 0x48: | 
 |           case 0x49: | 
 |           case 0x4a: | 
 |           case 0x4b: | 
 |           case 0x4c: | 
 |           case 0x4d: | 
 |           case 0x4e: | 
 |           case 0x4f: | 
 |           case 0x50: | 
 |           case 0x51: | 
 |           case 0x52: | 
 |           case 0x53: | 
 |           case 0x54: | 
 |           case 0x55: | 
 |           case 0x56: | 
 |           case 0x57: | 
 |           case 0x58: | 
 |           case 0x59: | 
 |           case 0x5a: | 
 |           case 0x5b: | 
 |           case 0x5c: | 
 |           case 0x5d: | 
 |           case 0x5e: | 
 |           case 0x5f: | 
 |           case 0x60: | 
 |           case 0x61: | 
 |           case 0x62: | 
 |           case 0x63: | 
 |           case 0x64: | 
 |           case 0x65: | 
 |           case 0x66: | 
 |           case 0x67: | 
 |           case 0x68: | 
 |           case 0x69: | 
 |           case 0x6a: | 
 |           case 0x6b: | 
 |           case 0x6c: | 
 |           case 0x6d: | 
 |           case 0x6e: | 
 |           case 0x6f: | 
 |           case 0x70: | 
 |           case 0x71: | 
 |           case 0x72: | 
 |           case 0x73: | 
 |           case 0x74: | 
 |           case 0x75: | 
 |           case 0x76: | 
 |           case 0x77: | 
 |           case 0x78: | 
 |           case 0x79: | 
 |           case 0x7a: | 
 |           case 0x7b: | 
 |           case 0x7c: | 
 |           case 0x7d: | 
 |           case 0x7e: | 
 |           case 0x7f: | 
 |               { | 
 |                 /** 0001 0011 01as dstr		CALLA %0 */ | 
 | #line 555 "msp430-decode.opc" | 
 |                 int as AU = (op[1] >> 4) & 0x03; | 
 | #line 555 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 0011 01as dstr		CALLA %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  as = 0x%x,", as); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("CALLA %0"); | 
 | #line 555 "msp430-decode.opc" | 
 |                 ID (MSO_call); AS (dstr, as); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x80: | 
 |           case 0x81: | 
 |           case 0x82: | 
 |           case 0x83: | 
 |           case 0x84: | 
 |           case 0x85: | 
 |           case 0x86: | 
 |           case 0x87: | 
 |           case 0x88: | 
 |           case 0x89: | 
 |           case 0x8a: | 
 |           case 0x8b: | 
 |           case 0x8c: | 
 |           case 0x8d: | 
 |           case 0x8e: | 
 |           case 0x8f: | 
 |               { | 
 |                 /** 0001 0011 1000 extb		CALLA %0 */ | 
 | #line 560 "msp430-decode.opc" | 
 |                 int extb AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 0011 1000 extb		CALLA %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  extb = 0x%x\n", extb); | 
 |                   } | 
 |                 SYNTAX("CALLA %0"); | 
 | #line 560 "msp430-decode.opc" | 
 |                 ID (MSO_call); SA (IMMU(2) | (extb << 16)); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0x90: | 
 |           case 0x91: | 
 |           case 0x92: | 
 |           case 0x93: | 
 |           case 0x94: | 
 |           case 0x95: | 
 |           case 0x96: | 
 |           case 0x97: | 
 |           case 0x98: | 
 |           case 0x99: | 
 |           case 0x9a: | 
 |           case 0x9b: | 
 |           case 0x9c: | 
 |           case 0x9d: | 
 |           case 0x9e: | 
 |           case 0x9f: | 
 |               { | 
 |                 /** 0001 0011 1001 extb		CALLA %0 */ | 
 | #line 565 "msp430-decode.opc" | 
 |                 int extb AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 0011 1001 extb		CALLA %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  extb = 0x%x\n", extb); | 
 |                   } | 
 |                 SYNTAX("CALLA %0"); | 
 | #line 565 "msp430-decode.opc" | 
 |                 raddr = IMMU(2) | (extb << 16); | 
 |                 if (raddr & 0x80000) | 
 |                   raddr -= 0x100000; | 
 |                 ID (MSO_call); SA (pc + raddr + msp430->n_bytes); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |           case 0xb0: | 
 |           case 0xb1: | 
 |           case 0xb2: | 
 |           case 0xb3: | 
 |           case 0xb4: | 
 |           case 0xb5: | 
 |           case 0xb6: | 
 |           case 0xb7: | 
 |           case 0xb8: | 
 |           case 0xb9: | 
 |           case 0xba: | 
 |           case 0xbb: | 
 |           case 0xbc: | 
 |           case 0xbd: | 
 |           case 0xbe: | 
 |           case 0xbf: | 
 |               { | 
 |                 /** 0001 0011 1011 extb		CALLA %0 */ | 
 | #line 573 "msp430-decode.opc" | 
 |                 int extb AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 0011 1011 extb		CALLA %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  extb = 0x%x\n", extb); | 
 |                   } | 
 |                 SYNTAX("CALLA %0"); | 
 | #line 573 "msp430-decode.opc" | 
 |                 ID (MSO_call); SC (IMMU(2) | (extb << 16)); | 
 |                 msp430->size = 20; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x14: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_20: | 
 |               { | 
 |                 /** 0001 010w bits srcr		PUSHM.A %0 */ | 
 | #line 578 "msp430-decode.opc" | 
 |                 int w AU = op[0] & 0x01; | 
 | #line 578 "msp430-decode.opc" | 
 |                 int bits AU = (op[1] >> 4) & 0x0f; | 
 | #line 578 "msp430-decode.opc" | 
 |                 int srcr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 010w bits srcr		PUSHM.A %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  bits = 0x%x,", bits); | 
 |                     printf ("  srcr = 0x%x\n", srcr); | 
 |                   } | 
 |                 SYNTAX("PUSHM.A %0"); | 
 | #line 578 "msp430-decode.opc" | 
 |                 ID (MSO_push); SR (srcr); | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->repeats = bits; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x15: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_20; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x16: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_21: | 
 |               { | 
 |                 /** 0001 011w bits dstr		POPM.A %0 */ | 
 | #line 584 "msp430-decode.opc" | 
 |                 int w AU = op[0] & 0x01; | 
 | #line 584 "msp430-decode.opc" | 
 |                 int bits AU = (op[1] >> 4) & 0x0f; | 
 | #line 584 "msp430-decode.opc" | 
 |                 int dstr AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 011w bits dstr		POPM.A %0 */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  w = 0x%x,", w); | 
 |                     printf ("  bits = 0x%x,", bits); | 
 |                     printf ("  dstr = 0x%x\n", dstr); | 
 |                   } | 
 |                 SYNTAX("POPM.A %0"); | 
 | #line 584 "msp430-decode.opc" | 
 |                 ID (MSO_pop); DR (dstr); | 
 |                 msp430->size = w ? 16 : 20; | 
 |                 msp430->repeats = bits; | 
 |                 msp430->ofs_430x = 1; | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x17: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_21; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x18: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_22: | 
 |               { | 
 |                 /** 0001 1srx t l 00 dsxt 	430x */ | 
 | #line 352 "msp430-decode.opc" | 
 |                 int srx AU = op[0] & 0x07; | 
 | #line 352 "msp430-decode.opc" | 
 |                 int t AU = (op[1] >> 7) & 0x01; | 
 | #line 352 "msp430-decode.opc" | 
 |                 int l AU = (op[1] >> 6) & 0x01; | 
 | #line 352 "msp430-decode.opc" | 
 |                 int dsxt AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 0001 1srx t l 00 dsxt 	430x */", | 
 |                            op[0], op[1]); | 
 |                     printf ("  srx = 0x%x,", srx); | 
 |                     printf ("  t = 0x%x,", t); | 
 |                     printf ("  l = 0x%x,", l); | 
 |                     printf ("  dsxt = 0x%x\n", dsxt); | 
 |                   } | 
 |                 SYNTAX("430x"); | 
 | #line 352 "msp430-decode.opc" | 
 |  | 
 |                 al_bit = l; | 
 |                 srxt_bits = srx * 2 + t; | 
 |                 dsxt_bits = dsxt; | 
 |                 op = op_buf + lds.op_ptr; | 
 |                 msp430->ofs_430x = 1; | 
 |                 goto post_extension_word; | 
 |  | 
 |               /* double-op insns: | 
 |                  opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4 | 
 |  | 
 |                  single-op insn: | 
 |                  opcode:9 BW:1 Ad:2 DSreg:4 | 
 |  | 
 |                  jumps: | 
 |                  opcode:3 Cond:3  pcrel:10. */ | 
 |  | 
 |               /* Double-Operand "opcode" fields.  */ | 
 |  | 
 |               } | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x19: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x1f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x30) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_22; | 
 |             break; | 
 |           default: UNSUPPORTED(); break; | 
 |         } | 
 |       break; | 
 |     case 0x20: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_23: | 
 |               { | 
 |                 /** 001jmp aa addrlsbs		%J	%1				*/ | 
 | #line 426 "msp430-decode.opc" | 
 |                 int jmp AU = (op[0] >> 2) & 0x07; | 
 | #line 426 "msp430-decode.opc" | 
 |                 int aa AU = op[0] & 0x03; | 
 | #line 426 "msp430-decode.opc" | 
 |                 int addrlsbs AU = op[1]; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** 001jmp aa addrlsbs		%J	%1				*/", | 
 |                            op[0], op[1]); | 
 |                     printf ("  jmp = 0x%x,", jmp); | 
 |                     printf ("  aa = 0x%x,", aa); | 
 |                     printf ("  addrlsbs = 0x%x\n", addrlsbs); | 
 |                   } | 
 |                 SYNTAX("%J	%1"); | 
 | #line 426 "msp430-decode.opc" | 
 |  | 
 |                 raddr = (aa << 9) | (addrlsbs << 1); | 
 |                 if (raddr & 0x400) | 
 |                   raddr = raddr - 0x800; | 
 |                 /* This is a pc-relative jump, but we don't use SM because that | 
 |                    would load the target address from the memory at X(PC), not use | 
 |                    PC+X *as* the address.  So we use SC to use the address, not the | 
 |                    data at that address.  */ | 
 |                 ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes); | 
 |                 msp430->cond = jmp; | 
 |  | 
 |                 /* Extended instructions.  */ | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x21: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x22: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x23: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x24: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x25: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x26: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x27: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x28: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x29: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x2f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x30: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x31: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x32: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x33: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x34: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x35: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x36: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x37: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x38: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x39: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x3f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_23; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x40: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             op_semantics_24: | 
 |               { | 
 |                 /** dopc sreg a b as dreg	%D%b	%1,%0				*/ | 
 | #line 373 "msp430-decode.opc" | 
 |                 int dopc AU = (op[0] >> 4) & 0x0f; | 
 | #line 373 "msp430-decode.opc" | 
 |                 int sreg AU = op[0] & 0x0f; | 
 | #line 373 "msp430-decode.opc" | 
 |                 int a AU = (op[1] >> 7) & 0x01; | 
 | #line 373 "msp430-decode.opc" | 
 |                 int b AU = (op[1] >> 6) & 0x01; | 
 | #line 373 "msp430-decode.opc" | 
 |                 int as AU = (op[1] >> 4) & 0x03; | 
 | #line 373 "msp430-decode.opc" | 
 |                 int dreg AU = op[1] & 0x0f; | 
 |                 if (trace) | 
 |                   { | 
 |                     printf ("\033[33m%s\033[0m  %02x %02x\n", | 
 |                            "/** dopc sreg a b as dreg	%D%b	%1,%0				*/", | 
 |                            op[0], op[1]); | 
 |                     printf ("  dopc = 0x%x,", dopc); | 
 |                     printf ("  sreg = 0x%x,", sreg); | 
 |                     printf ("  a = 0x%x,", a); | 
 |                     printf ("  b = 0x%x,", b); | 
 |                     printf ("  as = 0x%x,", as); | 
 |                     printf ("  dreg = 0x%x\n", dreg); | 
 |                   } | 
 |                 SYNTAX("%D%b	%1,%0"); | 
 | #line 373 "msp430-decode.opc" | 
 |  | 
 |                 ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b); | 
 |                 if (a == 0 && as == 0) | 
 |                   REPZC (srxt_bits, dsxt_bits); | 
 |  | 
 |                 switch (msp430->id) | 
 |                   { | 
 |                   case MSO_mov:	F_____; break; | 
 |                   case MSO_add:	F_VNZC; break; | 
 |                   case MSO_addc:	F_VNZC; break; | 
 |                   case MSO_subc:	F_VNZC; break; | 
 |                   case MSO_sub:	F_VNZC; break; | 
 |                   case MSO_cmp:	F_VNZC; break; | 
 |                   case MSO_dadd:	F_VNZC; break; | 
 |                   case MSO_bit:	F_0NZC; break; | 
 |                   case MSO_bic:	F_____; break; | 
 |                   case MSO_bis:	F_____; break; | 
 |                   case MSO_xor:	F_VNZC; break; | 
 |                   case MSO_and:	F_0NZC; break; | 
 |                   default: break; | 
 |                   } | 
 |  | 
 |               } | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x41: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x42: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x43: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x44: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x45: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x46: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x47: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x48: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x49: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x4f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x50: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x51: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x52: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x53: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x54: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x55: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x56: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x57: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x58: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x59: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x5f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x60: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x61: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x62: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x63: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x64: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x65: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x66: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x67: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x68: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x69: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x6f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x70: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x71: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x72: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x73: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x74: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x75: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x76: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x77: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x78: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x79: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x7f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x80: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x81: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x82: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x83: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x84: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x85: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x86: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x87: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x88: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x89: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x8f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x90: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x91: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x92: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x93: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x94: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x95: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x96: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x97: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x98: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x99: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9a: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9b: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9c: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9d: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9e: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0x9f: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xa9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xaa: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xab: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xac: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xad: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xae: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xaf: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xb9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xba: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xbb: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xbc: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xbd: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xbe: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xbf: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xc9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xca: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xcb: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xcc: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xcd: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xce: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xcf: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xd9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xda: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xdb: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xdc: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xdd: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xde: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xdf: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xe9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xea: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xeb: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xec: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xed: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xee: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xef: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf0: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf1: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf2: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf3: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf4: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf5: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf6: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf7: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf8: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xf9: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xfa: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xfb: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xfc: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xfd: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xfe: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |     case 0xff: | 
 |         GETBYTE (); | 
 |         switch (op[1] & 0x00) | 
 |         { | 
 |           case 0x00: | 
 |             goto op_semantics_24; | 
 |             break; | 
 |         } | 
 |       break; | 
 |   } | 
 | #line 590 "msp430-decode.opc" | 
 |  | 
 |   return msp430->n_bytes; | 
 | } |