/* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
#line 1 "msp430-decode.opc"
/* -*- c -*- */
/* Copyright (C) 2013-2018 Free Software Foundation, Inc.
   Contributed by Red Hat.
   Written by DJ Delorie.

   This file is part of the GNU opcodes library.

   This library is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   It is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#include "sysdep.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ansidecl.h"
#include "opintl.h"
#include "opcode/msp430-decode.h"

static int trace = 0;

typedef struct
{
  MSP430_Opcode_Decoded *msp430;
  int (*getbyte)(void *);
  void *ptr;
  unsigned char *op;
  int op_ptr;
  int pc;
} LocalData;

#define AU ATTRIBUTE_UNUSED
#define GETBYTE() getbyte_swapped (ld)
#define B ((unsigned long) GETBYTE ())

static int
getbyte_swapped (LocalData *ld)
{
  int b;

  if (ld->op_ptr == ld->msp430->n_bytes)
    {
      do
	{
	  b = ld->getbyte (ld->ptr);
	  ld->op [(ld->msp430->n_bytes++)^1] = b;
	}
      while (ld->msp430->n_bytes & 1);
    }
  return ld->op[ld->op_ptr++];
}

#define ID(x)		msp430->id = x

#define OP(n, t, r, a) (msp430->op[n].type = t,	     \
		        msp430->op[n].reg = r,	     \
		        msp430->op[n].addend = a)

#define OPX(n, t, r1, r2, a)	 \
  (msp430->op[n].type = t,	 \
   msp430->op[n].reg = r1,	 \
   msp430->op[n].reg2 = r2,	 \
   msp430->op[n].addend = a)

#define SYNTAX(x)	msp430->syntax = x
#define UNSUPPORTED()	msp430->syntax = "*unknown*"

#define DC(c)		OP (0, MSP430_Operand_Immediate, 0, c)
#define DR(r)		OP (0, MSP430_Operand_Register, r, 0)
#define DM(r, a)	OP (0, MSP430_Operand_Indirect, r, a)
#define DA(a)		OP (0, MSP430_Operand_Indirect, MSR_None, a)
#define AD(r, ad)	encode_ad (r, ad, ld, 0)
#define ADX(r, ad, x)	encode_ad (r, ad, ld, x)

#define SC(c)		OP (1, MSP430_Operand_Immediate, 0, c)
#define SR(r)		OP (1, MSP430_Operand_Register, r, 0)
#define SM(r, a)	OP (1, MSP430_Operand_Indirect, r, a)
#define SA(a)		OP (1, MSP430_Operand_Indirect, MSR_None, a)
#define SI(r)		OP (1, MSP430_Operand_Indirect_Postinc, r, 0)
#define AS(r, as)	encode_as (r, as, ld, 0)
#define ASX(r, as, x)	encode_as (r, as, ld, x)

#define BW(x)		msp430->size = (x ? 8 : 16)
/* The last 20 is for SWPBX.Z and SXTX.A.  */
#define ABW(a,x)	msp430->size = (a ? ((x ? 8 : 16)) : (x ? 20 : 20))

#define IMMU(bytes)	immediate (bytes, 0, ld)
#define IMMS(bytes)	immediate (bytes, 1, ld)

/* Helper macros for known status bits settings.  */
#define	F_____		msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0
#define	F_VNZC		msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0x87
#define	F_0NZC		msp430->flags_1 = 0; msp430->flags_0 = 0x80; msp430->flags_set = 0x07


/* The chip is little-endian, but GETBYTE byte-swaps words because the
   decoder is based on 16-bit "words" so *this* logic is big-endian.  */

static int
immediate (int bytes, int sign_extend, LocalData *ld)
{
  unsigned long i = 0;

  switch (bytes)
    {
    case 1:
      i |= B;
      if (sign_extend && (i & 0x80))
	i -= 0x100;
      break;
    case 2:
      i |= B << 8;
      i |= B;
      if (sign_extend && (i & 0x8000))
	i -= 0x10000;
      break;
    case 3:
      i |= B << 16;
      i |= B << 8;
      i |= B;
      if (sign_extend && (i & 0x800000))
	i -= 0x1000000;
      break;
    case 4:
      i |= B << 24;
      i |= B << 16;
      i |= B << 8;
      i |= B;
      if (sign_extend && (i & 0x80000000ULL))
	i -= 0x100000000ULL;
      break;
    default:
      opcodes_error_handler
	(_("internal error: immediate() called with invalid byte count %d"),
	   bytes);
      abort ();
    }
  return i;
}

