/* Print i386 instructions for GDB, the GNU debugger.
   Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
   Free Software Foundation, Inc.

   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.  */


/* 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu)
   July 1988
    modified by John Hassey (hassey@dg-rtp.dg.com)
    x86-64 support added by Jan Hubicka (jh@suse.cz)
    VIA PadLock support by Michal Ludvig (mludvig@suse.cz).  */

/* The main tables describing the instructions is essentially a copy
   of the "Opcode Map" chapter (Appendix A) of the Intel 80386
   Programmers Manual.  Usually, there is a capital letter, followed
   by a small letter.  The capital letter tell the addressing mode,
   and the small letter tells about the operand size.  Refer to
   the Intel manual for details.  */

#include "sysdep.h"
#include "dis-asm.h"
#include "opintl.h"
#include "opcode/i386.h"
#include "libiberty.h"

#include <setjmp.h>

static int fetch_data (struct disassemble_info *, bfd_byte *);
static void ckprefix (void);
static const char *prefix_name (int, int);
static int print_insn (bfd_vma, disassemble_info *);
static void dofloat (int);
static void OP_ST (int, int);
static void OP_STi (int, int);
static int putop (const char *, int);
static void oappend (const char *);
static void append_seg (void);
static void OP_indirE (int, int);
static void print_operand_value (char *, int, bfd_vma);
static void OP_E_register (int, int);
static void OP_E_memory (int, int);
static void OP_E_extended (int, int);
static void print_displacement (char *, bfd_vma);
static void OP_E (int, int);
static void OP_G (int, int);
static bfd_vma get64 (void);
static bfd_signed_vma get32 (void);
static bfd_signed_vma get32s (void);
static int get16 (void);
static void set_op (bfd_vma, int);
static void OP_Skip_MODRM (int, int);
static void OP_REG (int, int);
static void OP_IMREG (int, int);
static void OP_I (int, int);
static void OP_I64 (int, int);
static void OP_sI (int, int);
static void OP_J (int, int);
static void OP_SEG (int, int);
static void OP_DIR (int, int);
static void OP_OFF (int, int);
static void OP_OFF64 (int, int);
static void ptr_reg (int, int);
static void OP_ESreg (int, int);
static void OP_DSreg (int, int);
static void OP_C (int, int);
static void OP_D (int, int);
static void OP_T (int, int);
static void OP_R (int, int);
static void OP_MMX (int, int);
static void OP_XMM (int, int);
static void OP_EM (int, int);
static void OP_EX (int, int);
static void OP_EMC (int,int);
static void OP_MXC (int,int);
static void OP_MS (int, int);
static void OP_XS (int, int);
static void OP_M (int, int);
static void OP_VEX (int, int);
static void OP_VEX_FMA (int, int);
static void OP_EX_Vex (int, int);
static void OP_EX_VexW (int, int);
static void OP_XMM_Vex (int, int);
static void OP_XMM_VexW (int, int);
static void OP_REG_VexI4 (int, int);
static void PCLMUL_Fixup (int, int);
static void VEXI4_Fixup (int, int);
static void VZERO_Fixup (int, int);
static void VCMP_Fixup (int, int);
static void OP_0f07 (int, int);
static void OP_Monitor (int, int);
static void OP_Mwait (int, int);
static void NOP_Fixup1 (int, int);
static void NOP_Fixup2 (int, int);
static void OP_3DNowSuffix (int, int);
static void CMP_Fixup (int, int);
static void BadOp (void);
static void REP_Fixup (int, int);
static void CMPXCHG8B_Fixup (int, int);
static void XMM_Fixup (int, int);
static void CRC32_Fixup (int, int);

static void MOVBE_Fixup (int, int);

struct dis_private {
  /* Points to first byte not fetched.  */
  bfd_byte *max_fetched;
  bfd_byte the_buffer[MAX_MNEM_SIZE];
  bfd_vma insn_start;
  int orig_sizeflag;
  jmp_buf bailout;
};

enum address_mode
{
  mode_16bit,
  mode_32bit,
  mode_64bit
};

enum address_mode address_mode;

/* Flags for the prefixes for the current instruction.  See below.  */
static int prefixes;

/* REX prefix the current instruction.  See below.  */
static int rex;
/* Bits of REX we've already used.  */
static int rex_used;
/* Original REX prefix.  */
static int rex_original;
/* REX bits in original REX prefix ignored.  It may not be the same
   as rex_original since some bits may not be ignored.  */
static int rex_ignored;
/* Mark parts used in the REX prefix.  When we are testing for
   empty prefix (for 8bit register REX extension), just mask it
   out.  Otherwise test for REX bit is excuse for existence of REX
   only in case value is nonzero.  */
#define USED_REX(value)					\
  {							\
    if (value)						\
      {							\
	if ((rex & value))				\
	  rex_used |= (value) | REX_OPCODE;		\
      }							\
    else						\
      rex_used |= REX_OPCODE;				\
  }

/* Flags for prefixes which we somehow handled when printing the
   current instruction.  */
static int used_prefixes;

/* Flags stored in PREFIXES.  */
#define PREFIX_REPZ 1
#define PREFIX_REPNZ 2
#define PREFIX_LOCK 4
#define PREFIX_CS 8
#define PREFIX_SS 0x10
#define PREFIX_DS 0x20
#define PREFIX_ES 0x40
#define PREFIX_FS 0x80
#define PREFIX_GS 0x100
#define PREFIX_DATA 0x200
#define PREFIX_ADDR 0x400
#define PREFIX_FWAIT 0x800

/* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive)
   to ADDR (exclusive) are valid.  Returns 1 for success, longjmps
   on error.  */
#define FETCH_DATA(info, addr) \
  ((addr) <= ((struct dis_private *) (info->private_data))->max_fetched \
   ? 1 : fetch_data ((info), (addr)))

static int
fetch_data (struct disassemble_info *info, bfd_byte *addr)
{
  int status;
  struct dis_private *priv = (struct dis_private *) info->private_data;
  bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);

  if (addr <= priv->the_buffer + MAX_MNEM_SIZE)
    status = (*info->read_memory_func) (start,
					priv->max_fetched,
					addr - priv->max_fetched,
					info);
  else
    status = -1;
  if (status != 0)
    {
      /* If we did manage to read at least one byte, then
	 print_insn_i386 will do something sensible.  Otherwise, print
	 an error.  We do that here because this is where we know
	 STATUS.  */
      if (priv->max_fetched == priv->the_buffer)
	(*info->memory_error_func) (status, start, info);
      longjmp (priv->bailout, 1);
    }
  else
    priv->max_fetched = addr;
  return 1;
}

#define XX { NULL, 0 }

#define Eb { OP_E, b_mode }
#define EbS { OP_E, b_swap_mode }
#define Ev { OP_E, v_mode }
#define EvS { OP_E, v_swap_mode }
#define Ed { OP_E, d_mode }
#define Edq { OP_E, dq_mode }
#define Edqw { OP_E, dqw_mode }
#define Edqb { OP_E, dqb_mode }
#define Edqd { OP_E, dqd_mode }
#define Eq { OP_E, q_mode }
#define indirEv { OP_indirE, stack_v_mode }
#define indirEp { OP_indirE, f_mode }
#define stackEv { OP_E, stack_v_mode }
#define Em { OP_E, m_mode }
#define Ew { OP_E, w_mode }
#define M { OP_M, 0 }		/* lea, lgdt, etc. */
#define Ma { OP_M, a_mode }
#define Mb { OP_M, b_mode }
#define Md { OP_M, d_mode }
#define Mo { OP_M, o_mode }
#define Mp { OP_M, f_mode }		/* 32 or 48 bit memory operand for LDS, LES etc */
#define Mq { OP_M, q_mode }
#define Mx { OP_M, x_mode }
#define Mxmm { OP_M, xmm_mode }
#define Gb { OP_G, b_mode }
#define Gv { OP_G, v_mode }
#define Gd { OP_G, d_mode }
#define Gdq { OP_G, dq_mode }
#define Gm { OP_G, m_mode }
#define Gw { OP_G, w_mode }
#define Rd { OP_R, d_mode }
#define Rm { OP_R, m_mode }
#define Ib { OP_I, b_mode }
#define sIb { OP_sI, b_mode }	/* sign extened byte */
#define Iv { OP_I, v_mode }
#define Iq { OP_I, q_mode }
#define Iv64 { OP_I64, v_mode }
#define Iw { OP_I, w_mode }
#define I1 { OP_I, const_1_mode }
#define Jb { OP_J, b_mode }
#define Jv { OP_J, v_mode }
#define Cm { OP_C, m_mode }
#define Dm { OP_D, m_mode }
#define Td { OP_T, d_mode }
#define Skip_MODRM { OP_Skip_MODRM, 0 }

#define RMeAX { OP_REG, eAX_reg }
#define RMeBX { OP_REG, eBX_reg }
#define RMeCX { OP_REG, eCX_reg }
#define RMeDX { OP_REG, eDX_reg }
#define RMeSP { OP_REG, eSP_reg }
#define RMeBP { OP_REG, eBP_reg }
#define RMeSI { OP_REG, eSI_reg }
#define RMeDI { OP_REG, eDI_reg }
#define RMrAX { OP_REG, rAX_reg }
#define RMrBX { OP_REG, rBX_reg }
#define RMrCX { OP_REG, rCX_reg }
#define RMrDX { OP_REG, rDX_reg }
#define RMrSP { OP_REG, rSP_reg }
#define RMrBP { OP_REG, rBP_reg }
#define RMrSI { OP_REG, rSI_reg }
#define RMrDI { OP_REG, rDI_reg }
#define RMAL { OP_REG, al_reg }
#define RMAL { OP_REG, al_reg }
#define RMCL { OP_REG, cl_reg }
#define RMDL { OP_REG, dl_reg }
#define RMBL { OP_REG, bl_reg }
#define RMAH { OP_REG, ah_reg }
#define RMCH { OP_REG, ch_reg }
#define RMDH { OP_REG, dh_reg }
#define RMBH { OP_REG, bh_reg }
#define RMAX { OP_REG, ax_reg }
#define RMDX { OP_REG, dx_reg }

#define eAX { OP_IMREG, eAX_reg }
#define eBX { OP_IMREG, eBX_reg }
#define eCX { OP_IMREG, eCX_reg }
#define eDX { OP_IMREG, eDX_reg }
#define eSP { OP_IMREG, eSP_reg }
#define eBP { OP_IMREG, eBP_reg }
#define eSI { OP_IMREG, eSI_reg }
#define eDI { OP_IMREG, eDI_reg }
#define AL { OP_IMREG, al_reg }
#define CL { OP_IMREG, cl_reg }
#define DL { OP_IMREG, dl_reg }
#define BL { OP_IMREG, bl_reg }
#define AH { OP_IMREG, ah_reg }
#define CH { OP_IMREG, ch_reg }
#define DH { OP_IMREG, dh_reg }
#define BH { OP_IMREG, bh_reg }
#define AX { OP_IMREG, ax_reg }
#define DX { OP_IMREG, dx_reg }
#define zAX { OP_IMREG, z_mode_ax_reg }
#define indirDX { OP_IMREG, indir_dx_reg }

#define Sw { OP_SEG, w_mode }
#define Sv { OP_SEG, v_mode }
#define Ap { OP_DIR, 0 }
#define Ob { OP_OFF64, b_mode }
#define Ov { OP_OFF64, v_mode }
#define Xb { OP_DSreg, eSI_reg }
#define Xv { OP_DSreg, eSI_reg }
#define Xz { OP_DSreg, eSI_reg }
#define Yb { OP_ESreg, eDI_reg }
#define Yv { OP_ESreg, eDI_reg }
#define DSBX { OP_DSreg, eBX_reg }

#define es { OP_REG, es_reg }
#define ss { OP_REG, ss_reg }
#define cs { OP_REG, cs_reg }
#define ds { OP_REG, ds_reg }
#define fs { OP_REG, fs_reg }
#define gs { OP_REG, gs_reg }

#define MX { OP_MMX, 0 }
#define XM { OP_XMM, 0 }
#define XMM { OP_XMM, xmm_mode }
#define EM { OP_EM, v_mode }
#define EMS { OP_EM, v_swap_mode }
#define EMd { OP_EM, d_mode }
#define EMx { OP_EM, x_mode }
#define EXw { OP_EX, w_mode }
#define EXd { OP_EX, d_mode }
#define EXdS { OP_EX, d_swap_mode }
#define EXq { OP_EX, q_mode }
#define EXqS { OP_EX, q_swap_mode }
#define EXx { OP_EX, x_mode }
#define EXxS { OP_EX, x_swap_mode }
#define EXxmm { OP_EX, xmm_mode }
#define EXxmmq { OP_EX, xmmq_mode }
#define EXymmq { OP_EX, ymmq_mode }
#define EXVexWdq { OP_EX, vex_w_dq_mode }
#define MS { OP_MS, v_mode }
#define XS { OP_XS, v_mode }
#define EMCq { OP_EMC, q_mode }
#define MXC { OP_MXC, 0 }
#define OPSUF { OP_3DNowSuffix, 0 }
#define CMP { CMP_Fixup, 0 }
#define XMM0 { XMM_Fixup, 0 }

#define Vex { OP_VEX, vex_mode }
#define Vex128 { OP_VEX, vex128_mode }
#define Vex256 { OP_VEX, vex256_mode }
#define VexI4 { VEXI4_Fixup, 0}
#define VexFMA { OP_VEX_FMA, vex_mode }
#define Vex128FMA { OP_VEX_FMA, vex128_mode }
#define EXdVex { OP_EX_Vex, d_mode }
#define EXdVexS { OP_EX_Vex, d_swap_mode }
#define EXqVex { OP_EX_Vex, q_mode }
#define EXqVexS { OP_EX_Vex, q_swap_mode }
#define EXVexW { OP_EX_VexW, x_mode }
#define EXdVexW { OP_EX_VexW, d_mode }
#define EXqVexW { OP_EX_VexW, q_mode }
#define XMVex { OP_XMM_Vex, 0 }
#define XMVexW { OP_XMM_VexW, 0 }
#define XMVexI4 { OP_REG_VexI4, x_mode }
#define PCLMUL { PCLMUL_Fixup, 0 }
#define VZERO { VZERO_Fixup, 0 }
#define VCMP { VCMP_Fixup, 0 }

/* Used handle "rep" prefix for string instructions.  */
#define Xbr { REP_Fixup, eSI_reg }
#define Xvr { REP_Fixup, eSI_reg }
#define Ybr { REP_Fixup, eDI_reg }
#define Yvr { REP_Fixup, eDI_reg }
#define Yzr { REP_Fixup, eDI_reg }
#define indirDXr { REP_Fixup, indir_dx_reg }
#define ALr { REP_Fixup, al_reg }
#define eAXr { REP_Fixup, eAX_reg }

#define cond_jump_flag { NULL, cond_jump_mode }
#define loop_jcxz_flag { NULL, loop_jcxz_mode }

/* bits in sizeflag */
#define SUFFIX_ALWAYS 4
#define AFLAG 2
#define DFLAG 1

/* byte operand */
#define b_mode			1
/* byte operand with operand swapped */
#define b_swap_mode		(b_mode + 1)
/* operand size depends on prefixes */
#define v_mode			(b_swap_mode + 1)
/* operand size depends on prefixes with operand swapped */
#define v_swap_mode		(v_mode + 1)
/* word operand */
#define w_mode			(v_swap_mode + 1)
/* double word operand  */
#define d_mode			(w_mode + 1)
/* double word operand with operand swapped */
#define d_swap_mode		(d_mode + 1)
/* quad word operand */
#define q_mode			(d_swap_mode + 1)
/* quad word operand with operand swapped */
#define q_swap_mode		(q_mode + 1)
/* ten-byte operand */
#define t_mode			(q_swap_mode + 1)
/* 16-byte XMM or 32-byte YMM operand */
#define x_mode			(t_mode + 1)
/* 16-byte XMM or 32-byte YMM operand with operand swapped */
#define x_swap_mode		(x_mode + 1)
/* 16-byte XMM operand */
#define xmm_mode		(x_swap_mode + 1)
/* 16-byte XMM or quad word operand */
#define xmmq_mode		(xmm_mode + 1)
/* 32-byte YMM or quad word operand */
#define ymmq_mode		(xmmq_mode + 1)
/* d_mode in 32bit, q_mode in 64bit mode.  */
#define m_mode			(ymmq_mode + 1)
/* pair of v_mode operands */
#define a_mode			(m_mode + 1)
#define cond_jump_mode		(a_mode + 1)
#define loop_jcxz_mode		(cond_jump_mode + 1)
/* operand size depends on REX prefixes.  */
#define dq_mode			(loop_jcxz_mode + 1)
/* registers like dq_mode, memory like w_mode.  */
#define dqw_mode		(dq_mode + 1)
/* 4- or 6-byte pointer operand */
#define f_mode			(dqw_mode + 1)
#define const_1_mode		(f_mode + 1)
/* v_mode for stack-related opcodes.  */
#define stack_v_mode		(const_1_mode + 1)
/* non-quad operand size depends on prefixes */
#define z_mode			(stack_v_mode + 1)
/* 16-byte operand */
#define o_mode			(z_mode + 1)
/* registers like dq_mode, memory like b_mode.  */
#define dqb_mode		(o_mode + 1)
/* registers like dq_mode, memory like d_mode.  */
#define dqd_mode		(dqb_mode + 1)
/* normal vex mode */
#define vex_mode		(dqd_mode + 1)
/* 128bit vex mode */
#define vex128_mode		(vex_mode + 1)
/* 256bit vex mode */
#define vex256_mode		(vex128_mode + 1)
/* operand size depends on the VEX.W bit.  */
#define vex_w_dq_mode		(vex256_mode + 1)

#define es_reg			(vex_w_dq_mode + 1)
#define cs_reg			(es_reg + 1)
#define ss_reg			(cs_reg + 1)
#define ds_reg			(ss_reg + 1)
#define fs_reg			(ds_reg + 1)
#define gs_reg			(fs_reg + 1)

#define eAX_reg			(gs_reg + 1)
#define eCX_reg			(eAX_reg + 1)
#define eDX_reg			(eCX_reg + 1)
#define eBX_reg			(eDX_reg + 1)
#define eSP_reg			(eBX_reg + 1)
#define eBP_reg			(eSP_reg + 1)
#define eSI_reg			(eBP_reg + 1)
#define eDI_reg			(eSI_reg + 1)

#define al_reg			(eDI_reg + 1)
#define cl_reg			(al_reg + 1)
#define dl_reg			(cl_reg + 1)
#define bl_reg			(dl_reg + 1)
#define ah_reg			(bl_reg + 1)
#define ch_reg			(ah_reg + 1)
#define dh_reg			(ch_reg + 1)
#define bh_reg			(dh_reg + 1)

#define ax_reg			(bh_reg + 1)
#define cx_reg			(ax_reg + 1)
#define dx_reg			(cx_reg + 1)
#define bx_reg			(dx_reg + 1)
#define sp_reg			(bx_reg + 1)
#define bp_reg			(sp_reg + 1)
#define si_reg			(bp_reg + 1)
#define di_reg			(si_reg + 1)

#define rAX_reg			(di_reg + 1)
#define rCX_reg			(rAX_reg + 1)
#define rDX_reg			(rCX_reg + 1)
#define rBX_reg			(rDX_reg + 1)
#define rSP_reg			(rBX_reg + 1)
#define rBP_reg			(rSP_reg + 1)
#define rSI_reg			(rBP_reg + 1)
#define rDI_reg			(rSI_reg + 1)

#define z_mode_ax_reg		(rDI_reg + 1)
#define indir_dx_reg		(z_mode_ax_reg + 1)

#define MAX_BYTEMODE	indir_dx_reg


#define FLOATCODE		1
#define USE_REG_TABLE		(FLOATCODE + 1)
#define USE_MOD_TABLE		(USE_REG_TABLE + 1)
#define USE_RM_TABLE		(USE_MOD_TABLE + 1)
#define USE_PREFIX_TABLE	(USE_RM_TABLE + 1)
#define USE_X86_64_TABLE	(USE_PREFIX_TABLE + 1)
#define USE_3BYTE_TABLE		(USE_X86_64_TABLE + 1)
#define USE_VEX_C4_TABLE	(USE_3BYTE_TABLE + 1)
#define USE_VEX_C5_TABLE	(USE_VEX_C4_TABLE + 1)
#define USE_VEX_LEN_TABLE	(USE_VEX_C5_TABLE + 1)

#define FLOAT			NULL, { { NULL, FLOATCODE } }

#define DIS386(T, I)		NULL, { { NULL, (T)}, { NULL,  (I) } }
#define REG_TABLE(I)		DIS386 (USE_REG_TABLE, (I))
#define MOD_TABLE(I)		DIS386 (USE_MOD_TABLE, (I))
#define RM_TABLE(I)		DIS386 (USE_RM_TABLE, (I))
#define PREFIX_TABLE(I)		DIS386 (USE_PREFIX_TABLE, (I))
#define X86_64_TABLE(I)		DIS386 (USE_X86_64_TABLE, (I))
#define THREE_BYTE_TABLE(I)	DIS386 (USE_3BYTE_TABLE, (I))
#define VEX_C4_TABLE(I)		DIS386 (USE_VEX_C4_TABLE, (I))
#define VEX_C5_TABLE(I)		DIS386 (USE_VEX_C5_TABLE, (I))
#define VEX_LEN_TABLE(I)	DIS386 (USE_VEX_LEN_TABLE, (I))

#define REG_80			0
#define REG_81			(REG_80 + 1)
#define REG_82			(REG_81 + 1)
#define REG_8F			(REG_82 + 1)
#define REG_C0			(REG_8F + 1)
#define REG_C1			(REG_C0 + 1)
#define REG_C6			(REG_C1 + 1)
#define REG_C7			(REG_C6 + 1)
#define REG_D0			(REG_C7 + 1)
#define REG_D1			(REG_D0 + 1)
#define REG_D2			(REG_D1 + 1)
#define REG_D3			(REG_D2 + 1)
#define REG_F6			(REG_D3 + 1)
#define REG_F7			(REG_F6 + 1)
#define REG_FE			(REG_F7 + 1)
#define REG_FF			(REG_FE + 1)
#define REG_0F00		(REG_FF + 1)
#define REG_0F01		(REG_0F00 + 1)
#define REG_0F0D		(REG_0F01 + 1)
#define REG_0F18		(REG_0F0D + 1)
#define REG_0F71		(REG_0F18 + 1)
#define REG_0F72		(REG_0F71 + 1)
#define REG_0F73		(REG_0F72 + 1)
#define REG_0FA6		(REG_0F73 + 1)
#define REG_0FA7		(REG_0FA6 + 1)
#define REG_0FAE		(REG_0FA7 + 1)
#define REG_0FBA		(REG_0FAE + 1)
#define REG_0FC7		(REG_0FBA + 1)
#define REG_VEX_71		(REG_0FC7 + 1)
#define REG_VEX_72		(REG_VEX_71 + 1)
#define REG_VEX_73		(REG_VEX_72 + 1)
#define REG_VEX_AE		(REG_VEX_73 + 1)

#define MOD_8D			0
#define MOD_0F01_REG_0		(MOD_8D + 1)
#define MOD_0F01_REG_1		(MOD_0F01_REG_0 + 1)
#define MOD_0F01_REG_2		(MOD_0F01_REG_1 + 1)
#define MOD_0F01_REG_3		(MOD_0F01_REG_2 + 1)
#define MOD_0F01_REG_7		(MOD_0F01_REG_3 + 1)
#define MOD_0F12_PREFIX_0	(MOD_0F01_REG_7 + 1)
#define MOD_0F13		(MOD_0F12_PREFIX_0 + 1)
#define MOD_0F16_PREFIX_0	(MOD_0F13 + 1)
#define MOD_0F17		(MOD_0F16_PREFIX_0 + 1)
#define MOD_0F18_REG_0		(MOD_0F17 + 1)
#define MOD_0F18_REG_1		(MOD_0F18_REG_0 + 1)
#define MOD_0F18_REG_2		(MOD_0F18_REG_1 + 1)
#define MOD_0F18_REG_3		(MOD_0F18_REG_2 + 1)
#define MOD_0F20		(MOD_0F18_REG_3 + 1)
#define MOD_0F21		(MOD_0F20 + 1)
#define MOD_0F22		(MOD_0F21 + 1)
#define MOD_0F23		(MOD_0F22 + 1)
#define MOD_0F24		(MOD_0F23 + 1)
#define MOD_0F26		(MOD_0F24 + 1)
#define MOD_0F2B_PREFIX_0	(MOD_0F26 + 1)
#define MOD_0F2B_PREFIX_1	(MOD_0F2B_PREFIX_0 + 1)
#define MOD_0F2B_PREFIX_2	(MOD_0F2B_PREFIX_1 + 1)
#define MOD_0F2B_PREFIX_3	(MOD_0F2B_PREFIX_2 + 1)
#define MOD_0F51		(MOD_0F2B_PREFIX_3 + 1)
#define MOD_0F71_REG_2		(MOD_0F51 + 1)
#define MOD_0F71_REG_4		(MOD_0F71_REG_2 + 1)
#define MOD_0F71_REG_6		(MOD_0F71_REG_4 + 1)
#define MOD_0F72_REG_2		(MOD_0F71_REG_6 + 1)
#define MOD_0F72_REG_4		(MOD_0F72_REG_2 + 1)
#define MOD_0F72_REG_6		(MOD_0F72_REG_4 + 1)
#define MOD_0F73_REG_2		(MOD_0F72_REG_6 + 1)
#define MOD_0F73_REG_3		(MOD_0F73_REG_2 + 1)
#define MOD_0F73_REG_6		(MOD_0F73_REG_3 + 1)
#define MOD_0F73_REG_7		(MOD_0F73_REG_6 + 1)
#define MOD_0FAE_REG_0		(MOD_0F73_REG_7 + 1)
#define MOD_0FAE_REG_1		(MOD_0FAE_REG_0 + 1)
#define MOD_0FAE_REG_2		(MOD_0FAE_REG_1 + 1)
#define MOD_0FAE_REG_3		(MOD_0FAE_REG_2 + 1)
#define MOD_0FAE_REG_4		(MOD_0FAE_REG_3 + 1)
#define MOD_0FAE_REG_5		(MOD_0FAE_REG_4 + 1)
#define MOD_0FAE_REG_6		(MOD_0FAE_REG_5 + 1)
#define MOD_0FAE_REG_7		(MOD_0FAE_REG_6 + 1)
#define MOD_0FB2		(MOD_0FAE_REG_7 + 1)
#define MOD_0FB4		(MOD_0FB2 + 1)
#define MOD_0FB5		(MOD_0FB4 + 1)
#define MOD_0FC7_REG_6		(MOD_0FB5 + 1)
#define MOD_0FC7_REG_7		(MOD_0FC7_REG_6 + 1)
#define MOD_0FD7		(MOD_0FC7_REG_7 + 1)
#define MOD_0FE7_PREFIX_2	(MOD_0FD7 + 1)
#define MOD_0FF0_PREFIX_3	(MOD_0FE7_PREFIX_2 + 1)
#define MOD_0F382A_PREFIX_2	(MOD_0FF0_PREFIX_3 + 1)
#define MOD_62_32BIT		(MOD_0F382A_PREFIX_2 + 1)
#define MOD_C4_32BIT		(MOD_62_32BIT + 1)
#define MOD_C5_32BIT		(MOD_C4_32BIT + 1)
#define MOD_VEX_12_PREFIX_0	(MOD_C5_32BIT + 1)
#define MOD_VEX_13		(MOD_VEX_12_PREFIX_0 + 1)
#define MOD_VEX_16_PREFIX_0	(MOD_VEX_13 + 1)
#define MOD_VEX_17		(MOD_VEX_16_PREFIX_0 + 1)
#define MOD_VEX_2B		(MOD_VEX_17 + 1)
#define MOD_VEX_51		(MOD_VEX_2B + 1)
#define MOD_VEX_71_REG_2	(MOD_VEX_51 + 1)
#define MOD_VEX_71_REG_4	(MOD_VEX_71_REG_2 + 1)
#define MOD_VEX_71_REG_6	(MOD_VEX_71_REG_4 + 1)
#define MOD_VEX_72_REG_2	(MOD_VEX_71_REG_6 + 1)
#define MOD_VEX_72_REG_4	(MOD_VEX_72_REG_2 + 1)
#define MOD_VEX_72_REG_6	(MOD_VEX_72_REG_4 + 1)
#define MOD_VEX_73_REG_2	(MOD_VEX_72_REG_6 + 1)
#define MOD_VEX_73_REG_3	(MOD_VEX_73_REG_2 + 1)
#define MOD_VEX_73_REG_6	(MOD_VEX_73_REG_3 + 1)
#define MOD_VEX_73_REG_7	(MOD_VEX_73_REG_6 + 1)
#define MOD_VEX_AE_REG_2	(MOD_VEX_73_REG_7 + 1)
#define MOD_VEX_AE_REG_3	(MOD_VEX_AE_REG_2 + 1)
#define MOD_VEX_D7_PREFIX_2	(MOD_VEX_AE_REG_3 + 1)
#define MOD_VEX_E7_PREFIX_2	(MOD_VEX_D7_PREFIX_2 + 1)
#define MOD_VEX_F0_PREFIX_3	(MOD_VEX_E7_PREFIX_2 + 1)
#define MOD_VEX_3818_PREFIX_2	(MOD_VEX_F0_PREFIX_3 + 1)
#define MOD_VEX_3819_PREFIX_2	(MOD_VEX_3818_PREFIX_2 + 1)
#define MOD_VEX_381A_PREFIX_2	(MOD_VEX_3819_PREFIX_2 + 1)
#define MOD_VEX_382A_PREFIX_2	(MOD_VEX_381A_PREFIX_2 + 1)
#define MOD_VEX_382C_PREFIX_2	(MOD_VEX_382A_PREFIX_2 + 1)
#define MOD_VEX_382D_PREFIX_2	(MOD_VEX_382C_PREFIX_2 + 1)
#define MOD_VEX_382E_PREFIX_2	(MOD_VEX_382D_PREFIX_2 + 1)
#define MOD_VEX_382F_PREFIX_2	(MOD_VEX_382E_PREFIX_2 + 1)

#define RM_0F01_REG_0		0
#define RM_0F01_REG_1		(RM_0F01_REG_0 + 1)
#define RM_0F01_REG_2		(RM_0F01_REG_1 + 1)
#define RM_0F01_REG_3		(RM_0F01_REG_2 + 1)
#define RM_0F01_REG_7		(RM_0F01_REG_3 + 1)
#define RM_0FAE_REG_5		(RM_0F01_REG_7 + 1)
#define RM_0FAE_REG_6		(RM_0FAE_REG_5 + 1)
#define RM_0FAE_REG_7		(RM_0FAE_REG_6 + 1)

