#line 1 "msp430-decode.opc"
/* -*- c -*- */
#include "sysdep.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ansidecl.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);
	/*fprintf(stderr, "[\033[32m%02x\033[0m]", b & 0xff);*/
	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:
      fprintf (stderr, "Programmer error: immediate() called with invalid byte count %d\n", bytes);
      abort();
    }
  /*fprintf(stderr, "\033[35mIMM(%d,%d,%#lx)\033[0m", bytes, sign_extend, i);*/
  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;

  /*fprintf(stderr, "[\033[31mAD %d R%d\033[0m]", ad, reg);*/
  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;

  /*fprintf(stderr, "[\033[31mAS %d R%d\033[0m]", as, reg);*/
  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);
	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 419 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 419 "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 419 "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 424 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 424 "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 424 "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 429 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 429 "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 429 "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 434 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 434 "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 434 "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 501 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 501 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 501 "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 501 "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 439 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 439 "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 439 "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 444 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 444 "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 444 "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 449 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 449 "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 449 "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 454 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 454 "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 454 "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 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 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 460 "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 466 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 466 "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 466 "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 478 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 478 "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 478 "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 483 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 483 "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 483 "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 489 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 489 "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 489 "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 495 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 495 "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 495 "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 508 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 508 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 508 "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 508 "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 515 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 515 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 515 "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 515 "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 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 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 522 "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 375 "msp430-decode.opc"
                int so AU = op[0] & 0x03;
#line 375 "msp430-decode.opc"
                int c AU = (op[1] >> 7) & 0x01;
#line 375 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 375 "msp430-decode.opc"
                int ad AU = (op[1] >> 4) & 0x03;
#line 375 "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 375 "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 529 "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 534 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 534 "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 534 "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 539 "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 539 "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 544 "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 544 "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 552 "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 552 "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 557 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 557 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 557 "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 557 "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 563 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 563 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 563 "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 563 "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 329 "msp430-decode.opc"
                int srx AU = op[0] & 0x07;
#line 329 "msp430-decode.opc"
                int t AU = (op[1] >> 7) & 0x01;
#line 329 "msp430-decode.opc"
                int l AU = (op[1] >> 6) & 0x01;
#line 329 "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 329 "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 405 "msp430-decode.opc"
                int jmp AU = (op[0] >> 2) & 0x07;
#line 405 "msp430-decode.opc"
                int aa AU = op[0] & 0x03;
#line 405 "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 405 "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 352 "msp430-decode.opc"
                int dopc AU = (op[0] >> 4) & 0x0f;
#line 352 "msp430-decode.opc"
                int sreg AU = op[0] & 0x0f;
#line 352 "msp430-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 352 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 352 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 352 "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 352 "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 569 "msp430-decode.opc"

  /*printf("<\033[34m%d\033[0m>", msp430->n_bytes);*/
  return msp430->n_bytes;
}