/*
		PC	SP	SR	CG
  As
  00	Rn	-	-	R2	#0
  01	X(Rn)	Sym	-	X(abs)	#1
  10	(Rn)	-	-	#4	#2
  11	(Rn++)	#imm	-	#8	#-1

  Ad
  0	Rn	-	-	-	-
  1	X(Rn)	Sym	-	X(abs)	-   */

static void
encode_ad (int reg, int ad, LocalData *ld, int ext)
{
  MSP430_Opcode_Decoded *msp430 = ld->msp430;

  if (ad)
    {
      int x = IMMU(2) | (ext << 16);
      switch (reg)
	{
	case 0: /* (PC) -> Symbolic.  */
	  DA (x + ld->pc + ld->op_ptr - 2);
	  break;
	case 2: /* (SR) -> Absolute.  */
	  DA (x);
	  break;
	default:
	  DM (reg, x);
	  break;
	}
    }
  else
    {
      DR (reg);
    }
}

static void
encode_as (int reg, int as, LocalData *ld, int ext)
{
  MSP430_Opcode_Decoded *msp430 = ld->msp430;
  int x;

  switch (as)
    {
    case 0:
      switch (reg)
	{
	case 3:
	  SC (0);
	  break;
	default:
	  SR (reg);
	  break;
	}
      break;
    case 1:
      switch (reg)
	{
	case 0: /* PC -> Symbolic.  */
	  x = IMMU(2) | (ext << 16);
	  SA (x + ld->pc + ld->op_ptr - 2);
	  break;
	case 2: /* SR -> Absolute.  */
	  x = IMMU(2) | (ext << 16);
	  SA (x);
	  break;
	case 3:
	  SC (1);
	  break;
	default:
	  x = IMMU(2) | (ext << 16);
	  SM (reg, x);
	  break;
	}
      break;
    case 2:
      switch (reg)
	{
	case 2:
	  SC (4);
	  break;
	case 3:
	  SC (2);
	  break;
	case MSR_None:
	  SA (0);
	  break;
	default:
	  SM (reg, 0);
	  break;
	}
      break;
    case 3:
      switch (reg)
	{
	case 0:
	  {
	    /* This fetch *is* the *PC++ that the opcode encodes :-)  */
	    x = IMMU(2) | (ext << 16);
	    SC (x);
	  }
	  break;
	case 2:
	  SC (8);
	  break;
	case 3:
	  SC (-1);
	  break;
	default:
	  SI (reg);
	  break;
	}
      break;
    }
}

static void
encode_rep_zc (int srxt, int dsxt, LocalData *ld)
{
  MSP430_Opcode_Decoded *msp430 = ld->msp430;

  msp430->repeat_reg = srxt & 1;
  msp430->repeats = dsxt;
  msp430->zc = (srxt & 2) ? 1 : 0;
}

#define REPZC(s,d) encode_rep_zc (s, d, ld)

static int
dopc_to_id (int dopc)
{
  switch (dopc)
    {
    case 4: return MSO_mov;
    case 5: return MSO_add;
    case 6: return MSO_addc;
    case 7: return MSO_subc;
    case 8: return MSO_sub;
    case 9: return MSO_cmp;
    case 10: return MSO_dadd;
    case 11: return MSO_bit;
    case 12: return MSO_bic;
    case 13: return MSO_bis;
    case 14: return MSO_xor;
    case 15: return MSO_and;
    default: return MSO_unknown;
    }
}

static int
sopc_to_id (int sop, int c)
{
  switch (sop * 2 + c)
    {
    case 0: return MSO_rrc;
    case 1: return MSO_swpb;
    case 2: return MSO_rra;
    case 3: return MSO_sxt;
    case 4: return MSO_push;
    case 5: return MSO_call;
    case 6: return MSO_reti;
    default: return MSO_unknown;
    }
}