#define PREFIX_90		0
#define PREFIX_0F10		(PREFIX_90 + 1)
#define PREFIX_0F11		(PREFIX_0F10 + 1)
#define PREFIX_0F12		(PREFIX_0F11 + 1)
#define PREFIX_0F16		(PREFIX_0F12 + 1)
#define PREFIX_0F2A		(PREFIX_0F16 + 1)
#define PREFIX_0F2B		(PREFIX_0F2A + 1)
#define PREFIX_0F2C		(PREFIX_0F2B + 1)
#define PREFIX_0F2D		(PREFIX_0F2C + 1)
#define PREFIX_0F2E		(PREFIX_0F2D + 1)
#define PREFIX_0F2F		(PREFIX_0F2E + 1)
#define PREFIX_0F51		(PREFIX_0F2F + 1)
#define PREFIX_0F52		(PREFIX_0F51 + 1)
#define PREFIX_0F53		(PREFIX_0F52 + 1)
#define PREFIX_0F58		(PREFIX_0F53 + 1)
#define PREFIX_0F59		(PREFIX_0F58 + 1)
#define PREFIX_0F5A		(PREFIX_0F59 + 1)
#define PREFIX_0F5B		(PREFIX_0F5A + 1)
#define PREFIX_0F5C		(PREFIX_0F5B + 1)
#define PREFIX_0F5D		(PREFIX_0F5C + 1)
#define PREFIX_0F5E		(PREFIX_0F5D + 1)
#define PREFIX_0F5F		(PREFIX_0F5E + 1)
#define PREFIX_0F60		(PREFIX_0F5F + 1)
#define PREFIX_0F61		(PREFIX_0F60 + 1)
#define PREFIX_0F62		(PREFIX_0F61 + 1)
#define PREFIX_0F6C		(PREFIX_0F62 + 1)
#define PREFIX_0F6D		(PREFIX_0F6C + 1)
#define PREFIX_0F6F		(PREFIX_0F6D + 1)
#define PREFIX_0F70		(PREFIX_0F6F + 1)
#define PREFIX_0F73_REG_3	(PREFIX_0F70 + 1)
#define PREFIX_0F73_REG_7	(PREFIX_0F73_REG_3 + 1)
#define PREFIX_0F78		(PREFIX_0F73_REG_7 + 1)
#define PREFIX_0F79		(PREFIX_0F78 + 1)
#define PREFIX_0F7C		(PREFIX_0F79 + 1)
#define PREFIX_0F7D		(PREFIX_0F7C + 1)
#define PREFIX_0F7E		(PREFIX_0F7D + 1)
#define PREFIX_0F7F		(PREFIX_0F7E + 1)
#define PREFIX_0FB8		(PREFIX_0F7F + 1)
#define PREFIX_0FBD		(PREFIX_0FB8 + 1)
#define PREFIX_0FC2		(PREFIX_0FBD + 1)
#define PREFIX_0FC3		(PREFIX_0FC2 + 1)
#define PREFIX_0FC7_REG_6	(PREFIX_0FC3 + 1)
#define PREFIX_0FD0		(PREFIX_0FC7_REG_6 + 1)
#define PREFIX_0FD6		(PREFIX_0FD0 + 1)
#define PREFIX_0FE6		(PREFIX_0FD6 + 1)
#define PREFIX_0FE7		(PREFIX_0FE6 + 1)
#define PREFIX_0FF0		(PREFIX_0FE7 + 1)
#define PREFIX_0FF7		(PREFIX_0FF0 + 1)
#define PREFIX_0F3810		(PREFIX_0FF7 + 1)
#define PREFIX_0F3814		(PREFIX_0F3810 + 1)
#define PREFIX_0F3815		(PREFIX_0F3814 + 1)
#define PREFIX_0F3817		(PREFIX_0F3815 + 1)
#define PREFIX_0F3820		(PREFIX_0F3817 + 1)
#define PREFIX_0F3821		(PREFIX_0F3820 + 1)
#define PREFIX_0F3822		(PREFIX_0F3821 + 1)
#define PREFIX_0F3823		(PREFIX_0F3822 + 1)
#define PREFIX_0F3824		(PREFIX_0F3823 + 1)
#define PREFIX_0F3825		(PREFIX_0F3824 + 1)
#define PREFIX_0F3828		(PREFIX_0F3825 + 1)
#define PREFIX_0F3829		(PREFIX_0F3828 + 1)
#define PREFIX_0F382A		(PREFIX_0F3829 + 1)
#define PREFIX_0F382B		(PREFIX_0F382A + 1)
#define PREFIX_0F3830		(PREFIX_0F382B + 1)
#define PREFIX_0F3831		(PREFIX_0F3830 + 1)
#define PREFIX_0F3832		(PREFIX_0F3831 + 1)
#define PREFIX_0F3833		(PREFIX_0F3832 + 1)
#define PREFIX_0F3834		(PREFIX_0F3833 + 1)
#define PREFIX_0F3835		(PREFIX_0F3834 + 1)
#define PREFIX_0F3837		(PREFIX_0F3835 + 1)
#define PREFIX_0F3838		(PREFIX_0F3837 + 1)
#define PREFIX_0F3839		(PREFIX_0F3838 + 1)
#define PREFIX_0F383A		(PREFIX_0F3839 + 1)
#define PREFIX_0F383B		(PREFIX_0F383A + 1)
#define PREFIX_0F383C		(PREFIX_0F383B + 1)
#define PREFIX_0F383D		(PREFIX_0F383C + 1)
#define PREFIX_0F383E		(PREFIX_0F383D + 1)
#define PREFIX_0F383F		(PREFIX_0F383E + 1)
#define PREFIX_0F3840		(PREFIX_0F383F + 1)
#define PREFIX_0F3841		(PREFIX_0F3840 + 1)
#define PREFIX_0F3880		(PREFIX_0F3841 + 1)
#define PREFIX_0F3881		(PREFIX_0F3880 + 1)
#define PREFIX_0F38DB		(PREFIX_0F3881 + 1)
#define PREFIX_0F38DC		(PREFIX_0F38DB + 1)
#define PREFIX_0F38DD		(PREFIX_0F38DC + 1)
#define PREFIX_0F38DE		(PREFIX_0F38DD + 1)
#define PREFIX_0F38DF		(PREFIX_0F38DE + 1)
#define PREFIX_0F38F0		(PREFIX_0F38DF + 1)
#define PREFIX_0F38F1		(PREFIX_0F38F0 + 1)
#define PREFIX_0F3A08		(PREFIX_0F38F1 + 1)
#define PREFIX_0F3A09		(PREFIX_0F3A08 + 1)
#define PREFIX_0F3A0A		(PREFIX_0F3A09 + 1)
#define PREFIX_0F3A0B		(PREFIX_0F3A0A + 1)
#define PREFIX_0F3A0C		(PREFIX_0F3A0B + 1)
#define PREFIX_0F3A0D		(PREFIX_0F3A0C + 1)
#define PREFIX_0F3A0E		(PREFIX_0F3A0D + 1)
#define PREFIX_0F3A14		(PREFIX_0F3A0E + 1)
#define PREFIX_0F3A15		(PREFIX_0F3A14 + 1)
#define PREFIX_0F3A16		(PREFIX_0F3A15 + 1)
#define PREFIX_0F3A17		(PREFIX_0F3A16 + 1)
#define PREFIX_0F3A20		(PREFIX_0F3A17 + 1)
#define PREFIX_0F3A21		(PREFIX_0F3A20 + 1)
#define PREFIX_0F3A22		(PREFIX_0F3A21 + 1)
#define PREFIX_0F3A40		(PREFIX_0F3A22 + 1)
#define PREFIX_0F3A41		(PREFIX_0F3A40 + 1)
#define PREFIX_0F3A42		(PREFIX_0F3A41 + 1)
#define PREFIX_0F3A44		(PREFIX_0F3A42 + 1)
#define PREFIX_0F3A60		(PREFIX_0F3A44 + 1)
#define PREFIX_0F3A61		(PREFIX_0F3A60 + 1)
#define PREFIX_0F3A62		(PREFIX_0F3A61 + 1)
#define PREFIX_0F3A63		(PREFIX_0F3A62 + 1)
#define PREFIX_0F3ADF		(PREFIX_0F3A63 + 1)
#define PREFIX_VEX_10		(PREFIX_0F3ADF + 1)
#define PREFIX_VEX_11		(PREFIX_VEX_10 + 1)
#define PREFIX_VEX_12		(PREFIX_VEX_11 + 1)
#define PREFIX_VEX_16		(PREFIX_VEX_12 + 1)
#define PREFIX_VEX_2A		(PREFIX_VEX_16 + 1)
#define PREFIX_VEX_2C		(PREFIX_VEX_2A + 1)
#define PREFIX_VEX_2D		(PREFIX_VEX_2C + 1)
#define PREFIX_VEX_2E		(PREFIX_VEX_2D + 1)
#define PREFIX_VEX_2F		(PREFIX_VEX_2E + 1)
#define PREFIX_VEX_51		(PREFIX_VEX_2F + 1)
#define PREFIX_VEX_52		(PREFIX_VEX_51 + 1)
#define PREFIX_VEX_53		(PREFIX_VEX_52 + 1)
#define PREFIX_VEX_58		(PREFIX_VEX_53 + 1)
#define PREFIX_VEX_59		(PREFIX_VEX_58 + 1)
#define PREFIX_VEX_5A		(PREFIX_VEX_59 + 1)
#define PREFIX_VEX_5B		(PREFIX_VEX_5A + 1)
#define PREFIX_VEX_5C		(PREFIX_VEX_5B + 1)
#define PREFIX_VEX_5D		(PREFIX_VEX_5C + 1)
#define PREFIX_VEX_5E		(PREFIX_VEX_5D + 1)
#define PREFIX_VEX_5F		(PREFIX_VEX_5E + 1)
#define PREFIX_VEX_60		(PREFIX_VEX_5F + 1)
#define PREFIX_VEX_61		(PREFIX_VEX_60 + 1)
#define PREFIX_VEX_62		(PREFIX_VEX_61 + 1)
#define PREFIX_VEX_63		(PREFIX_VEX_62 + 1)
#define PREFIX_VEX_64		(PREFIX_VEX_63 + 1)
#define PREFIX_VEX_65		(PREFIX_VEX_64 + 1)
#define PREFIX_VEX_66		(PREFIX_VEX_65 + 1)
#define PREFIX_VEX_67		(PREFIX_VEX_66 + 1)
#define PREFIX_VEX_68		(PREFIX_VEX_67 + 1)
#define PREFIX_VEX_69		(PREFIX_VEX_68 + 1)
#define PREFIX_VEX_6A		(PREFIX_VEX_69 + 1)
#define PREFIX_VEX_6B		(PREFIX_VEX_6A + 1)
#define PREFIX_VEX_6C		(PREFIX_VEX_6B + 1)
#define PREFIX_VEX_6D		(PREFIX_VEX_6C + 1)
#define PREFIX_VEX_6E		(PREFIX_VEX_6D + 1)
#define PREFIX_VEX_6F		(PREFIX_VEX_6E + 1)
#define PREFIX_VEX_70		(PREFIX_VEX_6F + 1)
#define PREFIX_VEX_71_REG_2	(PREFIX_VEX_70 + 1)
#define PREFIX_VEX_71_REG_4	(PREFIX_VEX_71_REG_2 + 1)
#define PREFIX_VEX_71_REG_6	(PREFIX_VEX_71_REG_4 + 1)
#define PREFIX_VEX_72_REG_2	(PREFIX_VEX_71_REG_6 + 1)
#define PREFIX_VEX_72_REG_4	(PREFIX_VEX_72_REG_2 + 1)
#define PREFIX_VEX_72_REG_6	(PREFIX_VEX_72_REG_4 + 1)
#define PREFIX_VEX_73_REG_2	(PREFIX_VEX_72_REG_6 + 1)
#define PREFIX_VEX_73_REG_3	(PREFIX_VEX_73_REG_2 + 1)
#define PREFIX_VEX_73_REG_6	(PREFIX_VEX_73_REG_3 + 1)
#define PREFIX_VEX_73_REG_7	(PREFIX_VEX_73_REG_6 + 1)
#define PREFIX_VEX_74		(PREFIX_VEX_73_REG_7 + 1)
#define PREFIX_VEX_75		(PREFIX_VEX_74 + 1)
#define PREFIX_VEX_76		(PREFIX_VEX_75 + 1)
#define PREFIX_VEX_77		(PREFIX_VEX_76 + 1)
#define PREFIX_VEX_7C		(PREFIX_VEX_77 + 1)
#define PREFIX_VEX_7D		(PREFIX_VEX_7C + 1)
#define PREFIX_VEX_7E		(PREFIX_VEX_7D + 1)
#define PREFIX_VEX_7F		(PREFIX_VEX_7E + 1)
#define PREFIX_VEX_C2		(PREFIX_VEX_7F + 1)
#define PREFIX_VEX_C4		(PREFIX_VEX_C2 + 1)
#define PREFIX_VEX_C5		(PREFIX_VEX_C4 + 1)
#define PREFIX_VEX_D0		(PREFIX_VEX_C5 + 1)
#define PREFIX_VEX_D1		(PREFIX_VEX_D0 + 1)
#define PREFIX_VEX_D2		(PREFIX_VEX_D1 + 1)
#define PREFIX_VEX_D3		(PREFIX_VEX_D2 + 1)
#define PREFIX_VEX_D4		(PREFIX_VEX_D3 + 1)
#define PREFIX_VEX_D5		(PREFIX_VEX_D4 + 1)
#define PREFIX_VEX_D6		(PREFIX_VEX_D5 + 1)
#define PREFIX_VEX_D7		(PREFIX_VEX_D6 + 1)
#define PREFIX_VEX_D8		(PREFIX_VEX_D7 + 1)
#define PREFIX_VEX_D9		(PREFIX_VEX_D8 + 1)
#define PREFIX_VEX_DA		(PREFIX_VEX_D9 + 1)
#define PREFIX_VEX_DB		(PREFIX_VEX_DA + 1)
#define PREFIX_VEX_DC		(PREFIX_VEX_DB + 1)
#define PREFIX_VEX_DD		(PREFIX_VEX_DC + 1)
#define PREFIX_VEX_DE		(PREFIX_VEX_DD + 1)
#define PREFIX_VEX_DF		(PREFIX_VEX_DE + 1)
#define PREFIX_VEX_E0		(PREFIX_VEX_DF + 1)
#define PREFIX_VEX_E1		(PREFIX_VEX_E0 + 1)
#define PREFIX_VEX_E2		(PREFIX_VEX_E1 + 1)
#define PREFIX_VEX_E3		(PREFIX_VEX_E2 + 1)
#define PREFIX_VEX_E4		(PREFIX_VEX_E3 + 1)
#define PREFIX_VEX_E5		(PREFIX_VEX_E4 + 1)
#define PREFIX_VEX_E6		(PREFIX_VEX_E5 + 1)
#define PREFIX_VEX_E7		(PREFIX_VEX_E6 + 1)
#define PREFIX_VEX_E8		(PREFIX_VEX_E7 + 1)
#define PREFIX_VEX_E9		(PREFIX_VEX_E8 + 1)
#define PREFIX_VEX_EA		(PREFIX_VEX_E9 + 1)
#define PREFIX_VEX_EB		(PREFIX_VEX_EA + 1)
#define PREFIX_VEX_EC		(PREFIX_VEX_EB + 1)
#define PREFIX_VEX_ED		(PREFIX_VEX_EC + 1)
#define PREFIX_VEX_EE		(PREFIX_VEX_ED + 1)
#define PREFIX_VEX_EF		(PREFIX_VEX_EE + 1)
#define PREFIX_VEX_F0		(PREFIX_VEX_EF + 1)
#define PREFIX_VEX_F1		(PREFIX_VEX_F0 + 1)
#define PREFIX_VEX_F2		(PREFIX_VEX_F1 + 1)
#define PREFIX_VEX_F3		(PREFIX_VEX_F2 + 1)
#define PREFIX_VEX_F4		(PREFIX_VEX_F3 + 1)
#define PREFIX_VEX_F5		(PREFIX_VEX_F4 + 1)
#define PREFIX_VEX_F6		(PREFIX_VEX_F5 + 1)
#define PREFIX_VEX_F7		(PREFIX_VEX_F6 + 1)
#define PREFIX_VEX_F8		(PREFIX_VEX_F7 + 1)
#define PREFIX_VEX_F9		(PREFIX_VEX_F8 + 1)
#define PREFIX_VEX_FA		(PREFIX_VEX_F9 + 1)
#define PREFIX_VEX_FB		(PREFIX_VEX_FA + 1)
#define PREFIX_VEX_FC		(PREFIX_VEX_FB + 1)
#define PREFIX_VEX_FD		(PREFIX_VEX_FC + 1)
#define PREFIX_VEX_FE		(PREFIX_VEX_FD + 1)
#define PREFIX_VEX_3800		(PREFIX_VEX_FE + 1)
#define PREFIX_VEX_3801		(PREFIX_VEX_3800 + 1)
#define PREFIX_VEX_3802		(PREFIX_VEX_3801 + 1)
#define PREFIX_VEX_3803		(PREFIX_VEX_3802 + 1)
#define PREFIX_VEX_3804		(PREFIX_VEX_3803 + 1)
#define PREFIX_VEX_3805		(PREFIX_VEX_3804 + 1)
#define PREFIX_VEX_3806		(PREFIX_VEX_3805 + 1)
#define PREFIX_VEX_3807		(PREFIX_VEX_3806 + 1)
#define PREFIX_VEX_3808		(PREFIX_VEX_3807 + 1)
#define PREFIX_VEX_3809		(PREFIX_VEX_3808 + 1)
#define PREFIX_VEX_380A		(PREFIX_VEX_3809 + 1)
#define PREFIX_VEX_380B		(PREFIX_VEX_380A + 1)
#define PREFIX_VEX_380C		(PREFIX_VEX_380B + 1)
#define PREFIX_VEX_380D		(PREFIX_VEX_380C + 1)
#define PREFIX_VEX_380E		(PREFIX_VEX_380D + 1)
#define PREFIX_VEX_380F		(PREFIX_VEX_380E + 1)
#define PREFIX_VEX_3817		(PREFIX_VEX_380F + 1)
#define PREFIX_VEX_3818		(PREFIX_VEX_3817 + 1)
#define PREFIX_VEX_3819		(PREFIX_VEX_3818 + 1)
#define PREFIX_VEX_381A		(PREFIX_VEX_3819 + 1)
#define PREFIX_VEX_381C		(PREFIX_VEX_381A + 1)
#define PREFIX_VEX_381D		(PREFIX_VEX_381C + 1)
#define PREFIX_VEX_381E		(PREFIX_VEX_381D + 1)
#define PREFIX_VEX_3820		(PREFIX_VEX_381E + 1)
#define PREFIX_VEX_3821		(PREFIX_VEX_3820 + 1)
#define PREFIX_VEX_3822		(PREFIX_VEX_3821 + 1)
#define PREFIX_VEX_3823		(PREFIX_VEX_3822 + 1)
#define PREFIX_VEX_3824		(PREFIX_VEX_3823 + 1)
#define PREFIX_VEX_3825		(PREFIX_VEX_3824 + 1)
#define PREFIX_VEX_3828		(PREFIX_VEX_3825 + 1)
#define PREFIX_VEX_3829		(PREFIX_VEX_3828 + 1)
#define PREFIX_VEX_382A		(PREFIX_VEX_3829 + 1)
#define PREFIX_VEX_382B		(PREFIX_VEX_382A + 1)
#define PREFIX_VEX_382C		(PREFIX_VEX_382B + 1)
#define PREFIX_VEX_382D		(PREFIX_VEX_382C + 1)
#define PREFIX_VEX_382E		(PREFIX_VEX_382D + 1)
#define PREFIX_VEX_382F		(PREFIX_VEX_382E + 1)
#define PREFIX_VEX_3830		(PREFIX_VEX_382F + 1)
#define PREFIX_VEX_3831		(PREFIX_VEX_3830 + 1)
#define PREFIX_VEX_3832		(PREFIX_VEX_3831 + 1)
#define PREFIX_VEX_3833		(PREFIX_VEX_3832 + 1)
#define PREFIX_VEX_3834		(PREFIX_VEX_3833 + 1)
#define PREFIX_VEX_3835		(PREFIX_VEX_3834 + 1)
#define PREFIX_VEX_3837		(PREFIX_VEX_3835 + 1)
#define PREFIX_VEX_3838		(PREFIX_VEX_3837 + 1)
#define PREFIX_VEX_3839		(PREFIX_VEX_3838 + 1)
#define PREFIX_VEX_383A		(PREFIX_VEX_3839 + 1)
#define PREFIX_VEX_383B		(PREFIX_VEX_383A + 1)
#define PREFIX_VEX_383C		(PREFIX_VEX_383B + 1)
#define PREFIX_VEX_383D		(PREFIX_VEX_383C + 1)
#define PREFIX_VEX_383E		(PREFIX_VEX_383D + 1)
#define PREFIX_VEX_383F		(PREFIX_VEX_383E + 1)
#define PREFIX_VEX_3840		(PREFIX_VEX_383F + 1)
#define PREFIX_VEX_3841		(PREFIX_VEX_3840 + 1)
#define PREFIX_VEX_3896		(PREFIX_VEX_3841 + 1)
#define PREFIX_VEX_3897		(PREFIX_VEX_3896 + 1)
#define PREFIX_VEX_3898		(PREFIX_VEX_3897 + 1)
#define PREFIX_VEX_3899		(PREFIX_VEX_3898 + 1)
#define PREFIX_VEX_389A		(PREFIX_VEX_3899 + 1)
#define PREFIX_VEX_389B		(PREFIX_VEX_389A + 1)
#define PREFIX_VEX_389C		(PREFIX_VEX_389B + 1)
#define PREFIX_VEX_389D		(PREFIX_VEX_389C + 1)
#define PREFIX_VEX_389E		(PREFIX_VEX_389D + 1)
#define PREFIX_VEX_389F		(PREFIX_VEX_389E + 1)
#define PREFIX_VEX_38A6		(PREFIX_VEX_389F + 1)
#define PREFIX_VEX_38A7		(PREFIX_VEX_38A6 + 1)
#define PREFIX_VEX_38A8		(PREFIX_VEX_38A7 + 1)
#define PREFIX_VEX_38A9		(PREFIX_VEX_38A8 + 1)
#define PREFIX_VEX_38AA		(PREFIX_VEX_38A9 + 1)
#define PREFIX_VEX_38AB		(PREFIX_VEX_38AA + 1)
#define PREFIX_VEX_38AC		(PREFIX_VEX_38AB + 1)
#define PREFIX_VEX_38AD		(PREFIX_VEX_38AC + 1)
#define PREFIX_VEX_38AE		(PREFIX_VEX_38AD + 1)
#define PREFIX_VEX_38AF		(PREFIX_VEX_38AE + 1)
#define PREFIX_VEX_38B6		(PREFIX_VEX_38AF + 1)
#define PREFIX_VEX_38B7		(PREFIX_VEX_38B6 + 1)
#define PREFIX_VEX_38B8		(PREFIX_VEX_38B7 + 1)
#define PREFIX_VEX_38B9		(PREFIX_VEX_38B8 + 1)
#define PREFIX_VEX_38BA		(PREFIX_VEX_38B9 + 1)
#define PREFIX_VEX_38BB		(PREFIX_VEX_38BA + 1)
#define PREFIX_VEX_38BC		(PREFIX_VEX_38BB + 1)
#define PREFIX_VEX_38BD		(PREFIX_VEX_38BC + 1)
#define PREFIX_VEX_38BE		(PREFIX_VEX_38BD + 1)
#define PREFIX_VEX_38BF		(PREFIX_VEX_38BE + 1)
#define PREFIX_VEX_38DB		(PREFIX_VEX_38BF + 1)
#define PREFIX_VEX_38DC		(PREFIX_VEX_38DB + 1)
#define PREFIX_VEX_38DD		(PREFIX_VEX_38DC + 1)
#define PREFIX_VEX_38DE		(PREFIX_VEX_38DD + 1)
#define PREFIX_VEX_38DF		(PREFIX_VEX_38DE + 1)
#define PREFIX_VEX_3A04		(PREFIX_VEX_38DF + 1)
#define PREFIX_VEX_3A05		(PREFIX_VEX_3A04 + 1)
#define PREFIX_VEX_3A06		(PREFIX_VEX_3A05 + 1)
#define PREFIX_VEX_3A08		(PREFIX_VEX_3A06 + 1)
#define PREFIX_VEX_3A09		(PREFIX_VEX_3A08 + 1)
#define PREFIX_VEX_3A0A		(PREFIX_VEX_3A09 + 1)
#define PREFIX_VEX_3A0B		(PREFIX_VEX_3A0A + 1)
#define PREFIX_VEX_3A0C		(PREFIX_VEX_3A0B + 1)
#define PREFIX_VEX_3A0D		(PREFIX_VEX_3A0C + 1)
#define PREFIX_VEX_3A0E		(PREFIX_VEX_3A0D + 1)
#define PREFIX_VEX_3A0F		(PREFIX_VEX_3A0E + 1)
#define PREFIX_VEX_3A14		(PREFIX_VEX_3A0F + 1)
#define PREFIX_VEX_3A15		(PREFIX_VEX_3A14 + 1)
#define PREFIX_VEX_3A16		(PREFIX_VEX_3A15 + 1)
#define PREFIX_VEX_3A17		(PREFIX_VEX_3A16 + 1)
#define PREFIX_VEX_3A18		(PREFIX_VEX_3A17 + 1)
#define PREFIX_VEX_3A19		(PREFIX_VEX_3A18 + 1)
#define PREFIX_VEX_3A20		(PREFIX_VEX_3A19 + 1)
#define PREFIX_VEX_3A21		(PREFIX_VEX_3A20 + 1)
#define PREFIX_VEX_3A22		(PREFIX_VEX_3A21 + 1)
#define PREFIX_VEX_3A40		(PREFIX_VEX_3A22 + 1)
#define PREFIX_VEX_3A41		(PREFIX_VEX_3A40 + 1)
#define PREFIX_VEX_3A42		(PREFIX_VEX_3A41 + 1)
#define PREFIX_VEX_3A44		(PREFIX_VEX_3A42 + 1)
#define PREFIX_VEX_3A4A		(PREFIX_VEX_3A44 + 1)
#define PREFIX_VEX_3A4B		(PREFIX_VEX_3A4A + 1)
#define PREFIX_VEX_3A4C		(PREFIX_VEX_3A4B + 1)
#define PREFIX_VEX_3A5C		(PREFIX_VEX_3A4C + 1)
#define PREFIX_VEX_3A5D		(PREFIX_VEX_3A5C + 1)
#define PREFIX_VEX_3A5E		(PREFIX_VEX_3A5D + 1)
#define PREFIX_VEX_3A5F		(PREFIX_VEX_3A5E + 1)
#define PREFIX_VEX_3A60		(PREFIX_VEX_3A5F + 1)
#define PREFIX_VEX_3A61		(PREFIX_VEX_3A60 + 1)
#define PREFIX_VEX_3A62		(PREFIX_VEX_3A61 + 1)
#define PREFIX_VEX_3A63		(PREFIX_VEX_3A62 + 1)
#define PREFIX_VEX_3A68		(PREFIX_VEX_3A63 + 1)
#define PREFIX_VEX_3A69		(PREFIX_VEX_3A68 + 1)
#define PREFIX_VEX_3A6A		(PREFIX_VEX_3A69 + 1)
#define PREFIX_VEX_3A6B		(PREFIX_VEX_3A6A + 1)
#define PREFIX_VEX_3A6C		(PREFIX_VEX_3A6B + 1)
#define PREFIX_VEX_3A6D		(PREFIX_VEX_3A6C + 1)
#define PREFIX_VEX_3A6E		(PREFIX_VEX_3A6D + 1)
#define PREFIX_VEX_3A6F		(PREFIX_VEX_3A6E + 1)
#define PREFIX_VEX_3A78		(PREFIX_VEX_3A6F + 1)
#define PREFIX_VEX_3A79		(PREFIX_VEX_3A78 + 1)
#define PREFIX_VEX_3A7A		(PREFIX_VEX_3A79 + 1)
#define PREFIX_VEX_3A7B		(PREFIX_VEX_3A7A + 1)
#define PREFIX_VEX_3A7C		(PREFIX_VEX_3A7B + 1)
#define PREFIX_VEX_3A7D		(PREFIX_VEX_3A7C + 1)
#define PREFIX_VEX_3A7E		(PREFIX_VEX_3A7D + 1)
#define PREFIX_VEX_3A7F		(PREFIX_VEX_3A7E + 1)
#define PREFIX_VEX_3ADF		(PREFIX_VEX_3A7F + 1)

#define X86_64_06		0
#define X86_64_07		(X86_64_06 + 1)
#define X86_64_0D		(X86_64_07 + 1)
#define X86_64_16		(X86_64_0D + 1)
#define X86_64_17		(X86_64_16 + 1)
#define X86_64_1E		(X86_64_17 + 1)
#define X86_64_1F		(X86_64_1E + 1)
#define X86_64_27		(X86_64_1F + 1)
#define X86_64_2F		(X86_64_27 + 1)
#define X86_64_37		(X86_64_2F + 1)
#define X86_64_3F		(X86_64_37 + 1)
#define X86_64_60		(X86_64_3F + 1)
#define X86_64_61		(X86_64_60 + 1)
#define X86_64_62		(X86_64_61 + 1)
#define X86_64_63		(X86_64_62 + 1)
#define X86_64_6D		(X86_64_63 + 1)
#define X86_64_6F		(X86_64_6D + 1)
#define X86_64_9A		(X86_64_6F + 1)
#define X86_64_C4		(X86_64_9A + 1)
#define X86_64_C5		(X86_64_C4 + 1)
#define X86_64_CE		(X86_64_C5 + 1)
#define X86_64_D4		(X86_64_CE + 1)
#define X86_64_D5		(X86_64_D4 + 1)
#define X86_64_EA		(X86_64_D5 + 1)
#define X86_64_0F01_REG_0	(X86_64_EA + 1)
#define X86_64_0F01_REG_1	(X86_64_0F01_REG_0 + 1)
#define X86_64_0F01_REG_2	(X86_64_0F01_REG_1 + 1)
#define X86_64_0F01_REG_3	(X86_64_0F01_REG_2 + 1)

#define THREE_BYTE_0F38		0
#define THREE_BYTE_0F3A		(THREE_BYTE_0F38 + 1)
#define THREE_BYTE_0F7A		(THREE_BYTE_0F3A + 1)

#define VEX_0F			0
#define VEX_0F38		(VEX_0F + 1)
#define VEX_0F3A		(VEX_0F38 + 1)

#define VEX_LEN_10_P_1	0
#define VEX_LEN_10_P_3	(VEX_LEN_10_P_1 + 1)
#define VEX_LEN_11_P_1	(VEX_LEN_10_P_3 + 1)
#define VEX_LEN_11_P_3	(VEX_LEN_11_P_1 + 1)
#define VEX_LEN_12_P_0_M_0	(VEX_LEN_11_P_3 + 1)
#define VEX_LEN_12_P_0_M_1	(VEX_LEN_12_P_0_M_0 + 1)
#define VEX_LEN_12_P_2	(VEX_LEN_12_P_0_M_1 + 1)
#define VEX_LEN_13_M_0	(VEX_LEN_12_P_2 + 1)
#define VEX_LEN_16_P_0_M_0	(VEX_LEN_13_M_0 + 1)
#define VEX_LEN_16_P_0_M_1	(VEX_LEN_16_P_0_M_0 + 1)
#define VEX_LEN_16_P_2	(VEX_LEN_16_P_0_M_1 + 1)
#define VEX_LEN_17_M_0	(VEX_LEN_16_P_2 + 1)
#define VEX_LEN_2A_P_1	(VEX_LEN_17_M_0 + 1)
#define VEX_LEN_2A_P_3	(VEX_LEN_2A_P_1 + 1)
#define VEX_LEN_2C_P_1	(VEX_LEN_2A_P_3 + 1)
#define VEX_LEN_2C_P_3	(VEX_LEN_2C_P_1 + 1)
#define VEX_LEN_2D_P_1	(VEX_LEN_2C_P_3 + 1)
#define VEX_LEN_2D_P_3	(VEX_LEN_2D_P_1 + 1)
#define VEX_LEN_2E_P_0	(VEX_LEN_2D_P_3 + 1)
#define VEX_LEN_2E_P_2	(VEX_LEN_2E_P_0 + 1)
#define VEX_LEN_2F_P_0	(VEX_LEN_2E_P_2 + 1)
#define VEX_LEN_2F_P_2	(VEX_LEN_2F_P_0 + 1)
#define VEX_LEN_51_P_1	(VEX_LEN_2F_P_2 + 1)
#define VEX_LEN_51_P_3	(VEX_LEN_51_P_1 + 1)
#define VEX_LEN_52_P_1	(VEX_LEN_51_P_3 + 1)
#define VEX_LEN_53_P_1	(VEX_LEN_52_P_1 + 1)
#define VEX_LEN_58_P_1	(VEX_LEN_53_P_1 + 1)
#define VEX_LEN_58_P_3	(VEX_LEN_58_P_1 + 1)
#define VEX_LEN_59_P_1	(VEX_LEN_58_P_3 + 1)
#define VEX_LEN_59_P_3	(VEX_LEN_59_P_1 + 1)
#define VEX_LEN_5A_P_1	(VEX_LEN_59_P_3 + 1)
#define VEX_LEN_5A_P_3	(VEX_LEN_5A_P_1 + 1)
#define VEX_LEN_5C_P_1	(VEX_LEN_5A_P_3 + 1)
#define VEX_LEN_5C_P_3	(VEX_LEN_5C_P_1 + 1)
#define VEX_LEN_5D_P_1	(VEX_LEN_5C_P_3 + 1)
#define VEX_LEN_5D_P_3	(VEX_LEN_5D_P_1 + 1)
#define VEX_LEN_5E_P_1	(VEX_LEN_5D_P_3 + 1)
#define VEX_LEN_5E_P_3	(VEX_LEN_5E_P_1 + 1)
#define VEX_LEN_5F_P_1	(VEX_LEN_5E_P_3 + 1)
#define VEX_LEN_5F_P_3	(VEX_LEN_5F_P_1 + 1)
#define VEX_LEN_60_P_2	(VEX_LEN_5F_P_3 + 1)
#define VEX_LEN_61_P_2	(VEX_LEN_60_P_2 + 1)
#define VEX_LEN_62_P_2	(VEX_LEN_61_P_2 + 1)
#define VEX_LEN_63_P_2	(VEX_LEN_62_P_2 + 1)
#define VEX_LEN_64_P_2	(VEX_LEN_63_P_2 + 1)
#define VEX_LEN_65_P_2	(VEX_LEN_64_P_2 + 1)
#define VEX_LEN_66_P_2	(VEX_LEN_65_P_2 + 1)
#define VEX_LEN_67_P_2	(VEX_LEN_66_P_2 + 1)
#define VEX_LEN_68_P_2	(VEX_LEN_67_P_2 + 1)
#define VEX_LEN_69_P_2	(VEX_LEN_68_P_2 + 1)
#define VEX_LEN_6A_P_2	(VEX_LEN_69_P_2 + 1)
#define VEX_LEN_6B_P_2	(VEX_LEN_6A_P_2 + 1)
#define VEX_LEN_6C_P_2	(VEX_LEN_6B_P_2 + 1)
#define VEX_LEN_6D_P_2	(VEX_LEN_6C_P_2 + 1)
#define VEX_LEN_6E_P_2	(VEX_LEN_6D_P_2 + 1)
#define VEX_LEN_70_P_1	(VEX_LEN_6E_P_2 + 1)
#define VEX_LEN_70_P_2	(VEX_LEN_70_P_1 + 1)
#define VEX_LEN_70_P_3	(VEX_LEN_70_P_2 + 1)
#define VEX_LEN_71_R_2_P_2	(VEX_LEN_70_P_3 + 1)
#define VEX_LEN_71_R_4_P_2	(VEX_LEN_71_R_2_P_2 + 1)
#define VEX_LEN_71_R_6_P_2	(VEX_LEN_71_R_4_P_2 + 1)
#define VEX_LEN_72_R_2_P_2	(VEX_LEN_71_R_6_P_2 + 1)
#define VEX_LEN_72_R_4_P_2	(VEX_LEN_72_R_2_P_2 + 1)
#define VEX_LEN_72_R_6_P_2	(VEX_LEN_72_R_4_P_2 + 1)
#define VEX_LEN_73_R_2_P_2	(VEX_LEN_72_R_6_P_2 + 1)
#define VEX_LEN_73_R_3_P_2	(VEX_LEN_73_R_2_P_2 + 1)
#define VEX_LEN_73_R_6_P_2	(VEX_LEN_73_R_3_P_2 + 1)
#define VEX_LEN_73_R_7_P_2	(VEX_LEN_73_R_6_P_2 + 1)
#define VEX_LEN_74_P_2	(VEX_LEN_73_R_7_P_2 + 1)
#define VEX_LEN_75_P_2	(VEX_LEN_74_P_2 + 1)
#define VEX_LEN_76_P_2	(VEX_LEN_75_P_2 + 1)
#define VEX_LEN_7E_P_1	(VEX_LEN_76_P_2 + 1)
#define VEX_LEN_7E_P_2	(VEX_LEN_7E_P_1 + 1)
#define VEX_LEN_AE_R_2_M_0	(VEX_LEN_7E_P_2 + 1)
#define VEX_LEN_AE_R_3_M_0	(VEX_LEN_AE_R_2_M_0 + 1)
#define VEX_LEN_C2_P_1	(VEX_LEN_AE_R_3_M_0 + 1)
#define VEX_LEN_C2_P_3	(VEX_LEN_C2_P_1 + 1)
#define VEX_LEN_C4_P_2	(VEX_LEN_C2_P_3 + 1)
#define VEX_LEN_C5_P_2	(VEX_LEN_C4_P_2 + 1)
#define VEX_LEN_D1_P_2	(VEX_LEN_C5_P_2 + 1)
#define VEX_LEN_D2_P_2	(VEX_LEN_D1_P_2 + 1)
#define VEX_LEN_D3_P_2	(VEX_LEN_D2_P_2 + 1)
#define VEX_LEN_D4_P_2	(VEX_LEN_D3_P_2 + 1)
#define VEX_LEN_D5_P_2	(VEX_LEN_D4_P_2 + 1)
#define VEX_LEN_D6_P_2	(VEX_LEN_D5_P_2 + 1)
#define VEX_LEN_D7_P_2_M_1	(VEX_LEN_D6_P_2 + 1)
#define VEX_LEN_D8_P_2	(VEX_LEN_D7_P_2_M_1 + 1)
#define VEX_LEN_D9_P_2	(VEX_LEN_D8_P_2 + 1)
#define VEX_LEN_DA_P_2	(VEX_LEN_D9_P_2 + 1)
#define VEX_LEN_DB_P_2	(VEX_LEN_DA_P_2 + 1)
#define VEX_LEN_DC_P_2	(VEX_LEN_DB_P_2 + 1)
#define VEX_LEN_DD_P_2	(VEX_LEN_DC_P_2 + 1)
#define VEX_LEN_DE_P_2	(VEX_LEN_DD_P_2 + 1)
#define VEX_LEN_DF_P_2	(VEX_LEN_DE_P_2 + 1)
#define VEX_LEN_E0_P_2	(VEX_LEN_DF_P_2 + 1)
#define VEX_LEN_E1_P_2	(VEX_LEN_E0_P_2 + 1)
#define VEX_LEN_E2_P_2	(VEX_LEN_E1_P_2 + 1)
#define VEX_LEN_E3_P_2	(VEX_LEN_E2_P_2 + 1)
#define VEX_LEN_E4_P_2	(VEX_LEN_E3_P_2 + 1)
#define VEX_LEN_E5_P_2	(VEX_LEN_E4_P_2 + 1)
#define VEX_LEN_E8_P_2	(VEX_LEN_E5_P_2 + 1)
#define VEX_LEN_E9_P_2	(VEX_LEN_E8_P_2 + 1)
#define VEX_LEN_EA_P_2	(VEX_LEN_E9_P_2 + 1)
#define VEX_LEN_EB_P_2	(VEX_LEN_EA_P_2 + 1)
#define VEX_LEN_EC_P_2	(VEX_LEN_EB_P_2 + 1)
#define VEX_LEN_ED_P_2	(VEX_LEN_EC_P_2 + 1)
#define VEX_LEN_EE_P_2	(VEX_LEN_ED_P_2 + 1)
#define VEX_LEN_EF_P_2	(VEX_LEN_EE_P_2 + 1)
#define VEX_LEN_F1_P_2	(VEX_LEN_EF_P_2 + 1)
#define VEX_LEN_F2_P_2	(VEX_LEN_F1_P_2 + 1)
#define VEX_LEN_F3_P_2	(VEX_LEN_F2_P_2 + 1)
#define VEX_LEN_F4_P_2	(VEX_LEN_F3_P_2 + 1)
#define VEX_LEN_F5_P_2	(VEX_LEN_F4_P_2 + 1)
#define VEX_LEN_F6_P_2	(VEX_LEN_F5_P_2 + 1)
#define VEX_LEN_F7_P_2	(VEX_LEN_F6_P_2 + 1)
#define VEX_LEN_F8_P_2	(VEX_LEN_F7_P_2 + 1)
#define VEX_LEN_F9_P_2	(VEX_LEN_F8_P_2 + 1)
#define VEX_LEN_FA_P_2	(VEX_LEN_F9_P_2 + 1)
#define VEX_LEN_FB_P_2	(VEX_LEN_FA_P_2 + 1)
#define VEX_LEN_FC_P_2	(VEX_LEN_FB_P_2 + 1)
#define VEX_LEN_FD_P_2	(VEX_LEN_FC_P_2 + 1)
#define VEX_LEN_FE_P_2	(VEX_LEN_FD_P_2 + 1)
#define VEX_LEN_3800_P_2	(VEX_LEN_FE_P_2 + 1)
#define VEX_LEN_3801_P_2	(VEX_LEN_3800_P_2 + 1)
#define VEX_LEN_3802_P_2	(VEX_LEN_3801_P_2 + 1)
#define VEX_LEN_3803_P_2	(VEX_LEN_3802_P_2 + 1)
#define VEX_LEN_3804_P_2	(VEX_LEN_3803_P_2 + 1)
#define VEX_LEN_3805_P_2	(VEX_LEN_3804_P_2 + 1)
#define VEX_LEN_3806_P_2	(VEX_LEN_3805_P_2 + 1)
#define VEX_LEN_3807_P_2	(VEX_LEN_3806_P_2 + 1)
#define VEX_LEN_3808_P_2	(VEX_LEN_3807_P_2 + 1)
#define VEX_LEN_3809_P_2	(VEX_LEN_3808_P_2 + 1)
#define VEX_LEN_380A_P_2	(VEX_LEN_3809_P_2 + 1)
#define VEX_LEN_380B_P_2	(VEX_LEN_380A_P_2 + 1)
#define VEX_LEN_3819_P_2_M_0	(VEX_LEN_380B_P_2 + 1)
#define VEX_LEN_381A_P_2_M_0	(VEX_LEN_3819_P_2_M_0 + 1)
#define VEX_LEN_381C_P_2	(VEX_LEN_381A_P_2_M_0 + 1)
#define VEX_LEN_381D_P_2	(VEX_LEN_381C_P_2 + 1)
#define VEX_LEN_381E_P_2	(VEX_LEN_381D_P_2 + 1)
#define VEX_LEN_3820_P_2	(VEX_LEN_381E_P_2 + 1)
#define VEX_LEN_3821_P_2	(VEX_LEN_3820_P_2 + 1)
#define VEX_LEN_3822_P_2	(VEX_LEN_3821_P_2 + 1)
#define VEX_LEN_3823_P_2	(VEX_LEN_3822_P_2 + 1)
#define VEX_LEN_3824_P_2	(VEX_LEN_3823_P_2 + 1)
#define VEX_LEN_3825_P_2	(VEX_LEN_3824_P_2 + 1)
#define VEX_LEN_3828_P_2	(VEX_LEN_3825_P_2 + 1)
#define VEX_LEN_3829_P_2	(VEX_LEN_3828_P_2 + 1)
#define VEX_LEN_382A_P_2_M_0	(VEX_LEN_3829_P_2 + 1)
#define VEX_LEN_382B_P_2	(VEX_LEN_382A_P_2_M_0 + 1)
#define VEX_LEN_3830_P_2	(VEX_LEN_382B_P_2 + 1)
#define VEX_LEN_3831_P_2	(VEX_LEN_3830_P_2 + 1)
#define VEX_LEN_3832_P_2	(VEX_LEN_3831_P_2 + 1)
#define VEX_LEN_3833_P_2	(VEX_LEN_3832_P_2 + 1)
#define VEX_LEN_3834_P_2	(VEX_LEN_3833_P_2 + 1)
#define VEX_LEN_3835_P_2	(VEX_LEN_3834_P_2 + 1)
#define VEX_LEN_3837_P_2	(VEX_LEN_3835_P_2 + 1)
#define VEX_LEN_3838_P_2	(VEX_LEN_3837_P_2 + 1)
#define VEX_LEN_3839_P_2	(VEX_LEN_3838_P_2 + 1)
#define VEX_LEN_383A_P_2	(VEX_LEN_3839_P_2 + 1)
#define VEX_LEN_383B_P_2	(VEX_LEN_383A_P_2 + 1)
#define VEX_LEN_383C_P_2	(VEX_LEN_383B_P_2 + 1)
#define VEX_LEN_383D_P_2	(VEX_LEN_383C_P_2 + 1)
#define VEX_LEN_383E_P_2	(VEX_LEN_383D_P_2 + 1)
#define VEX_LEN_383F_P_2	(VEX_LEN_383E_P_2 + 1)
#define VEX_LEN_3840_P_2	(VEX_LEN_383F_P_2 + 1)
#define VEX_LEN_3841_P_2	(VEX_LEN_3840_P_2 + 1)
#define VEX_LEN_38DB_P_2	(VEX_LEN_3841_P_2 + 1)
#define VEX_LEN_38DC_P_2	(VEX_LEN_38DB_P_2 + 1)
#define VEX_LEN_38DD_P_2	(VEX_LEN_38DC_P_2 + 1)
#define VEX_LEN_38DE_P_2	(VEX_LEN_38DD_P_2 + 1)
#define VEX_LEN_38DF_P_2	(VEX_LEN_38DE_P_2 + 1)
#define VEX_LEN_3A06_P_2	(VEX_LEN_38DF_P_2 + 1)
#define VEX_LEN_3A0A_P_2	(VEX_LEN_3A06_P_2 + 1)
#define VEX_LEN_3A0B_P_2	(VEX_LEN_3A0A_P_2 + 1)
#define VEX_LEN_3A0E_P_2	(VEX_LEN_3A0B_P_2 + 1)
#define VEX_LEN_3A0F_P_2	(VEX_LEN_3A0E_P_2 + 1)
#define VEX_LEN_3A14_P_2	(VEX_LEN_3A0F_P_2 + 1)
#define VEX_LEN_3A15_P_2	(VEX_LEN_3A14_P_2 + 1)
#define VEX_LEN_3A16_P_2	(VEX_LEN_3A15_P_2 + 1)
#define VEX_LEN_3A17_P_2	(VEX_LEN_3A16_P_2 + 1)
#define VEX_LEN_3A18_P_2	(VEX_LEN_3A17_P_2 + 1)
#define VEX_LEN_3A19_P_2	(VEX_LEN_3A18_P_2 + 1)
#define VEX_LEN_3A20_P_2	(VEX_LEN_3A19_P_2 + 1)
#define VEX_LEN_3A21_P_2	(VEX_LEN_3A20_P_2 + 1)
#define VEX_LEN_3A22_P_2	(VEX_LEN_3A21_P_2 + 1)
#define VEX_LEN_3A41_P_2	(VEX_LEN_3A22_P_2 + 1)
#define VEX_LEN_3A42_P_2	(VEX_LEN_3A41_P_2 + 1)
#define VEX_LEN_3A44_P_2	(VEX_LEN_3A42_P_2 + 1)
#define VEX_LEN_3A4C_P_2	(VEX_LEN_3A44_P_2 + 1)
#define VEX_LEN_3A60_P_2	(VEX_LEN_3A4C_P_2 + 1)
#define VEX_LEN_3A61_P_2	(VEX_LEN_3A60_P_2 + 1)
#define VEX_LEN_3A62_P_2	(VEX_LEN_3A61_P_2 + 1)
#define VEX_LEN_3A63_P_2	(VEX_LEN_3A62_P_2 + 1)
#define VEX_LEN_3A6A_P_2	(VEX_LEN_3A63_P_2 + 1)
#define VEX_LEN_3A6B_P_2	(VEX_LEN_3A6A_P_2 + 1)
#define VEX_LEN_3A6E_P_2	(VEX_LEN_3A6B_P_2 + 1)
#define VEX_LEN_3A6F_P_2	(VEX_LEN_3A6E_P_2 + 1)
#define VEX_LEN_3A7A_P_2	(VEX_LEN_3A6F_P_2 + 1)
#define VEX_LEN_3A7B_P_2	(VEX_LEN_3A7A_P_2 + 1)
#define VEX_LEN_3A7E_P_2	(VEX_LEN_3A7B_P_2 + 1)
#define VEX_LEN_3A7F_P_2	(VEX_LEN_3A7E_P_2 + 1)
#define VEX_LEN_3ADF_P_2	(VEX_LEN_3A7F_P_2 + 1)

