#line 1 "msp430-decode.opc"
/* -*- c -*- */
/* Copyright (C) 2013-2016 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 "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:
      fprintf (stderr,
	       "Programmer error: immediate() called with invalid byte count %d\n",
	       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);
	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 438 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 438 "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 438 "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 443 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 443 "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 443 "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 448 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 448 "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 448 "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 453 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 453 "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 453 "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 520 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 520 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 520 "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 520 "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 458 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 458 "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 458 "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 463 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 463 "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 463 "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 468 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 468 "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 468 "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 473 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 473 "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 473 "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 479 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 479 "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 479 "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 485 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 485 "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 485 "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 497 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 497 "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 497 "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 502 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 502 "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 502 "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 508 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 508 "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 508 "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 514 "msp430-decode.opc"
                int srcr AU = op[0] & 0x0f;
#line 514 "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 514 "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 527 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 527 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 527 "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 527 "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 534 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 534 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 534 "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 534 "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 541 "msp430-decode.opc"
                int bt AU = (op[0] >> 2) & 0x03;
#line 541 "msp430-decode.opc"
                int w AU = (op[1] >> 4) & 0x01;
#line 541 "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 541 "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 394 "msp430-decode.opc"
                int so AU = op[0] & 0x03;
#line 394 "msp430-decode.opc"
                int c AU = (op[1] >> 7) & 0x01;
#line 394 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 394 "msp430-decode.opc"
                int ad AU = (op[1] >> 4) & 0x03;
#line 394 "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 394 "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 548 "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 553 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 553 "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 553 "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 558 "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 558 "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 563 "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 563 "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 571 "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 571 "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 576 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 576 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 576 "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 576 "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 582 "msp430-decode.opc"
                int w AU = op[0] & 0x01;
#line 582 "msp430-decode.opc"
                int bits AU = (op[1] >> 4) & 0x0f;
#line 582 "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 582 "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 350 "msp430-decode.opc"
                int srx AU = op[0] & 0x07;
#line 350 "msp430-decode.opc"
                int t AU = (op[1] >> 7) & 0x01;
#line 350 "msp430-decode.opc"
                int l AU = (op[1] >> 6) & 0x01;
#line 350 "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 350 "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 424 "msp430-decode.opc"
                int jmp AU = (op[0] >> 2) & 0x07;
#line 424 "msp430-decode.opc"
                int aa AU = op[0] & 0x03;
#line 424 "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 424 "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 371 "msp430-decode.opc"
                int dopc AU = (op[0] >> 4) & 0x0f;
#line 371 "msp430-decode.opc"
                int sreg AU = op[0] & 0x0f;
#line 371 "msp430-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 371 "msp430-decode.opc"
                int b AU = (op[1] >> 6) & 0x01;
#line 371 "msp430-decode.opc"
                int as AU = (op[1] >> 4) & 0x03;
#line 371 "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 371 "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 588 "msp430-decode.opc"

  return msp430->n_bytes;
}