int
msp430_decode_opcode (unsigned long pc,
		      MSP430_Opcode_Decoded *msp430,
		      int (*getbyte)(void *),
		      void *ptr)
{
  LocalData lds, *ld = &lds;
  unsigned char op_buf[20] = {0};
  unsigned char *op = op_buf;
  int raddr;
  int al_bit;
  int srxt_bits, dsxt_bits;

  lds.msp430 = msp430;
  lds.getbyte = getbyte;
  lds.ptr = ptr;
  lds.op = op;
  lds.op_ptr = 0;
  lds.pc = pc;

  memset (msp430, 0, sizeof (*msp430));

  /* These are overridden by an extension word.  */
  al_bit = 1;
  srxt_bits = 0;
  dsxt_bits = 0;

 post_extension_word:
  ;

  /* 430X extention word.  */
  GETBYTE ();
  switch (op[0] & 0xff)
  {
    case 0x00:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            op_semantics_1:
              {
                /** 0000 srcr 0000 dstr		MOVA @%1, %0 */
#line 440 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 440 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0000 dstr		MOVA @%1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA @%1, %0");
#line 440 "msp430-decode.opc"
                ID (MSO_mov); SM (srcr, 0); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x10:
            op_semantics_2:
              {
                /** 0000 srcr 0001 dstr		MOVA @%1+, %0 */
#line 445 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 445 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0001 dstr		MOVA @%1+, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA @%1+, %0");
#line 445 "msp430-decode.opc"
                ID (MSO_mov); SI (srcr); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x20:
            op_semantics_3:
              {
                /** 0000 srcr 0010 dstr		MOVA &%1, %0 */
#line 450 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 450 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0010 dstr		MOVA &%1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA &%1, %0");
#line 450 "msp430-decode.opc"
                ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x30:
            op_semantics_4:
              {
                /** 0000 srcr 0011 dstr		MOVA %1, %0 */
#line 455 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 455 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0011 dstr		MOVA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA %1, %0");
#line 455 "msp430-decode.opc"
                ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x40:
          case 0x50:
            op_semantics_5:
              {
                /** 0000 bt00 010w dstr		RRCM.A %c, %0 */
#line 522 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 522 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 522 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 bt00 010w dstr		RRCM.A %c, %0 */",
                           op[0], op[1]);
                    printf ("  bt = 0x%x,", bt);
                    printf ("  w = 0x%x,", w);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("RRCM.A %c, %0");
#line 522 "msp430-decode.opc"
                ID (MSO_rrc); DR (dstr); SR (dstr);
                msp430->repeats = bt;
                msp430->size = w ? 16 : 20;
                msp430->ofs_430x = 1;
                F_0NZC;

              }
            break;
          case 0x60:
            op_semantics_6:
              {
                /** 0000 srcr 0110 dstr		MOVA %1, &%0 */
#line 460 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 460 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0110 dstr		MOVA %1, &%0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA %1, &%0");
#line 460 "msp430-decode.opc"
                ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2));
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x70:
            op_semantics_7:
              {
                /** 0000 srcr 0111 dstr		MOVA %1, &%0 */
#line 465 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 465 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 0111 dstr		MOVA %1, &%0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA %1, &%0");
#line 465 "msp430-decode.opc"
                ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2));
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x80:
            op_semantics_8:
              {
                /** 0000 srcr 1000 dstr		MOVA %1, %0 */
#line 470 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 470 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1000 dstr		MOVA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA %1, %0");
#line 470 "msp430-decode.opc"
                ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x90:
            op_semantics_9:
              {
                /** 0000 srcr 1001 dstr		CMPA %1, %0 */
#line 475 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 475 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1001 dstr		CMPA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("CMPA %1, %0");
#line 475 "msp430-decode.opc"
                ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
          case 0xa0:
            op_semantics_10:
              {
                /** 0000 srcr 1010 dstr		ADDA %1, %0 */
#line 481 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 481 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1010 dstr		ADDA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("ADDA %1, %0");
#line 481 "msp430-decode.opc"
                ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
          case 0xb0:
            op_semantics_11:
              {
                /** 0000 srcr 1011 dstr		SUBA %1, %0 */
#line 487 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 487 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1011 dstr		SUBA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("SUBA %1, %0");
#line 487 "msp430-decode.opc"
                ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
          case 0xc0:
            op_semantics_12:
              {
                /** 0000 srcr 1100 dstr		MOVA %1, %0 */
#line 499 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 499 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1100 dstr		MOVA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("MOVA %1, %0");
#line 499 "msp430-decode.opc"
                ID (MSO_mov); SR (srcr); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0xd0:
            op_semantics_13:
              {
                /** 0000 srcr 1101 dstr		CMPA %1, %0 */
#line 504 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 504 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1101 dstr		CMPA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("CMPA %1, %0");
#line 504 "msp430-decode.opc"
                ID (MSO_cmp); SR (srcr); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
          case 0xe0:
            op_semantics_14:
              {
                /** 0000 srcr 1110 dstr		ADDA %1, %0 */
#line 510 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 510 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1110 dstr		ADDA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("ADDA %1, %0");
#line 510 "msp430-decode.opc"
                ID (MSO_add); SR (srcr); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
          case 0xf0:
            op_semantics_15:
              {
                /** 0000 srcr 1111 dstr		SUBA %1, %0 */
#line 516 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 516 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 srcr 1111 dstr		SUBA %1, %0 */",
                           op[0], op[1]);
                    printf ("  srcr = 0x%x,", srcr);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("SUBA %1, %0");
#line 516 "msp430-decode.opc"
                ID (MSO_sub); SR (srcr); DR (dstr);
                msp430->size = 20;
                msp430->ofs_430x = 1;
                F_VNZC;

              }
            break;
        }
      break;
    case 0x01:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            op_semantics_16:
              {
                /** 0000 bt01 010w dstr		RRAM.A %c, %0 */
#line 529 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 529 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 529 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 bt01 010w dstr		RRAM.A %c, %0 */",
                           op[0], op[1]);
                    printf ("  bt = 0x%x,", bt);
                    printf ("  w = 0x%x,", w);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("RRAM.A %c, %0");
#line 529 "msp430-decode.opc"
                ID (MSO_rra); DR (dstr); SR (dstr);
                msp430->repeats = bt;
                msp430->size = w ? 16 : 20;
                msp430->ofs_430x = 1;
                F_0NZC;

              }
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x02:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            op_semantics_17:
              {
                /** 0000 bt10 010w dstr		RLAM.A %c, %0 */
#line 536 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 536 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 536 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 bt10 010w dstr		RLAM.A %c, %0 */",
                           op[0], op[1]);
                    printf ("  bt = 0x%x,", bt);
                    printf ("  w = 0x%x,", w);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("RLAM.A %c, %0");
#line 536 "msp430-decode.opc"
                ID (MSO_add); DR (dstr); SR (dstr);
                msp430->repeats = bt;
                msp430->size = w ? 16 : 20;
                msp430->ofs_430x = 1;
                F_0NZC;

              }
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x03:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            op_semantics_18:
              {
                /** 0000 bt11 010w dstr		RRUM.A %c, %0 */
#line 543 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 543 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 543 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0000 bt11 010w dstr		RRUM.A %c, %0 */",
                           op[0], op[1]);
                    printf ("  bt = 0x%x,", bt);
                    printf ("  w = 0x%x,", w);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("RRUM.A %c, %0");
#line 543 "msp430-decode.opc"
                ID (MSO_rru); DR (dstr); SR (dstr);
                msp430->repeats = bt;
                msp430->size = w ? 16 : 20;
                msp430->ofs_430x = 1;
                F_0NZC;

              }
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x04:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_5;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x05:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_16;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x06:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_17;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x07:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_18;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x08:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_5;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x09:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_16;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0a:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_17;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0b:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_18;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0c:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_5;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0d:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_16;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0e:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_17;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x0f:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            goto op_semantics_1;
            break;
          case 0x10:
            goto op_semantics_2;
            break;
          case 0x20:
            goto op_semantics_3;
            break;
          case 0x30:
            goto op_semantics_4;
            break;
          case 0x40:
          case 0x50:
            goto op_semantics_18;
            break;
          case 0x60:
            goto op_semantics_6;
            break;
          case 0x70:
            goto op_semantics_7;
            break;
          case 0x80:
            goto op_semantics_8;
            break;
          case 0x90:
            goto op_semantics_9;
            break;
          case 0xa0:
            goto op_semantics_10;
            break;
          case 0xb0:
            goto op_semantics_11;
            break;
          case 0xc0:
            goto op_semantics_12;
            break;
          case 0xd0:
            goto op_semantics_13;
            break;
          case 0xe0:
            goto op_semantics_14;
            break;
          case 0xf0:
            goto op_semantics_15;
            break;
        }
      break;
    case 0x10:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_19:
              {
                /** 0001 00so c b ad dreg	%S%b	%1				*/
#line 396 "msp430-decode.opc"
                int so AU = op[0] & 0x03;
#line 396 "msp430-decode.opc"
                int c AU = (op[1] >> 7) & 0x01;
#line 396 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 396 "msp430-decode.opc"
                int ad AU = (op[1] >> 4) & 0x03;
#line 396 "msp430-decode.opc"
                int dreg AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 00so c b ad dreg	%S%b	%1				*/",
                           op[0], op[1]);
                    printf ("  so = 0x%x,", so);
                    printf ("  c = 0x%x,", c);
                    printf ("  b = 0x%x,", b);
                    printf ("  ad = 0x%x,", ad);
                    printf ("  dreg = 0x%x\n", dreg);
                  }
                SYNTAX("%S%b	%1");
#line 396 "msp430-decode.opc"

                ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b);

                if (ad == 0)
                  REPZC (srxt_bits, dsxt_bits);

                /* The helper functions encode for source, but it's
                   both source and dest, with a few documented exceptions.  */
                msp430->op[0] = msp430->op[1];

                /* RETI ignores the operand.  */
                if (msp430->id == MSO_reti)
                  msp430->syntax = "%S";

                switch (msp430->id)
                  {
                  case MSO_rrc:	F_VNZC; break;
                  case MSO_swpb:	F_____; break;
                  case MSO_rra:	F_0NZC; break;
                  case MSO_sxt:	F_0NZC; break;
                  case MSO_push:	F_____; break;
                  case MSO_call:	F_____; break;
                  case MSO_reti:	F_VNZC; break;
                  default: break;
                  }

                /* 20xx 0010 0000 ---- ----
                   3cxx 0011 1100 ---- ----
                        001j mp-- ---- ----.  */
              }
            break;
        }
      break;
    case 0x11:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_19;
            break;
        }
      break;
    case 0x12:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_19;
            break;
        }
      break;
    case 0x13:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
              {
                /** 0001 0011 0000 0000		RETI */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 0011 0000 0000		RETI */",
                           op[0], op[1]);
                  }
                SYNTAX("RETI");