typedef void (*op_rtn) (int bytemode, int sizeflag);

struct dis386 {
  const char *name;
  struct
    {
      op_rtn rtn;
      int bytemode;
    } op[MAX_OPERANDS];
};

/* Upper case letters in the instruction names here are macros.
   'A' => print 'b' if no register operands or suffix_always is true
   'B' => print 'b' if suffix_always is true
   'C' => print 's' or 'l' ('w' or 'd' in Intel mode) depending on operand
	  size prefix
   'D' => print 'w' if no register operands or 'w', 'l' or 'q', if
	  suffix_always is true
   'E' => print 'e' if 32-bit form of jcxz
   'F' => print 'w' or 'l' depending on address size prefix (loop insns)
   'G' => print 'w' or 'l' depending on operand size prefix (i/o insns)
   'H' => print ",pt" or ",pn" branch hint
   'I' => honor following macro letter even in Intel mode (implemented only
	  for some of the macro letters)
   'J' => print 'l'
   'K' => print 'd' or 'q' if rex prefix is present.
   'L' => print 'l' if suffix_always is true
   'M' => print 'r' if intel_mnemonic is false.
   'N' => print 'n' if instruction has no wait "prefix"
   'O' => print 'd' or 'o' (or 'q' in Intel mode)
   'P' => print 'w', 'l' or 'q' if instruction has an operand size prefix,
	  or suffix_always is true.  print 'q' if rex prefix is present.
   'Q' => print 'w', 'l' or 'q' for memory operand or suffix_always
	  is true
   'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode)
   'S' => print 'w', 'l' or 'q' if suffix_always is true
   'T' => print 'q' in 64bit mode and behave as 'P' otherwise
   'U' => print 'q' in 64bit mode and behave as 'Q' otherwise
   'V' => print 'q' in 64bit mode and behave as 'S' otherwise
   'W' => print 'b', 'w' or 'l' ('d' in Intel mode)
   'X' => print 's', 'd' depending on data16 prefix (for XMM)
   'Y' => 'q' if instruction has an REX 64bit overwrite prefix and
	  suffix_always is true.
   'Z' => print 'q' in 64bit mode and behave as 'L' otherwise
   '!' => change condition from true to false or from false to true.
   '%' => add 1 upper case letter to the macro.

   2 upper case letter macros:
   "XY" => print 'x' or 'y' if no register operands or suffix_always
	   is true.
   'XW' => print 's', 'd' depending on the VEX.W bit (for FMA)
   'LQ' => print 'l' ('d' in Intel mode) or 'q' for memory operand
	   or suffix_always is true

   Many of the above letters print nothing in Intel mode.  See "putop"
   for the details.

   Braces '{' and '}', and vertical bars '|', indicate alternative
   mnemonic strings for AT&T and Intel.  */

static const struct dis386 dis386[] = {
  /* 00 */
  { "addB",		{ Eb, Gb } },
  { "addS",		{ Ev, Gv } },
  { "addB",		{ Gb, EbS } },
  { "addS",		{ Gv, EvS } },
  { "addB",		{ AL, Ib } },
  { "addS",		{ eAX, Iv } },
  { X86_64_TABLE (X86_64_06) },
  { X86_64_TABLE (X86_64_07) },
  /* 08 */
  { "orB",		{ Eb, Gb } },
  { "orS",		{ Ev, Gv } },
  { "orB",		{ Gb, EbS } },
  { "orS",		{ Gv, EvS } },
  { "orB",		{ AL, Ib } },
  { "orS",		{ eAX, Iv } },
  { X86_64_TABLE (X86_64_0D) },
  { "(bad)",		{ XX } },	/* 0x0f extended opcode escape */
  /* 10 */
  { "adcB",		{ Eb, Gb } },
  { "adcS",		{ Ev, Gv } },
  { "adcB",		{ Gb, EbS } },
  { "adcS",		{ Gv, EvS } },
  { "adcB",		{ AL, Ib } },
  { "adcS",		{ eAX, Iv } },
  { X86_64_TABLE (X86_64_16) },
  { X86_64_TABLE (X86_64_17) },
  /* 18 */
  { "sbbB",		{ Eb, Gb } },
  { "sbbS",		{ Ev, Gv } },
  { "sbbB",		{ Gb, EbS } },
  { "sbbS",		{ Gv, EvS } },
  { "sbbB",		{ AL, Ib } },
  { "sbbS",		{ eAX, Iv } },
  { X86_64_TABLE (X86_64_1E) },
  { X86_64_TABLE (X86_64_1F) },
  /* 20 */
  { "andB",		{ Eb, Gb } },
  { "andS",		{ Ev, Gv } },
  { "andB",		{ Gb, EbS } },
  { "andS",		{ Gv, EvS } },
  { "andB",		{ AL, Ib } },
  { "andS",		{ eAX, Iv } },
  { "(bad)",		{ XX } },	/* SEG ES prefix */
  { X86_64_TABLE (X86_64_27) },
  /* 28 */
  { "subB",		{ Eb, Gb } },
  { "subS",		{ Ev, Gv } },
  { "subB",		{ Gb, EbS } },
  { "subS",		{ Gv, EvS } },
  { "subB",		{ AL, Ib } },
  { "subS",		{ eAX, Iv } },
  { "(bad)",		{ XX } },	/* SEG CS prefix */
  { X86_64_TABLE (X86_64_2F) },
  /* 30 */
  { "xorB",		{ Eb, Gb } },
  { "xorS",		{ Ev, Gv } },
  { "xorB",		{ Gb, EbS } },
  { "xorS",		{ Gv, EvS } },
  { "xorB",		{ AL, Ib } },
  { "xorS",		{ eAX, Iv } },
  { "(bad)",		{ XX } },	/* SEG SS prefix */
  { X86_64_TABLE (X86_64_37) },
  /* 38 */
  { "cmpB",		{ Eb, Gb } },
  { "cmpS",		{ Ev, Gv } },
  { "cmpB",		{ Gb, EbS } },
  { "cmpS",		{ Gv, EvS } },
  { "cmpB",		{ AL, Ib } },
  { "cmpS",		{ eAX, Iv } },
  { "(bad)",		{ XX } },	/* SEG DS prefix */
  { X86_64_TABLE (X86_64_3F) },
  /* 40 */
  { "inc{S|}",		{ RMeAX } },
  { "inc{S|}",		{ RMeCX } },
  { "inc{S|}",		{ RMeDX } },
  { "inc{S|}",		{ RMeBX } },
  { "inc{S|}",		{ RMeSP } },
  { "inc{S|}",		{ RMeBP } },
  { "inc{S|}",		{ RMeSI } },
  { "inc{S|}",		{ RMeDI } },
  /* 48 */
  { "dec{S|}",		{ RMeAX } },
  { "dec{S|}",		{ RMeCX } },
  { "dec{S|}",		{ RMeDX } },
  { "dec{S|}",		{ RMeBX } },
  { "dec{S|}",		{ RMeSP } },
  { "dec{S|}",		{ RMeBP } },
  { "dec{S|}",		{ RMeSI } },
  { "dec{S|}",		{ RMeDI } },
  /* 50 */
  { "pushV",		{ RMrAX } },
  { "pushV",		{ RMrCX } },
  { "pushV",		{ RMrDX } },
  { "pushV",		{ RMrBX } },
  { "pushV",		{ RMrSP } },
  { "pushV",		{ RMrBP } },
  { "pushV",		{ RMrSI } },
  { "pushV",		{ RMrDI } },
  /* 58 */
  { "popV",		{ RMrAX } },
  { "popV",		{ RMrCX } },
  { "popV",		{ RMrDX } },
  { "popV",		{ RMrBX } },
  { "popV",		{ RMrSP } },
  { "popV",		{ RMrBP } },
  { "popV",		{ RMrSI } },
  { "popV",		{ RMrDI } },
  /* 60 */
  { X86_64_TABLE (X86_64_60) },
  { X86_64_TABLE (X86_64_61) },
  { X86_64_TABLE (X86_64_62) },
  { X86_64_TABLE (X86_64_63) },
  { "(bad)",		{ XX } },	/* seg fs */
  { "(bad)",		{ XX } },	/* seg gs */
  { "(bad)",		{ XX } },	/* op size prefix */
  { "(bad)",		{ XX } },	/* adr size prefix */
  /* 68 */
  { "pushT",		{ Iq } },
  { "imulS",		{ Gv, Ev, Iv } },
  { "pushT",		{ sIb } },
  { "imulS",		{ Gv, Ev, sIb } },
  { "ins{b|}",		{ Ybr, indirDX } },
  { X86_64_TABLE (X86_64_6D) },
  { "outs{b|}",		{ indirDXr, Xb } },
  { X86_64_TABLE (X86_64_6F) },
  /* 70 */
  { "joH",		{ Jb, XX, cond_jump_flag } },
  { "jnoH",		{ Jb, XX, cond_jump_flag } },
  { "jbH",		{ Jb, XX, cond_jump_flag } },
  { "jaeH",		{ Jb, XX, cond_jump_flag } },
  { "jeH",		{ Jb, XX, cond_jump_flag } },
  { "jneH",		{ Jb, XX, cond_jump_flag } },
  { "jbeH",		{ Jb, XX, cond_jump_flag } },
  { "jaH",		{ Jb, XX, cond_jump_flag } },
  /* 78 */
  { "jsH",		{ Jb, XX, cond_jump_flag } },
  { "jnsH",		{ Jb, XX, cond_jump_flag } },
  { "jpH",		{ Jb, XX, cond_jump_flag } },
  { "jnpH",		{ Jb, XX, cond_jump_flag } },
  { "jlH",		{ Jb, XX, cond_jump_flag } },
  { "jgeH",		{ Jb, XX, cond_jump_flag } },
  { "jleH",		{ Jb, XX, cond_jump_flag } },
  { "jgH",		{ Jb, XX, cond_jump_flag } },
  /* 80 */
  { REG_TABLE (REG_80) },
  { REG_TABLE (REG_81) },
  { "(bad)",		{ XX } },
  { REG_TABLE (REG_82) },
  { "testB",		{ Eb, Gb } },
  { "testS",		{ Ev, Gv } },
  { "xchgB",		{ Eb, Gb } },
  { "xchgS",		{ Ev, Gv } },
  /* 88 */
  { "movB",		{ Eb, Gb } },
  { "movS",		{ Ev, Gv } },
  { "movB",		{ Gb, EbS } },
  { "movS",		{ Gv, EvS } },
  { "movD",		{ Sv, Sw } },
  { MOD_TABLE (MOD_8D) },
  { "movD",		{ Sw, Sv } },
  { REG_TABLE (REG_8F) },
  /* 90 */
  { PREFIX_TABLE (PREFIX_90) },
  { "xchgS",		{ RMeCX, eAX } },
  { "xchgS",		{ RMeDX, eAX } },
  { "xchgS",		{ RMeBX, eAX } },
  { "xchgS",		{ RMeSP, eAX } },
  { "xchgS",		{ RMeBP, eAX } },
  { "xchgS",		{ RMeSI, eAX } },
  { "xchgS",		{ RMeDI, eAX } },
  /* 98 */
  { "cW{t|}R",		{ XX } },
  { "cR{t|}O",		{ XX } },
  { X86_64_TABLE (X86_64_9A) },
  { "(bad)",		{ XX } },	/* fwait */
  { "pushfT",		{ XX } },
  { "popfT",		{ XX } },
  { "sahf",		{ XX } },
  { "lahf",		{ XX } },
  /* a0 */
  { "movB",		{ AL, Ob } },
  { "movS",		{ eAX, Ov } },
  { "movB",		{ Ob, AL } },
  { "movS",		{ Ov, eAX } },
  { "movs{b|}",		{ Ybr, Xb } },
  { "movs{R|}",		{ Yvr, Xv } },
  { "cmps{b|}",		{ Xb, Yb } },
  { "cmps{R|}",		{ Xv, Yv } },
  /* a8 */
  { "testB",		{ AL, Ib } },
  { "testS",		{ eAX, Iv } },
  { "stosB",		{ Ybr, AL } },
  { "stosS",		{ Yvr, eAX } },
  { "lodsB",		{ ALr, Xb } },
  { "lodsS",		{ eAXr, Xv } },
  { "scasB",		{ AL, Yb } },
  { "scasS",		{ eAX, Yv } },
  /* b0 */
  { "movB",		{ RMAL, Ib } },
  { "movB",		{ RMCL, Ib } },
  { "movB",		{ RMDL, Ib } },
  { "movB",		{ RMBL, Ib } },
  { "movB",		{ RMAH, Ib } },
  { "movB",		{ RMCH, Ib } },
  { "movB",		{ RMDH, Ib } },
  { "movB",		{ RMBH, Ib } },
  /* b8 */
  { "movS",		{ RMeAX, Iv64 } },
  { "movS",		{ RMeCX, Iv64 } },
  { "movS",		{ RMeDX, Iv64 } },
  { "movS",		{ RMeBX, Iv64 } },
  { "movS",		{ RMeSP, Iv64 } },
  { "movS",		{ RMeBP, Iv64 } },
  { "movS",		{ RMeSI, Iv64 } },
  { "movS",		{ RMeDI, Iv64 } },
  /* c0 */
  { REG_TABLE (REG_C0) },
  { REG_TABLE (REG_C1) },
  { "retT",		{ Iw } },
  { "retT",		{ XX } },
  { X86_64_TABLE (X86_64_C4) },
  { X86_64_TABLE (X86_64_C5) },
  { REG_TABLE (REG_C6) },
  { REG_TABLE (REG_C7) },
  /* c8 */
  { "enterT",		{ Iw, Ib } },
  { "leaveT",		{ XX } },
  { "Jret{|f}P",	{ Iw } },
  { "Jret{|f}P",	{ XX } },
  { "int3",		{ XX } },
  { "int",		{ Ib } },
  { X86_64_TABLE (X86_64_CE) },
  { "iretP",		{ XX } },
  /* d0 */
  { REG_TABLE (REG_D0) },
  { REG_TABLE (REG_D1) },
  { REG_TABLE (REG_D2) },
  { REG_TABLE (REG_D3) },
  { X86_64_TABLE (X86_64_D4) },
  { X86_64_TABLE (X86_64_D5) },
  { "(bad)",		{ XX } },
  { "xlat",		{ DSBX } },
  /* d8 */
  { FLOAT },
  { FLOAT },
  { FLOAT },
  { FLOAT },
  { FLOAT },
  { FLOAT },
  { FLOAT },
  { FLOAT },
  /* e0 */
  { "loopneFH",		{ Jb, XX, loop_jcxz_flag } },
  { "loopeFH",		{ Jb, XX, loop_jcxz_flag } },
  { "loopFH",		{ Jb, XX, loop_jcxz_flag } },
  { "jEcxzH",		{ Jb, XX, loop_jcxz_flag } },
  { "inB",		{ AL, Ib } },
  { "inG",		{ zAX, Ib } },
  { "outB",		{ Ib, AL } },
  { "outG",		{ Ib, zAX } },
  /* e8 */
  { "callT",		{ Jv } },
  { "jmpT",		{ Jv } },
  { X86_64_TABLE (X86_64_EA) },
  { "jmp",		{ Jb } },
  { "inB",		{ AL, indirDX } },
  { "inG",		{ zAX, indirDX } },
  { "outB",		{ indirDX, AL } },
  { "outG",		{ indirDX, zAX } },
  /* f0 */
  { "(bad)",		{ XX } },	/* lock prefix */
  { "icebp",		{ XX } },
  { "(bad)",		{ XX } },	/* repne */
  { "(bad)",		{ XX } },	/* repz */
  { "hlt",		{ XX } },
  { "cmc",		{ XX } },
  { REG_TABLE (REG_F6) },
  { REG_TABLE (REG_F7) },
  /* f8 */
  { "clc",		{ XX } },
  { "stc",		{ XX } },
  { "cli",		{ XX } },
  { "sti",		{ XX } },
  { "cld",		{ XX } },
  { "std",		{ XX } },
  { REG_TABLE (REG_FE) },
  { REG_TABLE (REG_FF) },
};

static const struct dis386 dis386_twobyte[] = {
  /* 00 */
  { REG_TABLE (REG_0F00 ) },
  { REG_TABLE (REG_0F01 ) },
  { "larS",		{ Gv, Ew } },
  { "lslS",		{ Gv, Ew } },
  { "(bad)",		{ XX } },
  { "syscall",		{ XX } },
  { "clts",		{ XX } },
  { "sysretP",		{ XX } },
  /* 08 */
  { "invd",		{ XX } },
  { "wbinvd",		{ XX } },
  { "(bad)",		{ XX } },
  { "ud2a",		{ XX } },
  { "(bad)",		{ XX } },
  { REG_TABLE (REG_0F0D) },
  { "femms",		{ XX } },
  { "",			{ MX, EM, OPSUF } }, /* See OP_3DNowSuffix.  */
  /* 10 */
  { PREFIX_TABLE (PREFIX_0F10) },
  { PREFIX_TABLE (PREFIX_0F11) },
  { PREFIX_TABLE (PREFIX_0F12) },
  { MOD_TABLE (MOD_0F13) },
  { "unpcklpX",		{ XM, EXx } },
  { "unpckhpX",		{ XM, EXx } },
  { PREFIX_TABLE (PREFIX_0F16) },
  { MOD_TABLE (MOD_0F17) },
  /* 18 */
  { REG_TABLE (REG_0F18) },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  { "nopQ",		{ Ev } },
  /* 20 */
  { MOD_TABLE (MOD_0F20) },
  { MOD_TABLE (MOD_0F21) },
  { MOD_TABLE (MOD_0F22) },
  { MOD_TABLE (MOD_0F23) },
  { MOD_TABLE (MOD_0F24) },
  { "(bad)",		{ XX } },
  { MOD_TABLE (MOD_0F26) },
  { "(bad)",		{ XX } },
  /* 28 */
  { "movapX",		{ XM, EXx } },
  { "movapX",		{ EXxS, XM } },
  { PREFIX_TABLE (PREFIX_0F2A) },
  { PREFIX_TABLE (PREFIX_0F2B) },
  { PREFIX_TABLE (PREFIX_0F2C) },
  { PREFIX_TABLE (PREFIX_0F2D) },
  { PREFIX_TABLE (PREFIX_0F2E) },
  { PREFIX_TABLE (PREFIX_0F2F) },
  /* 30 */
  { "wrmsr",		{ XX } },
  { "rdtsc",		{ XX } },
  { "rdmsr",		{ XX } },
  { "rdpmc",		{ XX } },
  { "sysenter",		{ XX } },
  { "sysexit",		{ XX } },
  { "(bad)",		{ XX } },
  { "getsec",		{ XX } },
  /* 38 */
  { THREE_BYTE_TABLE (THREE_BYTE_0F38) },
  { "(bad)",		{ XX } },
  { THREE_BYTE_TABLE (THREE_BYTE_0F3A) },
  { "(bad)",		{ XX } },
  { "(bad)",		{ XX } },
  { "(bad)",		{ XX } },
  { "(bad)",		{ XX } },
  { "(bad)",		{ XX } },
  /* 40 */
  { "cmovoS",		{ Gv, Ev } },
  { "cmovnoS",		{ Gv, Ev } },
  { "cmovbS",		{ Gv, Ev } },
  { "cmovaeS",		{ Gv, Ev } },
  { "cmoveS",		{ Gv, Ev } },
  { "cmovneS",		{ Gv, Ev } },
  { "cmovbeS",		{ Gv, Ev } },
  { "cmovaS",		{ Gv, Ev } },
  /* 48 */
  { "cmovsS",		{ Gv, Ev } },
  { "cmovnsS",		{ Gv, Ev } },
  { "cmovpS",		{ Gv, Ev } },
  { "cmovnpS",		{ Gv, Ev } },
  { "cmovlS",		{ Gv, Ev } },
  { "cmovgeS",		{ Gv, Ev } },
  { "cmovleS",		{ Gv, Ev } },
  { "cmovgS",		{ Gv, Ev } },
  /* 50 */
  { MOD_TABLE (MOD_0F51) },
  { PREFIX_TABLE (PREFIX_0F51) },
  { PREFIX_TABLE (PREFIX_0F52) },
  { PREFIX_TABLE (PREFIX_0F53) },
  { "andpX",		{ XM, EXx } },
  { "andnpX",		{ XM, EXx } },
  { "orpX",		{ XM, EXx } },
  { "xorpX",		{ XM, EXx } },
  /* 58 */
  { PREFIX_TABLE (PREFIX_0F58) },
  { PREFIX_TABLE (PREFIX_0F59) },
  { PREFIX_TABLE (PREFIX_0F5A) },
  { PREFIX_TABLE (PREFIX_0F5B) },
  { PREFIX_TABLE (PREFIX_0F5C) },
  { PREFIX_TABLE (PREFIX_0F5D) },
  { PREFIX_TABLE (PREFIX_0F5E) },
  { PREFIX_TABLE (PREFIX_0F5F) },
  /* 60 */
  { PREFIX_TABLE (PREFIX_0F60) },
  { PREFIX_TABLE (PREFIX_0F61) },
  { PREFIX_TABLE (PREFIX_0F62) },
  { "packsswb",		{ MX, EM } },
  { "pcmpgtb",		{ MX, EM } },
  { "pcmpgtw",		{ MX, EM } },
  { "pcmpgtd",		{ MX, EM } },
  { "packuswb",		{ MX, EM } },
  /* 68 */
  { "punpckhbw",	{ MX, EM } },
  { "punpckhwd",	{ MX, EM } },
  { "punpckhdq",	{ MX, EM } },
  { "packssdw",		{ MX, EM } },
  { PREFIX_TABLE (PREFIX_0F6C) },
  { PREFIX_TABLE (PREFIX_0F6D) },
  { "movK",		{ MX, Edq } },
  { PREFIX_TABLE (PREFIX_0F6F) },
  /* 70 */
  { PREFIX_TABLE (PREFIX_0F70) },
  { REG_TABLE (REG_0F71) },
  { REG_TABLE (REG_0F72) },
  { REG_TABLE (REG_0F73) },
  { "pcmpeqb",		{ MX, EM } },
  { "pcmpeqw",		{ MX, EM } },
  { "pcmpeqd",		{ MX, EM } },
  { "emms",		{ XX } },
  /* 78 */
  { PREFIX_TABLE (PREFIX_0F78) },
  { PREFIX_TABLE (PREFIX_0F79) },
  { THREE_BYTE_TABLE (THREE_BYTE_0F7A) },
  { "(bad)",		{ XX } },
  { PREFIX_TABLE (PREFIX_0F7C) },
  { PREFIX_TABLE (PREFIX_0F7D) },
  { PREFIX_TABLE (PREFIX_0F7E) },
  { PREFIX_TABLE (PREFIX_0F7F) },
  /* 80 */
  { "joH",		{ Jv, XX, cond_jump_flag } },
  { "jnoH",		{ Jv, XX, cond_jump_flag } },
  { "jbH",		{ Jv, XX, cond_jump_flag } },
  { "jaeH",		{ Jv, XX, cond_jump_flag } },
  { "jeH",		{ Jv, XX, cond_jump_flag } },
  { "jneH",		{ Jv, XX, cond_jump_flag } },
  { "jbeH",		{ Jv, XX, cond_jump_flag } },
  { "jaH",		{ Jv, XX, cond_jump_flag } },
  /* 88 */
  { "jsH",		{ Jv, XX, cond_jump_flag } },
  { "jnsH",		{ Jv, XX, cond_jump_flag } },
  { "jpH",		{ Jv, XX, cond_jump_flag } },
  { "jnpH",		{ Jv, XX, cond_jump_flag } },
  { "jlH",		{ Jv, XX, cond_jump_flag } },
  { "jgeH",		{ Jv, XX, cond_jump_flag } },
  { "jleH",		{ Jv, XX, cond_jump_flag } },
  { "jgH",		{ Jv, XX, cond_jump_flag } },
  /* 90 */
  { "seto",		{ Eb } },
  { "setno",		{ Eb } },
  { "setb",		{ Eb } },
  { "setae",		{ Eb } },
  { "sete",		{ Eb } },
  { "setne",		{ Eb } },
  { "setbe",		{ Eb } },
  { "seta",		{ Eb } },
  /* 98 */
  { "sets",		{ Eb } },
  { "setns",		{ Eb } },
  { "setp",		{ Eb } },
  { "setnp",		{ Eb } },
  { "setl",		{ Eb } },
  { "setge",		{ Eb } },
  { "setle",		{ Eb } },
  { "setg",		{ Eb } },
  /* a0 */
  { "pushT",		{ fs } },
  { "popT",		{ fs } },
  { "cpuid",		{ XX } },
  { "btS",		{ Ev, Gv } },
  { "shldS",		{ Ev, Gv, Ib } },
  { "shldS",		{ Ev, Gv, CL } },
  { REG_TABLE (REG_0FA6) },
  { REG_TABLE (REG_0FA7) },
  /* a8 */
  { "pushT",		{ gs } },
  { "popT",		{ gs } },
  { "rsm",		{ XX } },
  { "btsS",		{ Ev, Gv } },
  { "shrdS",		{ Ev, Gv, Ib } },
  { "shrdS",		{ Ev, Gv, CL } },
  { REG_TABLE (REG_0FAE) },
  { "imulS",		{ Gv, Ev } },
  /* b0 */
  { "cmpxchgB",		{ Eb, Gb } },
  { "cmpxchgS",		{ Ev, Gv } },
  { MOD_TABLE (MOD_0FB2) },
  { "btrS",		{ Ev, Gv } },
  { MOD_TABLE (MOD_0FB4) },
  { MOD_TABLE (MOD_0FB5) },
  { "movz{bR|x}",	{ Gv, Eb } },
  { "movz{wR|x}",	{ Gv, Ew } }, /* yes, there really is movzww ! */
  /* b8 */
  { PREFIX_TABLE (PREFIX_0FB8) },
  { "ud2b",		{ XX } },
  { REG_TABLE (REG_0FBA) },
  { "btcS",		{ Ev, Gv } },
  { "bsfS",		{ Gv, Ev } },
  { PREFIX_TABLE (PREFIX_0FBD) },
  { "movs{bR|x}",	{ Gv, Eb } },
  { "movs{wR|x}",	{ Gv, Ew } }, /* yes, there really is movsww ! */
  /* c0 */
  { "xaddB",		{ Eb, Gb } },
  { "xaddS",		{ Ev, Gv } },
  { PREFIX_TABLE (PREFIX_0FC2) },
  { PREFIX_TABLE (PREFIX_0FC3) },
  { "pinsrw",		{ MX, Edqw, Ib } },
  { "pextrw",		{ Gdq, MS, Ib } },
  { "shufpX",		{ XM, EXx, Ib } },
  { REG_TABLE (REG_0FC7) },
  /* c8 */
  { "bswap",		{ RMeAX } },
  { "bswap",		{ RMeCX } },
  { "bswap",		{ RMeDX } },
  { "bswap",		{ RMeBX } },
  { "bswap",		{ RMeSP } },
  { "bswap",		{ RMeBP } },
  { "bswap",		{ RMeSI } },
  { "bswap",		{ RMeDI } },
  /* d0 */
  { PREFIX_TABLE (PREFIX_0FD0) },
  { "psrlw",		{ MX, EM } },
  { "psrld",		{ MX, EM } },
  { "psrlq",		{ MX, EM } },
  { "paddq",		{ MX, EM } },
  { "pmullw",		{ MX, EM } },
  { PREFIX_TABLE (PREFIX_0FD6) },
  { MOD_TABLE (MOD_0FD7) },
  /* d8 */
  { "psubusb",		{ MX, EM } },
  { "psubusw",		{ MX, EM } },
  { "pminub",		{ MX, EM } },
  { "pand",		{ MX, EM } },
  { "paddusb",		{ MX, EM } },
  { "paddusw",		{ MX, EM } },
  { "pmaxub",		{ MX, EM } },
  { "pandn",		{ MX, EM } },
  /* e0 */
  { "pavgb",		{ MX, EM } },
  { "psraw",		{ MX, EM } },
  { "psrad",		{ MX, EM } },
  { "pavgw",		{ MX, EM } },
  { "pmulhuw",		{ MX, EM } },
  { "pmulhw",		{ MX, EM } },
  { PREFIX_TABLE (PREFIX_0FE6) },
  { PREFIX_TABLE (PREFIX_0FE7) },
  /* e8 */
  { "psubsb",		{ MX, EM } },
  { "psubsw",		{ MX, EM } },
  { "pminsw",		{ MX, EM } },
  { "por",		{ MX, EM } },
  { "paddsb",		{ MX, EM } },
  { "paddsw",		{ MX, EM } },
  { "pmaxsw",		{ MX, EM } },
  { "pxor",		{ MX, EM } },
  /* f0 */
  { PREFIX_TABLE (PREFIX_0FF0) },
  { "psllw",		{ MX, EM } },
  { "pslld",		{ MX, EM } },
  { "psllq",		{ MX, EM } },
  { "pmuludq",		{ MX, EM } },
  { "pmaddwd",		{ MX, EM } },
  { "psadbw",		{ MX, EM } },
  { PREFIX_TABLE (PREFIX_0FF7) },
  /* f8 */
  { "psubb",		{ MX, EM } },
  { "psubw",		{ MX, EM } },
  { "psubd",		{ MX, EM } },
  { "psubq",		{ MX, EM } },
  { "paddb",		{ MX, EM } },
  { "paddw",		{ MX, EM } },
  { "paddd",		{ MX, EM } },
  { "(bad)",		{ XX } },
};

static const unsigned char onebyte_has_modrm[256] = {
  /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
  /*       -------------------------------        */
  /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 00 */
  /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 10 */
  /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 20 */
  /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 30 */
  /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */
  /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */
  /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0, /* 60 */
  /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */
  /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 80 */
  /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */
  /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* a0 */
  /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* b0 */
  /* c0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* c0 */
  /* d0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* d0 */
  /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* e0 */
  /* f0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1  /* f0 */
  /*       -------------------------------        */
  /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
};

static const unsigned char twobyte_has_modrm[256] = {
  /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
  /*       -------------------------------        */
  /* 00 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0f */
  /* 10 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1f */
  /* 20 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 2f */
  /* 30 */ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 3f */
  /* 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4f */
  /* 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5f */
  /* 60 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6f */
  /* 70 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 7f */
  /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */
  /* 90 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9f */
  /* a0 */ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1, /* af */
  /* b0 */ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1, /* bf */
  /* c0 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* cf */
  /* d0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* df */
  /* e0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ef */
  /* f0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0  /* ff */
  /*       -------------------------------        */
  /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
};