#line 550 "msp430-decode.opc"
                ID (MSO_reti);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x01:
          case 0x02:
          case 0x03:
          case 0x04:
          case 0x05:
          case 0x06:
          case 0x07:
          case 0x08:
          case 0x09:
          case 0x0a:
          case 0x0b:
          case 0x0c:
          case 0x0d:
          case 0x0e:
          case 0x0f:
          case 0x10:
          case 0x11:
          case 0x12:
          case 0x13:
          case 0x14:
          case 0x15:
          case 0x16:
          case 0x17:
          case 0x18:
          case 0x19:
          case 0x1a:
          case 0x1b:
          case 0x1c:
          case 0x1d:
          case 0x1e:
          case 0x1f:
          case 0x20:
          case 0x21:
          case 0x22:
          case 0x23:
          case 0x24:
          case 0x25:
          case 0x26:
          case 0x27:
          case 0x28:
          case 0x29:
          case 0x2a:
          case 0x2b:
          case 0x2c:
          case 0x2d:
          case 0x2e:
          case 0x2f:
          case 0x30:
          case 0x31:
          case 0x32:
          case 0x33:
          case 0x34:
          case 0x35:
          case 0x36:
          case 0x37:
          case 0x38:
          case 0x39:
          case 0x3a:
          case 0x3b:
          case 0x3c:
          case 0x3d:
          case 0x3e:
          case 0x3f:
          case 0xa0:
          case 0xa1:
          case 0xa2:
          case 0xa3:
          case 0xa4:
          case 0xa5:
          case 0xa6:
          case 0xa7:
          case 0xa8:
          case 0xa9:
          case 0xaa:
          case 0xab:
          case 0xac:
          case 0xad:
          case 0xae:
          case 0xaf:
          case 0xc0:
          case 0xc1:
          case 0xc2:
          case 0xc3:
          case 0xc4:
          case 0xc5:
          case 0xc6:
          case 0xc7:
          case 0xc8:
          case 0xc9:
          case 0xca:
          case 0xcb:
          case 0xcc:
          case 0xcd:
          case 0xce:
          case 0xcf:
          case 0xd0:
          case 0xd1:
          case 0xd2:
          case 0xd3:
          case 0xd4:
          case 0xd5:
          case 0xd6:
          case 0xd7:
          case 0xd8:
          case 0xd9:
          case 0xda:
          case 0xdb:
          case 0xdc:
          case 0xdd:
          case 0xde:
          case 0xdf:
          case 0xe0:
          case 0xe1:
          case 0xe2:
          case 0xe3:
          case 0xe4:
          case 0xe5:
          case 0xe6:
          case 0xe7:
          case 0xe8:
          case 0xe9:
          case 0xea:
          case 0xeb:
          case 0xec:
          case 0xed:
          case 0xee:
          case 0xef:
          case 0xf0:
          case 0xf1:
          case 0xf2:
          case 0xf3:
          case 0xf4:
          case 0xf5:
          case 0xf6:
          case 0xf7:
          case 0xf8:
          case 0xf9:
          case 0xfa:
          case 0xfb:
          case 0xfc:
          case 0xfd:
          case 0xfe:
          case 0xff:
            goto op_semantics_19;
            break;
          case 0x40:
          case 0x41:
          case 0x42:
          case 0x43:
          case 0x44:
          case 0x45:
          case 0x46:
          case 0x47:
          case 0x48:
          case 0x49:
          case 0x4a:
          case 0x4b:
          case 0x4c:
          case 0x4d:
          case 0x4e:
          case 0x4f:
          case 0x50:
          case 0x51:
          case 0x52:
          case 0x53:
          case 0x54:
          case 0x55:
          case 0x56:
          case 0x57:
          case 0x58:
          case 0x59:
          case 0x5a:
          case 0x5b:
          case 0x5c:
          case 0x5d:
          case 0x5e:
          case 0x5f:
          case 0x60:
          case 0x61:
          case 0x62:
          case 0x63:
          case 0x64:
          case 0x65:
          case 0x66:
          case 0x67:
          case 0x68:
          case 0x69:
          case 0x6a:
          case 0x6b:
          case 0x6c:
          case 0x6d:
          case 0x6e:
          case 0x6f:
          case 0x70:
          case 0x71:
          case 0x72:
          case 0x73:
          case 0x74:
          case 0x75:
          case 0x76:
          case 0x77:
          case 0x78:
          case 0x79:
          case 0x7a:
          case 0x7b:
          case 0x7c:
          case 0x7d:
          case 0x7e:
          case 0x7f:
              {
                /** 0001 0011 01as dstr		CALLA %0 */
#line 555 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 555 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 0011 01as dstr		CALLA %0 */",
                           op[0], op[1]);
                    printf ("  as = 0x%x,", as);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("CALLA %0");