static char obuf[100];
static char *obufp;
static char *mnemonicendp;
static char scratchbuf[100];
static unsigned char *start_codep;
static unsigned char *insn_codep;
static unsigned char *codep;
static const char *lock_prefix;
static const char *data_prefix;
static const char *addr_prefix;
static const char *repz_prefix;
static const char *repnz_prefix;
static disassemble_info *the_info;
static struct
  {
    int mod;
    int reg;
    int rm;
  }
modrm;
static unsigned char need_modrm;
static struct
  {
    int register_specifier;
    int length;
    int prefix;
    int w;
  }
vex;
static unsigned char need_vex;
static unsigned char need_vex_reg;
static unsigned char vex_w_done;

struct op
  {
    const char *name;
    unsigned int len;
  };

/* If we are accessing mod/rm/reg without need_modrm set, then the
   values are stale.  Hitting this abort likely indicates that you
   need to update onebyte_has_modrm or twobyte_has_modrm.  */
#define MODRM_CHECK  if (!need_modrm) abort ()

static const char **names64;
static const char **names32;
static const char **names16;
static const char **names8;
static const char **names8rex;
static const char **names_seg;
static const char *index64;
static const char *index32;
static const char **index16;

static const char *intel_names64[] = {
  "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
  "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
};
static const char *intel_names32[] = {
  "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
  "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"
};
static const char *intel_names16[] = {
  "ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
  "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
};
static const char *intel_names8[] = {
  "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh",
};
static const char *intel_names8rex[] = {
  "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil",
  "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"
};
static const char *intel_names_seg[] = {
  "es", "cs", "ss", "ds", "fs", "gs", "?", "?",
};
static const char *intel_index64 = "riz";
static const char *intel_index32 = "eiz";
static const char *intel_index16[] = {
  "bx+si", "bx+di", "bp+si", "bp+di", "si", "di", "bp", "bx"
};

static const char *att_names64[] = {
  "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi",
  "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
};
static const char *att_names32[] = {
  "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi",
  "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d"
};
static const char *att_names16[] = {
  "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
  "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w"
};
static const char *att_names8[] = {
  "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh",
};
static const char *att_names8rex[] = {
  "%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil",
  "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b"
};
static const char *att_names_seg[] = {
  "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?",
};
static const char *att_index64 = "%riz";
static const char *att_index32 = "%eiz";
static const char *att_index16[] = {
  "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx"
};