#line 555 "msp430-decode.opc"
                ID (MSO_call); AS (dstr, as);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x80:
          case 0x81:
          case 0x82:
          case 0x83:
          case 0x84:
          case 0x85:
          case 0x86:
          case 0x87:
          case 0x88:
          case 0x89:
          case 0x8a:
          case 0x8b:
          case 0x8c:
          case 0x8d:
          case 0x8e:
          case 0x8f:
              {
                /** 0001 0011 1000 extb		CALLA %0 */
#line 560 "msp430-decode.opc"
                int extb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 0011 1000 extb		CALLA %0 */",
                           op[0], op[1]);
                    printf ("  extb = 0x%x\n", extb);
                  }
                SYNTAX("CALLA %0");
#line 560 "msp430-decode.opc"
                ID (MSO_call); SA (IMMU(2) | (extb << 16));
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0x90:
          case 0x91:
          case 0x92:
          case 0x93:
          case 0x94:
          case 0x95:
          case 0x96:
          case 0x97:
          case 0x98:
          case 0x99:
          case 0x9a:
          case 0x9b:
          case 0x9c:
          case 0x9d:
          case 0x9e:
          case 0x9f:
              {
                /** 0001 0011 1001 extb		CALLA %0 */
#line 565 "msp430-decode.opc"
                int extb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 0011 1001 extb		CALLA %0 */",
                           op[0], op[1]);
                    printf ("  extb = 0x%x\n", extb);
                  }
                SYNTAX("CALLA %0");
#line 565 "msp430-decode.opc"
                raddr = IMMU(2) | (extb << 16);
                if (raddr & 0x80000)
                  raddr -= 0x100000;
                ID (MSO_call); SA (pc + raddr + msp430->n_bytes);
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
          case 0xb0:
          case 0xb1:
          case 0xb2:
          case 0xb3:
          case 0xb4:
          case 0xb5:
          case 0xb6:
          case 0xb7:
          case 0xb8:
          case 0xb9:
          case 0xba:
          case 0xbb:
          case 0xbc:
          case 0xbd:
          case 0xbe:
          case 0xbf:
              {
                /** 0001 0011 1011 extb		CALLA %0 */
#line 573 "msp430-decode.opc"
                int extb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 0011 1011 extb		CALLA %0 */",
                           op[0], op[1]);
                    printf ("  extb = 0x%x\n", extb);
                  }
                SYNTAX("CALLA %0");
#line 573 "msp430-decode.opc"
                ID (MSO_call); SC (IMMU(2) | (extb << 16));
                msp430->size = 20;
                msp430->ofs_430x = 1;

              }
            break;
        }
      break;
    case 0x14:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_20:
              {
                /** 0001 010w bits srcr		PUSHM.A %0 */
#line 578 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 578 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 578 "msp430-decode.opc"
                int srcr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 010w bits srcr		PUSHM.A %0 */",
                           op[0], op[1]);
                    printf ("  w = 0x%x,", w);
                    printf ("  bits = 0x%x,", bits);
                    printf ("  srcr = 0x%x\n", srcr);
                  }
                SYNTAX("PUSHM.A %0");