static const struct dis386 reg_table[][8] = {
  /* REG_80 */
  {
    { "addA",	{ Eb, Ib } },
    { "orA",	{ Eb, Ib } },
    { "adcA",	{ Eb, Ib } },
    { "sbbA",	{ Eb, Ib } },
    { "andA",	{ Eb, Ib } },
    { "subA",	{ Eb, Ib } },
    { "xorA",	{ Eb, Ib } },
    { "cmpA",	{ Eb, Ib } },
  },
  /* REG_81 */
  {
    { "addQ",	{ Ev, Iv } },
    { "orQ",	{ Ev, Iv } },
    { "adcQ",	{ Ev, Iv } },
    { "sbbQ",	{ Ev, Iv } },
    { "andQ",	{ Ev, Iv } },
    { "subQ",	{ Ev, Iv } },
    { "xorQ",	{ Ev, Iv } },
    { "cmpQ",	{ Ev, Iv } },
  },
  /* REG_82 */
  {
    { "addQ",	{ Ev, sIb } },
    { "orQ",	{ Ev, sIb } },
    { "adcQ",	{ Ev, sIb } },
    { "sbbQ",	{ Ev, sIb } },
    { "andQ",	{ Ev, sIb } },
    { "subQ",	{ Ev, sIb } },
    { "xorQ",	{ Ev, sIb } },
    { "cmpQ",	{ Ev, sIb } },
  },
  /* REG_8F */
  {
    { "popU",	{ stackEv } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* REG_C0 */
  {
    { "rolA",	{ Eb, Ib } },
    { "rorA",	{ Eb, Ib } },
    { "rclA",	{ Eb, Ib } },
    { "rcrA",	{ Eb, Ib } },
    { "shlA",	{ Eb, Ib } },
    { "shrA",	{ Eb, Ib } },
    { "(bad)",	{ XX } },
    { "sarA",	{ Eb, Ib } },
  },
  /* REG_C1 */
  {
    { "rolQ",	{ Ev, Ib } },
    { "rorQ",	{ Ev, Ib } },
    { "rclQ",	{ Ev, Ib } },
    { "rcrQ",	{ Ev, Ib } },
    { "shlQ",	{ Ev, Ib } },
    { "shrQ",	{ Ev, Ib } },
    { "(bad)",	{ XX } },
    { "sarQ",	{ Ev, Ib } },
  },
  /* REG_C6 */
  {
    { "movA",	{ Eb, Ib } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* REG_C7 */
  {
    { "movQ",	{ Ev, Iv } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",  { XX } },
  },
  /* REG_D0 */
  {
    { "rolA",	{ Eb, I1 } },
    { "rorA",	{ Eb, I1 } },
    { "rclA",	{ Eb, I1 } },
    { "rcrA",	{ Eb, I1 } },
    { "shlA",	{ Eb, I1 } },
    { "shrA",	{ Eb, I1 } },
    { "(bad)",	{ XX } },
    { "sarA",	{ Eb, I1 } },
  },
  /* REG_D1 */
  {
    { "rolQ",	{ Ev, I1 } },
    { "rorQ",	{ Ev, I1 } },
    { "rclQ",	{ Ev, I1 } },
    { "rcrQ",	{ Ev, I1 } },
    { "shlQ",	{ Ev, I1 } },
    { "shrQ",	{ Ev, I1 } },
    { "(bad)",	{ XX } },
    { "sarQ",	{ Ev, I1 } },
  },
  /* REG_D2 */
  {
    { "rolA",	{ Eb, CL } },
    { "rorA",	{ Eb, CL } },
    { "rclA",	{ Eb, CL } },
    { "rcrA",	{ Eb, CL } },
    { "shlA",	{ Eb, CL } },
    { "shrA",	{ Eb, CL } },
    { "(bad)",	{ XX } },
    { "sarA",	{ Eb, CL } },
  },
  /* REG_D3 */
  {
    { "rolQ",	{ Ev, CL } },
    { "rorQ",	{ Ev, CL } },
    { "rclQ",	{ Ev, CL } },
    { "rcrQ",	{ Ev, CL } },
    { "shlQ",	{ Ev, CL } },
    { "shrQ",	{ Ev, CL } },
    { "(bad)",	{ XX } },
    { "sarQ",	{ Ev, CL } },
  },
  /* REG_F6 */
  {
    { "testA",	{ Eb, Ib } },
    { "(bad)",	{ XX } },
    { "notA",	{ Eb } },
    { "negA",	{ Eb } },
    { "mulA",	{ Eb } },	/* Don't print the implicit %al register,  */
    { "imulA",	{ Eb } },	/* to distinguish these opcodes from other */
    { "divA",	{ Eb } },	/* mul/imul opcodes.  Do the same for div  */
    { "idivA",	{ Eb } },	/* and idiv for consistency.		   */
  },
  /* REG_F7 */
  {
    { "testQ",	{ Ev, Iv } },
    { "(bad)",	{ XX } },
    { "notQ",	{ Ev } },
    { "negQ",	{ Ev } },
    { "mulQ",	{ Ev } },	/* Don't print the implicit register.  */
    { "imulQ",	{ Ev } },
    { "divQ",	{ Ev } },
    { "idivQ",	{ Ev } },
  },
  /* REG_FE */
  {
    { "incA",	{ Eb } },
    { "decA",	{ Eb } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* REG_FF */
  {
    { "incQ",	{ Ev } },
    { "decQ",	{ Ev } },
    { "callT",	{ indirEv } },
    { "JcallT",	{ indirEp } },
    { "jmpT",	{ indirEv } },
    { "JjmpT",	{ indirEp } },
    { "pushU",	{ stackEv } },
    { "(bad)",	{ XX } },
  },
  /* REG_0F00 */
  {
    { "sldtD",	{ Sv } },
    { "strD",	{ Sv } },
    { "lldt",	{ Ew } },
    { "ltr",	{ Ew } },
    { "verr",	{ Ew } },
    { "verw",	{ Ew } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* REG_0F01 */
  {
    { MOD_TABLE (MOD_0F01_REG_0) },
    { MOD_TABLE (MOD_0F01_REG_1) },
    { MOD_TABLE (MOD_0F01_REG_2) },
    { MOD_TABLE (MOD_0F01_REG_3) },
    { "smswD",	{ Sv } },
    { "(bad)",	{ XX } },
    { "lmsw",	{ Ew } },
    { MOD_TABLE (MOD_0F01_REG_7) },
  },
  /* REG_0F0D */
  {
    { "prefetch",	{ Eb } },
    { "prefetchw",	{ Eb } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  /* REG_0F18 */
  {
    { MOD_TABLE (MOD_0F18_REG_0) },
    { MOD_TABLE (MOD_0F18_REG_1) },
    { MOD_TABLE (MOD_0F18_REG_2) },
    { MOD_TABLE (MOD_0F18_REG_3) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* REG_0F71 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F71_REG_2) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F71_REG_4) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F71_REG_6) },
    { "(bad)",	{ XX } },
  },
  /* REG_0F72 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F72_REG_2) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F72_REG_4) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F72_REG_6) },
    { "(bad)",	{ XX } },
  },
  /* REG_0F73 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F73_REG_2) },
    { MOD_TABLE (MOD_0F73_REG_3) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F73_REG_6) },
    { MOD_TABLE (MOD_0F73_REG_7) },
  },
  /* REG_0FA6 */
  {
    { "montmul",	{ { OP_0f07, 0 } } },
    { "xsha1",		{ { OP_0f07, 0 } } },
    { "xsha256",	{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
  },
  /* REG_0FA7 */
  {
    { "xstore-rng",	{ { OP_0f07, 0 } } },
    { "xcrypt-ecb",	{ { OP_0f07, 0 } } },
    { "xcrypt-cbc",	{ { OP_0f07, 0 } } },
    { "xcrypt-ctr",	{ { OP_0f07, 0 } } },
    { "xcrypt-cfb",	{ { OP_0f07, 0 } } },
    { "xcrypt-ofb",	{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
    { "(bad)",		{ { OP_0f07, 0 } } },
  },
  /* REG_0FAE */
  {
    { MOD_TABLE (MOD_0FAE_REG_0) },
    { MOD_TABLE (MOD_0FAE_REG_1) },
    { MOD_TABLE (MOD_0FAE_REG_2) },
    { MOD_TABLE (MOD_0FAE_REG_3) },
    { MOD_TABLE (MOD_0FAE_REG_4) },
    { MOD_TABLE (MOD_0FAE_REG_5) },
    { MOD_TABLE (MOD_0FAE_REG_6) },
    { MOD_TABLE (MOD_0FAE_REG_7) },
  },
  /* REG_0FBA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "btQ",	{ Ev, Ib } },
    { "btsQ",	{ Ev, Ib } },
    { "btrQ",	{ Ev, Ib } },
    { "btcQ",	{ Ev, Ib } },
  },
  /* REG_0FC7 */
  {
    { "(bad)",	{ XX } },
    { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0FC7_REG_6) },
    { MOD_TABLE (MOD_0FC7_REG_7) },
  },
  /* REG_VEX_71 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_71_REG_2) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_71_REG_4) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_71_REG_6) },
    { "(bad)",	{ XX } },
  },
  /* REG_VEX_72 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_72_REG_2) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_72_REG_4) },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_72_REG_6) },
    { "(bad)",	{ XX } },
  },
  /* REG_VEX_73 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_73_REG_2) },
    { MOD_TABLE (MOD_VEX_73_REG_3) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_73_REG_6) },
    { MOD_TABLE (MOD_VEX_73_REG_7) },
  },
  /* REG_VEX_AE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_AE_REG_2) },
    { MOD_TABLE (MOD_VEX_AE_REG_3) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
};

static const struct dis386 prefix_table[][4] = {
  /* PREFIX_90 */
  {
    { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
    { "pause", { XX } },
    { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
    { "(bad)", { XX } },
  },

  /* PREFIX_0F10 */
  {
    { "movups",	{ XM, EXx } },
    { "movss",	{ XM, EXd } },
    { "movupd",	{ XM, EXx } },
    { "movsd",	{ XM, EXq } },
  },

  /* PREFIX_0F11 */
  {
    { "movups",	{ EXxS, XM } },
    { "movss",	{ EXdS, XM } },
    { "movupd",	{ EXxS, XM } },
    { "movsd",	{ EXqS, XM } },
  },

  /* PREFIX_0F12 */
  {
    { MOD_TABLE (MOD_0F12_PREFIX_0) },
    { "movsldup", { XM, EXx } },
    { "movlpd",	{ XM, EXq } },
    { "movddup", { XM, EXq } },
  },

  /* PREFIX_0F16 */
  {
    { MOD_TABLE (MOD_0F16_PREFIX_0) },
    { "movshdup", { XM, EXx } },
    { "movhpd",	{ XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F2A */
  {
    { "cvtpi2ps", { XM, EMCq } },
    { "cvtsi2ss%LQ", { XM, Ev } },
    { "cvtpi2pd", { XM, EMCq } },
    { "cvtsi2sd%LQ", { XM, Ev } },
  },

  /* PREFIX_0F2B */
  {
    { MOD_TABLE (MOD_0F2B_PREFIX_0) },
    { MOD_TABLE (MOD_0F2B_PREFIX_1) },
    { MOD_TABLE (MOD_0F2B_PREFIX_2) },
    { MOD_TABLE (MOD_0F2B_PREFIX_3) },
  },

  /* PREFIX_0F2C */
  {
    { "cvttps2pi", { MXC, EXq } },
    { "cvttss2siY", { Gv, EXd } },
    { "cvttpd2pi", { MXC, EXx } },
    { "cvttsd2siY", { Gv, EXq } },
  },

  /* PREFIX_0F2D */
  {
    { "cvtps2pi", { MXC, EXq } },
    { "cvtss2siY", { Gv, EXd } },
    { "cvtpd2pi", { MXC, EXx } },
    { "cvtsd2siY", { Gv, EXq } },
  },

  /* PREFIX_0F2E */
  {
    { "ucomiss",{ XM, EXd } }, 
    { "(bad)",	{ XX } },
    { "ucomisd",{ XM, EXq } }, 
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F2F */
  {
    { "comiss",	{ XM, EXd } },
    { "(bad)",	{ XX } },
    { "comisd",	{ XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F51 */
  {
    { "sqrtps", { XM, EXx } },
    { "sqrtss", { XM, EXd } },
    { "sqrtpd", { XM, EXx } },
    { "sqrtsd",	{ XM, EXq } },
  },

  /* PREFIX_0F52 */
  {
    { "rsqrtps",{ XM, EXx } },
    { "rsqrtss",{ XM, EXd } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F53 */
  {
    { "rcpps",	{ XM, EXx } },
    { "rcpss",	{ XM, EXd } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F58 */
  {
    { "addps", { XM, EXx } },
    { "addss", { XM, EXd } },
    { "addpd", { XM, EXx } },
    { "addsd", { XM, EXq } },
  },

  /* PREFIX_0F59 */
  {
    { "mulps",	{ XM, EXx } },
    { "mulss",	{ XM, EXd } },
    { "mulpd",	{ XM, EXx } },
    { "mulsd",	{ XM, EXq } },
  },

  /* PREFIX_0F5A */
  {
    { "cvtps2pd", { XM, EXq } },
    { "cvtss2sd", { XM, EXd } },
    { "cvtpd2ps", { XM, EXx } },
    { "cvtsd2ss", { XM, EXq } },
  },

  /* PREFIX_0F5B */
  {
    { "cvtdq2ps", { XM, EXx } },
    { "cvttps2dq", { XM, EXx } },
    { "cvtps2dq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F5C */
  {
    { "subps",	{ XM, EXx } },
    { "subss",	{ XM, EXd } },
    { "subpd",	{ XM, EXx } },
    { "subsd",	{ XM, EXq } },
  },

  /* PREFIX_0F5D */
  {
    { "minps",	{ XM, EXx } },
    { "minss",	{ XM, EXd } },
    { "minpd",	{ XM, EXx } },
    { "minsd",	{ XM, EXq } },
  },

  /* PREFIX_0F5E */
  {
    { "divps",	{ XM, EXx } },
    { "divss",	{ XM, EXd } },
    { "divpd",	{ XM, EXx } },
    { "divsd",	{ XM, EXq } },
  },

  /* PREFIX_0F5F */
  {
    { "maxps",	{ XM, EXx } },
    { "maxss",	{ XM, EXd } },
    { "maxpd",	{ XM, EXx } },
    { "maxsd",	{ XM, EXq } },
  },

  /* PREFIX_0F60 */
  {
    { "punpcklbw",{ MX, EMd } },
    { "(bad)",	{ XX } },
    { "punpcklbw",{ MX, EMx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F61 */
  {
    { "punpcklwd",{ MX, EMd } },
    { "(bad)",	{ XX } },
    { "punpcklwd",{ MX, EMx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F62 */
  {
    { "punpckldq",{ MX, EMd } },
    { "(bad)",	{ XX } },
    { "punpckldq",{ MX, EMx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F6C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "punpcklqdq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F6D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "punpckhqdq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F6F */
  {
    { "movq",	{ MX, EM } },
    { "movdqu",	{ XM, EXx } },
    { "movdqa",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F70 */
  {
    { "pshufw",	{ MX, EM, Ib } },
    { "pshufhw",{ XM, EXx, Ib } },
    { "pshufd",	{ XM, EXx, Ib } },
    { "pshuflw",{ XM, EXx, Ib } },
  },

  /* PREFIX_0F73_REG_3 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "psrldq",	{ XS, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F73_REG_7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pslldq",	{ XS, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F78 */
  {
    {"vmread",	{ Em, Gm } },
    {"(bad)",	{ XX } },
    {"extrq",	{ XS, Ib, Ib } },
    {"insertq",	{ XM, XS, Ib, Ib } },
  },

  /* PREFIX_0F79 */
  {
    {"vmwrite",	{ Gm, Em } },
    {"(bad)",	{ XX } },
    {"extrq",	{ XM, XS } },
    {"insertq",	{ XM, XS } },
  },

  /* PREFIX_0F7C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "haddpd",	{ XM, EXx } },
    { "haddps",	{ XM, EXx } },
  },

  /* PREFIX_0F7D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "hsubpd",	{ XM, EXx } },
    { "hsubps",	{ XM, EXx } },
  },

  /* PREFIX_0F7E */
  {
    { "movK",	{ Edq, MX } },
    { "movq",	{ XM, EXq } },
    { "movK",	{ Edq, XM } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F7F */
  {
    { "movq",	{ EMS, MX } },
    { "movdqu",	{ EXxS, XM } },
    { "movdqa",	{ EXxS, XM } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0FB8 */
  {
    { "(bad)", { XX } },
    { "popcntS", { Gv, Ev } },
    { "(bad)", { XX } },
    { "(bad)", { XX } },
  },

  /* PREFIX_0FBD */
  {
    { "bsrS",	{ Gv, Ev } },
    { "lzcntS",	{ Gv, Ev } },
    { "bsrS",	{ Gv, Ev } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0FC2 */
  {
    { "cmpps",	{ XM, EXx, CMP } },
    { "cmpss",	{ XM, EXd, CMP } },
    { "cmppd",	{ XM, EXx, CMP } },
    { "cmpsd",	{ XM, EXq, CMP } },
  },

  /* PREFIX_0FC3 */
  {
    { "movntiS", { Ma, Gv } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0FC7_REG_6 */
  {
    { "vmptrld",{ Mq } },
    { "vmxon",	{ Mq } },
    { "vmclear",{ Mq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0FD0 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "addsubpd", { XM, EXx } },
    { "addsubps", { XM, EXx } },
  },

  /* PREFIX_0FD6 */
  {
    { "(bad)",	{ XX } },
    { "movq2dq",{ XM, MS } },
    { "movq",	{ EXqS, XM } },
    { "movdq2q",{ MX, XS } },
  },

  /* PREFIX_0FE6 */
  {
    { "(bad)",	{ XX } },
    { "cvtdq2pd", { XM, EXq } },
    { "cvttpd2dq", { XM, EXx } },
    { "cvtpd2dq", { XM, EXx } },
  },

  /* PREFIX_0FE7 */
  {
    { "movntq",	{ Mq, MX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0FE7_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0FF0 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0FF0_PREFIX_3) },
  },

  /* PREFIX_0FF7 */
  {
    { "maskmovq", { MX, MS } },
    { "(bad)",	{ XX } },
    { "maskmovdqu", { XM, XS } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3810 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pblendvb", { XM, EXx, XMM0 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3814 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "blendvps", { XM, EXx, XMM0 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3815 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "blendvpd", { XM, EXx, XMM0 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3817 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "ptest",  { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3820 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxbw", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3821 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxbd", { XM, EXd } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3822 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxbq", { XM, EXw } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3823 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxwd", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3824 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxwq", { XM, EXd } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3825 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovsxdq", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3828 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmuldq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3829 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpeqq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F382A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_0F382A_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F382B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "packusdw", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3830 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxbw", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3831 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxbd", { XM, EXd } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3832 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxbq", { XM, EXw } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3833 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxwd", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3834 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxwq", { XM, EXd } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3835 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmovzxdq", { XM, EXq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3837 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpgtq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3838 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pminsb",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3839 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pminsd",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pminuw",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pminud",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmaxsb",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmaxsd",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmaxuw", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F383F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmaxud", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3840 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pmulld", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3841 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "phminposuw", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3880 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "invept",	{ Gm, Mo } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3881 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "invvpid", { Gm, Mo } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38DB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aesimc", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38DC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aesenc", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38DD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aesenclast", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38DE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aesdec", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38DF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aesdeclast", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F38F0 */
  {
    { "movbeS",	{ Gv, { MOVBE_Fixup, v_mode } } },
    { "(bad)",	{ XX } },
    { "movbeS",	{ Gv, { MOVBE_Fixup, v_mode } } },
    { "crc32",	{ Gdq, { CRC32_Fixup, b_mode } } },	
  },

  /* PREFIX_0F38F1 */
  {
    { "movbeS",	{ { MOVBE_Fixup, v_mode }, Gv } },
    { "(bad)",	{ XX } },
    { "movbeS",	{ { MOVBE_Fixup, v_mode }, Gv } },
    { "crc32",	{ Gdq, { CRC32_Fixup, v_mode } } },	
  },

  /* PREFIX_0F3A08 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "roundps", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A09 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "roundpd", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A0A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "roundss", { XM, EXd, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A0B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "roundsd", { XM, EXq, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A0C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "blendps", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A0D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "blendpd", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A0E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pblendw", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A14 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pextrb",	{ Edqb, XM, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A15 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pextrw",	{ Edqw, XM, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A16 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pextrK",	{ Edq, XM, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A17 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "extractps", { Edqd, XM, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A20 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pinsrb",	{ XM, Edqb, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A21 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "insertps", { XM, EXd, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A22 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pinsrK",	{ XM, Edq, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A40 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "dpps",	{ XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A41 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "dppd",	{ XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A42 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "mpsadbw", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A44 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pclmulqdq", { XM, EXx, PCLMUL } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A60 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpestrm", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A61 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpestri", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A62 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpistrm", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3A63 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "pcmpistri", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_0F3ADF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "aeskeygenassist", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_10 */
  {
    { "vmovups", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_10_P_1) },
    { "vmovupd", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_10_P_3) },
  },

  /* PREFIX_VEX_11 */
  {
    { "vmovups", { EXxS, XM } },
    { VEX_LEN_TABLE (VEX_LEN_11_P_1) },
    { "vmovupd", { EXxS, XM } },
    { VEX_LEN_TABLE (VEX_LEN_11_P_3) },
  },

  /* PREFIX_VEX_12 */
  {
    { MOD_TABLE (MOD_VEX_12_PREFIX_0) },
    { "vmovsldup", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_12_P_2) },
    { "vmovddup", { XM, EXymmq } },
  },

  /* PREFIX_VEX_16 */
  {
    { MOD_TABLE (MOD_VEX_16_PREFIX_0) },
    { "vmovshdup", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_16_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_2A */
  {
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2A_P_1) },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2A_P_3) },
  },

  /* PREFIX_VEX_2C */
  {
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2C_P_1) },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2C_P_3) },
  },

  /* PREFIX_VEX_2D */
  {
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2D_P_1) },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2D_P_3) },
  },

  /* PREFIX_VEX_2E */
  {
    { VEX_LEN_TABLE (VEX_LEN_2E_P_0) },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_2F */
  {
    { VEX_LEN_TABLE (VEX_LEN_2F_P_0) },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_2F_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_51 */
  {
    { "vsqrtps", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_51_P_1) },
    { "vsqrtpd", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_51_P_3) },
  },

  /* PREFIX_VEX_52 */
  {
    { "vrsqrtps", { XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_52_P_1) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_53 */
  {
    { "vrcpps",	{ XM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_53_P_1) },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_58 */
  {
    { "vaddps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_58_P_1) },
    { "vaddpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_58_P_3) },
  },

  /* PREFIX_VEX_59 */
  {
    { "vmulps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_59_P_1) },
    { "vmulpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_59_P_3) },
  },

  /* PREFIX_VEX_5A */
  {
    { "vcvtps2pd", { XM, EXxmmq } },
    { VEX_LEN_TABLE (VEX_LEN_5A_P_1) },
    { "vcvtpd2ps%XY", { XMM, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5A_P_3) },
  },

  /* PREFIX_VEX_5B */
  {
    { "vcvtdq2ps", { XM, EXx } },
    { "vcvttps2dq", { XM, EXx } },
    { "vcvtps2dq", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_5C */
  {
    { "vsubps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5C_P_1) },
    { "vsubpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5C_P_3) },
  },

  /* PREFIX_VEX_5D */
  {
    { "vminps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5D_P_1) },
    { "vminpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5D_P_3) },
  },

  /* PREFIX_VEX_5E */
  {
    { "vdivps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5E_P_1) },
    { "vdivpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5E_P_3) },
  },

  /* PREFIX_VEX_5F */
  {
    { "vmaxps",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5F_P_1) },
    { "vmaxpd",	{ XM, Vex, EXx } },
    { VEX_LEN_TABLE (VEX_LEN_5F_P_3) },
  },

  /* PREFIX_VEX_60 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_60_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_61 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_61_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_62 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_62_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_63 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_63_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_64 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_64_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_65 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_65_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_66 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_66_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_67 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_67_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_68 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_68_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_69 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_69_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_6A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_6B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_6C_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_6D_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_6E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_6F */
  {
    { "(bad)",	{ XX } },
    { "vmovdqu", { XM, EXx } },
    { "vmovdqa", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_70 */
  {
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_70_P_1) },
    { VEX_LEN_TABLE (VEX_LEN_70_P_2) },
    { VEX_LEN_TABLE (VEX_LEN_70_P_3) },
  },

  /* PREFIX_VEX_71_REG_2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_71_R_2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_71_REG_4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_71_R_4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_71_REG_6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_71_R_6_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_72_REG_2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_72_R_2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_72_REG_4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_72_R_4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_72_REG_6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_72_R_6_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_73_REG_2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_73_R_2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_73_REG_3 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_73_R_3_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_73_REG_6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_73_R_6_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_73_REG_7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_73_R_7_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_74 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_74_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_75 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_75_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_76 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_76_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_77 */
  {
    { "",	{ VZERO } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_7C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vhaddpd", { XM, Vex, EXx } },
    { "vhaddps", { XM, Vex, EXx } },
  },

  /* PREFIX_VEX_7D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vhsubpd", { XM, Vex, EXx } },
    { "vhsubps", { XM, Vex, EXx } },
  },

  /* PREFIX_VEX_7E */
  {
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_7E_P_1) },
    { VEX_LEN_TABLE (VEX_LEN_7E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_7F */
  {
    { "(bad)",	{ XX } },
    { "vmovdqu", { EXxS, XM } },
    { "vmovdqa", { EXxS, XM } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_C2 */
  {
    { "vcmpps",	{ XM, Vex, EXx, VCMP } },
    { VEX_LEN_TABLE (VEX_LEN_C2_P_1) },
    { "vcmppd",	{ XM, Vex, EXx, VCMP } },
    { VEX_LEN_TABLE (VEX_LEN_C2_P_3) },
  },

  /* PREFIX_VEX_C4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_C4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_C5 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_C5_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D0 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vaddsubpd", { XM, Vex, EXx } },
    { "vaddsubps", { XM, Vex, EXx } },
  },

  /* PREFIX_VEX_D1 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D1_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D3 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D3_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D5 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D5_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D6_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_D7_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D8 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D8_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_D9 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D9_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DA_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DB_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DC_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DD_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DE_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_DF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_DF_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E0 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E0_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E1 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E1_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E3 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E3_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E5 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E5_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E6 */
  {
    { "(bad)",	{ XX } },
    { "vcvtdq2pd", { XM, EXxmmq } },
    { "vcvttpd2dq%XY", { XMM, EXx } },
    { "vcvtpd2dq%XY", { XMM, EXx } },
  },

  /* PREFIX_VEX_E7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_E7_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E8 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E8_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_E9 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_E9_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_EA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_EA_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_EB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_EB_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_EC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_EC_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_ED */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_ED_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_EE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_EE_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_EF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_EF_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F0 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_F0_PREFIX_3) },
  },

  /* PREFIX_VEX_F1 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F1_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F2 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F2_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F3 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F3_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F4 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F4_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F5 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F5_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F6_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F7_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F8 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F8_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_F9 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_F9_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_FA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_FA_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_FB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_FB_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_FC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_FC_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_FD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_FD_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_FE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_FE_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3800 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3800_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3801 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3801_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3802 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3802_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3803 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3803_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3804 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3804_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3805 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3805_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3806 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3806_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3807 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3807_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3808 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3808_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3809 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3809_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_380A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_380B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vpermilps", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vpermilpd", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vtestps", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_380F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vtestpd", { XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3817 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vptest",	{ XM, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3818 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_3818_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3819 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_3819_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_381A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_381A_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_381C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_381C_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_381D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_381D_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_381E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_381E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3820 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3820_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3821 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3821_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3822 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3822_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3823 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3823_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3824 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3824_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3825 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3825_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3828 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3828_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3829 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3829_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { MOD_TABLE (MOD_VEX_382A_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_382B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
     { MOD_TABLE (MOD_VEX_382C_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
     { MOD_TABLE (MOD_VEX_382D_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
     { MOD_TABLE (MOD_VEX_382E_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_382F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
     { MOD_TABLE (MOD_VEX_382F_PREFIX_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3830 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3830_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3831 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3831_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3832 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3832_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3833 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3833_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3834 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3834_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3835 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3835_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3837 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3837_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3838 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3838_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3839 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3839_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383C_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383D_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_383F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_383F_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3840 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3840_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3841 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3841_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3896 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddsub132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3897 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubadd132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3898 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3899 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd132s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub132s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd132s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub132p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_389F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub132s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38A6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddsub213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38A7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubadd213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38A8 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38A9 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd213s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub213s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd213s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub213p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38AF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub213s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38B6 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddsub231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38B7 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubadd231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38B8 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38B9 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmadd231s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BA */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsub231s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmadd231s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub231p%XW", { XM, Vex, EXx } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38BF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsub231s%XW", { XM, Vex, EXVexWdq } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38DB */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_38DB_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38DC */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_38DC_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38DD */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_38DD_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38DE */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_38DE_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_38DF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_38DF_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A04 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vpermilps", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A05 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vpermilpd", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A06 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A06_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A08 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vroundps", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A09 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vroundpd", { XM, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A0A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A0B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vblendps", { XM, Vex, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vblendpd", { XM, Vex, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A0E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A0F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A0F_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A14 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A14_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A15 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A15_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A16 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A16_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A17 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A17_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A18 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A18_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A19 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A19_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A20 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A20_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A21 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A21_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A22 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A22_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A40 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vdpps",	{ XM, Vex, EXx, Ib } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A41 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A41_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A42 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A42_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A44 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A44_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A4A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vblendvps", { XM, Vex, EXx, XMVexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A4B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vblendvpd", { XM, Vex, EXx, XMVexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A4C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A4C_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A5C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A5D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A5E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A5F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A60 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A60_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A61 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A61_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A62 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A62_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A63 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A63_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A68 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A69 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A6A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A6B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A6E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A6F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A6F_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A78 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A79 */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7A */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A7A_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7B */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A7B_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7C */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7D */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "vfnmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7E */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A7E_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3A7F */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3A7F_P_2) },
    { "(bad)",	{ XX } },
  },

  /* PREFIX_VEX_3ADF */
  {
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_3ADF_P_2) },
    { "(bad)",	{ XX } },
  },
};

static const struct dis386 x86_64_table[][2] = {
  /* X86_64_06 */
  {
    { "push{T|}", { es } },
    { "(bad)", { XX } },
  },

  /* X86_64_07 */
  {
    { "pop{T|}", { es } },
    { "(bad)", { XX } },
  },

  /* X86_64_0D */
  {
    { "push{T|}", { cs } },
    { "(bad)", { XX } },
  },

  /* X86_64_16 */
  {
    { "push{T|}", { ss } },
    { "(bad)", { XX } },
  },

  /* X86_64_17 */
  {
    { "pop{T|}", { ss } },
    { "(bad)", { XX } },
  },

  /* X86_64_1E */
  {
    { "push{T|}", { ds } },
    { "(bad)", { XX } },
  },

  /* X86_64_1F */
  {
    { "pop{T|}", { ds } },
    { "(bad)", { XX } },
  },

  /* X86_64_27 */
  {
    { "daa", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_2F */
  {
    { "das", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_37 */
  {
    { "aaa", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_3F */
  {
    { "aas", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_60 */
  {
    { "pusha{P|}", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_61 */
  {
    { "popa{P|}", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_62 */
  {
    { MOD_TABLE (MOD_62_32BIT) },
    { "(bad)", { XX } },
  },

  /* X86_64_63 */
  {
    { "arpl", { Ew, Gw } },
    { "movs{lq|xd}", { Gv, Ed } },
  },

  /* X86_64_6D */
  {
    { "ins{R|}", { Yzr, indirDX } },
    { "ins{G|}", { Yzr, indirDX } },
  },

  /* X86_64_6F */
  {
    { "outs{R|}", { indirDXr, Xz } },
    { "outs{G|}", { indirDXr, Xz } },
  },

  /* X86_64_9A */
  {
    { "Jcall{T|}", { Ap } },
    { "(bad)", { XX } },
  },

  /* X86_64_C4 */
  {
    { MOD_TABLE (MOD_C4_32BIT) },
    { VEX_C4_TABLE (VEX_0F) },
  },

  /* X86_64_C5 */
  {
    { MOD_TABLE (MOD_C5_32BIT) },
    { VEX_C5_TABLE (VEX_0F) },
  },

  /* X86_64_CE */
  {
    { "into", { XX } },
    { "(bad)", { XX } },
  },

  /* X86_64_D4 */
  {
    { "aam", { sIb } },
    { "(bad)", { XX } },
  },

  /* X86_64_D5 */
  {
    { "aad", { sIb } },
    { "(bad)", { XX } },
  },

  /* X86_64_EA */
  {
    { "Jjmp{T|}", { Ap } },
    { "(bad)", { XX } },
  },

  /* X86_64_0F01_REG_0 */
  {
    { "sgdt{Q|IQ}", { M } },
    { "sgdt", { M } },
  },

  /* X86_64_0F01_REG_1 */
  {
    { "sidt{Q|IQ}", { M } },
    { "sidt", { M } },
  },

  /* X86_64_0F01_REG_2 */
  {
    { "lgdt{Q|Q}", { M } },
    { "lgdt", { M } },
  },

  /* X86_64_0F01_REG_3 */
  {
    { "lidt{Q|Q}", { M } },
    { "lidt", { M } },
  },
};

static const struct dis386 three_byte_table[][256] = {

  /* THREE_BYTE_0F38 */
  {
    /* 00 */
    { "pshufb",		{ MX, EM } },
    { "phaddw",		{ MX, EM } },
    { "phaddd",		{ MX, EM } },
    { "phaddsw",	{ MX, EM } },
    { "pmaddubsw",	{ MX, EM } },
    { "phsubw",		{ MX, EM } },
    { "phsubd",		{ MX, EM } },
    { "phsubsw",	{ MX, EM } },
    /* 08 */
    { "psignb",		{ MX, EM } },
    { "psignw",		{ MX, EM } },
    { "psignd",		{ MX, EM } },
    { "pmulhrsw",	{ MX, EM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 10 */
    { PREFIX_TABLE (PREFIX_0F3810) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3814) },
    { PREFIX_TABLE (PREFIX_0F3815) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3817) },
    /* 18 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "pabsb",		{ MX, EM } },
    { "pabsw",		{ MX, EM } },
    { "pabsd",		{ MX, EM } },
    { "(bad)",		{ XX } },
    /* 20 */
    { PREFIX_TABLE (PREFIX_0F3820) },
    { PREFIX_TABLE (PREFIX_0F3821) },
    { PREFIX_TABLE (PREFIX_0F3822) },
    { PREFIX_TABLE (PREFIX_0F3823) },
    { PREFIX_TABLE (PREFIX_0F3824) },
    { PREFIX_TABLE (PREFIX_0F3825) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { PREFIX_TABLE (PREFIX_0F3828) },
    { PREFIX_TABLE (PREFIX_0F3829) },
    { PREFIX_TABLE (PREFIX_0F382A) },
    { PREFIX_TABLE (PREFIX_0F382B) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 30 */
    { PREFIX_TABLE (PREFIX_0F3830) },
    { PREFIX_TABLE (PREFIX_0F3831) },
    { PREFIX_TABLE (PREFIX_0F3832) },
    { PREFIX_TABLE (PREFIX_0F3833) },
    { PREFIX_TABLE (PREFIX_0F3834) },
    { PREFIX_TABLE (PREFIX_0F3835) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3837) },
    /* 38 */
    { PREFIX_TABLE (PREFIX_0F3838) },
    { PREFIX_TABLE (PREFIX_0F3839) },
    { PREFIX_TABLE (PREFIX_0F383A) },
    { PREFIX_TABLE (PREFIX_0F383B) },
    { PREFIX_TABLE (PREFIX_0F383C) },
    { PREFIX_TABLE (PREFIX_0F383D) },
    { PREFIX_TABLE (PREFIX_0F383E) },
    { PREFIX_TABLE (PREFIX_0F383F) },
    /* 40 */
    { PREFIX_TABLE (PREFIX_0F3840) },
    { PREFIX_TABLE (PREFIX_0F3841) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 58 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 60 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 68 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 70 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 78 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 80 */
    { PREFIX_TABLE (PREFIX_0F3880) },
    { PREFIX_TABLE (PREFIX_0F3881) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 98 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F38DB) },
    { PREFIX_TABLE (PREFIX_0F38DC) },
    { PREFIX_TABLE (PREFIX_0F38DD) },
    { PREFIX_TABLE (PREFIX_0F38DE) },
    { PREFIX_TABLE (PREFIX_0F38DF) },
    /* e0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f0 */
    { PREFIX_TABLE (PREFIX_0F38F0) },
    { PREFIX_TABLE (PREFIX_0F38F1) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  /* THREE_BYTE_0F3A */
  {
    /* 00 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 08 */
    { PREFIX_TABLE (PREFIX_0F3A08) },
    { PREFIX_TABLE (PREFIX_0F3A09) },
    { PREFIX_TABLE (PREFIX_0F3A0A) },
    { PREFIX_TABLE (PREFIX_0F3A0B) },
    { PREFIX_TABLE (PREFIX_0F3A0C) },
    { PREFIX_TABLE (PREFIX_0F3A0D) },
    { PREFIX_TABLE (PREFIX_0F3A0E) },
    { "palignr",	{ MX, EM, Ib } },
    /* 10 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3A14) },
    { PREFIX_TABLE (PREFIX_0F3A15) },
    { PREFIX_TABLE (PREFIX_0F3A16) },
    { PREFIX_TABLE (PREFIX_0F3A17) },
    /* 18 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 20 */
    { PREFIX_TABLE (PREFIX_0F3A20) },
    { PREFIX_TABLE (PREFIX_0F3A21) },
    { PREFIX_TABLE (PREFIX_0F3A22) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 30 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 38 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 40 */
    { PREFIX_TABLE (PREFIX_0F3A40) },
    { PREFIX_TABLE (PREFIX_0F3A41) },
    { PREFIX_TABLE (PREFIX_0F3A42) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3A44) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 58 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 60 */
    { PREFIX_TABLE (PREFIX_0F3A60) },
    { PREFIX_TABLE (PREFIX_0F3A61) },
    { PREFIX_TABLE (PREFIX_0F3A62) },
    { PREFIX_TABLE (PREFIX_0F3A63) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 68 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 70 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 78 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 80 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 98 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F3ADF) },
    /* e0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },

  /* THREE_BYTE_0F7A */
  {
    /* 00 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 08 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 10 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 18 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 20 */
    { "ptest",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 30 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 38 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 40 */
    { "(bad)",		{ XX } },
    { "phaddbw",	{ XM, EXq } },
    { "phaddbd",	{ XM, EXq } },
    { "phaddbq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "phaddwd",	{ XM, EXq } },
    { "phaddwq",	{ XM, EXq } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "phadddq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { "(bad)",		{ XX } },
    { "phaddubw",	{ XM, EXq } },
    { "phaddubd",	{ XM, EXq } },
    { "phaddubq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "phadduwd",	{ XM, EXq } },
    { "phadduwq",	{ XM, EXq } },
    /* 58 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "phaddudq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 60 */
    { "(bad)",		{ XX } },
    { "phsubbw",	{ XM, EXq } },
    { "phsubbd",	{ XM, EXq } },
    { "phsubbq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 68 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 70 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 78 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 80 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 98 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
};


static const struct dis386 vex_table[][256] = {
  /* VEX_0F */
  {
    /* 00 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 08 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 10 */
    { PREFIX_TABLE (PREFIX_VEX_10) },
    { PREFIX_TABLE (PREFIX_VEX_11) },
    { PREFIX_TABLE (PREFIX_VEX_12) },
    { MOD_TABLE (MOD_VEX_13) },
    { "vunpcklpX",	{ XM, Vex, EXx } },
    { "vunpckhpX",	{ XM, Vex, EXx } },
    { PREFIX_TABLE (PREFIX_VEX_16) },
    { MOD_TABLE (MOD_VEX_17) },
    /* 18 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 20 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { "vmovapX",	{ XM, EXx } },
    { "vmovapX",	{ EXxS, XM } },
    { PREFIX_TABLE (PREFIX_VEX_2A) },
    { MOD_TABLE (MOD_VEX_2B) },
    { PREFIX_TABLE (PREFIX_VEX_2C) },
    { PREFIX_TABLE (PREFIX_VEX_2D) },
    { PREFIX_TABLE (PREFIX_VEX_2E) },
    { PREFIX_TABLE (PREFIX_VEX_2F) },
    /* 30 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 38 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 40 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { MOD_TABLE (MOD_VEX_51) },
    { PREFIX_TABLE (PREFIX_VEX_51) },
    { PREFIX_TABLE (PREFIX_VEX_52) },
    { PREFIX_TABLE (PREFIX_VEX_53) },
    { "vandpX",		{ XM, Vex, EXx } },
    { "vandnpX",	{ XM, Vex, EXx } },
    { "vorpX",		{ XM, Vex, EXx } },
    { "vxorpX",		{ XM, Vex, EXx } },
    /* 58 */
    { PREFIX_TABLE (PREFIX_VEX_58) },
    { PREFIX_TABLE (PREFIX_VEX_59) },
    { PREFIX_TABLE (PREFIX_VEX_5A) },
    { PREFIX_TABLE (PREFIX_VEX_5B) },
    { PREFIX_TABLE (PREFIX_VEX_5C) },
    { PREFIX_TABLE (PREFIX_VEX_5D) },
    { PREFIX_TABLE (PREFIX_VEX_5E) },
    { PREFIX_TABLE (PREFIX_VEX_5F) },
    /* 60 */
    { PREFIX_TABLE (PREFIX_VEX_60) },
    { PREFIX_TABLE (PREFIX_VEX_61) },
    { PREFIX_TABLE (PREFIX_VEX_62) },
    { PREFIX_TABLE (PREFIX_VEX_63) },
    { PREFIX_TABLE (PREFIX_VEX_64) },
    { PREFIX_TABLE (PREFIX_VEX_65) },
    { PREFIX_TABLE (PREFIX_VEX_66) },
    { PREFIX_TABLE (PREFIX_VEX_67) },
    /* 68 */
    { PREFIX_TABLE (PREFIX_VEX_68) },
    { PREFIX_TABLE (PREFIX_VEX_69) },
    { PREFIX_TABLE (PREFIX_VEX_6A) },
    { PREFIX_TABLE (PREFIX_VEX_6B) },
    { PREFIX_TABLE (PREFIX_VEX_6C) },
    { PREFIX_TABLE (PREFIX_VEX_6D) },
    { PREFIX_TABLE (PREFIX_VEX_6E) },
    { PREFIX_TABLE (PREFIX_VEX_6F) },
    /* 70 */
    { PREFIX_TABLE (PREFIX_VEX_70) },
    { REG_TABLE (REG_VEX_71) },
    { REG_TABLE (REG_VEX_72) },
    { REG_TABLE (REG_VEX_73) },
    { PREFIX_TABLE (PREFIX_VEX_74) },
    { PREFIX_TABLE (PREFIX_VEX_75) },
    { PREFIX_TABLE (PREFIX_VEX_76) },
    { PREFIX_TABLE (PREFIX_VEX_77) },
    /* 78 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_7C) },
    { PREFIX_TABLE (PREFIX_VEX_7D) },
    { PREFIX_TABLE (PREFIX_VEX_7E) },
    { PREFIX_TABLE (PREFIX_VEX_7F) },
    /* 80 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 98 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { REG_TABLE (REG_VEX_AE) },
    { "(bad)",		{ XX } },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_C2) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_C4) },
    { PREFIX_TABLE (PREFIX_VEX_C5) },
    { "vshufpX",	{ XM, Vex, EXx, Ib } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { PREFIX_TABLE (PREFIX_VEX_D0) },
    { PREFIX_TABLE (PREFIX_VEX_D1) },
    { PREFIX_TABLE (PREFIX_VEX_D2) },
    { PREFIX_TABLE (PREFIX_VEX_D3) },
    { PREFIX_TABLE (PREFIX_VEX_D4) },
    { PREFIX_TABLE (PREFIX_VEX_D5) },
    { PREFIX_TABLE (PREFIX_VEX_D6) },
    { PREFIX_TABLE (PREFIX_VEX_D7) },
    /* d8 */
    { PREFIX_TABLE (PREFIX_VEX_D8) },
    { PREFIX_TABLE (PREFIX_VEX_D9) },
    { PREFIX_TABLE (PREFIX_VEX_DA) },
    { PREFIX_TABLE (PREFIX_VEX_DB) },
    { PREFIX_TABLE (PREFIX_VEX_DC) },
    { PREFIX_TABLE (PREFIX_VEX_DD) },
    { PREFIX_TABLE (PREFIX_VEX_DE) },
    { PREFIX_TABLE (PREFIX_VEX_DF) },
    /* e0 */
    { PREFIX_TABLE (PREFIX_VEX_E0) },
    { PREFIX_TABLE (PREFIX_VEX_E1) },
    { PREFIX_TABLE (PREFIX_VEX_E2) },
    { PREFIX_TABLE (PREFIX_VEX_E3) },
    { PREFIX_TABLE (PREFIX_VEX_E4) },
    { PREFIX_TABLE (PREFIX_VEX_E5) },
    { PREFIX_TABLE (PREFIX_VEX_E6) },
    { PREFIX_TABLE (PREFIX_VEX_E7) },
    /* e8 */
    { PREFIX_TABLE (PREFIX_VEX_E8) },
    { PREFIX_TABLE (PREFIX_VEX_E9) },
    { PREFIX_TABLE (PREFIX_VEX_EA) },
    { PREFIX_TABLE (PREFIX_VEX_EB) },
    { PREFIX_TABLE (PREFIX_VEX_EC) },
    { PREFIX_TABLE (PREFIX_VEX_ED) },
    { PREFIX_TABLE (PREFIX_VEX_EE) },
    { PREFIX_TABLE (PREFIX_VEX_EF) },
    /* f0 */
    { PREFIX_TABLE (PREFIX_VEX_F0) },
    { PREFIX_TABLE (PREFIX_VEX_F1) },
    { PREFIX_TABLE (PREFIX_VEX_F2) },
    { PREFIX_TABLE (PREFIX_VEX_F3) },
    { PREFIX_TABLE (PREFIX_VEX_F4) },
    { PREFIX_TABLE (PREFIX_VEX_F5) },
    { PREFIX_TABLE (PREFIX_VEX_F6) },
    { PREFIX_TABLE (PREFIX_VEX_F7) },
    /* f8 */
    { PREFIX_TABLE (PREFIX_VEX_F8) },
    { PREFIX_TABLE (PREFIX_VEX_F9) },
    { PREFIX_TABLE (PREFIX_VEX_FA) },
    { PREFIX_TABLE (PREFIX_VEX_FB) },
    { PREFIX_TABLE (PREFIX_VEX_FC) },
    { PREFIX_TABLE (PREFIX_VEX_FD) },
    { PREFIX_TABLE (PREFIX_VEX_FE) },
    { "(bad)",		{ XX } },
  },
  /* VEX_0F38 */
  {
    /* 00 */
    { PREFIX_TABLE (PREFIX_VEX_3800) },
    { PREFIX_TABLE (PREFIX_VEX_3801) },
    { PREFIX_TABLE (PREFIX_VEX_3802) },
    { PREFIX_TABLE (PREFIX_VEX_3803) },
    { PREFIX_TABLE (PREFIX_VEX_3804) },
    { PREFIX_TABLE (PREFIX_VEX_3805) },
    { PREFIX_TABLE (PREFIX_VEX_3806) },
    { PREFIX_TABLE (PREFIX_VEX_3807) },
    /* 08 */
    { PREFIX_TABLE (PREFIX_VEX_3808) },
    { PREFIX_TABLE (PREFIX_VEX_3809) },
    { PREFIX_TABLE (PREFIX_VEX_380A) },
    { PREFIX_TABLE (PREFIX_VEX_380B) },
    { PREFIX_TABLE (PREFIX_VEX_380C) },
    { PREFIX_TABLE (PREFIX_VEX_380D) },
    { PREFIX_TABLE (PREFIX_VEX_380E) },
    { PREFIX_TABLE (PREFIX_VEX_380F) },
    /* 10 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3817) },
    /* 18 */
    { PREFIX_TABLE (PREFIX_VEX_3818) },
    { PREFIX_TABLE (PREFIX_VEX_3819) },
    { PREFIX_TABLE (PREFIX_VEX_381A) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_381C) },
    { PREFIX_TABLE (PREFIX_VEX_381D) },
    { PREFIX_TABLE (PREFIX_VEX_381E) },
    { "(bad)",		{ XX } },
    /* 20 */
    { PREFIX_TABLE (PREFIX_VEX_3820) },
    { PREFIX_TABLE (PREFIX_VEX_3821) },
    { PREFIX_TABLE (PREFIX_VEX_3822) },
    { PREFIX_TABLE (PREFIX_VEX_3823) },
    { PREFIX_TABLE (PREFIX_VEX_3824) },
    { PREFIX_TABLE (PREFIX_VEX_3825) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { PREFIX_TABLE (PREFIX_VEX_3828) },
    { PREFIX_TABLE (PREFIX_VEX_3829) },
    { PREFIX_TABLE (PREFIX_VEX_382A) },
    { PREFIX_TABLE (PREFIX_VEX_382B) },
    { PREFIX_TABLE (PREFIX_VEX_382C) },
    { PREFIX_TABLE (PREFIX_VEX_382D) },
    { PREFIX_TABLE (PREFIX_VEX_382E) },
    { PREFIX_TABLE (PREFIX_VEX_382F) },
    /* 30 */
    { PREFIX_TABLE (PREFIX_VEX_3830) },
    { PREFIX_TABLE (PREFIX_VEX_3831) },
    { PREFIX_TABLE (PREFIX_VEX_3832) },
    { PREFIX_TABLE (PREFIX_VEX_3833) },
    { PREFIX_TABLE (PREFIX_VEX_3834) },
    { PREFIX_TABLE (PREFIX_VEX_3835) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3837) },
    /* 38 */
    { PREFIX_TABLE (PREFIX_VEX_3838) },
    { PREFIX_TABLE (PREFIX_VEX_3839) },
    { PREFIX_TABLE (PREFIX_VEX_383A) },
    { PREFIX_TABLE (PREFIX_VEX_383B) },
    { PREFIX_TABLE (PREFIX_VEX_383C) },
    { PREFIX_TABLE (PREFIX_VEX_383D) },
    { PREFIX_TABLE (PREFIX_VEX_383E) },
    { PREFIX_TABLE (PREFIX_VEX_383F) },
    /* 40 */
    { PREFIX_TABLE (PREFIX_VEX_3840) },
    { PREFIX_TABLE (PREFIX_VEX_3841) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 58 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 60 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 68 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 70 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 78 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 80 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3896) },
    { PREFIX_TABLE (PREFIX_VEX_3897) },
    /* 98 */
    { PREFIX_TABLE (PREFIX_VEX_3898) },
    { PREFIX_TABLE (PREFIX_VEX_3899) },
    { PREFIX_TABLE (PREFIX_VEX_389A) },
    { PREFIX_TABLE (PREFIX_VEX_389B) },
    { PREFIX_TABLE (PREFIX_VEX_389C) },
    { PREFIX_TABLE (PREFIX_VEX_389D) },
    { PREFIX_TABLE (PREFIX_VEX_389E) },
    { PREFIX_TABLE (PREFIX_VEX_389F) },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_38A6) },
    { PREFIX_TABLE (PREFIX_VEX_38A7) },
    /* a8 */
    { PREFIX_TABLE (PREFIX_VEX_38A8) },
    { PREFIX_TABLE (PREFIX_VEX_38A9) },
    { PREFIX_TABLE (PREFIX_VEX_38AA) },
    { PREFIX_TABLE (PREFIX_VEX_38AB) },
    { PREFIX_TABLE (PREFIX_VEX_38AC) },
    { PREFIX_TABLE (PREFIX_VEX_38AD) },
    { PREFIX_TABLE (PREFIX_VEX_38AE) },
    { PREFIX_TABLE (PREFIX_VEX_38AF) },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_38B6) },
    { PREFIX_TABLE (PREFIX_VEX_38B7) },
    /* b8 */
    { PREFIX_TABLE (PREFIX_VEX_38B8) },
    { PREFIX_TABLE (PREFIX_VEX_38B9) },
    { PREFIX_TABLE (PREFIX_VEX_38BA) },
    { PREFIX_TABLE (PREFIX_VEX_38BB) },
    { PREFIX_TABLE (PREFIX_VEX_38BC) },
    { PREFIX_TABLE (PREFIX_VEX_38BD) },
    { PREFIX_TABLE (PREFIX_VEX_38BE) },
    { PREFIX_TABLE (PREFIX_VEX_38BF) },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_38DB) },
    { PREFIX_TABLE (PREFIX_VEX_38DC) },
    { PREFIX_TABLE (PREFIX_VEX_38DD) },
    { PREFIX_TABLE (PREFIX_VEX_38DE) },
    { PREFIX_TABLE (PREFIX_VEX_38DF) },
    /* e0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  /* VEX_0F3A */
  {
    /* 00 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3A04) },
    { PREFIX_TABLE (PREFIX_VEX_3A05) },
    { PREFIX_TABLE (PREFIX_VEX_3A06) },
    { "(bad)",		{ XX } },
    /* 08 */
    { PREFIX_TABLE (PREFIX_VEX_3A08) },
    { PREFIX_TABLE (PREFIX_VEX_3A09) },
    { PREFIX_TABLE (PREFIX_VEX_3A0A) },
    { PREFIX_TABLE (PREFIX_VEX_3A0B) },
    { PREFIX_TABLE (PREFIX_VEX_3A0C) },
    { PREFIX_TABLE (PREFIX_VEX_3A0D) },
    { PREFIX_TABLE (PREFIX_VEX_3A0E) },
    { PREFIX_TABLE (PREFIX_VEX_3A0F) },
    /* 10 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3A14) },
    { PREFIX_TABLE (PREFIX_VEX_3A15) },
    { PREFIX_TABLE (PREFIX_VEX_3A16) },
    { PREFIX_TABLE (PREFIX_VEX_3A17) },
    /* 18 */
    { PREFIX_TABLE (PREFIX_VEX_3A18) },
    { PREFIX_TABLE (PREFIX_VEX_3A19) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 20 */
    { PREFIX_TABLE (PREFIX_VEX_3A20) },
    { PREFIX_TABLE (PREFIX_VEX_3A21) },
    { PREFIX_TABLE (PREFIX_VEX_3A22) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 28 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 30 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 38 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 40 */
    { PREFIX_TABLE (PREFIX_VEX_3A40) },
    { PREFIX_TABLE (PREFIX_VEX_3A41) },
    { PREFIX_TABLE (PREFIX_VEX_3A42) },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3A44) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 48 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3A4A) },
    { PREFIX_TABLE (PREFIX_VEX_3A4B) },
    { PREFIX_TABLE (PREFIX_VEX_3A4C) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 50 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 58 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3A5C) },
    { PREFIX_TABLE (PREFIX_VEX_3A5D) },
    { PREFIX_TABLE (PREFIX_VEX_3A5E) },
    { PREFIX_TABLE (PREFIX_VEX_3A5F) },
    /* 60 */
    { PREFIX_TABLE (PREFIX_VEX_3A60) },
    { PREFIX_TABLE (PREFIX_VEX_3A61) },
    { PREFIX_TABLE (PREFIX_VEX_3A62) },
    { PREFIX_TABLE (PREFIX_VEX_3A63) },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 68 */
    { PREFIX_TABLE (PREFIX_VEX_3A68) },
    { PREFIX_TABLE (PREFIX_VEX_3A69) },
    { PREFIX_TABLE (PREFIX_VEX_3A6A) },
    { PREFIX_TABLE (PREFIX_VEX_3A6B) },
    { PREFIX_TABLE (PREFIX_VEX_3A6C) },
    { PREFIX_TABLE (PREFIX_VEX_3A6D) },
    { PREFIX_TABLE (PREFIX_VEX_3A6E) },
    { PREFIX_TABLE (PREFIX_VEX_3A6F) },
    /* 70 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 78 */
    { PREFIX_TABLE (PREFIX_VEX_3A78) },
    { PREFIX_TABLE (PREFIX_VEX_3A79) },
    { PREFIX_TABLE (PREFIX_VEX_3A7A) },
    { PREFIX_TABLE (PREFIX_VEX_3A7B) },
    { PREFIX_TABLE (PREFIX_VEX_3A7C) },
    { PREFIX_TABLE (PREFIX_VEX_3A7D) },
    { PREFIX_TABLE (PREFIX_VEX_3A7E) },
    { PREFIX_TABLE (PREFIX_VEX_3A7F) },
    /* 80 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 88 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 90 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* 98 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* a8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* b8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* c8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* d8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_3ADF) },
    /* e0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* e8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f0 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    /* f8 */
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
};

static const struct dis386 vex_len_table[][2] = {
  /* VEX_LEN_10_P_1 */
  {
    { "vmovss",		{ XMVex, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_10_P_3 */
  {
    { "vmovsd",		{ XMVex, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_11_P_1 */
  {
    { "vmovss",		{ EXdVexS, Vex128, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_11_P_3 */
  {
    { "vmovsd",		{ EXqVexS, Vex128, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_12_P_0_M_0 */
  {
    { "vmovlps",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_12_P_0_M_1 */
  {
    { "vmovhlps",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_12_P_2 */
  {
    { "vmovlpd",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_13_M_0 */
  {
    { "vmovlpX",	{ EXq, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_16_P_0_M_0 */
  {
    { "vmovhps",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_16_P_0_M_1 */
  {
    { "vmovlhps",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_16_P_2 */
  {
    { "vmovhpd",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_17_M_0 */
  {
    { "vmovhpX",	{ EXq, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2A_P_1 */
  {
    { "vcvtsi2ss%LQ",	{ XM, Vex128, Ev } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2A_P_3 */
  {
    { "vcvtsi2sd%LQ",	{ XM, Vex128, Ev } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2C_P_1 */
  {
    { "vcvttss2siY",	{ Gv, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2C_P_3 */
  {
    { "vcvttsd2siY",	{ Gv, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2D_P_1 */
  {
    { "vcvtss2siY",	{ Gv, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2D_P_3 */
  {
    { "vcvtsd2siY",	{ Gv, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2E_P_0 */
  {
    { "vucomiss",	{ XM, EXd } }, 
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2E_P_2 */
  {
    { "vucomisd",	{ XM, EXq } }, 
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2F_P_0 */
  {
    { "vcomiss",	{ XM, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_2F_P_2 */
  {
    { "vcomisd",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_51_P_1 */
  {
    { "vsqrtss",	{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_51_P_3 */
  {
    { "vsqrtsd",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_52_P_1 */
  {
    { "vrsqrtss",	{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_53_P_1 */
  {
    { "vrcpss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_58_P_1 */
  {
    { "vaddss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_58_P_3 */
  {
    { "vaddsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_59_P_1 */
  {
    { "vmulss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_59_P_3 */
  {
    { "vmulsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5A_P_1 */
  {
    { "vcvtss2sd",	{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5A_P_3 */
  {
    { "vcvtsd2ss",	{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5C_P_1 */
  {
    { "vsubss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5C_P_3 */
  {
    { "vsubsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5D_P_1 */
  {
    { "vminss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5D_P_3 */
  {
    { "vminsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5E_P_1 */
  {
    { "vdivss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5E_P_3 */
  {
    { "vdivsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5F_P_1 */
  {
    { "vmaxss",		{ XM, Vex128, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_5F_P_3 */
  {
    { "vmaxsd",		{ XM, Vex128, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_60_P_2 */
  {
    { "vpunpcklbw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_61_P_2 */
  {
    { "vpunpcklwd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_62_P_2 */
  {
    { "vpunpckldq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_63_P_2 */
  {
    { "vpacksswb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_64_P_2 */
  {
    { "vpcmpgtb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_65_P_2 */
  {
    { "vpcmpgtw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_66_P_2 */
  {
    { "vpcmpgtd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_67_P_2 */
  {
    { "vpackuswb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_68_P_2 */
  {
    { "vpunpckhbw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_69_P_2 */
  {
    { "vpunpckhwd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_6A_P_2 */
  {
    { "vpunpckhdq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_6B_P_2 */
  {
    { "vpackssdw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_6C_P_2 */
  {
    { "vpunpcklqdq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_6D_P_2 */
  {
    { "vpunpckhqdq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_6E_P_2 */
  {
    { "vmovK",		{ XM, Edq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_70_P_1 */
  {
    { "vpshufhw",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_70_P_2 */
  {
    { "vpshufd",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_70_P_3 */
  {
    { "vpshuflw",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_71_R_2_P_2 */
  {
    { "vpsrlw",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_71_R_4_P_2 */
  {
    { "vpsraw",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_71_R_6_P_2 */
  {
    { "vpsllw",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_72_R_2_P_2 */
  {
    { "vpsrld",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_72_R_4_P_2 */
  {
    { "vpsrad",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_72_R_6_P_2 */
  {
    { "vpslld",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_73_R_2_P_2 */
  {
    { "vpsrlq",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_73_R_3_P_2 */
  {
    { "vpsrldq",	{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_73_R_6_P_2 */
  {
    { "vpsllq",		{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_73_R_7_P_2 */
  {
    { "vpslldq",	{ Vex128, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_74_P_2 */
  {
    { "vpcmpeqb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_75_P_2 */
  {
    { "vpcmpeqw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_76_P_2 */
  {
    { "vpcmpeqd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_7E_P_1 */
  {
    { "vmovq",		{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_7E_P_2 */
  {
    { "vmovK",		{ Edq, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_AE_R_2_M_0 */
  {
    { "vldmxcsr",	{ Md } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_AE_R_3_M_0 */
  {
    { "vstmxcsr",	{ Md } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_C2_P_1 */
  {
    { "vcmpss",		{ XM, Vex128, EXd, VCMP } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_C2_P_3 */
  {
    { "vcmpsd",		{ XM, Vex128, EXq, VCMP } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_C4_P_2 */
  {
    { "vpinsrw",	{ XM, Vex128, Edqw, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_C5_P_2 */
  {
    { "vpextrw",	{ Gdq, XS, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D1_P_2 */
  {
    { "vpsrlw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D2_P_2 */
  {
    { "vpsrld",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D3_P_2 */
  {
    { "vpsrlq",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D4_P_2 */
  {
    { "vpaddq",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D5_P_2 */
  {
    { "vpmullw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D6_P_2 */
  {
    { "vmovq",		{ EXqS, XM } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D7_P_2_M_1 */
  {
    { "vpmovmskb",	{ Gdq, XS } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D8_P_2 */
  {
    { "vpsubusb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_D9_P_2 */
  {
    { "vpsubusw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DA_P_2 */
  {
    { "vpminub",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DB_P_2 */
  {
    { "vpand",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DC_P_2 */
  {
    { "vpaddusb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DD_P_2 */
  {
    { "vpaddusw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DE_P_2 */
  {
    { "vpmaxub",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_DF_P_2 */
  {
    { "vpandn",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E0_P_2 */
  {
    { "vpavgb",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E1_P_2 */
  {
    { "vpsraw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E2_P_2 */
  {
    { "vpsrad",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E3_P_2 */
  {
    { "vpavgw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E4_P_2 */
  {
    { "vpmulhuw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E5_P_2 */
  {
    { "vpmulhw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E8_P_2 */
  {
    { "vpsubsb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_E9_P_2 */
  {
    { "vpsubsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_EA_P_2 */
  {
    { "vpminsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_EB_P_2 */
  {
    { "vpor",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_EC_P_2 */
  {
    { "vpaddsb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_ED_P_2 */
  {
    { "vpaddsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_EE_P_2 */
  {
    { "vpmaxsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_EF_P_2 */
  {
    { "vpxor",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F1_P_2 */
  {
    { "vpsllw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F2_P_2 */
  {
    { "vpslld",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F3_P_2 */
  {
    { "vpsllq",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F4_P_2 */
  {
    { "vpmuludq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F5_P_2 */
  {
    { "vpmaddwd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F6_P_2 */
  {
    { "vpsadbw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F7_P_2 */
  {
    { "vmaskmovdqu",	{ XM, XS } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F8_P_2 */
  {
    { "vpsubb",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_F9_P_2 */
  {
    { "vpsubw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_FA_P_2 */
  {
    { "vpsubd",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_FB_P_2 */
  {
    { "vpsubq",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_FC_P_2 */
  {
    { "vpaddb",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_FD_P_2 */
  {
    { "vpaddw",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_FE_P_2 */
  {
    { "vpaddd",		{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3800_P_2 */
  {
    { "vpshufb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3801_P_2 */
  {
    { "vphaddw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3802_P_2 */
  {
    { "vphaddd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3803_P_2 */
  {
    { "vphaddsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3804_P_2 */
  {
    { "vpmaddubsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3805_P_2 */
  {
    { "vphsubw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3806_P_2 */
  {
    { "vphsubd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3807_P_2 */
  {
    { "vphsubsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3808_P_2 */
  {
    { "vpsignb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3809_P_2 */
  {
    { "vpsignw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_380A_P_2 */
  {
    { "vpsignd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_380B_P_2 */
  {
    { "vpmulhrsw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3819_P_2_M_0 */
  {
    { "(bad)",		{ XX } },
    { "vbroadcastsd",	{ XM, Mq } },
  },

  /* VEX_LEN_381A_P_2_M_0 */
  {
    { "(bad)",		{ XX } },
    { "vbroadcastf128",	{ XM, Mxmm } },
  },

  /* VEX_LEN_381C_P_2 */
  {
    { "vpabsb",		{ XM, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_381D_P_2 */
  {
    { "vpabsw",		{ XM, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_381E_P_2 */
  {
    { "vpabsd",		{ XM, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3820_P_2 */
  {
    { "vpmovsxbw",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3821_P_2 */
  {
    { "vpmovsxbd",	{ XM, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3822_P_2 */
  {
    { "vpmovsxbq",	{ XM, EXw } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3823_P_2 */
  {
    { "vpmovsxwd",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3824_P_2 */
  {
    { "vpmovsxwq",	{ XM, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3825_P_2 */
  {
    { "vpmovsxdq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3828_P_2 */
  {
    { "vpmuldq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3829_P_2 */
  {
    { "vpcmpeqq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_382A_P_2_M_0 */
  {
    { "vmovntdqa",	{ XM, Mx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_382B_P_2 */
  {
    { "vpackusdw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3830_P_2 */
  {
    { "vpmovzxbw",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3831_P_2 */
  {
    { "vpmovzxbd",	{ XM, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3832_P_2 */
  {
    { "vpmovzxbq",	{ XM, EXw } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3833_P_2 */
  {
    { "vpmovzxwd",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3834_P_2 */
  {
    { "vpmovzxwq",	{ XM, EXd } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3835_P_2 */
  {
    { "vpmovzxdq",	{ XM, EXq } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3837_P_2 */
  {
    { "vpcmpgtq",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3838_P_2 */
  {
    { "vpminsb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3839_P_2 */
  {
    { "vpminsd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383A_P_2 */
  {
    { "vpminuw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383B_P_2 */
  {
    { "vpminud",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383C_P_2 */
  {
    { "vpmaxsb",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383D_P_2 */
  {
    { "vpmaxsd",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383E_P_2 */
  {
    { "vpmaxuw",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_383F_P_2 */
  {
    { "vpmaxud",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3840_P_2 */
  {
    { "vpmulld",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3841_P_2 */
  {
    { "vphminposuw",	{ XM, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_38DB_P_2 */
  {
    { "vaesimc",	{ XM, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_38DC_P_2 */
  {
    { "vaesenc",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_38DD_P_2 */
  {
    { "vaesenclast",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_38DE_P_2 */
  {
    { "vaesdec",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_38DF_P_2 */
  {
    { "vaesdeclast",	{ XM, Vex128, EXx } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A06_P_2 */
  {
    { "(bad)",		{ XX } },
    { "vperm2f128",	{ XM, Vex256, EXx, Ib } },
  },

  /* VEX_LEN_3A0A_P_2 */
  {
    { "vroundss",	{ XM, Vex128, EXd, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A0B_P_2 */
  {
    { "vroundsd",	{ XM, Vex128, EXq, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A0E_P_2 */
  {
    { "vpblendw",	{ XM, Vex128, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A0F_P_2 */
  {
    { "vpalignr",	{ XM, Vex128, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A14_P_2 */
  {
    { "vpextrb",	{ Edqb, XM, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A15_P_2 */
  {
    { "vpextrw",	{ Edqw, XM, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A16_P_2  */
  {
    { "vpextrK",	{ Edq, XM, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A17_P_2 */
  {
    { "vextractps",	{ Edqd, XM, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A18_P_2 */
  {
    { "(bad)",		{ XX } },
    { "vinsertf128",	{ XM, Vex256, EXxmm, Ib } },
  },

  /* VEX_LEN_3A19_P_2 */
  {
    { "(bad)",		{ XX } },
    { "vextractf128",	{ EXxmm, XM, Ib } },
  },

  /* VEX_LEN_3A20_P_2 */
  {
    { "vpinsrb",	{ XM, Vex128, Edqb, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A21_P_2 */
  {
    { "vinsertps",	{ XM, Vex128, EXd, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A22_P_2 */
  {
    { "vpinsrK",	{ XM, Vex128, Edq, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A41_P_2 */
  {
    { "vdppd",		{ XM, Vex128, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A42_P_2 */
  {
    { "vmpsadbw",	{ XM, Vex128, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A44_P_2 */
  {
    { "vpclmulqdq",	{ XM, Vex128, EXx, PCLMUL } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A4C_P_2 */
  {
    { "vpblendvb",	{ XM, Vex128, EXx, XMVexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A60_P_2 */
  {
    { "vpcmpestrm",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A61_P_2 */
  {
    { "vpcmpestri",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A62_P_2 */
  {
    { "vpcmpistrm",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A63_P_2 */
  {
    { "vpcmpistri",	{ XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A6A_P_2 */
  {
    { "vfmaddss",	{ XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A6B_P_2 */
  {
    { "vfmaddsd",	{ XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A6E_P_2 */
  {
    { "vfmsubss",	{ XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A6F_P_2 */
  {
    { "vfmsubsd",	{ XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A7A_P_2 */
  {
    { "vfnmaddss",	{ XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A7B_P_2 */
  {
    { "vfnmaddsd",	{ XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A7E_P_2 */
  {
    { "vfnmsubss",	{ XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3A7F_P_2 */
  {
    { "vfnmsubsd",	{ XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
    { "(bad)",		{ XX } },
  },

  /* VEX_LEN_3ADF_P_2 */
  {
    { "vaeskeygenassist", { XM, EXx, Ib } },
    { "(bad)",		{ XX } },
  },
};

static const struct dis386 mod_table[][2] = {
  {
    /* MOD_8D */
    { "leaS",		{ Gv, M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F01_REG_0 */
    { X86_64_TABLE (X86_64_0F01_REG_0) },
    { RM_TABLE (RM_0F01_REG_0) },
  },
  {
    /* MOD_0F01_REG_1 */
    { X86_64_TABLE (X86_64_0F01_REG_1) },
    { RM_TABLE (RM_0F01_REG_1) },
  },
  {
    /* MOD_0F01_REG_2 */
    { X86_64_TABLE (X86_64_0F01_REG_2) },
    { RM_TABLE (RM_0F01_REG_2) },
  },
  {
    /* MOD_0F01_REG_3 */
    { X86_64_TABLE (X86_64_0F01_REG_3) },
    { RM_TABLE (RM_0F01_REG_3) },
  },
  {
    /* MOD_0F01_REG_7 */
    { "invlpg",		{ Mb } },
    { RM_TABLE (RM_0F01_REG_7) },
  },
  {
    /* MOD_0F12_PREFIX_0 */
    { "movlps",		{ XM, EXq } },
    { "movhlps",	{ XM, EXq } },
  },
  {
    /* MOD_0F13 */
    { "movlpX",		{ EXq, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F16_PREFIX_0 */
    { "movhps",		{ XM, EXq } },
    { "movlhps",	{ XM, EXq } },
  },
  {
    /* MOD_0F17 */
    { "movhpX",		{ EXq, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F18_REG_0 */
    { "prefetchnta",	{ Mb } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F18_REG_1 */
    { "prefetcht0",	{ Mb } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F18_REG_2 */
    { "prefetcht1",	{ Mb } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F18_REG_3 */
    { "prefetcht2",	{ Mb } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F20 */
    { "(bad)",		{ XX } },
    { "movZ",		{ Rm, Cm } },
  },
  {
    /* MOD_0F21 */
    { "(bad)",		{ XX } },
    { "movZ",		{ Rm, Dm } },
  },
  {
    /* MOD_0F22 */
    { "(bad)",		{ XX } },
    { "movZ",		{ Cm, Rm } },
  },
  {
    /* MOD_0F23 */
    { "(bad)",		{ XX } },
    { "movZ",		{ Dm, Rm } },
  },
  {
    /* MOD_0F24 */
    { "(bad)",		{ XX } },    
    { "movL",		{ Rd, Td } },
  },
  {
    /* MOD_0F26 */
    { "(bad)",		{ XX } },
    { "movL",		{ Td, Rd } },
  },
  {
    /* MOD_0F2B_PREFIX_0 */
    {"movntps",		{ Mx, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F2B_PREFIX_1 */
    {"movntss",		{ Md, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F2B_PREFIX_2 */
    {"movntpd",		{ Mx, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F2B_PREFIX_3 */
    {"movntsd",		{ Mq, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F51 */
    { "(bad)",		{ XX } },
    { "movmskpX",	{ Gdq, XS } },
  },
  {
    /* MOD_0F71_REG_2 */
    { "(bad)",		{ XX } },
    { "psrlw",		{ MS, Ib } },
  },
  {
    /* MOD_0F71_REG_4 */
    { "(bad)",		{ XX } },
    { "psraw",		{ MS, Ib } },
  },
  {
    /* MOD_0F71_REG_6 */
    { "(bad)",		{ XX } },
    { "psllw",		{ MS, Ib } },
  },
  {
    /* MOD_0F72_REG_2 */
    { "(bad)",		{ XX } },
    { "psrld",		{ MS, Ib } },
  },
  {
    /* MOD_0F72_REG_4 */
    { "(bad)",		{ XX } },
    { "psrad",		{ MS, Ib } },
  },
  {
    /* MOD_0F72_REG_6 */
    { "(bad)",		{ XX } },
    { "pslld",		{ MS, Ib } },
  },
  {
    /* MOD_0F73_REG_2 */
    { "(bad)",		{ XX } },
    { "psrlq",		{ MS, Ib } },
  },
  {
    /* MOD_0F73_REG_3 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F73_REG_3) },
  },
  {
    /* MOD_0F73_REG_6 */
    { "(bad)",		{ XX } },
    { "psllq",		{ MS, Ib } },
  },
  {
    /* MOD_0F73_REG_7 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_0F73_REG_7) },
  },
  {
    /* MOD_0FAE_REG_0 */
    { "fxsave",		{ M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FAE_REG_1 */
    { "fxrstor",	{ M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FAE_REG_2 */
    { "ldmxcsr",	{ Md } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FAE_REG_3 */
    { "stmxcsr",	{ Md } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FAE_REG_4 */
    { "xsave",		{ M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FAE_REG_5 */
    { "xrstor",		{ M } },
    { RM_TABLE (RM_0FAE_REG_5) },
  },
  {
    /* MOD_0FAE_REG_6 */
    { "xsaveopt",	{ M } },
    { RM_TABLE (RM_0FAE_REG_6) },
  },
  {
    /* MOD_0FAE_REG_7 */
    { "clflush",	{ Mb } },
    { RM_TABLE (RM_0FAE_REG_7) },
  },
  {
    /* MOD_0FB2 */
    { "lssS",		{ Gv, Mp } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FB4 */
    { "lfsS",		{ Gv, Mp } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FB5 */
    { "lgsS",		{ Gv, Mp } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FC7_REG_6 */
    { PREFIX_TABLE (PREFIX_0FC7_REG_6) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FC7_REG_7 */
    { "vmptrst",	{ Mq } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FD7 */
    { "(bad)",		{ XX } },
    { "pmovmskb",	{ Gdq, MS } },
  },
  {
    /* MOD_0FE7_PREFIX_2 */
    { "movntdq",	{ Mx, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0FF0_PREFIX_3 */
    { "lddqu",		{ XM, M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_0F382A_PREFIX_2 */
    { "movntdqa",	{ XM, Mx } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_62_32BIT */
    { "bound{S|}",	{ Gv, Ma } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_C4_32BIT */
    { "lesS",		{ Gv, Mp } },
    { VEX_C4_TABLE (VEX_0F) },
  },
  {
    /* MOD_C5_32BIT */
    { "ldsS",		{ Gv, Mp } },
    { VEX_C5_TABLE (VEX_0F) },
  },
  {
    /* MOD_VEX_12_PREFIX_0 */
    { VEX_LEN_TABLE (VEX_LEN_12_P_0_M_0) },
    { VEX_LEN_TABLE (VEX_LEN_12_P_0_M_1) },
  },
  {
    /* MOD_VEX_13 */
    { VEX_LEN_TABLE (VEX_LEN_13_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_16_PREFIX_0 */
    { VEX_LEN_TABLE (VEX_LEN_16_P_0_M_0) },
    { VEX_LEN_TABLE (VEX_LEN_16_P_0_M_1) },
  },
  {
    /* MOD_VEX_17 */
    { VEX_LEN_TABLE (VEX_LEN_17_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_2B */
    { "vmovntpX",	{ Mx, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_51 */
    { "(bad)",		{ XX } },
    { "vmovmskpX",	{ Gdq, XS } },
  },
  {
    /* MOD_VEX_71_REG_2 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_71_REG_2) },
  },
  {
    /* MOD_VEX_71_REG_4 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_71_REG_4) },
  },
  {
    /* MOD_VEX_71_REG_6 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_71_REG_6) },
  },
  {
    /* MOD_VEX_72_REG_2 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_72_REG_2) },
  },
  {
    /* MOD_VEX_72_REG_4 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_72_REG_4) },
  },
  {
    /* MOD_VEX_72_REG_6 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_72_REG_6) },
  },
  {
    /* MOD_VEX_73_REG_2 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_73_REG_2) },
  },
  {
    /* MOD_VEX_73_REG_3 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_73_REG_3) },
  },
  {
    /* MOD_VEX_73_REG_6 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_73_REG_6) },
  },
  {
    /* MOD_VEX_73_REG_7 */
    { "(bad)",		{ XX } },
    { PREFIX_TABLE (PREFIX_VEX_73_REG_7) },
  },
  {
    /* MOD_VEX_AE_REG_2 */
    { VEX_LEN_TABLE (VEX_LEN_AE_R_2_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_AE_REG_3 */
    { VEX_LEN_TABLE (VEX_LEN_AE_R_3_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_D7_PREFIX_2 */
    { "(bad)",		{ XX } },
    { VEX_LEN_TABLE (VEX_LEN_D7_P_2_M_1) },
  },
  {
    /* MOD_VEX_E7_PREFIX_2 */
    { "vmovntdq",	{ Mx, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_F0_PREFIX_3 */
    { "vlddqu",		{ XM, M } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_3818_PREFIX_2 */
    { "vbroadcastss",	{ XM, Md } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_3819_PREFIX_2 */
    { VEX_LEN_TABLE (VEX_LEN_3819_P_2_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_381A_PREFIX_2 */
    { VEX_LEN_TABLE (VEX_LEN_381A_P_2_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_382A_PREFIX_2 */
    { VEX_LEN_TABLE (VEX_LEN_382A_P_2_M_0) },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_382C_PREFIX_2 */
    { "vmaskmovps",	{ XM, Vex, Mx } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_382D_PREFIX_2 */
    { "vmaskmovpd",	{ XM, Vex, Mx } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_382E_PREFIX_2 */
    { "vmaskmovps",	{ Mx, Vex, XM } },
    { "(bad)",		{ XX } },
  },
  {
    /* MOD_VEX_382F_PREFIX_2 */
    { "vmaskmovpd",	{ Mx, Vex, XM } },
    { "(bad)",		{ XX } },
  },
};

static const struct dis386 rm_table[][8] = {
  {
    /* RM_0F01_REG_0 */
    { "(bad)",		{ XX } },
    { "vmcall",		{ Skip_MODRM } },
    { "vmlaunch",	{ Skip_MODRM } },
    { "vmresume",	{ Skip_MODRM } },
    { "vmxoff",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0F01_REG_1 */
    { "monitor",	{ { OP_Monitor, 0 } } },
    { "mwait",		{ { OP_Mwait, 0 } } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0F01_REG_2 */
    { "xgetbv",		{ Skip_MODRM } },
    { "xsetbv",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0F01_REG_3 */
    { "vmrun",		{ Skip_MODRM } },
    { "vmmcall",	{ Skip_MODRM } },
    { "vmload",		{ Skip_MODRM } },
    { "vmsave",		{ Skip_MODRM } },
    { "stgi",		{ Skip_MODRM } },
    { "clgi",		{ Skip_MODRM } },
    { "skinit",		{ Skip_MODRM } },
    { "invlpga",	{ Skip_MODRM } },
  },
  {
    /* RM_0F01_REG_7 */
    { "swapgs",		{ Skip_MODRM } },
    { "rdtscp",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0FAE_REG_5 */
    { "lfence",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0FAE_REG_6 */
    { "mfence",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
  {
    /* RM_0FAE_REG_7 */
    { "sfence",		{ Skip_MODRM } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
    { "(bad)",		{ XX } },
  },
};

#define INTERNAL_DISASSEMBLER_ERROR _("<internal disassembler error>")

static void
ckprefix (void)
{
  int newrex;
  rex = 0;
  rex_original = 0;
  rex_ignored = 0;
  prefixes = 0;
  used_prefixes = 0;
  rex_used = 0;
  while (1)
    {
      FETCH_DATA (the_info, codep + 1);
      newrex = 0;
      switch (*codep)
	{
	/* REX prefixes family.  */
	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:
	    if (address_mode == mode_64bit)
	      newrex = *codep;
	    else
	      return;
	  break;
	case 0xf3:
	  prefixes |= PREFIX_REPZ;
	  break;
	case 0xf2:
	  prefixes |= PREFIX_REPNZ;
	  break;
	case 0xf0:
	  prefixes |= PREFIX_LOCK;
	  break;
	case 0x2e:
	  prefixes |= PREFIX_CS;
	  break;
	case 0x36:
	  prefixes |= PREFIX_SS;
	  break;
	case 0x3e:
	  prefixes |= PREFIX_DS;
	  break;
	case 0x26:
	  prefixes |= PREFIX_ES;
	  break;
	case 0x64:
	  prefixes |= PREFIX_FS;
	  break;
	case 0x65:
	  prefixes |= PREFIX_GS;
	  break;
	case 0x66:
	  prefixes |= PREFIX_DATA;
	  break;
	case 0x67:
	  prefixes |= PREFIX_ADDR;
	  break;
	case FWAIT_OPCODE:
	  /* fwait is really an instruction.  If there are prefixes
	     before the fwait, they belong to the fwait, *not* to the
	     following instruction.  */
	  if (prefixes || rex)
	    {
	      prefixes |= PREFIX_FWAIT;
	      codep++;
	      return;
	    }
	  prefixes = PREFIX_FWAIT;
	  break;
	default:
	  return;
	}
      /* Rex is ignored when followed by another prefix.  */
      if (rex)
	{
	  rex_used = rex;
	  return;
	}
      rex = newrex;
      rex_original = rex;
      codep++;
    }
}

/* Return the name of the prefix byte PREF, or NULL if PREF is not a
   prefix byte.  */

static const char *
prefix_name (int pref, int sizeflag)
{
  static const char *rexes [16] =
    {
      "rex",		/* 0x40 */
      "rex.B",		/* 0x41 */
      "rex.X",		/* 0x42 */
      "rex.XB",		/* 0x43 */
      "rex.R",		/* 0x44 */
      "rex.RB",		/* 0x45 */
      "rex.RX",		/* 0x46 */
      "rex.RXB",	/* 0x47 */
      "rex.W",		/* 0x48 */
      "rex.WB",		/* 0x49 */
      "rex.WX",		/* 0x4a */
      "rex.WXB",	/* 0x4b */
      "rex.WR",		/* 0x4c */
      "rex.WRB",	/* 0x4d */
      "rex.WRX",	/* 0x4e */
      "rex.WRXB",	/* 0x4f */
    };

  switch (pref)
    {
    /* REX prefixes family.  */
    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:
      return rexes [pref - 0x40];
    case 0xf3:
      return "repz";
    case 0xf2:
      return "repnz";
    case 0xf0:
      return "lock";
    case 0x2e:
      return "cs";
    case 0x36:
      return "ss";
    case 0x3e:
      return "ds";
    case 0x26:
      return "es";
    case 0x64:
      return "fs";
    case 0x65:
      return "gs";
    case 0x66:
      return (sizeflag & DFLAG) ? "data16" : "data32";
    case 0x67:
      if (address_mode == mode_64bit)
	return (sizeflag & AFLAG) ? "addr32" : "addr64";
      else
	return (sizeflag & AFLAG) ? "addr16" : "addr32";
    case FWAIT_OPCODE:
      return "fwait";
    default:
      return NULL;
    }
}

static char op_out[MAX_OPERANDS][100];
static int op_ad, op_index[MAX_OPERANDS];
static int two_source_ops;
static bfd_vma op_address[MAX_OPERANDS];
static bfd_vma op_riprel[MAX_OPERANDS];
static bfd_vma start_pc;

/*
 *   On the 386's of 1988, the maximum length of an instruction is 15 bytes.
 *   (see topic "Redundant prefixes" in the "Differences from 8086"
 *   section of the "Virtual 8086 Mode" chapter.)
 * 'pc' should be the address of this instruction, it will
 *   be used to print the target address if this is a relative jump or call
 * The function returns the length of this instruction in bytes.
 */

static char intel_syntax;
static char intel_mnemonic = !SYSV386_COMPAT;
static char open_char;
static char close_char;
static char separator_char;
static char scale_char;

/* Here for backwards compatibility.  When gdb stops using
   print_insn_i386_att and print_insn_i386_intel these functions can
   disappear, and print_insn_i386 be merged into print_insn.  */
int
print_insn_i386_att (bfd_vma pc, disassemble_info *info)
{
  intel_syntax = 0;

  return print_insn (pc, info);
}

int
print_insn_i386_intel (bfd_vma pc, disassemble_info *info)
{
  intel_syntax = 1;

  return print_insn (pc, info);
}

int
print_insn_i386 (bfd_vma pc, disassemble_info *info)
{
  intel_syntax = -1;

  return print_insn (pc, info);
}

void
print_i386_disassembler_options (FILE *stream)
{
  fprintf (stream, _("\n\
The following i386/x86-64 specific disassembler options are supported for use\n\
with the -M switch (multiple options should be separated by commas):\n"));

  fprintf (stream, _("  x86-64      Disassemble in 64bit mode\n"));
  fprintf (stream, _("  i386        Disassemble in 32bit mode\n"));
  fprintf (stream, _("  i8086       Disassemble in 16bit mode\n"));
  fprintf (stream, _("  att         Display instruction in AT&T syntax\n"));
  fprintf (stream, _("  intel       Display instruction in Intel syntax\n"));
  fprintf (stream, _("  att-mnemonic\n"
		     "              Display instruction in AT&T mnemonic\n"));
  fprintf (stream, _("  intel-mnemonic\n"
		     "              Display instruction in Intel mnemonic\n"));
  fprintf (stream, _("  addr64      Assume 64bit address size\n"));
  fprintf (stream, _("  addr32      Assume 32bit address size\n"));
  fprintf (stream, _("  addr16      Assume 16bit address size\n"));
  fprintf (stream, _("  data32      Assume 32bit data size\n"));
  fprintf (stream, _("  data16      Assume 16bit data size\n"));
  fprintf (stream, _("  suffix      Always display instruction suffix in AT&T syntax\n"));
}

/* Get a pointer to struct dis386 with a valid name.  */

static const struct dis386 *
get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
{
  int index, vex_table_index;

  if (dp->name != NULL)
    return dp;

  switch (dp->op[0].bytemode)
    {
    case USE_REG_TABLE:
      dp = &reg_table[dp->op[1].bytemode][modrm.reg];
      break;

    case USE_MOD_TABLE:
      index = modrm.mod == 0x3 ? 1 : 0;
      dp = &mod_table[dp->op[1].bytemode][index];
      break;

    case USE_RM_TABLE:
      dp = &rm_table[dp->op[1].bytemode][modrm.rm];
      break;

    case USE_PREFIX_TABLE:
      if (need_vex)
	{
	  /* The prefix in VEX is implicit.  */
	  switch (vex.prefix)
	    {
	    case 0:
	      index = 0;
	      break;
	    case REPE_PREFIX_OPCODE:
	      index = 1;
	      break;
	    case DATA_PREFIX_OPCODE:
	      index = 2;
	      break;
	    case REPNE_PREFIX_OPCODE:
	      index = 3;
	      break;
	    default:
	      abort ();
	      break;
	    }
	}
      else 
	{
	  index = 0;
	  used_prefixes |= (prefixes & PREFIX_REPZ);
	  if (prefixes & PREFIX_REPZ)
	    {
	      index = 1;
	      repz_prefix = NULL;
	    }
	  else
	    {
	      /* We should check PREFIX_REPNZ and PREFIX_REPZ before
		 PREFIX_DATA.  */
	      used_prefixes |= (prefixes & PREFIX_REPNZ);
	      if (prefixes & PREFIX_REPNZ)
		{
		  index = 3;
		  repnz_prefix = NULL;
		}
	      else
		{
		  used_prefixes |= (prefixes & PREFIX_DATA);
		  if (prefixes & PREFIX_DATA)
		    {
		      index = 2;
		      data_prefix = NULL;
		    }
		}
	    }
	}
      dp = &prefix_table[dp->op[1].bytemode][index];
      break;

    case USE_X86_64_TABLE:
      index = address_mode == mode_64bit ? 1 : 0;
      dp = &x86_64_table[dp->op[1].bytemode][index];
      break;

    case USE_3BYTE_TABLE:
      FETCH_DATA (info, codep + 2);
      index = *codep++;
      dp = &three_byte_table[dp->op[1].bytemode][index];
      modrm.mod = (*codep >> 6) & 3;
      modrm.reg = (*codep >> 3) & 7;
      modrm.rm = *codep & 7;
      break;

    case USE_VEX_LEN_TABLE:
      if (!need_vex)
	abort ();

      switch (vex.length)
	{
	case 128:
	  index = 0;
	  break;
	case 256:
	  index = 1;
	  break;
	default:
	  abort ();
	  break;
	}

      dp = &vex_len_table[dp->op[1].bytemode][index];
      break;

    case USE_VEX_C4_TABLE:
      FETCH_DATA (info, codep + 3);
      /* All bits in the REX prefix are ignored.  */
      rex_ignored = rex;
      rex = ~(*codep >> 5) & 0x7;
      switch ((*codep & 0x1f))
	{
	default:
	  BadOp ();
	case 0x1:
	  vex_table_index = 0;
	  break;
	case 0x2:
	  vex_table_index = 1;
	  break;
	case 0x3:
	  vex_table_index = 2;
	  break;
	}
      codep++;
      vex.w = *codep & 0x80;
      if (vex.w && address_mode == mode_64bit)
	rex |= REX_W;

      vex.register_specifier = (~(*codep >> 3)) & 0xf;
      if (address_mode != mode_64bit
	  && vex.register_specifier > 0x7)
	BadOp ();

      vex.length = (*codep & 0x4) ? 256 : 128;
      switch ((*codep & 0x3))
	{
	case 0:
	  vex.prefix = 0;
	  break;
	case 1:
	  vex.prefix = DATA_PREFIX_OPCODE;
	  break;
	case 2:
	  vex.prefix = REPE_PREFIX_OPCODE;
	  break;
	case 3:
	  vex.prefix = REPNE_PREFIX_OPCODE;
	  break;
	}
      need_vex = 1;
      need_vex_reg = 1;
      codep++;
      index = *codep++;
      dp = &vex_table[vex_table_index][index];
      /* There is no MODRM byte for VEX [82|77].  */
      if (index != 0x77 && index != 0x82)
	{
	  FETCH_DATA (info, codep + 1);
	  modrm.mod = (*codep >> 6) & 3;
	  modrm.reg = (*codep >> 3) & 7;
	  modrm.rm = *codep & 7;
	}
      break;

    case USE_VEX_C5_TABLE:
      FETCH_DATA (info, codep + 2);
      /* All bits in the REX prefix are ignored.  */
      rex_ignored = rex;
      rex = (*codep & 0x80) ? 0 : REX_R;

      vex.register_specifier = (~(*codep >> 3)) & 0xf;
      if (address_mode != mode_64bit
	  && vex.register_specifier > 0x7)
	BadOp ();

      vex.length = (*codep & 0x4) ? 256 : 128;
      switch ((*codep & 0x3))
	{
	case 0:
	  vex.prefix = 0;
	  break;
	case 1:
	  vex.prefix = DATA_PREFIX_OPCODE;
	  break;
	case 2:
	  vex.prefix = REPE_PREFIX_OPCODE;
	  break;
	case 3:
	  vex.prefix = REPNE_PREFIX_OPCODE;
	  break;
	}
      need_vex = 1;
      need_vex_reg = 1;
      codep++;
      index = *codep++;
      dp = &vex_table[dp->op[1].bytemode][index];
      /* There is no MODRM byte for VEX [82|77].  */
      if (index != 0x77 && index != 0x82)
	{
	  FETCH_DATA (info, codep + 1);
	  modrm.mod = (*codep >> 6) & 3;
	  modrm.reg = (*codep >> 3) & 7;
	  modrm.rm = *codep & 7;
	}
      break;

    default:
      abort ();
    }

  if (dp->name != NULL)
    return dp;
  else
    return get_valid_dis386 (dp, info);
}

static int
print_insn (bfd_vma pc, disassemble_info *info)
{
  const struct dis386 *dp;
  int i;
  char *op_txt[MAX_OPERANDS];
  int needcomma;
  int sizeflag;
  const char *p;
  struct dis_private priv;
  unsigned char op;
  char prefix_obuf[32];
  char *prefix_obufp;

  if (info->mach == bfd_mach_x86_64_intel_syntax
      || info->mach == bfd_mach_x86_64
      || info->mach == bfd_mach_l1om
      || info->mach == bfd_mach_l1om_intel_syntax)
    address_mode = mode_64bit;
  else
    address_mode = mode_32bit;

  if (intel_syntax == (char) -1)
    intel_syntax = (info->mach == bfd_mach_i386_i386_intel_syntax
		    || info->mach == bfd_mach_x86_64_intel_syntax
		    || info->mach == bfd_mach_l1om_intel_syntax);

  if (info->mach == bfd_mach_i386_i386
      || info->mach == bfd_mach_x86_64
      || info->mach == bfd_mach_l1om
      || info->mach == bfd_mach_i386_i386_intel_syntax
      || info->mach == bfd_mach_x86_64_intel_syntax
      || info->mach == bfd_mach_l1om_intel_syntax)
    priv.orig_sizeflag = AFLAG | DFLAG;
  else if (info->mach == bfd_mach_i386_i8086)
    priv.orig_sizeflag = 0;
  else
    abort ();

  for (p = info->disassembler_options; p != NULL; )
    {
      if (CONST_STRNEQ (p, "x86-64"))
	{
	  address_mode = mode_64bit;
	  priv.orig_sizeflag = AFLAG | DFLAG;
	}
      else if (CONST_STRNEQ (p, "i386"))
	{
	  address_mode = mode_32bit;
	  priv.orig_sizeflag = AFLAG | DFLAG;
	}
      else if (CONST_STRNEQ (p, "i8086"))
	{
	  address_mode = mode_16bit;
	  priv.orig_sizeflag = 0;
	}
      else if (CONST_STRNEQ (p, "intel"))
	{
	  intel_syntax = 1;
	  if (CONST_STRNEQ (p + 5, "-mnemonic"))
	    intel_mnemonic = 1;
	}
      else if (CONST_STRNEQ (p, "att"))
	{
	  intel_syntax = 0;
	  if (CONST_STRNEQ (p + 3, "-mnemonic"))
	    intel_mnemonic = 0;
	}
      else if (CONST_STRNEQ (p, "addr"))
	{
	  if (address_mode == mode_64bit)
	    {
	      if (p[4] == '3' && p[5] == '2')
		priv.orig_sizeflag &= ~AFLAG;
	      else if (p[4] == '6' && p[5] == '4')
		priv.orig_sizeflag |= AFLAG;
	    }
	  else
	    {
	      if (p[4] == '1' && p[5] == '6')
		priv.orig_sizeflag &= ~AFLAG;
	      else if (p[4] == '3' && p[5] == '2')
		priv.orig_sizeflag |= AFLAG;
	    }
	}
      else if (CONST_STRNEQ (p, "data"))
	{
	  if (p[4] == '1' && p[5] == '6')
	    priv.orig_sizeflag &= ~DFLAG;
	  else if (p[4] == '3' && p[5] == '2')
	    priv.orig_sizeflag |= DFLAG;
	}
      else if (CONST_STRNEQ (p, "suffix"))
	priv.orig_sizeflag |= SUFFIX_ALWAYS;

      p = strchr (p, ',');
      if (p != NULL)
	p++;
    }

  if (intel_syntax)
    {
      names64 = intel_names64;
      names32 = intel_names32;
      names16 = intel_names16;
      names8 = intel_names8;
      names8rex = intel_names8rex;
      names_seg = intel_names_seg;
      index64 = intel_index64;
      index32 = intel_index32;
      index16 = intel_index16;
      open_char = '[';
      close_char = ']';
      separator_char = '+';
      scale_char = '*';
    }
  else
    {
      names64 = att_names64;
      names32 = att_names32;
      names16 = att_names16;
      names8 = att_names8;
      names8rex = att_names8rex;
      names_seg = att_names_seg;
      index64 = att_index64;
      index32 = att_index32;
      index16 = att_index16;
      open_char = '(';
      close_char =  ')';
      separator_char = ',';
      scale_char = ',';
    }

  /* The output looks better if we put 7 bytes on a line, since that
     puts most long word instructions on a single line.  Use 8 bytes
     for Intel L1OM.  */
  if (info->mach == bfd_mach_l1om
      || info->mach == bfd_mach_l1om_intel_syntax)
    info->bytes_per_line = 8;
  else
    info->bytes_per_line = 7;

  info->private_data = &priv;
  priv.max_fetched = priv.the_buffer;
  priv.insn_start = pc;

  obuf[0] = 0;
  for (i = 0; i < MAX_OPERANDS; ++i)
    {
      op_out[i][0] = 0;
      op_index[i] = -1;
    }

  the_info = info;
  start_pc = pc;
  start_codep = priv.the_buffer;
  codep = priv.the_buffer;

  if (setjmp (priv.bailout) != 0)
    {
      const char *name;

      /* Getting here means we tried for data but didn't get it.  That
	 means we have an incomplete instruction of some sort.  Just
	 print the first byte as a prefix or a .byte pseudo-op.  */
      if (codep > priv.the_buffer)
	{
	  name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
	  if (name != NULL)
	    (*info->fprintf_func) (info->stream, "%s", name);
	  else
	    {
	      /* Just print the first byte as a .byte instruction.  */
	      (*info->fprintf_func) (info->stream, ".byte 0x%x",
				     (unsigned int) priv.the_buffer[0]);
	    }

	  return 1;
	}

      return -1;
    }

  obufp = obuf;
  ckprefix ();

  insn_codep = codep;
  sizeflag = priv.orig_sizeflag;

  FETCH_DATA (info, codep + 1);
  two_source_ops = (*codep == 0x62) || (*codep == 0xc8);

  if (((prefixes & PREFIX_FWAIT)
       && ((*codep < 0xd8) || (*codep > 0xdf)))
      || (rex && rex_used))
    {
      const char *name;

      /* fwait not followed by floating point instruction, or rex followed
	 by other prefixes.  Print the first prefix.  */
      name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
      if (name == NULL)
	name = INTERNAL_DISASSEMBLER_ERROR;
      (*info->fprintf_func) (info->stream, "%s", name);
      return 1;
    }

  op = 0;

  if (*codep == 0x0f)
    {
      unsigned char threebyte;
      FETCH_DATA (info, codep + 2);
      threebyte = *++codep;
      dp = &dis386_twobyte[threebyte];
      need_modrm = twobyte_has_modrm[*codep];
      codep++;
    }
  else
    {
      dp = &dis386[*codep];
      need_modrm = onebyte_has_modrm[*codep];
      codep++;
    }

  if ((prefixes & PREFIX_REPZ))
    {
      repz_prefix = "repz ";
      used_prefixes |= PREFIX_REPZ;
    }
  else
    repz_prefix = NULL;

  if ((prefixes & PREFIX_REPNZ))
    {
      repnz_prefix = "repnz ";
      used_prefixes |= PREFIX_REPNZ;
    }
  else
    repnz_prefix = NULL;

  if ((prefixes & PREFIX_LOCK))
    {
      lock_prefix = "lock ";
      used_prefixes |= PREFIX_LOCK;
    }
  else
    lock_prefix = NULL;

  addr_prefix = NULL;
  if (prefixes & PREFIX_ADDR)
    {
      sizeflag ^= AFLAG;
      if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax)
	{
	  if ((sizeflag & AFLAG) || address_mode == mode_64bit)
	    addr_prefix = "addr32 ";
	  else
	    addr_prefix = "addr16 ";
	  used_prefixes |= PREFIX_ADDR;
	}
    }

  data_prefix = NULL;
  if ((prefixes & PREFIX_DATA))
    {
      sizeflag ^= DFLAG;
      if (dp->op[2].bytemode == cond_jump_mode
	  && dp->op[0].bytemode == v_mode
	  && !intel_syntax)
	{
	  if (sizeflag & DFLAG)
	    data_prefix = "data32 ";
	  else
	    data_prefix = "data16 ";
	  used_prefixes |= PREFIX_DATA;
	}
    }

  if (need_modrm)
    {
      FETCH_DATA (info, codep + 1);
      modrm.mod = (*codep >> 6) & 3;
      modrm.reg = (*codep >> 3) & 7;
      modrm.rm = *codep & 7;
    }

  if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE)
    {
      dofloat (sizeflag);
    }
  else
    {
      need_vex = 0;
      need_vex_reg = 0;
      vex_w_done = 0;
      dp = get_valid_dis386 (dp, info);
      if (dp != NULL && putop (dp->name, sizeflag) == 0)
        {
	  for (i = 0; i < MAX_OPERANDS; ++i)
	    {
	      obufp = op_out[i];
	      op_ad = MAX_OPERANDS - 1 - i;
	      if (dp->op[i].rtn)
		(*dp->op[i].rtn) (dp->op[i].bytemode, sizeflag);
	    }
	}
    }

  /* See if any prefixes were not used.  If so, print the first one
     separately.  If we don't do this, we'll wind up printing an
     instruction stream which does not precisely correspond to the
     bytes we are disassembling.  */
  if ((prefixes & ~used_prefixes) != 0)
    {
      const char *name;

      name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
      if (name == NULL)
	name = INTERNAL_DISASSEMBLER_ERROR;
      (*info->fprintf_func) (info->stream, "%s", name);
      return 1;
    }
  if ((rex_original & ~rex_used) || rex_ignored)
    {
      const char *name;
      name = prefix_name (rex_original, priv.orig_sizeflag);
      if (name == NULL)
	name = INTERNAL_DISASSEMBLER_ERROR;
      (*info->fprintf_func) (info->stream, "%s ", name);
    }

  prefix_obuf[0] = 0;
  prefix_obufp = prefix_obuf;
  if (lock_prefix)
    prefix_obufp = stpcpy (prefix_obufp, lock_prefix);
  if (repz_prefix)
    prefix_obufp = stpcpy (prefix_obufp, repz_prefix);
  if (repnz_prefix)
    prefix_obufp = stpcpy (prefix_obufp, repnz_prefix);
  if (addr_prefix)
    prefix_obufp = stpcpy (prefix_obufp, addr_prefix);
  if (data_prefix)
    prefix_obufp = stpcpy (prefix_obufp, data_prefix);

  if (prefix_obuf[0] != 0)
    (*info->fprintf_func) (info->stream, "%s", prefix_obuf);

  obufp = mnemonicendp;
  for (i = strlen (obuf) + strlen (prefix_obuf); i < 6; i++)
    oappend (" ");
  oappend (" ");
  (*info->fprintf_func) (info->stream, "%s", obuf);

  /* The enter and bound instructions are printed with operands in the same
     order as the intel book; everything else is printed in reverse order.  */
  if (intel_syntax || two_source_ops)
    {
      bfd_vma riprel;

      for (i = 0; i < MAX_OPERANDS; ++i)
        op_txt[i] = op_out[i];

      for (i = 0; i < (MAX_OPERANDS >> 1); ++i)
	{
          op_ad = op_index[i];
          op_index[i] = op_index[MAX_OPERANDS - 1 - i];
          op_index[MAX_OPERANDS - 1 - i] = op_ad;
	  riprel = op_riprel[i];
	  op_riprel[i] = op_riprel [MAX_OPERANDS - 1 - i];
	  op_riprel[MAX_OPERANDS - 1 - i] = riprel;
	}
    }
  else
    {
      for (i = 0; i < MAX_OPERANDS; ++i)
        op_txt[MAX_OPERANDS - 1 - i] = op_out[i];
    }

  needcomma = 0;
  for (i = 0; i < MAX_OPERANDS; ++i)
    if (*op_txt[i])
      {
	if (needcomma)
	  (*info->fprintf_func) (info->stream, ",");
	if (op_index[i] != -1 && !op_riprel[i])
	  (*info->print_address_func) ((bfd_vma) op_address[op_index[i]], info);
	else
	  (*info->fprintf_func) (info->stream, "%s", op_txt[i]);
	needcomma = 1;
      }

  for (i = 0; i < MAX_OPERANDS; i++)
    if (op_index[i] != -1 && op_riprel[i])
      {
	(*info->fprintf_func) (info->stream, "        # ");
	(*info->print_address_func) ((bfd_vma) (start_pc + codep - start_codep
						+ op_address[op_index[i]]), info);
	break;
      }
  return codep - priv.the_buffer;
}

static const char *float_mem[] = {
  /* d8 */
  "fadd{s|}",
  "fmul{s|}",
  "fcom{s|}",
  "fcomp{s|}",
  "fsub{s|}",
  "fsubr{s|}",
  "fdiv{s|}",
  "fdivr{s|}",
  /* d9 */
  "fld{s|}",
  "(bad)",
  "fst{s|}",
  "fstp{s|}",
  "fldenvIC",
  "fldcw",
  "fNstenvIC",
  "fNstcw",
  /* da */
  "fiadd{l|}",
  "fimul{l|}",
  "ficom{l|}",
  "ficomp{l|}",
  "fisub{l|}",
  "fisubr{l|}",
  "fidiv{l|}",
  "fidivr{l|}",
  /* db */
  "fild{l|}",
  "fisttp{l|}",
  "fist{l|}",
  "fistp{l|}",
  "(bad)",
  "fld{t||t|}",
  "(bad)",
  "fstp{t||t|}",
  /* dc */
  "fadd{l|}",
  "fmul{l|}",
  "fcom{l|}",
  "fcomp{l|}",
  "fsub{l|}",
  "fsubr{l|}",
  "fdiv{l|}",
  "fdivr{l|}",
  /* dd */
  "fld{l|}",
  "fisttp{ll|}",
  "fst{l||}",
  "fstp{l|}",
  "frstorIC",
  "(bad)",
  "fNsaveIC",
  "fNstsw",
  /* de */
  "fiadd",
  "fimul",
  "ficom",
  "ficomp",
  "fisub",
  "fisubr",
  "fidiv",
  "fidivr",
  /* df */
  "fild",
  "fisttp",
  "fist",
  "fistp",
  "fbld",
  "fild{ll|}",
  "fbstp",
  "fistp{ll|}",
};

static const unsigned char float_mem_mode[] = {
  /* d8 */
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  /* d9 */
  d_mode,
  0,
  d_mode,
  d_mode,
  0,
  w_mode,
  0,
  w_mode,
  /* da */
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  /* db */
  d_mode,
  d_mode,
  d_mode,
  d_mode,
  0,
  t_mode,
  0,
  t_mode,
  /* dc */
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  /* dd */
  q_mode,
  q_mode,
  q_mode,
  q_mode,
  0,
  0,
  0,
  w_mode,
  /* de */
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  /* df */
  w_mode,
  w_mode,
  w_mode,
  w_mode,
  t_mode,
  q_mode,
  t_mode,
  q_mode
};

#define ST { OP_ST, 0 }
#define STi { OP_STi, 0 }

#define FGRPd9_2 NULL, { { NULL, 0 } }
#define FGRPd9_4 NULL, { { NULL, 1 } }
#define FGRPd9_5 NULL, { { NULL, 2 } }
#define FGRPd9_6 NULL, { { NULL, 3 } }
#define FGRPd9_7 NULL, { { NULL, 4 } }
#define FGRPda_5 NULL, { { NULL, 5 } }
#define FGRPdb_4 NULL, { { NULL, 6 } }
#define FGRPde_3 NULL, { { NULL, 7 } }
#define FGRPdf_4 NULL, { { NULL, 8 } }

static const struct dis386 float_reg[][8] = {
  /* d8 */
  {
    { "fadd",	{ ST, STi } },
    { "fmul",	{ ST, STi } },
    { "fcom",	{ STi } },
    { "fcomp",	{ STi } },
    { "fsub",	{ ST, STi } },
    { "fsubr",	{ ST, STi } },
    { "fdiv",	{ ST, STi } },
    { "fdivr",	{ ST, STi } },
  },
  /* d9 */
  {
    { "fld",	{ STi } },
    { "fxch",	{ STi } },
    { FGRPd9_2 },
    { "(bad)",	{ XX } },
    { FGRPd9_4 },
    { FGRPd9_5 },
    { FGRPd9_6 },
    { FGRPd9_7 },
  },
  /* da */
  {
    { "fcmovb",	{ ST, STi } },
    { "fcmove",	{ ST, STi } },
    { "fcmovbe",{ ST, STi } },
    { "fcmovu",	{ ST, STi } },
    { "(bad)",	{ XX } },
    { FGRPda_5 },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* db */
  {
    { "fcmovnb",{ ST, STi } },
    { "fcmovne",{ ST, STi } },
    { "fcmovnbe",{ ST, STi } },
    { "fcmovnu",{ ST, STi } },
    { FGRPdb_4 },
    { "fucomi",	{ ST, STi } },
    { "fcomi",	{ ST, STi } },
    { "(bad)",	{ XX } },
  },
  /* dc */
  {
    { "fadd",	{ STi, ST } },
    { "fmul",	{ STi, ST } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "fsub!M",	{ STi, ST } },
    { "fsubM",	{ STi, ST } },
    { "fdiv!M",	{ STi, ST } },
    { "fdivM",	{ STi, ST } },
  },
  /* dd */
  {
    { "ffree",	{ STi } },
    { "(bad)",	{ XX } },
    { "fst",	{ STi } },
    { "fstp",	{ STi } },
    { "fucom",	{ STi } },
    { "fucomp",	{ STi } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
  },
  /* de */
  {
    { "faddp",	{ STi, ST } },
    { "fmulp",	{ STi, ST } },
    { "(bad)",	{ XX } },
    { FGRPde_3 },
    { "fsub!Mp", { STi, ST } },
    { "fsubMp",	{ STi, ST } },
    { "fdiv!Mp", { STi, ST } },
    { "fdivMp",	{ STi, ST } },
  },
  /* df */
  {
    { "ffreep",	{ STi } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { "(bad)",	{ XX } },
    { FGRPdf_4 },
    { "fucomip", { ST, STi } },
    { "fcomip", { ST, STi } },
    { "(bad)",	{ XX } },
  },
};

static char *fgrps[][8] = {
  /* d9_2  0 */
  {
    "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
  },

  /* d9_4  1 */
  {
    "fchs","fabs","(bad)","(bad)","ftst","fxam","(bad)","(bad)",
  },

  /* d9_5  2 */
  {
    "fld1","fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz","(bad)",
  },

  /* d9_6  3 */
  {
    "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp","fincstp",
  },

  /* d9_7  4 */
  {
    "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos",
  },

  /* da_5  5 */
  {
    "(bad)","fucompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
  },

  /* db_4  6 */
  {
    "fNeni(8087 only)","fNdisi(8087 only)","fNclex","fNinit",
    "fNsetpm(287 only)","frstpm(287 only)","(bad)","(bad)",
  },

  /* de_3  7 */
  {
    "(bad)","fcompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
  },

  /* df_4  8 */
  {
    "fNstsw","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
  },
};

static void
swap_operand (void)
{
  mnemonicendp[0] = '.';
  mnemonicendp[1] = 's';
  mnemonicendp += 2;
}

static void
OP_Skip_MODRM (int bytemode ATTRIBUTE_UNUSED,
	       int sizeflag ATTRIBUTE_UNUSED)
{
  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;
}

static void
dofloat (int sizeflag)
{
  const struct dis386 *dp;
  unsigned char floatop;

  floatop = codep[-1];

  if (modrm.mod != 3)
    {
      int fp_indx = (floatop - 0xd8) * 8 + modrm.reg;

      putop (float_mem[fp_indx], sizeflag);
      obufp = op_out[0];
      op_ad = 2;
      OP_E (float_mem_mode[fp_indx], sizeflag);
      return;
    }
  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;

  dp = &float_reg[floatop - 0xd8][modrm.reg];
  if (dp->name == NULL)
    {
      putop (fgrps[dp->op[0].bytemode][modrm.rm], sizeflag);

      /* Instruction fnstsw is only one with strange arg.  */
      if (floatop == 0xdf && codep[-1] == 0xe0)
	strcpy (op_out[0], names16[0]);
    }
  else
    {
      putop (dp->name, sizeflag);

      obufp = op_out[0];
      op_ad = 2;
      if (dp->op[0].rtn)
	(*dp->op[0].rtn) (dp->op[0].bytemode, sizeflag);

      obufp = op_out[1];
      op_ad = 1;
      if (dp->op[1].rtn)
	(*dp->op[1].rtn) (dp->op[1].bytemode, sizeflag);
    }
}

static void
OP_ST (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  oappend ("%st" + intel_syntax);
}

static void
OP_STi (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  sprintf (scratchbuf, "%%st(%d)", modrm.rm);
  oappend (scratchbuf + intel_syntax);
}

/* Capital letters in template are macros.  */
static int
putop (const char *in_template, int sizeflag)
{
  const char *p;
  int alt = 0;
  int cond = 1;
  unsigned int l = 0, len = 1;
  char last[4];

#define SAVE_LAST(c)			\
  if (l < len && l < sizeof (last))	\
    last[l++] = c;			\
  else					\
    abort ();

  for (p = in_template; *p; p++)
    {
      switch (*p)
	{
	default:
	  *obufp++ = *p;
	  break;
	case '%':
	  len++;
	  break;
	case '!':
	  cond = 0;
	  break;
	case '{':
	  alt = 0;
	  if (intel_syntax)
	    {
	      while (*++p != '|')
		if (*p == '}' || *p == '\0')
		  abort ();
	    }
	  /* Fall through.  */
	case 'I':
	  alt = 1;
	  continue;
	case '|':
	  while (*++p != '}')
	    {
	      if (*p == '\0')
		abort ();
	    }
	  break;
	case '}':
	  break;
	case 'A':
	  if (intel_syntax)
	    break;
	  if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
	    *obufp++ = 'b';
	  break;
	case 'B':
	  if (intel_syntax)
	    break;
	  if (sizeflag & SUFFIX_ALWAYS)
	    *obufp++ = 'b';
	  break;
	case 'C':
	  if (intel_syntax && !alt)
	    break;
	  if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS))
	    {
	      if (sizeflag & DFLAG)
		*obufp++ = intel_syntax ? 'd' : 'l';
	      else
		*obufp++ = intel_syntax ? 'w' : 's';
	      used_prefixes |= (prefixes & PREFIX_DATA);
	    }
	  break;
	case 'D':
	  if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
	    break;
	  USED_REX (REX_W);
	  if (modrm.mod == 3)
	    {
	      if (rex & REX_W)
		*obufp++ = 'q';
	      else if (sizeflag & DFLAG)
		*obufp++ = intel_syntax ? 'd' : 'l';
	      else
		*obufp++ = 'w';
	      used_prefixes |= (prefixes & PREFIX_DATA);
	    }
	  else
	    *obufp++ = 'w';
	  break;
	case 'E':		/* For jcxz/jecxz */
	  if (address_mode == mode_64bit)
	    {
	      if (sizeflag & AFLAG)
		*obufp++ = 'r';
	      else
		*obufp++ = 'e';
	    }
	  else
	    if (sizeflag & AFLAG)
	      *obufp++ = 'e';
	  used_prefixes |= (prefixes & PREFIX_ADDR);
	  break;
	case 'F':
	  if (intel_syntax)
	    break;
	  if ((prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
	    {
	      if (sizeflag & AFLAG)
		*obufp++ = address_mode == mode_64bit ? 'q' : 'l';
	      else
		*obufp++ = address_mode == mode_64bit ? 'l' : 'w';
	      used_prefixes |= (prefixes & PREFIX_ADDR);
	    }
	  break;
	case 'G':
	  if (intel_syntax || (obufp[-1] != 's' && !(sizeflag & SUFFIX_ALWAYS)))
	    break;
	  if ((rex & REX_W) || (sizeflag & DFLAG))
	    *obufp++ = 'l';
	  else
	    *obufp++ = 'w';
	  if (!(rex & REX_W))
	    used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	case 'H':
	  if (intel_syntax)
	    break;
	  if ((prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_CS
	      || (prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_DS)
	    {
	      used_prefixes |= prefixes & (PREFIX_CS | PREFIX_DS);
	      *obufp++ = ',';
	      *obufp++ = 'p';
	      if (prefixes & PREFIX_DS)
		*obufp++ = 't';
	      else
		*obufp++ = 'n';
	    }
	  break;
	case 'J':
	  if (intel_syntax)
	    break;
	  *obufp++ = 'l';
	  break;
	case 'K':
	  USED_REX (REX_W);
	  if (rex & REX_W)
	    *obufp++ = 'q';
	  else
	    *obufp++ = 'd';
	  break;
	case 'Z':
	  if (intel_syntax)
	    break;
	  if (address_mode == mode_64bit && (sizeflag & SUFFIX_ALWAYS))
	    {
	      *obufp++ = 'q';
	      break;
	    }
	  /* Fall through.  */
	  goto case_L;
	case 'L':
	  if (l != 0 || len != 1)
	    {
	      SAVE_LAST (*p);
	      break;
	    }
case_L:
	  if (intel_syntax)
	    break;
	  if (sizeflag & SUFFIX_ALWAYS)
	    *obufp++ = 'l';
	  break;
	case 'M':
	  if (intel_mnemonic != cond)
	    *obufp++ = 'r';
	  break;
	case 'N':
	  if ((prefixes & PREFIX_FWAIT) == 0)
	    *obufp++ = 'n';
	  else
	    used_prefixes |= PREFIX_FWAIT;
	  break;
	case 'O':
	  USED_REX (REX_W);
	  if (rex & REX_W)
	    *obufp++ = 'o';
	  else if (intel_syntax && (sizeflag & DFLAG))
	    *obufp++ = 'q';
	  else
	    *obufp++ = 'd';
	  if (!(rex & REX_W))
	    used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	case 'T':
	  if (intel_syntax)
	    break;
	  if (address_mode == mode_64bit && (sizeflag & DFLAG))
	    {
	      *obufp++ = 'q';
	      break;
	    }
	  /* Fall through.  */
	case 'P':
	  if (intel_syntax)
	    break;
	  if ((prefixes & PREFIX_DATA)
	      || (rex & REX_W)
	      || (sizeflag & SUFFIX_ALWAYS))
	    {
	      USED_REX (REX_W);
	      if (rex & REX_W)
		*obufp++ = 'q';
	      else
		{
		   if (sizeflag & DFLAG)
		      *obufp++ = 'l';
		   else
		     *obufp++ = 'w';
		}
	      used_prefixes |= (prefixes & PREFIX_DATA);
	    }
	  break;
	case 'U':
	  if (intel_syntax)
	    break;
	  if (address_mode == mode_64bit && (sizeflag & DFLAG))
	    {
	      if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
		*obufp++ = 'q';
	      break;
	    }
	  /* Fall through.  */
	  goto case_Q;
	case 'Q':
	  if (l == 0 && len == 1)
	    {
case_Q:
	      if (intel_syntax && !alt)
		break;
	      USED_REX (REX_W);
	      if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
		{
		  if (rex & REX_W)
		    *obufp++ = 'q';
		  else
		    {
		      if (sizeflag & DFLAG)
			*obufp++ = intel_syntax ? 'd' : 'l';
		      else
			*obufp++ = 'w';
		    }
		  used_prefixes |= (prefixes & PREFIX_DATA);
		}
	    }
	  else
	    {
	      if (l != 1 || len != 2 || last[0] != 'L')
		{
		  SAVE_LAST (*p);
		  break;
		}
	      if (intel_syntax
		  || (modrm.mod == 3 && !(sizeflag & SUFFIX_ALWAYS)))
		break;
	      if ((rex & REX_W))
		{
		  USED_REX (REX_W);
		  *obufp++ = 'q';
		}
	      else
		*obufp++ = 'l';
	    }
	  break;
	case 'R':
	  USED_REX (REX_W);
	  if (rex & REX_W)
	    *obufp++ = 'q';
	  else if (sizeflag & DFLAG)
	    {
	      if (intel_syntax)
		  *obufp++ = 'd';
	      else
		  *obufp++ = 'l';
	    }
	  else
	    *obufp++ = 'w';
	  if (intel_syntax && !p[1]
	      && ((rex & REX_W) || (sizeflag & DFLAG)))
	    *obufp++ = 'e';
	  if (!(rex & REX_W))
	    used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	case 'V':
	  if (intel_syntax)
	    break;
	  if (address_mode == mode_64bit && (sizeflag & DFLAG))
	    {
	      if (sizeflag & SUFFIX_ALWAYS)
		*obufp++ = 'q';
	      break;
	    }
	  /* Fall through.  */
	case 'S':
	  if (intel_syntax)
	    break;
	  if (sizeflag & SUFFIX_ALWAYS)
	    {
	      if (rex & REX_W)
		*obufp++ = 'q';
	      else
		{
		  if (sizeflag & DFLAG)
		    *obufp++ = 'l';
		  else
		    *obufp++ = 'w';
		  used_prefixes |= (prefixes & PREFIX_DATA);
		}
	    }
	  break;
	case 'X':
	  if (l != 0 || len != 1)
	    {
	      SAVE_LAST (*p);
	      break;
	    }
	  if (need_vex && vex.prefix)
	    {
	      if (vex.prefix == DATA_PREFIX_OPCODE)
		*obufp++ = 'd';
	      else
		*obufp++ = 's';
	    }
	  else if (prefixes & PREFIX_DATA)
	    *obufp++ = 'd';
	  else
	    *obufp++ = 's';
	  used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	case 'Y':
	  if (l == 0 && len == 1)
	    {
	      if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
		break;
	      if (rex & REX_W)
		{
		  USED_REX (REX_W);
		  *obufp++ = 'q';
		}
	      break;
	    }
	  else
	    {
	      if (l != 1 || len != 2 || last[0] != 'X')
		{
		  SAVE_LAST (*p);
		  break;
		}
	      if (!need_vex)
		abort ();
	      if (intel_syntax
		  || (modrm.mod == 3 && !(sizeflag & SUFFIX_ALWAYS)))
		break;
	      switch (vex.length)
		{
		case 128:
		  *obufp++ = 'x';
		  break;
		case 256:
		  *obufp++ = 'y';
		  break;
		default:
		  abort ();
		}
	    }
	  break;
	case 'W':
	  if (l == 0 && len == 1)
	    {
	      /* operand size flag for cwtl, cbtw */
	      USED_REX (REX_W);
	      if (rex & REX_W)
		{
		  if (intel_syntax)
		    *obufp++ = 'd';
		  else
		    *obufp++ = 'l';
		}
	      else if (sizeflag & DFLAG)
		*obufp++ = 'w';
	      else
		*obufp++ = 'b';
	      if (!(rex & REX_W))
		used_prefixes |= (prefixes & PREFIX_DATA);
	    }
	  else
	    {
	      if (l != 1 || len != 2 || last[0] != 'X')
		{
		  SAVE_LAST (*p);
		  break;
		}
	      if (!need_vex)
		abort ();
	      *obufp++ = vex.w ? 'd': 's';
	    }
	  break;
	}
      alt = 0;
    }
  *obufp = 0;
  mnemonicendp = obufp;
  return 0;
}

static void
oappend (const char *s)
{
  obufp = stpcpy (obufp, s);
}

static void
append_seg (void)
{
  if (prefixes & PREFIX_CS)
    {
      used_prefixes |= PREFIX_CS;
      oappend ("%cs:" + intel_syntax);
    }
  if (prefixes & PREFIX_DS)
    {
      used_prefixes |= PREFIX_DS;
      oappend ("%ds:" + intel_syntax);
    }
  if (prefixes & PREFIX_SS)
    {
      used_prefixes |= PREFIX_SS;
      oappend ("%ss:" + intel_syntax);
    }
  if (prefixes & PREFIX_ES)
    {
      used_prefixes |= PREFIX_ES;
      oappend ("%es:" + intel_syntax);
    }
  if (prefixes & PREFIX_FS)
    {
      used_prefixes |= PREFIX_FS;
      oappend ("%fs:" + intel_syntax);
    }
  if (prefixes & PREFIX_GS)
    {
      used_prefixes |= PREFIX_GS;
      oappend ("%gs:" + intel_syntax);
    }
}

static void
OP_indirE (int bytemode, int sizeflag)
{
  if (!intel_syntax)
    oappend ("*");
  OP_E (bytemode, sizeflag);
}

static void
print_operand_value (char *buf, int hex, bfd_vma disp)
{
  if (address_mode == mode_64bit)
    {
      if (hex)
	{
	  char tmp[30];
	  int i;
	  buf[0] = '0';
	  buf[1] = 'x';
	  sprintf_vma (tmp, disp);
	  for (i = 0; tmp[i] == '0' && tmp[i + 1]; i++);
	  strcpy (buf + 2, tmp + i);
	}
      else
	{
	  bfd_signed_vma v = disp;
	  char tmp[30];
	  int i;
	  if (v < 0)
	    {
	      *(buf++) = '-';
	      v = -disp;
	      /* Check for possible overflow on 0x8000000000000000.  */
	      if (v < 0)
		{
		  strcpy (buf, "9223372036854775808");
		  return;
		}
	    }
	  if (!v)
	    {
	      strcpy (buf, "0");
	      return;
	    }

	  i = 0;
	  tmp[29] = 0;
	  while (v)
	    {
	      tmp[28 - i] = (v % 10) + '0';
	      v /= 10;
	      i++;
	    }
	  strcpy (buf, tmp + 29 - i);
	}
    }
  else
    {
      if (hex)
	sprintf (buf, "0x%x", (unsigned int) disp);
      else
	sprintf (buf, "%d", (int) disp);
    }
}

/* Put DISP in BUF as signed hex number.  */

static void
print_displacement (char *buf, bfd_vma disp)
{
  bfd_signed_vma val = disp;
  char tmp[30];
  int i, j = 0;

  if (val < 0)
    {
      buf[j++] = '-';
      val = -disp;

      /* Check for possible overflow.  */
      if (val < 0)
	{
	  switch (address_mode)
	    {
	    case mode_64bit:
	      strcpy (buf + j, "0x8000000000000000");
	      break;
	    case mode_32bit:
	      strcpy (buf + j, "0x80000000");
	      break;
	    case mode_16bit:
	      strcpy (buf + j, "0x8000");
	      break;
	    }
	  return;
	}
    }

  buf[j++] = '0';
  buf[j++] = 'x';

  sprintf_vma (tmp, (bfd_vma) val);
  for (i = 0; tmp[i] == '0'; i++)
    continue;
  if (tmp[i] == '\0')
    i--;
  strcpy (buf + j, tmp + i);
}

static void
intel_operand_size (int bytemode, int sizeflag)
{
  switch (bytemode)
    {
    case b_mode:
    case b_swap_mode:
    case dqb_mode:
      oappend ("BYTE PTR ");
      break;
    case w_mode:
    case dqw_mode:
      oappend ("WORD PTR ");
      break;
    case stack_v_mode:
      if (address_mode == mode_64bit && (sizeflag & DFLAG))
	{
	  oappend ("QWORD PTR ");
	  used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	}
      /* FALLTHRU */
    case v_mode:
    case v_swap_mode:
    case dq_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	oappend ("QWORD PTR ");
      else if ((sizeflag & DFLAG) || bytemode == dq_mode)
	oappend ("DWORD PTR ");
      else
	oappend ("WORD PTR ");
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case z_mode:
      if ((rex & REX_W) || (sizeflag & DFLAG))
	*obufp++ = 'D';
      oappend ("WORD PTR ");
      if (!(rex & REX_W))
	used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case a_mode:
      if (sizeflag & DFLAG)
	oappend ("QWORD PTR ");
      else
	oappend ("DWORD PTR ");
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case d_mode:
    case d_swap_mode:
    case dqd_mode:
      oappend ("DWORD PTR ");
      break;
    case q_mode:
    case q_swap_mode:
      oappend ("QWORD PTR ");
      break;
    case m_mode:
      if (address_mode == mode_64bit)
	oappend ("QWORD PTR ");
      else
	oappend ("DWORD PTR ");
      break;
    case f_mode:
      if (sizeflag & DFLAG)
	oappend ("FWORD PTR ");
      else
	oappend ("DWORD PTR ");
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case t_mode:
      oappend ("TBYTE PTR ");
      break;
    case x_mode:
    case x_swap_mode:
      if (need_vex)
	{
	  switch (vex.length)
	    {
	    case 128:
	      oappend ("XMMWORD PTR ");
	      break;
	    case 256:
	      oappend ("YMMWORD PTR ");
	      break;
	    default:
	      abort ();
	    }
	}
      else
	oappend ("XMMWORD PTR ");
      break;
    case xmm_mode:
      oappend ("XMMWORD PTR ");
      break;
    case xmmq_mode:
      if (!need_vex)
	abort ();

      switch (vex.length)
	{
	case 128:
	  oappend ("QWORD PTR ");
	  break;
	case 256:
	  oappend ("XMMWORD PTR ");
	  break;
	default:
	  abort ();
	}
      break;
    case ymmq_mode:
      if (!need_vex)
	abort ();

      switch (vex.length)
	{
	case 128:
	  oappend ("QWORD PTR ");
	  break;
	case 256:
	  oappend ("YMMWORD PTR ");
	  break;
	default:
	  abort ();
	}
      break;
    case o_mode:
      oappend ("OWORD PTR ");
      break;
    case vex_w_dq_mode:
      if (!need_vex)
	abort ();

      if (vex.w)
	oappend ("QWORD PTR ");
      else
	oappend ("DWORD PTR ");
      break;
    default:
      break;
    }
}

static void
OP_E_register (int bytemode, int sizeflag)
{
  int reg = modrm.rm;
  const char **names;

  USED_REX (REX_B);
  if ((rex & REX_B))
    reg += 8;

  if ((sizeflag & SUFFIX_ALWAYS)
      && (bytemode == b_swap_mode || bytemode == v_swap_mode))
    swap_operand ();

  switch (bytemode)
    {
    case b_mode:
    case b_swap_mode:
      USED_REX (0);
      if (rex)
	names = names8rex;
      else
	names = names8;
      break;
    case w_mode:
      names = names16;
      break;
    case d_mode:
      names = names32;
      break;
    case q_mode:
      names = names64;
      break;
    case m_mode:
      names = address_mode == mode_64bit ? names64 : names32;
      break;
    case stack_v_mode:
      if (address_mode == mode_64bit && (sizeflag & DFLAG))
	{
	  names = names64;
	  used_prefixes |= (prefixes & PREFIX_DATA);
	  break;
	}
      bytemode = v_mode;
      /* FALLTHRU */
    case v_mode:
    case v_swap_mode:
    case dq_mode:
    case dqb_mode:
    case dqd_mode:
    case dqw_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	names = names64;
      else if ((sizeflag & DFLAG) 
	       || (bytemode != v_mode
		   && bytemode != v_swap_mode))
	names = names32;
      else
	names = names16;
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case 0:
      return;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      return;
    }
  oappend (names[reg]);
}

static void
OP_E_memory (int bytemode, int sizeflag)
{
  bfd_vma disp = 0;
  int add = (rex & REX_B) ? 8 : 0;
  int riprel = 0;

  USED_REX (REX_B);
  if (intel_syntax)
    intel_operand_size (bytemode, sizeflag);
  append_seg ();

  if ((sizeflag & AFLAG) || address_mode == mode_64bit)
    {
      /* 32/64 bit address mode */
      int havedisp;
      int havesib;
      int havebase;
      int haveindex;
      int needindex;
      int base, rbase;
      int index = 0;
      int scale = 0;

      havesib = 0;
      havebase = 1;
      haveindex = 0;
      base = modrm.rm;

      if (base == 4)
	{
	  havesib = 1;
	  FETCH_DATA (the_info, codep + 1);
	  index = (*codep >> 3) & 7;
	  scale = (*codep >> 6) & 3;
	  base = *codep & 7;
	  USED_REX (REX_X);
	  if (rex & REX_X)
	    index += 8;
	  haveindex = index != 4;
	  codep++;
	}
      rbase = base + add;

      switch (modrm.mod)
	{
	case 0:
	  if (base == 5)
	    {
	      havebase = 0;
	      if (address_mode == mode_64bit && !havesib)
		riprel = 1;
	      disp = get32s ();
	    }
	  break;
	case 1:
	  FETCH_DATA (the_info, codep + 1);
	  disp = *codep++;
	  if ((disp & 0x80) != 0)
	    disp -= 0x100;
	  break;
	case 2:
	  disp = get32s ();
	  break;
	}

      /* In 32bit mode, we need index register to tell [offset] from
	 [eiz*1 + offset].  */
      needindex = (havesib
		   && !havebase
		   && !haveindex
		   && address_mode == mode_32bit);
      havedisp = (havebase
		  || needindex
		  || (havesib && (haveindex || scale != 0)));

      if (!intel_syntax)
	if (modrm.mod != 0 || base == 5)
	  {
	    if (havedisp || riprel)
	      print_displacement (scratchbuf, disp);
	    else
	      print_operand_value (scratchbuf, 1, disp);
	    oappend (scratchbuf);
	    if (riprel)
	      {
		set_op (disp, 1);
		oappend (sizeflag & AFLAG ? "(%rip)" : "(%eip)");
	      }
	  }

      if (havebase || haveindex || riprel)
	used_prefixes |= PREFIX_ADDR;

      if (havedisp || (intel_syntax && riprel))
	{
	  *obufp++ = open_char;
	  if (intel_syntax && riprel)
	    {
	      set_op (disp, 1);
	      oappend (sizeflag & AFLAG ? "rip" : "eip");
	    }
	  *obufp = '\0';
	  if (havebase)
	    oappend (address_mode == mode_64bit && (sizeflag & AFLAG)
		     ? names64[rbase] : names32[rbase]);
	  if (havesib)
	    {
	      /* ESP/RSP won't allow index.  If base isn't ESP/RSP,
		 print index to tell base + index from base.  */
	      if (scale != 0
		  || needindex
		  || haveindex
		  || (havebase && base != ESP_REG_NUM))
		{
		  if (!intel_syntax || havebase)
		    {
		      *obufp++ = separator_char;
		      *obufp = '\0';
		    }
		  if (haveindex)
		    oappend (address_mode == mode_64bit 
			     && (sizeflag & AFLAG)
			     ? names64[index] : names32[index]);
		  else
		    oappend (address_mode == mode_64bit 
			     && (sizeflag & AFLAG)
			     ? index64 : index32);

		  *obufp++ = scale_char;
		  *obufp = '\0';
		  sprintf (scratchbuf, "%d", 1 << scale);
		  oappend (scratchbuf);
		}
	    }
	  if (intel_syntax
	      && (disp || modrm.mod != 0 || base == 5))
	    {
	      if (!havedisp || (bfd_signed_vma) disp >= 0)
		{
		  *obufp++ = '+';
		  *obufp = '\0';
		}
	      else if (modrm.mod != 1 && disp != -disp)
		{
		  *obufp++ = '-';
		  *obufp = '\0';
		  disp = - (bfd_signed_vma) disp;
		}

	      if (havedisp)
		print_displacement (scratchbuf, disp);
	      else
		print_operand_value (scratchbuf, 1, disp);
	      oappend (scratchbuf);
	    }

	  *obufp++ = close_char;
	  *obufp = '\0';
	}
      else if (intel_syntax)
	{
	  if (modrm.mod != 0 || base == 5)
	    {
	      if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
			      | PREFIX_ES | PREFIX_FS | PREFIX_GS))
		;
	      else
		{
		  oappend (names_seg[ds_reg - es_reg]);
		  oappend (":");
		}
	      print_operand_value (scratchbuf, 1, disp);
	      oappend (scratchbuf);
	    }
	}
    }
  else
    { /* 16 bit address mode */
      switch (modrm.mod)
	{
	case 0:
	  if (modrm.rm == 6)
	    {
	      disp = get16 ();
	      if ((disp & 0x8000) != 0)
		disp -= 0x10000;
	    }
	  break;
	case 1:
	  FETCH_DATA (the_info, codep + 1);
	  disp = *codep++;
	  if ((disp & 0x80) != 0)
	    disp -= 0x100;
	  break;
	case 2:
	  disp = get16 ();
	  if ((disp & 0x8000) != 0)
	    disp -= 0x10000;
	  break;
	}

      if (!intel_syntax)
	if (modrm.mod != 0 || modrm.rm == 6)
	  {
	    print_displacement (scratchbuf, disp);
	    oappend (scratchbuf);
	  }

      if (modrm.mod != 0 || modrm.rm != 6)
	{
	  *obufp++ = open_char;
	  *obufp = '\0';
	  oappend (index16[modrm.rm]);
	  if (intel_syntax
	      && (disp || modrm.mod != 0 || modrm.rm == 6))
	    {
	      if ((bfd_signed_vma) disp >= 0)
		{
		  *obufp++ = '+';
		  *obufp = '\0';
		}
	      else if (modrm.mod != 1)
		{
		  *obufp++ = '-';
		  *obufp = '\0';
		  disp = - (bfd_signed_vma) disp;
		}

	      print_displacement (scratchbuf, disp);
	      oappend (scratchbuf);
	    }

	  *obufp++ = close_char;
	  *obufp = '\0';
	}
      else if (intel_syntax)
	{
	  if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
			  | PREFIX_ES | PREFIX_FS | PREFIX_GS))
	    ;
	  else
	    {
	      oappend (names_seg[ds_reg - es_reg]);
	      oappend (":");
	    }
	  print_operand_value (scratchbuf, 1, disp & 0xffff);
	  oappend (scratchbuf);
	}
    }
}

static void
OP_E_extended (int bytemode, int sizeflag)
{
  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;

  if (modrm.mod == 3)
    OP_E_register (bytemode, sizeflag);
  else
    OP_E_memory (bytemode, sizeflag);
}

static void
OP_E (int bytemode, int sizeflag)
{
  OP_E_extended (bytemode, sizeflag);
}


static void
OP_G (int bytemode, int sizeflag)
{
  int add = 0;
  USED_REX (REX_R);
  if (rex & REX_R)
    add += 8;
  switch (bytemode)
    {
    case b_mode:
      USED_REX (0);
      if (rex)
	oappend (names8rex[modrm.reg + add]);
      else
	oappend (names8[modrm.reg + add]);
      break;
    case w_mode:
      oappend (names16[modrm.reg + add]);
      break;
    case d_mode:
      oappend (names32[modrm.reg + add]);
      break;
    case q_mode:
      oappend (names64[modrm.reg + add]);
      break;
    case v_mode:
    case dq_mode:
    case dqb_mode:
    case dqd_mode:
    case dqw_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	oappend (names64[modrm.reg + add]);
      else if ((sizeflag & DFLAG) || bytemode != v_mode)
	oappend (names32[modrm.reg + add]);
      else
	oappend (names16[modrm.reg + add]);
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case m_mode:
      if (address_mode == mode_64bit)
	oappend (names64[modrm.reg + add]);
      else
	oappend (names32[modrm.reg + add]);
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      break;
    }
}

static bfd_vma
get64 (void)
{
  bfd_vma x;
#ifdef BFD64
  unsigned int a;
  unsigned int b;

  FETCH_DATA (the_info, codep + 8);
  a = *codep++ & 0xff;
  a |= (*codep++ & 0xff) << 8;
  a |= (*codep++ & 0xff) << 16;
  a |= (*codep++ & 0xff) << 24;
  b = *codep++ & 0xff;
  b |= (*codep++ & 0xff) << 8;
  b |= (*codep++ & 0xff) << 16;
  b |= (*codep++ & 0xff) << 24;
  x = a + ((bfd_vma) b << 32);
#else
  abort ();
  x = 0;
#endif
  return x;
}

static bfd_signed_vma
get32 (void)
{
  bfd_signed_vma x = 0;

  FETCH_DATA (the_info, codep + 4);
  x = *codep++ & (bfd_signed_vma) 0xff;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;
  return x;
}

static bfd_signed_vma
get32s (void)
{
  bfd_signed_vma x = 0;

  FETCH_DATA (the_info, codep + 4);
  x = *codep++ & (bfd_signed_vma) 0xff;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
  x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;

  x = (x ^ ((bfd_signed_vma) 1 << 31)) - ((bfd_signed_vma) 1 << 31);

  return x;
}

static int
get16 (void)
{
  int x = 0;

  FETCH_DATA (the_info, codep + 2);
  x = *codep++ & 0xff;
  x |= (*codep++ & 0xff) << 8;
  return x;
}

static void
set_op (bfd_vma op, int riprel)
{
  op_index[op_ad] = op_ad;
  if (address_mode == mode_64bit)
    {
      op_address[op_ad] = op;
      op_riprel[op_ad] = riprel;
    }
  else
    {
      /* Mask to get a 32-bit address.  */
      op_address[op_ad] = op & 0xffffffff;
      op_riprel[op_ad] = riprel & 0xffffffff;
    }
}

static void
OP_REG (int code, int sizeflag)
{
  const char *s;
  int add;
  USED_REX (REX_B);
  if (rex & REX_B)
    add = 8;
  else
    add = 0;

  switch (code)
    {
    case ax_reg: case cx_reg: case dx_reg: case bx_reg:
    case sp_reg: case bp_reg: case si_reg: case di_reg:
      s = names16[code - ax_reg + add];
      break;
    case es_reg: case ss_reg: case cs_reg:
    case ds_reg: case fs_reg: case gs_reg:
      s = names_seg[code - es_reg + add];
      break;
    case al_reg: case ah_reg: case cl_reg: case ch_reg:
    case dl_reg: case dh_reg: case bl_reg: case bh_reg:
      USED_REX (0);
      if (rex)
	s = names8rex[code - al_reg + add];
      else
	s = names8[code - al_reg];
      break;
    case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg:
    case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg:
      if (address_mode == mode_64bit && (sizeflag & DFLAG))
	{
	  s = names64[code - rAX_reg + add];
	  break;
	}
      code += eAX_reg - rAX_reg;
      /* Fall through.  */
    case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
    case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
      USED_REX (REX_W);
      if (rex & REX_W)
	s = names64[code - eAX_reg + add];
      else if (sizeflag & DFLAG)
	s = names32[code - eAX_reg + add];
      else
	s = names16[code - eAX_reg + add];
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    default:
      s = INTERNAL_DISASSEMBLER_ERROR;
      break;
    }
  oappend (s);
}

static void
OP_IMREG (int code, int sizeflag)
{
  const char *s;

  switch (code)
    {
    case indir_dx_reg:
      if (intel_syntax)
	s = "dx";
      else
	s = "(%dx)";
      break;
    case ax_reg: case cx_reg: case dx_reg: case bx_reg:
    case sp_reg: case bp_reg: case si_reg: case di_reg:
      s = names16[code - ax_reg];
      break;
    case es_reg: case ss_reg: case cs_reg:
    case ds_reg: case fs_reg: case gs_reg:
      s = names_seg[code - es_reg];
      break;
    case al_reg: case ah_reg: case cl_reg: case ch_reg:
    case dl_reg: case dh_reg: case bl_reg: case bh_reg:
      USED_REX (0);
      if (rex)
	s = names8rex[code - al_reg];
      else
	s = names8[code - al_reg];
      break;
    case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
    case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
      USED_REX (REX_W);
      if (rex & REX_W)
	s = names64[code - eAX_reg];
      else if (sizeflag & DFLAG)
	s = names32[code - eAX_reg];
      else
	s = names16[code - eAX_reg];
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case z_mode_ax_reg:
      if ((rex & REX_W) || (sizeflag & DFLAG))
	s = *names32;
      else
	s = *names16;
      if (!(rex & REX_W))
	used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    default:
      s = INTERNAL_DISASSEMBLER_ERROR;
      break;
    }
  oappend (s);
}

static void
OP_I (int bytemode, int sizeflag)
{
  bfd_signed_vma op;
  bfd_signed_vma mask = -1;

  switch (bytemode)
    {
    case b_mode:
      FETCH_DATA (the_info, codep + 1);
      op = *codep++;
      mask = 0xff;
      break;
    case q_mode:
      if (address_mode == mode_64bit)
	{
	  op = get32s ();
	  break;
	}
      /* Fall through.  */
    case v_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	op = get32s ();
      else if (sizeflag & DFLAG)
	{
	  op = get32 ();
	  mask = 0xffffffff;
	}
      else
	{
	  op = get16 ();
	  mask = 0xfffff;
	}
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case w_mode:
      mask = 0xfffff;
      op = get16 ();
      break;
    case const_1_mode:
      if (intel_syntax)
        oappend ("1");
      return;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      return;
    }

  op &= mask;
  scratchbuf[0] = '$';
  print_operand_value (scratchbuf + 1, 1, op);
  oappend (scratchbuf + intel_syntax);
  scratchbuf[0] = '\0';
}

static void
OP_I64 (int bytemode, int sizeflag)
{
  bfd_signed_vma op;
  bfd_signed_vma mask = -1;

  if (address_mode != mode_64bit)
    {
      OP_I (bytemode, sizeflag);
      return;
    }

  switch (bytemode)
    {
    case b_mode:
      FETCH_DATA (the_info, codep + 1);
      op = *codep++;
      mask = 0xff;
      break;
    case v_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	op = get64 ();
      else if (sizeflag & DFLAG)
	{
	  op = get32 ();
	  mask = 0xffffffff;
	}
      else
	{
	  op = get16 ();
	  mask = 0xfffff;
	}
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case w_mode:
      mask = 0xfffff;
      op = get16 ();
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      return;
    }

  op &= mask;
  scratchbuf[0] = '$';
  print_operand_value (scratchbuf + 1, 1, op);
  oappend (scratchbuf + intel_syntax);
  scratchbuf[0] = '\0';
}

static void
OP_sI (int bytemode, int sizeflag)
{
  bfd_signed_vma op;
  bfd_signed_vma mask = -1;

  switch (bytemode)
    {
    case b_mode:
      FETCH_DATA (the_info, codep + 1);
      op = *codep++;
      if ((op & 0x80) != 0)
	op -= 0x100;
      mask = 0xffffffff;
      break;
    case v_mode:
      USED_REX (REX_W);
      if (rex & REX_W)
	op = get32s ();
      else if (sizeflag & DFLAG)
	{
	  op = get32s ();
	  mask = 0xffffffff;
	}
      else
	{
	  mask = 0xffffffff;
	  op = get16 ();
	  if ((op & 0x8000) != 0)
	    op -= 0x10000;
	}
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    case w_mode:
      op = get16 ();
      mask = 0xffffffff;
      if ((op & 0x8000) != 0)
	op -= 0x10000;
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      return;
    }

  scratchbuf[0] = '$';
  print_operand_value (scratchbuf + 1, 1, op);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_J (int bytemode, int sizeflag)
{
  bfd_vma disp;
  bfd_vma mask = -1;
  bfd_vma segment = 0;

  switch (bytemode)
    {
    case b_mode:
      FETCH_DATA (the_info, codep + 1);
      disp = *codep++;
      if ((disp & 0x80) != 0)
	disp -= 0x100;
      break;
    case v_mode:
      if ((sizeflag & DFLAG) || (rex & REX_W))
	disp = get32s ();
      else
	{
	  disp = get16 ();
	  if ((disp & 0x8000) != 0)
	    disp -= 0x10000;
	  /* In 16bit mode, address is wrapped around at 64k within
	     the same segment.  Otherwise, a data16 prefix on a jump
	     instruction means that the pc is masked to 16 bits after
	     the displacement is added!  */
	  mask = 0xffff;
	  if ((prefixes & PREFIX_DATA) == 0)
	    segment = ((start_pc + codep - start_codep)
		       & ~((bfd_vma) 0xffff));
	}
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      return;
    }
  disp = ((start_pc + codep - start_codep + disp) & mask) | segment;
  set_op (disp, 0);
  print_operand_value (scratchbuf, 1, disp);
  oappend (scratchbuf);
}

static void
OP_SEG (int bytemode, int sizeflag)
{
  if (bytemode == w_mode)
    oappend (names_seg[modrm.reg]);
  else
    OP_E (modrm.mod == 3 ? bytemode : w_mode, sizeflag);
}

static void
OP_DIR (int dummy ATTRIBUTE_UNUSED, int sizeflag)
{
  int seg, offset;

  if (sizeflag & DFLAG)
    {
      offset = get32 ();
      seg = get16 ();
    }
  else
    {
      offset = get16 ();
      seg = get16 ();
    }
  used_prefixes |= (prefixes & PREFIX_DATA);
  if (intel_syntax)
    sprintf (scratchbuf, "0x%x:0x%x", seg, offset);
  else
    sprintf (scratchbuf, "$0x%x,$0x%x", seg, offset);
  oappend (scratchbuf);
}

static void
OP_OFF (int bytemode, int sizeflag)
{
  bfd_vma off;

  if (intel_syntax && (sizeflag & SUFFIX_ALWAYS))
    intel_operand_size (bytemode, sizeflag);
  append_seg ();

  if ((sizeflag & AFLAG) || address_mode == mode_64bit)
    off = get32 ();
  else
    off = get16 ();

  if (intel_syntax)
    {
      if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
			| PREFIX_ES | PREFIX_FS | PREFIX_GS)))
	{
	  oappend (names_seg[ds_reg - es_reg]);
	  oappend (":");
	}
    }
  print_operand_value (scratchbuf, 1, off);
  oappend (scratchbuf);
}

static void
OP_OFF64 (int bytemode, int sizeflag)
{
  bfd_vma off;

  if (address_mode != mode_64bit
      || (prefixes & PREFIX_ADDR))
    {
      OP_OFF (bytemode, sizeflag);
      return;
    }

  if (intel_syntax && (sizeflag & SUFFIX_ALWAYS))
    intel_operand_size (bytemode, sizeflag);
  append_seg ();

  off = get64 ();

  if (intel_syntax)
    {
      if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
			| PREFIX_ES | PREFIX_FS | PREFIX_GS)))
	{
	  oappend (names_seg[ds_reg - es_reg]);
	  oappend (":");
	}
    }
  print_operand_value (scratchbuf, 1, off);
  oappend (scratchbuf);
}

static void
ptr_reg (int code, int sizeflag)
{
  const char *s;

  *obufp++ = open_char;
  used_prefixes |= (prefixes & PREFIX_ADDR);
  if (address_mode == mode_64bit)
    {
      if (!(sizeflag & AFLAG))
	s = names32[code - eAX_reg];
      else
	s = names64[code - eAX_reg];
    }
  else if (sizeflag & AFLAG)
    s = names32[code - eAX_reg];
  else
    s = names16[code - eAX_reg];
  oappend (s);
  *obufp++ = close_char;
  *obufp = 0;
}

static void
OP_ESreg (int code, int sizeflag)
{
  if (intel_syntax)
    {
      switch (codep[-1])
	{
	case 0x6d:	/* insw/insl */
	  intel_operand_size (z_mode, sizeflag);
	  break;
	case 0xa5:	/* movsw/movsl/movsq */
	case 0xa7:	/* cmpsw/cmpsl/cmpsq */
	case 0xab:	/* stosw/stosl */
	case 0xaf:	/* scasw/scasl */
	  intel_operand_size (v_mode, sizeflag);
	  break;
	default:
	  intel_operand_size (b_mode, sizeflag);
	}
    }
  oappend ("%es:" + intel_syntax);
  ptr_reg (code, sizeflag);
}

static void
OP_DSreg (int code, int sizeflag)
{
  if (intel_syntax)
    {
      switch (codep[-1])
	{
	case 0x6f:	/* outsw/outsl */
	  intel_operand_size (z_mode, sizeflag);
	  break;
	case 0xa5:	/* movsw/movsl/movsq */
	case 0xa7:	/* cmpsw/cmpsl/cmpsq */
	case 0xad:	/* lodsw/lodsl/lodsq */
	  intel_operand_size (v_mode, sizeflag);
	  break;
	default:
	  intel_operand_size (b_mode, sizeflag);
	}
    }
  if ((prefixes
       & (PREFIX_CS
	  | PREFIX_DS
	  | PREFIX_SS
	  | PREFIX_ES
	  | PREFIX_FS
	  | PREFIX_GS)) == 0)
    prefixes |= PREFIX_DS;
  append_seg ();
  ptr_reg (code, sizeflag);
}

static void
OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  int add;
  if (rex & REX_R)
    {
      USED_REX (REX_R);
      add = 8;
    }
  else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK))
    {
      lock_prefix = NULL;
      used_prefixes |= PREFIX_LOCK;
      add = 8;
    }
  else
    add = 0;
  sprintf (scratchbuf, "%%cr%d", modrm.reg + add);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_D (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  int add;
  USED_REX (REX_R);
  if (rex & REX_R)
    add = 8;
  else
    add = 0;
  if (intel_syntax)
    sprintf (scratchbuf, "db%d", modrm.reg + add);
  else
    sprintf (scratchbuf, "%%db%d", modrm.reg + add);
  oappend (scratchbuf);
}

static void
OP_T (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  sprintf (scratchbuf, "%%tr%d", modrm.reg);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_R (int bytemode, int sizeflag)
{
  if (modrm.mod == 3)
    OP_E (bytemode, sizeflag);
  else
    BadOp ();
}

static void
OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  used_prefixes |= (prefixes & PREFIX_DATA);
  if (prefixes & PREFIX_DATA)
    {
      int add;
      USED_REX (REX_R);
      if (rex & REX_R)
	add = 8;
      else
	add = 0;
      sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
    }
  else
    sprintf (scratchbuf, "%%mm%d", modrm.reg);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_XMM (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
{
  int add;
  USED_REX (REX_R);
  if (rex & REX_R)
    add = 8;
  else
    add = 0;
  if (need_vex && bytemode != xmm_mode)
    {
      switch (vex.length)
	{
	case 128:
	  sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
	  break;
	case 256:
	  sprintf (scratchbuf, "%%ymm%d", modrm.reg + add);
	  break;
	default:
	  abort ();
	}
    }
  else
    sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_EM (int bytemode, int sizeflag)
{
  if (modrm.mod != 3)
    {
      if (intel_syntax
	  && (bytemode == v_mode || bytemode == v_swap_mode))
	{
	  bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
	  used_prefixes |= (prefixes & PREFIX_DATA);
 	}
      OP_E (bytemode, sizeflag);
      return;
    }

  if ((sizeflag & SUFFIX_ALWAYS) && bytemode == v_swap_mode)
    swap_operand ();

  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;
  used_prefixes |= (prefixes & PREFIX_DATA);
  if (prefixes & PREFIX_DATA)
    {
      int add;

      USED_REX (REX_B);
      if (rex & REX_B)
	add = 8;
      else
	add = 0;
      sprintf (scratchbuf, "%%xmm%d", modrm.rm + add);
    }
  else
    sprintf (scratchbuf, "%%mm%d", modrm.rm);
  oappend (scratchbuf + intel_syntax);
}

/* cvt* are the only instructions in sse2 which have
   both SSE and MMX operands and also have 0x66 prefix
   in their opcode. 0x66 was originally used to differentiate
   between SSE and MMX instruction(operands). So we have to handle the
   cvt* separately using OP_EMC and OP_MXC */
static void
OP_EMC (int bytemode, int sizeflag)
{
  if (modrm.mod != 3)
    {
      if (intel_syntax && bytemode == v_mode)
	{
	  bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
	  used_prefixes |= (prefixes & PREFIX_DATA);
 	}
      OP_E (bytemode, sizeflag);
      return;
    }

  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;
  used_prefixes |= (prefixes & PREFIX_DATA);
  sprintf (scratchbuf, "%%mm%d", modrm.rm);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  used_prefixes |= (prefixes & PREFIX_DATA);
  sprintf (scratchbuf, "%%mm%d", modrm.reg);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_EX (int bytemode, int sizeflag)
{
  int add;

  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;

  if (modrm.mod != 3)
    {
      OP_E_memory (bytemode, sizeflag);
      return;
    }

  USED_REX (REX_B);
  if (rex & REX_B)
    add = 8;
  else
    add = 0;

  if ((sizeflag & SUFFIX_ALWAYS)
      && (bytemode == x_swap_mode
	  || bytemode == d_swap_mode
	  || bytemode == q_swap_mode))
    swap_operand ();

  if (need_vex
      && bytemode != xmm_mode
      && bytemode != xmmq_mode)
    {
      switch (vex.length)
	{
	case 128:
	  sprintf (scratchbuf, "%%xmm%d", modrm.rm + add);
	  break;
	case 256:
	  sprintf (scratchbuf, "%%ymm%d", modrm.rm + add);
	  break;
	default:
	  abort ();
	}
    }
  else
    sprintf (scratchbuf, "%%xmm%d", modrm.rm + add);
  oappend (scratchbuf + intel_syntax);
}

static void
OP_MS (int bytemode, int sizeflag)
{
  if (modrm.mod == 3)
    OP_EM (bytemode, sizeflag);
  else
    BadOp ();
}

static void
OP_XS (int bytemode, int sizeflag)
{
  if (modrm.mod == 3)
    OP_EX (bytemode, sizeflag);
  else
    BadOp ();
}

static void
OP_M (int bytemode, int sizeflag)
{
  if (modrm.mod == 3)
    /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */
    BadOp ();
  else
    OP_E (bytemode, sizeflag);
}

static void
OP_0f07 (int bytemode, int sizeflag)
{
  if (modrm.mod != 3 || modrm.rm != 0)
    BadOp ();
  else
    OP_E (bytemode, sizeflag);
}

/* NOP is an alias of "xchg %ax,%ax" in 16bit mode, "xchg %eax,%eax" in
   32bit mode and "xchg %rax,%rax" in 64bit mode.  */

static void
NOP_Fixup1 (int bytemode, int sizeflag)
{
  if ((prefixes & PREFIX_DATA) != 0
      || (rex != 0
	  && rex != 0x48
	  && address_mode == mode_64bit))
    OP_REG (bytemode, sizeflag);
  else
    strcpy (obuf, "nop");
}

static void
NOP_Fixup2 (int bytemode, int sizeflag)
{
  if ((prefixes & PREFIX_DATA) != 0
      || (rex != 0
	  && rex != 0x48
	  && address_mode == mode_64bit))
    OP_IMREG (bytemode, sizeflag);
}

static const char *const Suffix3DNow[] = {
/* 00 */	NULL,		NULL,		NULL,		NULL,
/* 04 */	NULL,		NULL,		NULL,		NULL,
/* 08 */	NULL,		NULL,		NULL,		NULL,
/* 0C */	"pi2fw",	"pi2fd",	NULL,		NULL,
/* 10 */	NULL,		NULL,		NULL,		NULL,
/* 14 */	NULL,		NULL,		NULL,		NULL,
/* 18 */	NULL,		NULL,		NULL,		NULL,
/* 1C */	"pf2iw",	"pf2id",	NULL,		NULL,
/* 20 */	NULL,		NULL,		NULL,		NULL,
/* 24 */	NULL,		NULL,		NULL,		NULL,
/* 28 */	NULL,		NULL,		NULL,		NULL,
/* 2C */	NULL,		NULL,		NULL,		NULL,
/* 30 */	NULL,		NULL,		NULL,		NULL,
/* 34 */	NULL,		NULL,		NULL,		NULL,
/* 38 */	NULL,		NULL,		NULL,		NULL,
/* 3C */	NULL,		NULL,		NULL,		NULL,
/* 40 */	NULL,		NULL,		NULL,		NULL,
/* 44 */	NULL,		NULL,		NULL,		NULL,
/* 48 */	NULL,		NULL,		NULL,		NULL,
/* 4C */	NULL,		NULL,		NULL,		NULL,
/* 50 */	NULL,		NULL,		NULL,		NULL,
/* 54 */	NULL,		NULL,		NULL,		NULL,
/* 58 */	NULL,		NULL,		NULL,		NULL,
/* 5C */	NULL,		NULL,		NULL,		NULL,
/* 60 */	NULL,		NULL,		NULL,		NULL,
/* 64 */	NULL,		NULL,		NULL,		NULL,
/* 68 */	NULL,		NULL,		NULL,		NULL,
/* 6C */	NULL,		NULL,		NULL,		NULL,
/* 70 */	NULL,		NULL,		NULL,		NULL,
/* 74 */	NULL,		NULL,		NULL,		NULL,
/* 78 */	NULL,		NULL,		NULL,		NULL,
/* 7C */	NULL,		NULL,		NULL,		NULL,
/* 80 */	NULL,		NULL,		NULL,		NULL,
/* 84 */	NULL,		NULL,		NULL,		NULL,
/* 88 */	NULL,		NULL,		"pfnacc",	NULL,
/* 8C */	NULL,		NULL,		"pfpnacc",	NULL,
/* 90 */	"pfcmpge",	NULL,		NULL,		NULL,
/* 94 */	"pfmin",	NULL,		"pfrcp",	"pfrsqrt",
/* 98 */	NULL,		NULL,		"pfsub",	NULL,
/* 9C */	NULL,		NULL,		"pfadd",	NULL,
/* A0 */	"pfcmpgt",	NULL,		NULL,		NULL,
/* A4 */	"pfmax",	NULL,		"pfrcpit1",	"pfrsqit1",
/* A8 */	NULL,		NULL,		"pfsubr",	NULL,
/* AC */	NULL,		NULL,		"pfacc",	NULL,
/* B0 */	"pfcmpeq",	NULL,		NULL,		NULL,
/* B4 */	"pfmul",	NULL,		"pfrcpit2",	"pmulhrw",
/* B8 */	NULL,		NULL,		NULL,		"pswapd",
/* BC */	NULL,		NULL,		NULL,		"pavgusb",
/* C0 */	NULL,		NULL,		NULL,		NULL,
/* C4 */	NULL,		NULL,		NULL,		NULL,
/* C8 */	NULL,		NULL,		NULL,		NULL,
/* CC */	NULL,		NULL,		NULL,		NULL,
/* D0 */	NULL,		NULL,		NULL,		NULL,
/* D4 */	NULL,		NULL,		NULL,		NULL,
/* D8 */	NULL,		NULL,		NULL,		NULL,
/* DC */	NULL,		NULL,		NULL,		NULL,
/* E0 */	NULL,		NULL,		NULL,		NULL,
/* E4 */	NULL,		NULL,		NULL,		NULL,
/* E8 */	NULL,		NULL,		NULL,		NULL,
/* EC */	NULL,		NULL,		NULL,		NULL,
/* F0 */	NULL,		NULL,		NULL,		NULL,
/* F4 */	NULL,		NULL,		NULL,		NULL,
/* F8 */	NULL,		NULL,		NULL,		NULL,
/* FC */	NULL,		NULL,		NULL,		NULL,
};

static void
OP_3DNowSuffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  const char *mnemonic;

  FETCH_DATA (the_info, codep + 1);
  /* AMD 3DNow! instructions are specified by an opcode suffix in the
     place where an 8-bit immediate would normally go.  ie. the last
     byte of the instruction.  */
  obufp = mnemonicendp;
  mnemonic = Suffix3DNow[*codep++ & 0xff];
  if (mnemonic)
    oappend (mnemonic);
  else
    {
      /* Since a variable sized modrm/sib chunk is between the start
	 of the opcode (0x0f0f) and the opcode suffix, we need to do
	 all the modrm processing first, and don't know until now that
	 we have a bad opcode.  This necessitates some cleaning up.  */
      op_out[0][0] = '\0';
      op_out[1][0] = '\0';
      BadOp ();
    }
  mnemonicendp = obufp;
}

static struct op simd_cmp_op[] =
{
  { STRING_COMMA_LEN ("eq") },
  { STRING_COMMA_LEN ("lt") },
  { STRING_COMMA_LEN ("le") },
  { STRING_COMMA_LEN ("unord") },
  { STRING_COMMA_LEN ("neq") },
  { STRING_COMMA_LEN ("nlt") },
  { STRING_COMMA_LEN ("nle") },
  { STRING_COMMA_LEN ("ord") }
};

static void
CMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  unsigned int cmp_type;

  FETCH_DATA (the_info, codep + 1);
  cmp_type = *codep++ & 0xff;
  if (cmp_type < ARRAY_SIZE (simd_cmp_op))
    {
      char suffix [3];
      char *p = mnemonicendp - 2;
      suffix[0] = p[0];
      suffix[1] = p[1];
      suffix[2] = '\0';
      sprintf (p, "%s%s", simd_cmp_op[cmp_type].name, suffix);
      mnemonicendp += simd_cmp_op[cmp_type].len;
    }
  else
    {
      /* We have a reserved extension byte.  Output it directly.  */
      scratchbuf[0] = '$';
      print_operand_value (scratchbuf + 1, 1, cmp_type);
      oappend (scratchbuf + intel_syntax);
      scratchbuf[0] = '\0';
    }
}

static void
OP_Mwait (int bytemode ATTRIBUTE_UNUSED,
	  int sizeflag ATTRIBUTE_UNUSED)
{
  /* mwait %eax,%ecx  */
  if (!intel_syntax)
    {
      const char **names = (address_mode == mode_64bit
			    ? names64 : names32);
      strcpy (op_out[0], names[0]);
      strcpy (op_out[1], names[1]);
      two_source_ops = 1;
    }
  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;
}

static void
OP_Monitor (int bytemode ATTRIBUTE_UNUSED,
	    int sizeflag ATTRIBUTE_UNUSED)
{
  /* monitor %eax,%ecx,%edx"  */
  if (!intel_syntax)
    {
      const char **op1_names;
      const char **names = (address_mode == mode_64bit
			    ? names64 : names32);

      if (!(prefixes & PREFIX_ADDR))
	op1_names = (address_mode == mode_16bit
		     ? names16 : names);
      else
	{
	  /* Remove "addr16/addr32".  */
	  addr_prefix = NULL;
	  op1_names = (address_mode != mode_32bit
		       ? names32 : names16);
	  used_prefixes |= PREFIX_ADDR;
	}
      strcpy (op_out[0], op1_names[0]);
      strcpy (op_out[1], names[1]);
      strcpy (op_out[2], names[2]);
      two_source_ops = 1;
    }
  /* Skip mod/rm byte.  */
  MODRM_CHECK;
  codep++;
}

static void
BadOp (void)
{
  /* Throw away prefixes and 1st. opcode byte.  */
  codep = insn_codep + 1;
  oappend ("(bad)");
}

static void
REP_Fixup (int bytemode, int sizeflag)
{
  /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs,
     lods and stos.  */
  if (prefixes & PREFIX_REPZ)
    repz_prefix = "rep ";

  switch (bytemode)
    {
    case al_reg:
    case eAX_reg:
    case indir_dx_reg:
      OP_IMREG (bytemode, sizeflag);
      break;
    case eDI_reg:
      OP_ESreg (bytemode, sizeflag);
      break;
    case eSI_reg:
      OP_DSreg (bytemode, sizeflag);
      break;
    default:
      abort ();
      break;
    }
}

static void
CMPXCHG8B_Fixup (int bytemode, int sizeflag)
{
  USED_REX (REX_W);
  if (rex & REX_W)
    {
      /* Change cmpxchg8b to cmpxchg16b.  */
      char *p = mnemonicendp - 2;
      mnemonicendp = stpcpy (p, "16b");
      bytemode = o_mode;
    }
  OP_M (bytemode, sizeflag);
}

static void
XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED)
{
  if (need_vex)
    {
      switch (vex.length)
	{
	case 128:
	  sprintf (scratchbuf, "%%xmm%d", reg);
	  break;
	case 256:
	  sprintf (scratchbuf, "%%ymm%d", reg);
	  break;
	default:
	  abort ();
	}
    }
  else
    sprintf (scratchbuf, "%%xmm%d", reg);
  oappend (scratchbuf + intel_syntax);
}

static void
CRC32_Fixup (int bytemode, int sizeflag)
{
  /* Add proper suffix to "crc32".  */
  char *p = mnemonicendp;

  switch (bytemode)
    {
    case b_mode:
      if (intel_syntax)
	goto skip;

      *p++ = 'b';
      break;
    case v_mode:
      if (intel_syntax)
	goto skip;

      USED_REX (REX_W);
      if (rex & REX_W)
	*p++ = 'q';
      else if (sizeflag & DFLAG)
	*p++ = 'l';
      else
	*p++ = 'w';
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      break;
    }
  mnemonicendp = p;
  *p = '\0';

skip:
  if (modrm.mod == 3)
    {
      int add;

      /* Skip mod/rm byte.  */
      MODRM_CHECK;
      codep++;

      USED_REX (REX_B);
      add = (rex & REX_B) ? 8 : 0;
      if (bytemode == b_mode)
	{
	  USED_REX (0);
	  if (rex)
	    oappend (names8rex[modrm.rm + add]);
	  else
	    oappend (names8[modrm.rm + add]);
	}
      else
	{
	  USED_REX (REX_W);
	  if (rex & REX_W)
	    oappend (names64[modrm.rm + add]);
	  else if ((prefixes & PREFIX_DATA))
	    oappend (names16[modrm.rm + add]);
	  else
	    oappend (names32[modrm.rm + add]);
	}
    }
  else
    OP_E (bytemode, sizeflag);
}

/* Display the destination register operand for instructions with
   VEX. */

static void
OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
{
  if (!need_vex)
    abort ();

  if (!need_vex_reg)
    return;

  switch (vex.length)
    {
    case 128:
      switch (bytemode)
	{
	case vex_mode:
	case vex128_mode:
	  break;
	default:
	  abort ();
	  return;
	}

      sprintf (scratchbuf, "%%xmm%d", vex.register_specifier);
      break;
    case 256:
      switch (bytemode)
	{
	case vex_mode:
	case vex256_mode:
	  break;
	default:
	  abort ();
	  return;
	}

      sprintf (scratchbuf, "%%ymm%d", vex.register_specifier);
      break;
    default:
      abort ();
      break;
    }
  oappend (scratchbuf + intel_syntax);
}

/* Get the VEX immediate byte without moving codep.  */

static unsigned char
get_vex_imm8 (int sizeflag)
{
  int bytes_before_imm = 0;

  /* Skip mod/rm byte.   */
  MODRM_CHECK;
  codep++;

  if (modrm.mod != 3)
    {
      /* There are SIB/displacement bytes.  */
      if ((sizeflag & AFLAG) || address_mode == mode_64bit)
	{
	  /* 32/64 bit address mode */
	  int base = modrm.rm;

	  /* Check SIB byte.  */
	  if (base == 4)
	    {
	      FETCH_DATA (the_info, codep + 1);
	      base = *codep & 7;
	      bytes_before_imm++;
	    }

	  switch (modrm.mod)
	    {
	    case 0:
	      /* When modrm.rm == 5 or modrm.rm == 4 and base in
		 SIB == 5, there is a 4 byte displacement.  */
	      if (base != 5)
		/* No displacement. */
		break;
	    case 2:
	      /* 4 byte displacement.  */
	      bytes_before_imm += 4;
	      break;
	    case 1:
	      /* 1 byte displacement.  */
	      bytes_before_imm++;
	      break;
	    }
	}
      else
	{ /* 16 bit address mode */
	  switch (modrm.mod)
	    {
	    case 0:
	      /* When modrm.rm == 6, there is a 2 byte displacement.  */
	      if (modrm.rm != 6)
		/* No displacement. */
		break;
	    case 2:
	      /* 2 byte displacement.  */
	      bytes_before_imm += 2;
	      break;
	    case 1:
	      /* 1 byte displacement.  */
	      bytes_before_imm++;
	      break;
	    }
	}
    }

  FETCH_DATA (the_info, codep + bytes_before_imm + 1);
  return codep [bytes_before_imm];
}

static void
OP_EX_VexReg (int bytemode, int sizeflag, int reg)
{
  if (reg == -1 && modrm.mod != 3)
    {
      OP_E_memory (bytemode, sizeflag);
      return;
    }
  else
    {
      if (reg == -1)
	{
	  reg = modrm.rm;
	  USED_REX (REX_B);
	  if (rex & REX_B)
	    reg += 8;
	}
      else if (reg > 7 && address_mode != mode_64bit)
	BadOp ();
    }

  switch (vex.length)
    {
    case 128:
      sprintf (scratchbuf, "%%xmm%d", reg);
      break;
    case 256:
      sprintf (scratchbuf, "%%ymm%d", reg);
      break;
    default:
      abort ();
    }
  oappend (scratchbuf + intel_syntax);
}

static void
OP_EX_VexW (int bytemode, int sizeflag)
{
  int reg = -1;

  if (!vex_w_done)
    {
      vex_w_done = 1;
      if (vex.w)
	reg = vex.register_specifier;
    }
  else
    {
      if (!vex.w)
	reg = vex.register_specifier;
    }

  OP_EX_VexReg (bytemode, sizeflag, reg);
}

static void
OP_VEX_FMA (int bytemode, int sizeflag)
{
  int reg = get_vex_imm8 (sizeflag) >> 4;

  if (reg > 7 && address_mode != mode_64bit)
    BadOp ();

  switch (vex.length)
    {
    case 128:
      switch (bytemode)
	{
	case vex_mode:
	case vex128_mode:
	  break;
	default:
	  abort ();
	  return;
	}

      sprintf (scratchbuf, "%%xmm%d", reg);
      break;
    case 256:
      switch (bytemode)
	{
	case vex_mode:
	  break;
	default:
	  abort ();
	  return;
	}

      sprintf (scratchbuf, "%%ymm%d", reg);
      break;
    default:
      abort ();
    }
  oappend (scratchbuf + intel_syntax);
}

static void
VEXI4_Fixup (int bytemode ATTRIBUTE_UNUSED,
	     int sizeflag ATTRIBUTE_UNUSED)
{
  /* Skip the immediate byte and check for invalid bits.  */
  FETCH_DATA (the_info, codep + 1);
  if (*codep++ & 0xf)
    BadOp ();
}

static void
OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
{
  int reg;
  FETCH_DATA (the_info, codep + 1);
  reg = *codep++;

  if (bytemode != x_mode)
    abort ();

  if (reg & 0xf)
      BadOp ();

  reg >>= 4;
  if (reg > 7 && address_mode != mode_64bit)
    BadOp ();

  switch (vex.length)
    {
    case 128:
      sprintf (scratchbuf, "%%xmm%d", reg);
      break;
    case 256:
      sprintf (scratchbuf, "%%ymm%d", reg);
      break;
    default:
      abort ();
    }
  oappend (scratchbuf + intel_syntax);
}

static void
OP_XMM_VexW (int bytemode, int sizeflag)
{
  /* Turn off the REX.W bit since it is used for swapping operands
     now.  */
  rex &= ~REX_W;
  OP_XMM (bytemode, sizeflag);
}

static void
OP_EX_Vex (int bytemode, int sizeflag)
{
  if (modrm.mod != 3)
    {
      if (vex.register_specifier != 0)
	BadOp ();
      need_vex_reg = 0;
    }
  OP_EX (bytemode, sizeflag);
}

static void
OP_XMM_Vex (int bytemode, int sizeflag)
{
  if (modrm.mod != 3)
    {
      if (vex.register_specifier != 0)
	BadOp ();
      need_vex_reg = 0;
    }
  OP_XMM (bytemode, sizeflag);
}

static void
VZERO_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  switch (vex.length)
    {
    case 128:
      mnemonicendp = stpcpy (obuf, "vzeroupper");
      break;
    case 256:
      mnemonicendp = stpcpy (obuf, "vzeroall");
      break;
    default:
      abort ();
    }
}

static struct op vex_cmp_op[] =
{
  { STRING_COMMA_LEN ("eq") },
  { STRING_COMMA_LEN ("lt") },
  { STRING_COMMA_LEN ("le") },
  { STRING_COMMA_LEN ("unord") },
  { STRING_COMMA_LEN ("neq") },
  { STRING_COMMA_LEN ("nlt") },
  { STRING_COMMA_LEN ("nle") },
  { STRING_COMMA_LEN ("ord") },
  { STRING_COMMA_LEN ("eq_uq") },
  { STRING_COMMA_LEN ("nge") },
  { STRING_COMMA_LEN ("ngt") },
  { STRING_COMMA_LEN ("false") },
  { STRING_COMMA_LEN ("neq_oq") },
  { STRING_COMMA_LEN ("ge") },
  { STRING_COMMA_LEN ("gt") },
  { STRING_COMMA_LEN ("true") },
  { STRING_COMMA_LEN ("eq_os") },
  { STRING_COMMA_LEN ("lt_oq") },
  { STRING_COMMA_LEN ("le_oq") },
  { STRING_COMMA_LEN ("unord_s") },
  { STRING_COMMA_LEN ("neq_us") },
  { STRING_COMMA_LEN ("nlt_uq") },
  { STRING_COMMA_LEN ("nle_uq") },
  { STRING_COMMA_LEN ("ord_s") },
  { STRING_COMMA_LEN ("eq_us") },
  { STRING_COMMA_LEN ("nge_uq") },
  { STRING_COMMA_LEN ("ngt_uq") },
  { STRING_COMMA_LEN ("false_os") },
  { STRING_COMMA_LEN ("neq_os") },
  { STRING_COMMA_LEN ("ge_oq") },
  { STRING_COMMA_LEN ("gt_oq") },
  { STRING_COMMA_LEN ("true_us") },
};

static void
VCMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
  unsigned int cmp_type;

  FETCH_DATA (the_info, codep + 1);
  cmp_type = *codep++ & 0xff;
  if (cmp_type < ARRAY_SIZE (vex_cmp_op))
    {
      char suffix [3];
      char *p = mnemonicendp - 2;
      suffix[0] = p[0];
      suffix[1] = p[1];
      suffix[2] = '\0';
      sprintf (p, "%s%s", vex_cmp_op[cmp_type].name, suffix);
      mnemonicendp += vex_cmp_op[cmp_type].len;
    }
  else
    {
      /* We have a reserved extension byte.  Output it directly.  */
      scratchbuf[0] = '$';
      print_operand_value (scratchbuf + 1, 1, cmp_type);
      oappend (scratchbuf + intel_syntax);
      scratchbuf[0] = '\0';
    }
}

static const struct op pclmul_op[] =
{
  { STRING_COMMA_LEN ("lql") },
  { STRING_COMMA_LEN ("hql") },
  { STRING_COMMA_LEN ("lqh") },
  { STRING_COMMA_LEN ("hqh") }
};

static void
PCLMUL_Fixup (int bytemode ATTRIBUTE_UNUSED,
	      int sizeflag ATTRIBUTE_UNUSED)
{
  unsigned int pclmul_type;

  FETCH_DATA (the_info, codep + 1);
  pclmul_type = *codep++ & 0xff;
  switch (pclmul_type)
    {
    case 0x10:
      pclmul_type = 2;
      break;
    case 0x11:
      pclmul_type = 3;
      break;
    default:
      break;
    } 
  if (pclmul_type < ARRAY_SIZE (pclmul_op))
    {
      char suffix [4];
      char *p = mnemonicendp - 3;
      suffix[0] = p[0];
      suffix[1] = p[1];
      suffix[2] = p[2];
      suffix[3] = '\0';
      sprintf (p, "%s%s", pclmul_op[pclmul_type].name, suffix);
      mnemonicendp += pclmul_op[pclmul_type].len;
    }
  else
    {
      /* We have a reserved extension byte.  Output it directly.  */
      scratchbuf[0] = '$';
      print_operand_value (scratchbuf + 1, 1, pclmul_type);
      oappend (scratchbuf + intel_syntax);
      scratchbuf[0] = '\0';
    }
}

static void
MOVBE_Fixup (int bytemode, int sizeflag)
{
  /* Add proper suffix to "movbe".  */
  char *p = mnemonicendp;

  switch (bytemode)
    {
    case v_mode:
      if (intel_syntax)
	goto skip;

      USED_REX (REX_W);
      if (sizeflag & SUFFIX_ALWAYS)
	{
	  if (rex & REX_W)
	    *p++ = 'q';
	  else if (sizeflag & DFLAG)
	    *p++ = 'l';
	  else
	    *p++ = 'w';
	}
      used_prefixes |= (prefixes & PREFIX_DATA);
      break;
    default:
      oappend (INTERNAL_DISASSEMBLER_ERROR);
      break;
    }
  mnemonicendp = p;
  *p = '\0';

skip:
  OP_M (bytemode, sizeflag);
}