#line 578 "msp430-decode.opc"
                ID (MSO_push); SR (srcr);
                msp430->size = w ? 16 : 20;
                msp430->repeats = bits;
                msp430->ofs_430x = 1;

              }
            break;
        }
      break;
    case 0x15:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_20;
            break;
        }
      break;
    case 0x16:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_21:
              {
                /** 0001 011w bits dstr		POPM.A %0 */
#line 584 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 584 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 584 "msp430-decode.opc"
                int dstr AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 011w bits dstr		POPM.A %0 */",
                           op[0], op[1]);
                    printf ("  w = 0x%x,", w);
                    printf ("  bits = 0x%x,", bits);
                    printf ("  dstr = 0x%x\n", dstr);
                  }
                SYNTAX("POPM.A %0");
#line 584 "msp430-decode.opc"
                ID (MSO_pop); DR (dstr);
                msp430->size = w ? 16 : 20;
                msp430->repeats = bits;
                msp430->ofs_430x = 1;

              }
            break;
        }
      break;
    case 0x17:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_21;
            break;
        }
      break;
    case 0x18:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            op_semantics_22:
              {
                /** 0001 1srx t l 00 dsxt 	430x */
#line 352 "msp430-decode.opc"
                int srx AU = op[0] & 0x07;
#line 352 "msp430-decode.opc"
                int t AU = (op[1] >> 7) & 0x01;
#line 352 "msp430-decode.opc"
                int l AU = (op[1] >> 6) & 0x01;
#line 352 "msp430-decode.opc"
                int dsxt AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0001 1srx t l 00 dsxt 	430x */",
                           op[0], op[1]);
                    printf ("  srx = 0x%x,", srx);
                    printf ("  t = 0x%x,", t);
                    printf ("  l = 0x%x,", l);
                    printf ("  dsxt = 0x%x\n", dsxt);
                  }
                SYNTAX("430x");
#line 352 "msp430-decode.opc"

                al_bit = l;
                srxt_bits = srx * 2 + t;
                dsxt_bits = dsxt;
                op = op_buf + lds.op_ptr;
                msp430->ofs_430x = 1;
                goto post_extension_word;

              /* double-op insns:
                 opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4

                 single-op insn:
                 opcode:9 BW:1 Ad:2 DSreg:4

                 jumps:
                 opcode:3 Cond:3  pcrel:10. */

              /* Double-Operand "opcode" fields.  */

              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x19:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1a:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1b:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1c:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1d:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1e:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x1f:
        GETBYTE ();
        switch (op[1] & 0x30)
        {
          case 0x00:
            goto op_semantics_22;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x20:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_23:
              {
                /** 001jmp aa addrlsbs		%J	%1				*/
#line 426 "msp430-decode.opc"
                int jmp AU = (op[0] >> 2) & 0x07;
#line 426 "msp430-decode.opc"
                int aa AU = op[0] & 0x03;
#line 426 "msp430-decode.opc"
                int addrlsbs AU = op[1];
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 001jmp aa addrlsbs		%J	%1				*/",
                           op[0], op[1]);
                    printf ("  jmp = 0x%x,", jmp);
                    printf ("  aa = 0x%x,", aa);
                    printf ("  addrlsbs = 0x%x\n", addrlsbs);
                  }
                SYNTAX("%J	%1");
#line 426 "msp430-decode.opc"

                raddr = (aa << 9) | (addrlsbs << 1);
                if (raddr & 0x400)
                  raddr = raddr - 0x800;
                /* This is a pc-relative jump, but we don't use SM because that
                   would load the target address from the memory at X(PC), not use
                   PC+X *as* the address.  So we use SC to use the address, not the
                   data at that address.  */
                ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes);
                msp430->cond = jmp;

                /* Extended instructions.  */

              }
            break;
        }
      break;
    case 0x21:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x22:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x23:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x24:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x25:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x26:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x27:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x28:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x29:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x2f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x30:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x31:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x32:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x33:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x34:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x35:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x36:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x37:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x38:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x39:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x3f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x40:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_24:
              {
                /** dopc sreg a b as dreg	%D%b	%1,%0				*/
#line 373 "msp430-decode.opc"
                int dopc AU = (op[0] >> 4) & 0x0f;
#line 373 "msp430-decode.opc"
                int sreg AU = op[0] & 0x0f;
#line 373 "msp430-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 373 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 373 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 373 "msp430-decode.opc"
                int dreg AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** dopc sreg a b as dreg	%D%b	%1,%0				*/",
                           op[0], op[1]);
                    printf ("  dopc = 0x%x,", dopc);
                    printf ("  sreg = 0x%x,", sreg);
                    printf ("  a = 0x%x,", a);
                    printf ("  b = 0x%x,", b);
                    printf ("  as = 0x%x,", as);
                    printf ("  dreg = 0x%x\n", dreg);
                  }
                SYNTAX("%D%b	%1,%0");
#line 373 "msp430-decode.opc"

                ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b);
                if (a == 0 && as == 0)
                  REPZC (srxt_bits, dsxt_bits);

                switch (msp430->id)
                  {
                  case MSO_mov:	F_____; break;
                  case MSO_add:	F_VNZC; break;
                  case MSO_addc:	F_VNZC; break;
                  case MSO_subc:	F_VNZC; break;
                  case MSO_sub:	F_VNZC; break;
                  case MSO_cmp:	F_VNZC; break;
                  case MSO_dadd:	F_VNZC; break;
                  case MSO_bit:	F_0NZC; break;
                  case MSO_bic:	F_____; break;
                  case MSO_bis:	F_____; break;
                  case MSO_xor:	F_VNZC; break;
                  case MSO_and:	F_0NZC; break;
                  default: break;
                  }

              }
            break;
        }
      break;
    case 0x41:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x42:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x43:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x44:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x45:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x46:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x47:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x48:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x49:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x50:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x51:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x52:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x53:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x54:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x55:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x56:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x57:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x58:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x59:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x5f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x60:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x61:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x62:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x63:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x64:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x65:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x66:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x67:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x68:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x69:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x6f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x70:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x71:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x72:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x73:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x74:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x75:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x76:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x77:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x78:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x79:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x7f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x80:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x81:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x82:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x83:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x84:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x85:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x86:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x87:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x88:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x89:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x8f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x90:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x91:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x92:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x93:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x94:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x95:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x96:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x97:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x98:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x99:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x9f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xa9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xaa:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xab:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xac:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xad:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xae:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xaf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xb9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xba:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xbb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xbc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xbd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xbe:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xbf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xc9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xca:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xcb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xcc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xcd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xce:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xcf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xd9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xda:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xdb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xdc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xdd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xde:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xdf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xe9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xea:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xeb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xec:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xed:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xee:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xef:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xf9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xfa:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xfb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xfc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xfd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xfe:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0xff:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
  }
#line 590 "msp430-decode.opc"

  return msp430->n_bytes;
}
