view udis86-1.4/libudis86/opcmap.c @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line source

/* -----------------------------------------------------------------------------
 * opcmap.c
 *
 * Copyright (c) 2006, Vivek Mohan <vivek@sig9.com>
 * All rights reserved. See LICENSE
 * -----------------------------------------------------------------------------
 */

#include "types.h"
#include "mnemonics.h"
#include "opcmap.h"
#include "input.h"

/* operand types - check out the intel/amd manuals */
#define Ap	{ OP_A, SZ_P 	}
#define E	{ OP_E, 0 	}
#define Eb	{ OP_E, SZ_B 	}
#define Ew	{ OP_E, SZ_W 	}
#define Ev	{ OP_E, SZ_V 	}
#define Ed	{ OP_E, SZ_D 	}
#define Ez	{ OP_E, SZ_Z 	}
#define Ex	{ OP_E, SZ_MDQ 	}
#define Ep	{ OP_E, SZ_P 	}
#define G	{ OP_G, 0 	}
#define Gb	{ OP_G, SZ_B 	}
#define Gw	{ OP_G, SZ_W 	}
#define Gv	{ OP_G, SZ_V 	}
#define Gvw	{ OP_G, SZ_MDQ 	}
#define Gd	{ OP_G, SZ_D 	}
#define Gx	{ OP_G, SZ_MDQ 	}
#define Gz	{ OP_G, SZ_Z 	}
#define M	{ OP_M, 0 	}
#define Mb	{ OP_M, SZ_B 	}
#define Mw	{ OP_M, SZ_W 	}
#define Ms	{ OP_M, SZ_W 	}
#define Md	{ OP_M, SZ_D 	}
#define Mq	{ OP_M, SZ_Q 	}
#define Mt	{ OP_M, SZ_T 	}
#define	I1	{ OP_I1, 0 	}
#define	I3	{ OP_I3, 0 	}
#define Ib	{ OP_I, SZ_B 	}
#define Iw	{ OP_I, SZ_W	}
#define Iv	{ OP_I, SZ_V	}
#define Iz	{ OP_I, SZ_Z	}
#define Jv	{ OP_J, SZ_V	}
#define Jz	{ OP_J, SZ_Z	}
#define Jb	{ OP_J, SZ_B	}
#define R	{ OP_R, SZ_RDQ	}
#define C	{ OP_C, 0	} 
#define D	{ OP_D, 0	}
#define S	{ OP_S, 0	}
#define Ob	{ OP_O, SZ_B	}
#define Ow	{ OP_O, SZ_W	}
#define Ov	{ OP_O, SZ_V	}
#define V	{ OP_V, 0	}
#define W	{ OP_W, 0	}
#define P	{ OP_P, 0	}
#define Q	{ OP_Q, 0	}
#define VR	{ OP_VR, 0	}
#define PR	{ OP_PR, 0	}
#define AL	{ OP_AL, 0	}
#define CL	{ OP_CL, 0	}
#define DL	{ OP_DL, 0	}
#define BL	{ OP_BL, 0	}
#define AH	{ OP_AH, 0	}
#define CH	{ OP_CH, 0	}
#define DH	{ OP_DH, 0	}
#define BH	{ OP_BH, 0	}
#define AX	{ OP_AX, 0	}
#define CX	{ OP_CX, 0	}
#define DX	{ OP_DX, 0	}
#define BX	{ OP_BX, 0	}
#define SI	{ OP_SI, 0	}
#define DI	{ OP_DI, 0	}
#define SP	{ OP_SP, 0	}
#define BP	{ OP_BP, 0	}
#define eAX	{ OP_eAX, 0	}
#define eCX	{ OP_eCX, 0	}
#define eDX	{ OP_eDX, 0	}
#define eBX	{ OP_eBX, 0	}
#define eSI	{ OP_eSI, 0	}
#define eDI	{ OP_eDI, 0	}
#define eSP	{ OP_eSP, 0	}
#define eBP	{ OP_eBP, 0	}
#define rAX	{ OP_rAX, 0	}
#define rCX	{ OP_rCX, 0	}
#define rBX	{ OP_rDX, 0	}
#define rDX	{ OP_rDX, 0	}
#define rSI	{ OP_rSI, 0	}
#define rDI	{ OP_rDI, 0	}
#define rSP	{ OP_rSP, 0	}
#define rBP	{ OP_rBP, 0	}
#define ES	{ OP_ES, 0	}
#define CS	{ OP_CS, 0	}
#define DS	{ OP_DS, 0	}
#define SS	{ OP_SS, 0	}
#define GS	{ OP_GS, 0	}
#define FS	{ OP_FS, 0	}
#define ST0	{ OP_ST0, 0	}
#define ST1	{ OP_ST1, 0	}
#define ST2	{ OP_ST2, 0	}
#define ST3	{ OP_ST3, 0	}
#define ST4	{ OP_ST4, 0	}
#define ST5	{ OP_ST5, 0	}
#define ST6	{ OP_ST6, 0	}
#define ST7	{ OP_ST7, 0	}
#define NOARG	{ 0, 0 		}
#define ALr8b	{ OP_ALr8b,0 	}
#define CLr9b	{ OP_CLr9b,0 	}
#define DLr10b	{ OP_DLr10b,0 	}
#define BLr11b	{ OP_BLr11b,0 	}
#define AHr12b	{ OP_AHr12b,0 	}
#define CHr13b	{ OP_CHr13b,0 	}
#define DHr14b	{ OP_DHr14b,0 	}
#define BHr15b	{ OP_BHr15b,0 	}
#define rAXr8	{ OP_rAXr8,0 	}
#define rCXr9	{ OP_rCXr9,0 	}
#define rDXr10	{ OP_rDXr10,0 	}
#define rBXr11	{ OP_rBXr11,0 	}
#define rSPr12	{ OP_rSPr12,0 	}
#define rBPr13	{ OP_rBPr13,0 	}
#define rSIr14	{ OP_rSIr14,0 	}
#define rDIr15	{ OP_rDIr15,0 	}

enum INSN_GROUPS
{
  GRP_80, 
  GRP_81, 
  GRP_82,
  GRP_83,
  GRP_8F,
  GRP_C0,
  GRP_C1,
  GRP_C6,
  GRP_C7,
  GRP_D0,
  GRP_D1,
  GRP_D2,
  GRP_D3,
  GRP_F6,
  GRP_F7,
  GRP_FE,
  GRP_FF,
  GRP_0F00,
  GRP_0F01,
  GRP_0F0D,
  GRP_0F18,
  GRP_0F71,
  GRP_0F72,
  GRP_0F73,
  GRP_0FAE,
  GRP_0FBA,
  GRP_0FB9,
  GRP_0FC7
};

/* 1 byte opcode */
struct map_entry itab_1byte[0x100] = 
{
	/* Instruction, op1, op2, op3, Valid Prefixes */

/* 00 */ { UD_Iadd,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R) },
/* 01 */ { UD_Iadd,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 02 */ { UD_Iadd,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R) },
/* 03 */ { UD_Iadd,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 04 */ { UD_Iadd,	AL,	Ib,	NOARG,	Pnone },
/* 05 */ { UD_Iadd,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 06 */ { UD_Ipush,	ES,	NOARG,	NOARG,	Pinv64 },
/* 07 */ { UD_Ipop,	ES,	NOARG,	NOARG,	Pinv64 },
/* 08 */ { UD_Ior,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R) },
/* 09 */ { UD_Ior,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 0A */ { UD_Ior,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)},
/* 0B */ { UD_Ior,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 0C */ { UD_Ior,	AL,	Ib,	NOARG,	Pnone },
/* 0D */ { UD_Ior,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 0E */ { UD_Ipush,	CS,	NOARG,	NOARG,	Pinv64 },
/* 0F */ { UD_Iesc,	NOARG,	NOARG,	NOARG,	Pnone },
/* 10 */ { UD_Iadc,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 11 */ { UD_Iadc,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 12 */ { UD_Iadc,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 13 */ { UD_Iadc,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 14 */ { UD_Iadc,	AL,	Ib,	NOARG,	Pnone },
/* 15 */ { UD_Iadc,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 16 */ { UD_Ipush,	SS,	NOARG,	NOARG,	Pinv64 },
/* 17 */ { UD_Ipop,	SS,	NOARG,	NOARG,	Pinv64 },
/* 18 */ { UD_Isbb,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 19 */ { UD_Isbb,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 1A */ { UD_Isbb,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 1B */ { UD_Isbb,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 1C */ { UD_Isbb,	AL,	Ib,	NOARG,	Pnone },
/* 1D */ { UD_Isbb,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 1E */ { UD_Ipush,	DS,	NOARG,	NOARG,	Pinv64 },
/* 1F */ { UD_Ipop,	DS,	NOARG,	NOARG,	Pinv64 },
/* 20 */ { UD_Iand,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 21 */ { UD_Iand,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 22 */ { UD_Iand,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 23 */ { UD_Iand,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 24 */ { UD_Iand,	AL,	Ib,	NOARG,	Pnone },
/* 25 */ { UD_Iand,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 26 */ { UD_Ies,	ES,	NOARG,	NOARG,	Pnone },
/* 27 */ { UD_Idaa,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* 28 */ { UD_Isub,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 29 */ { UD_Isub,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 2A */ { UD_Isub,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 2B */ { UD_Isub,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 2C */ { UD_Isub,	AL,	Ib,	NOARG,	Pnone },
/* 2D */ { UD_Isub,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 2E */ { UD_Ics,	CS,	NOARG,	NOARG,	Pnone },
/* 2F */ { UD_Idas,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* 30 */ { UD_Ixor,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 31 */ { UD_Ixor,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 32 */ { UD_Ixor,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 33 */ { UD_Ixor,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 34 */ { UD_Ixor,	AL,	Ib,	NOARG,	Pnone },
/* 35 */ { UD_Ixor,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 36 */ { UD_Iss,	ES,	NOARG,	NOARG,	Pinv64 },
/* 37 */ { UD_Iaaa,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* 38 */ { UD_Icmp,	Eb,	Gb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 39 */ { UD_Icmp,	Ev,	Gv,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 3A */ { UD_Icmp,	Gb,	Eb,	NOARG,	Pa32 | REX(_X|_B|_R)  },
/* 3B */ { UD_Icmp,	Gv,	Ev,	NOARG,	Pa32 | Po32 | REX(_W|_R|_X|_B) },
/* 3C */ { UD_Icmp,	AL,	Ib,	NOARG,	Pnone },
/* 3D */ { UD_Icmp,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* 3E */ { UD_Ids,	ES,	NOARG,	NOARG,	Pnone },
/* 3F */ { UD_Iaas,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* 40 */ { UD_Iinc,	eAX,	NOARG,	NOARG,	Po32 },
/* 41 */ { UD_Iinc,	eCX,	NOARG,	NOARG,	Po32 },
/* 42 */ { UD_Iinc,	eDX,	NOARG,	NOARG,	Po32 },
/* 43 */ { UD_Iinc,	eBX,	NOARG,	NOARG,	Po32 },
/* 44 */ { UD_Iinc,	eSP,	NOARG,	NOARG,	Po32 },
/* 45 */ { UD_Iinc,	eBP,	NOARG,	NOARG,	Po32 },
/* 46 */ { UD_Iinc,	eSI,	NOARG,	NOARG,	Po32 },
/* 47 */ { UD_Iinc,	eDI,	NOARG,	NOARG,	Po32 },
/* 48 */ { UD_Idec,	eAX,	NOARG,	NOARG,	Po32 },
/* 49 */ { UD_Idec,	eCX,	NOARG,	NOARG,	Po32 },
/* 4A */ { UD_Idec,	eDX,	NOARG,	NOARG,	Po32 },
/* 4B */ { UD_Idec,	eBX,	NOARG,	NOARG,	Po32 },
/* 4C */ { UD_Idec,	eSP,	NOARG,	NOARG,	Po32 },
/* 4D */ { UD_Idec,	eBP,	NOARG,	NOARG,	Po32 },
/* 4E */ { UD_Idec,	eSI,	NOARG,	NOARG,	Po32 },
/* 4F */ { UD_Idec,	eDI,	NOARG,	NOARG,	Po32 },
/* 50 */ { UD_Ipush,	rAXr8,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 51 */ { UD_Ipush,	rCXr9,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 52 */ { UD_Ipush,	rDXr10,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 53 */ { UD_Ipush,	rBXr11,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 54 */ { UD_Ipush,	rSPr12,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 55 */ { UD_Ipush,	rBPr13,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 56 */ { UD_Ipush,	rSIr14,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 57 */ { UD_Ipush,	rDIr15,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 58 */ { UD_Ipop,	rAXr8,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 59 */ { UD_Ipop,	rCXr9,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5A */ { UD_Ipop,	rDXr10,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5B */ { UD_Ipop,	rBXr11,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5C */ { UD_Ipop,	rSPr12,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5D */ { UD_Ipop,	rBPr13,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5E */ { UD_Ipop,	rSIr14,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 5F */ { UD_Ipop,	rDIr15,	NOARG,	NOARG,	Po32 | Pdef64 | REX(_B) },
/* 60 */ { UD_Ipusha,	NOARG,	NOARG,	NOARG,	Po32 | Pinv64 | PdepM },
/* 61 */ { UD_Ipopa,	NOARG,	NOARG,	NOARG,	Po32 | Pinv64 | PdepM },
/* 62 */ { UD_Ibound,	Gv,	M,	NOARG,	Po32 | Pa32 | Pinv64 },
/* 63 */ { UD_Iarpl,	Ew,	Gw,	NOARG,	Pa32 | Pinv64 },
/* 64 */ { UD_Ifs,	ES,	NOARG,	NOARG,	Pnone },
/* 65 */ { UD_Igs,	GS,	NOARG,	NOARG,	Pnone },
/* 66 */ { UD_Ia32,	NOARG,	NOARG,	NOARG,	Pnone },
/* 67 */ { UD_Io32,	NOARG,	NOARG,	NOARG,	Pnone },
/* 68 */ { UD_Ipush,	Iz,	NOARG,	NOARG,	Pc1 | Po32 },
/* 69 */ { UD_Iimul,	Gv,	Ev,	Iz,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 6A */ { UD_Ipush,	Ib,	NOARG,	NOARG,	Pnone },
/* 6B */ { UD_Iimul,	Gv,	Ev,	Ib,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 6C */ { UD_Iinsb,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6D */ { UD_Iinsw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM },
/* 6E */ { UD_Ioutsb,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6F */ { UD_Ioutsw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM },
/* 70 */ { UD_Ijo,	Jb,	NOARG,	NOARG,	Pnone },
/* 71 */ { UD_Ijno,	Jb,	NOARG,	NOARG,	Pnone },
/* 72 */ { UD_Ijb,	Jb,	NOARG,	NOARG,	Pnone },
/* 73 */ { UD_Ijae,	Jb,	NOARG,	NOARG,	Pnone },
/* 74 */ { UD_Ijz,	Jb,	NOARG,	NOARG,	Pnone },
/* 75 */ { UD_Ijnz,	Jb,	NOARG,	NOARG,	Pnone },
/* 76 */ { UD_Ijbe,	Jb,	NOARG,	NOARG,	Pnone },
/* 77 */ { UD_Ija,	Jb,	NOARG,	NOARG,	Pnone },
/* 78 */ { UD_Ijs,	Jb,	NOARG,	NOARG,	Pnone },
/* 79 */ { UD_Ijns,	Jb,	NOARG,	NOARG,	Pnone },
/* 7A */ { UD_Ijp,	Jb,	NOARG,	NOARG,	Pnone },
/* 7B */ { UD_Ijnp,	Jb,	NOARG,	NOARG,	Pnone },
/* 7C */ { UD_Ijl,	Jb,	NOARG,	NOARG,	Pnone },
/* 7D */ { UD_Ijge,	Jb,	NOARG,	NOARG,	Pnone },
/* 7E */ { UD_Ijle,	Jb,	NOARG,	NOARG,	Pnone },
/* 7F */ { UD_Ijg,	Jb,	NOARG,	NOARG,	Pnone },
/* 80 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_80 },
/* 81 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_81 },
/* 82 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_82 },
/* 83 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_83 },
/* 84 */ { UD_Itest,	Eb,	Gb,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 85 */ { UD_Itest,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 86 */ { UD_Ixchg,	Eb,	Gb,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 87 */ { UD_Ixchg,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 88 */ { UD_Imov,	Eb,	Gb,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 89 */ { UD_Imov,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 8A */ { UD_Imov,	Gb,	Eb,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 8B */ { UD_Imov,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 8C */ { UD_Imov,	Ev,	S,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
/* 8D */ { UD_Ilea,	Gv,	M,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 8E */ { UD_Imov,	S,	Ev,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
/* 8F */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_8F },
/* 90 */ { UD_Ixchg,	rAXr8,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 91 */ { UD_Ixchg,	rCXr9,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 92 */ { UD_Ixchg,	rDXr10,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 93 */ { UD_Ixchg,	rBXr11,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 94 */ { UD_Ixchg,	rSPr12,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 95 */ { UD_Ixchg,	rBPr13,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 96 */ { UD_Ixchg,	rSIr14,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 97 */ { UD_Ixchg,	rDIr15,	rAX,	NOARG,	Po32 | REX(_W|_B) },
/* 98 */ { UD_Icbw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* 99 */ { UD_Icwd,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* 9A */ { UD_Icall,	Ap,	NOARG,	NOARG,	Pc1 | Po32 | Pinv64 },
/* 9B */ { UD_Iwait,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9C */ { UD_Ipushfw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | Pdef64 },
/* 9D */ { UD_Ipopfw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | Pdef64 },
/* 9E */ { UD_Isahf,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9F */ { UD_Ilahf,	NOARG,	NOARG,	NOARG,	Pnone },
/* A0 */ { UD_Imov,	AL,	Ob,	NOARG,	Pnone },
/* A1 */ { UD_Imov,	rAX,	Ov,	NOARG,	Po32 | Pa32 | REX(_W) },
/* A2 */ { UD_Imov,	Ob,	AL,	NOARG,	Pnone },
/* A3 */ { UD_Imov,	Ov,	rAX, 	NOARG,	Po32 | Pa32 | REX(_W) },
/* A4 */ { UD_Imovsb,	NOARG,	NOARG,	NOARG,	Pnone },
/* A5 */ { UD_Imovsw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* A6 */ { UD_Icmpsb,	NOARG,	NOARG,	NOARG,	Pnone },
/* A7 */ { UD_Icmpsw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* A8 */ { UD_Itest,	AL,	Ib,	NOARG,	Pnone },
/* A9 */ { UD_Itest,	rAX,	Iz,	NOARG,	Po32 | REX(_W) },
/* AA */ { UD_Istosb,	NOARG,	NOARG,	NOARG,	Pnone },
/* AB */ { UD_Istosw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* AC */ { UD_Ilodsb,	NOARG,	NOARG,	NOARG,	Pnone },
/* AD */ { UD_Ilodsw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* AE */ { UD_Iscasb,	NOARG,	NOARG,	NOARG,	Pnone },
/* AF */ { UD_Iscasw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* B0 */ { UD_Imov,	ALr8b,	Ib,	NOARG,	REX(_B) },
/* B1 */ { UD_Imov,	CLr9b,	Ib,	NOARG,	REX(_B) },
/* B2 */ { UD_Imov,	DLr10b,	Ib,	NOARG,	REX(_B) },
/* B3 */ { UD_Imov,	BLr11b,	Ib,	NOARG,	REX(_B) },
/* B4 */ { UD_Imov,	AHr12b,	Ib,	NOARG,	REX(_B) },
/* B5 */ { UD_Imov,	CHr13b,	Ib,	NOARG,	REX(_B) },
/* B6 */ { UD_Imov,	DHr14b,	Ib,	NOARG,	REX(_B) },
/* B7 */ { UD_Imov,	BHr15b,	Ib,	NOARG,	REX(_B) },
/* B8 */ { UD_Imov,	rAXr8,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* B9 */ { UD_Imov,	rCXr9,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BA */ { UD_Imov,	rDXr10,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BB */ { UD_Imov,	rBXr11,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BC */ { UD_Imov,	rSPr12,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BD */ { UD_Imov,	rBPr13,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BE */ { UD_Imov,	rSIr14,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* BF */ { UD_Imov,	rDIr15,	Iv,	NOARG,	Po32 | REX(_W|_B) },
/* C0 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_C0 },
/* C1 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_C1 },
/* C2 */ { UD_Iret,	Iw,	NOARG,	NOARG,	Pnone },
/* C3 */ { UD_Iret,	NOARG,	NOARG,	NOARG,	Pnone },
/* C4 */ { UD_Iles,	Gv,	M,	NOARG,	Po32 | Pa32 | Pinv64 },
/* C5 */ { UD_Ilds,	Gv,	M,	NOARG,	Po32 | Pa32 | Pinv64 },
/* C6 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_C6 },
/* C7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_C7 },
/* C8 */ { UD_Ienter,	Iw,	Ib,	NOARG,	Pnone | Pdef64 },
/* C9 */ { UD_Ileave,	NOARG,	NOARG,	NOARG,	Pnone },
/* CA */ { UD_Iretf,	Iw,	NOARG,	NOARG,	Pnone },
/* CB */ { UD_Iretf,	NOARG,	NOARG,	NOARG,	Pnone },
/* CC */ { UD_Iint3,	NOARG,	NOARG,	NOARG,	Pnone },
/* CD */ { UD_Iint,	Ib,	NOARG,	NOARG,	Pnone },
/* CE */ { UD_Iinto,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* CF */ { UD_Iiretw,	NOARG,	NOARG,	NOARG,	Po32 | PdepM | REX(_W) },
/* D0 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_D0 },
/* D1 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_D1 },
/* D2 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_D2 },
/* D3 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_D3 },
/* D4 */ { UD_Iaam,	Ib,	NOARG,	NOARG,	Pinv64 },
/* D5 */ { UD_Iaad,	Ib,	NOARG,	NOARG,	Pinv64 },
/* D6 */ { UD_Isalc,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* D7 */ { UD_Ixlatb,	NOARG,	NOARG,	NOARG,	REX(_W) },
/* D8 */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* D9 */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DA */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DB */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DC */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DD */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DE */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* DF */ { UD_Ix87,	NOARG,	NOARG,	NOARG,	Pnone },
/* E0 */ { UD_Iloopnz,	Jb,	NOARG,	NOARG,	Pnone },
/* E1 */ { UD_Iloope,	Jb,	NOARG,	NOARG,	Pnone },
/* E2 */ { UD_Iloop,	Jb,	NOARG,	NOARG,	Pdef64 },
/* E3 */ { UD_Ijcxz,	Jb,	NOARG,	NOARG,	Pa32 | PdepM  },
/* E4 */ { UD_Iin,	AL,	Ib,	NOARG,	Pnone },
/* E5 */ { UD_Iin,	eAX,	Ib,	NOARG,	Pnone | Po32 },
/* E6 */ { UD_Iout,	Ib,	AL,	NOARG,	Pnone },
/* E7 */ { UD_Iout,	Ib,	eAX,	NOARG,	Po32 | Pnone },
/* E8 */ { UD_Icall,	Jz,	NOARG,	NOARG,	Po32 | Pdef64 },
/* E9 */ { UD_Ijmp,	Jz,	NOARG,	NOARG,	Po32 | Pdef64 },
/* EA */ { UD_Ijmp,	Ap,	NOARG,	NOARG,	Pinv64 },
/* EB */ { UD_Ijmp,	Jb,	NOARG,	NOARG,	Pnone },
/* EC */ { UD_Iin,	AL,	DX,	NOARG,	Pnone },
/* ED */ { UD_Iin,	eAX,	DX,	NOARG,	Po32 | Pnone },
/* EE */ { UD_Iout,	DX,	AL,	NOARG,	Pnone },
/* EF */ { UD_Iout,	DX,	eAX,	NOARG,	Po32 | Pnone },
/* F0 */ { UD_Ilock,	NOARG,	NOARG,	NOARG,	Pnone },
/* F1 */ { UD_Iint1,	NOARG,	NOARG,	NOARG,	Pnone },
/* F2 */ { UD_Irepne,	NOARG,	NOARG,	NOARG,	Pnone },
/* F3 */ { UD_Irep,	NOARG,	NOARG,	NOARG,	Pnone },
/* F4 */ { UD_Ihlt,	NOARG,	NOARG,	NOARG,	Pnone },
/* F5 */ { UD_Icmc,	NOARG,	NOARG,	NOARG,	Pnone },
/* F6 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_F6 },
/* F7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_F7 },
/* F8 */ { UD_Iclc,	NOARG,	NOARG,	NOARG,	Pnone },
/* F9 */ { UD_Istc,	NOARG,	NOARG,	NOARG,	Pnone },
/* FA */ { UD_Icli,	NOARG,	NOARG,	NOARG,	Pnone },
/* FB */ { UD_Isti,	NOARG,	NOARG,	NOARG,	Pnone },
/* FC */ { UD_Icld,	NOARG,	NOARG,	NOARG,	Pnone },
/* FD */ { UD_Istd,	NOARG,	NOARG,	NOARG,	Pnone },
/* FE */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_FE },
/* FF */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_FF }

};


/* 2byte no-prefix opcodes */
struct map_entry itab_2byte[0x100] = 
{
/* 00 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F00 },
/* 01 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F01 },
/* 02 */ { UD_Ilar,	Gv,	Ew,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 03 */ { UD_Ilsl,	Gv,	Ew,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 04 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 05 */ { UD_Isyscall,	NOARG,	NOARG,	NOARG,	Pnone },
/* 06 */ { UD_Iclts,	NOARG,	NOARG,	NOARG,	Pnone },
/* 07 */ { UD_Isysret,	NOARG,	NOARG,	NOARG,	Pnone },
/* 08 */ { UD_Iinvd,	NOARG,	NOARG,	NOARG,	Pnone },
/* 09 */ { UD_Iwbinvd,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0B */ { UD_Iud2,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0D */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F0D },
/* 0E */ { UD_Ifemms,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0F */ { UD_I3dnow,	NOARG,	NOARG,	NOARG,	Pnone },
/* 10 */ { UD_Imovups,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 11 */ { UD_Imovups,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 12 */ { UD_Imovlps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 13 */ { UD_Imovlps,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 14 */ { UD_Iunpcklps,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 15 */ { UD_Iunpckhps,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 16 */ { UD_Imovhps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 17 */ { UD_Imovhps,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 18 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F18  },
/* 19 */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1A */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1B */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1C */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1D */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1E */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 1F */ { UD_Inop,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 20 */ { UD_Imov,	R,	C,	NOARG,	REX(_R) },
/* 21 */ { UD_Imov,	R,	D,	NOARG,	REX(_R) },
/* 22 */ { UD_Imov,	C,	R,	NOARG,	REX(_R) },
/* 23 */ { UD_Imov,	D,	R,	NOARG,	REX(_R) },
/* 24 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 25 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 26 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 27 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 28 */ { UD_Imovaps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 29 */ { UD_Imovaps,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2A */ { UD_Icvtpi2ps,V,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2B */ { UD_Imovntps,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2C */ { UD_Icvttps2pi,P,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2D */ { UD_Icvtps2pi,P,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2E */ { UD_Iucomiss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2F */ { UD_Icomiss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 30 */ { UD_Iwrmsr,	NOARG,	NOARG,	NOARG,	},
/* 31 */ { UD_Irdtsc,	NOARG,	NOARG,	NOARG,	},
/* 32 */ { UD_Irdmsr,	NOARG,	NOARG,	NOARG,	},
/* 33 */ { UD_Irdpmc,	NOARG,	NOARG,	NOARG,	},
/* 34 */ { UD_Isysenter, NOARG,	NOARG,	NOARG,	Pinv64 },
/* 35 */ { UD_Isysexit,	NOARG,	NOARG,	NOARG,	Pinv64 },
/* 36 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 37 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 38 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 39 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 40 */ { UD_Icmovo,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 41 */ { UD_Icmovno,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 42 */ { UD_Icmovb,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 43 */ { UD_Icmovae,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 44 */ { UD_Icmovz,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 45 */ { UD_Icmovnz,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 46 */ { UD_Icmovbe,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 47 */ { UD_Icmova,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 48 */ { UD_Icmovs,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 49 */ { UD_Icmovns,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4A */ { UD_Icmovp,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4B */ { UD_Icmovnp,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4C */ { UD_Icmovl,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4D */ { UD_Icmovge,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4E */ { UD_Icmovle,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 4F */ { UD_Icmovg,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* 50 */ { UD_Imovmskps,Gd,	VR,	NOARG,	Po32 | REX(_W|_R|_B) },
/* 51 */ { UD_Isqrtps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 52 */ { UD_Irsqrtps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 53 */ { UD_Ircpps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 54 */ { UD_Iandps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 55 */ { UD_Iandnps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 56 */ { UD_Iorps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 57 */ { UD_Ixorps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 58 */ { UD_Iaddps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 59 */ { UD_Imulps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5A */ { UD_Icvtps2pd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5B */ { UD_Icvtdq2ps,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5C */ { UD_Isubps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5D */ { UD_Iminps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5E */ { UD_Idivps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5F */ { UD_Imaxps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 60 */ { UD_Ipunpcklbw,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 61 */ { UD_Ipunpcklwd,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 62 */ { UD_Ipunpckldq,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 63 */ { UD_Ipacksswb, P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 64 */ { UD_Ipcmpgtb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 65 */ { UD_Ipcmpgtw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 66 */ { UD_Ipcmpgtd,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 67 */ { UD_Ipackuswb,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 68 */ { UD_Ipunpckhbw,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 69 */ { UD_Ipunpckhwd,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6A */ { UD_Ipunpckhdq,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6B */ { UD_Ipackssdw,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6E */ { UD_Imovd,	P,	Ex,	NOARG,	Pc2 | Pa32 | REX(_R|_X|_B) },
/* 6F */ { UD_Imovq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 70 */ { UD_Ipshufw,	P,	Q,	Ib,	Pa32 | REX(_R|_X|_B) },
/* 71 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F71 },
/* 72 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F72 },
/* 73 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F73 },
/* 74 */ { UD_Ipcmpeqb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 75 */ { UD_Ipcmpeqw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 76 */ { UD_Ipcmpeqd,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 77 */ { UD_Iemms,	NOARG,	NOARG,	NOARG,	Pnone },
/* 78 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 79 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7E */ { UD_Imovd,	Ex,	P,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
/* 7F */ { UD_Imovq,	Q,	P,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 80 */ { UD_Ijo,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64},
/* 81 */ { UD_Ijno,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 82 */ { UD_Ijb,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 83 */ { UD_Ijae,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 84 */ { UD_Ijz,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 85 */ { UD_Ijnz,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 86 */ { UD_Ijbe,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 87 */ { UD_Ija,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 88 */ { UD_Ijs,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 89 */ { UD_Ijns,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64},
/* 8A */ { UD_Ijp,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 8B */ { UD_Ijnp,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 8C */ { UD_Ijl,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 8D */ { UD_Ijge,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 8E */ { UD_Ijle,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 8F */ { UD_Ijg,	Jz,	NOARG,	NOARG,	Pc1 | Po32 | Pdef64 },
/* 90 */ { UD_Iseto,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 91 */ { UD_Isetno,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 92 */ { UD_Isetb,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 93 */ { UD_Isetnb,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 94 */ { UD_Isetz,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 95 */ { UD_Isetnz,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 96 */ { UD_Isetbe,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 97 */ { UD_Iseta,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 98 */ { UD_Isets,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 99 */ { UD_Isetns,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9A */ { UD_Isetp,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9B */ { UD_Isetnp,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9C */ { UD_Isetl,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9D */ { UD_Isetge,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9E */ { UD_Isetle,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 9F */ { UD_Isetg,	Eb,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* A0 */ { UD_Ipush,	FS,	NOARG,	NOARG,	Pnone },
/* A1 */ { UD_Ipop,	FS,	NOARG,	NOARG,	Pnone },
/* A2 */ { UD_Icpuid,	NOARG,	NOARG,	NOARG,	Pnone },
/* A3 */ { UD_Ibt,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* A4 */ { UD_Ishld,	Ev,	Gv,	Ib,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* A5 */ { UD_Ishld,	Ev,	Gv,	CL,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* A6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* A7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* A8 */ { UD_Ipush,	GS,	NOARG,	NOARG,	Pnone },
/* A9 */ { UD_Ipop,	GS,	NOARG,	NOARG,	Pnone },
/* AA */ { UD_Irsm,	NOARG,	NOARG,	NOARG,	Pnone },
/* AB */ { UD_Ibts,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* AC */ { UD_Ishrd,	Ev,	Gv,	Ib,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* AD */ { UD_Ishrd,	Ev,	Gv,	CL,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* AE */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FAE },
/* AF */ { UD_Iimul,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B0 */ { UD_Icmpxchg,	Eb,	Gb,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* B1 */ { UD_Icmpxchg,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B2 */ { UD_Ilss,	Gz,	M,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B3 */ { UD_Ibtr,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B4 */ { UD_Ilfs,	Gz,	M,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B5 */ { UD_Ilgs,	Gz,	M,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B6 */ { UD_Imovzx,	Gv,	Eb,	NOARG,	Pc2 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B7 */ { UD_Imovzx,	Gv,	Ew,	NOARG,	Pc2 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* B8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* B9 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FB9 },
/* BA */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FBA },
/* BB */ { UD_Ibtc,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* BC */ { UD_Ibsf,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* BD */ { UD_Ibsr,	Gv,	Ev,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* BE */ { UD_Imovsx,	Gv,	Eb,	NOARG,	Pc2 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* BF */ { UD_Imovsx,	Gv,	Ew,	NOARG,	Pc2 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* C0 */ { UD_Ixadd,	Eb,	Gb,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
/* C1 */ { UD_Ixadd,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* C2 */ { UD_Icmpps,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C3 */ { UD_Imovnti,	M,	Gx,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
/* C4 */ { UD_Ipinsrw,	P,	Ew,	Ib,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* C5 */ { UD_Ipextrw,	Gd,	PR,	Ib,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* C6 */ { UD_Ishufps,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FC7 },
/* C8 */ { UD_Ibswap,	rAXr8,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* C9 */ { UD_Ibswap,	rCXr9,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CA */ { UD_Ibswap,	rDXr10,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CB */ { UD_Ibswap,	rBXr11,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CC */ { UD_Ibswap,	rSPr12,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CD */ { UD_Ibswap,	rBPr13,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CE */ { UD_Ibswap,	rSIr14,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* CF */ { UD_Ibswap,	rDIr15,	NOARG,	NOARG,	Po32 | REX(_W|_B) },
/* D0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D1 */ { UD_Ipsrlw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D2 */ { UD_Ipsrld,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D3 */ { UD_Ipsrlq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D4 */ { UD_Ipaddq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D5 */ { UD_Ipmullw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D7 */ { UD_Ipmovmskb,Gd,	PR,	NOARG,	Pnone },
/* D8 */ { UD_Ipsubusb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D9 */ { UD_Ipsubusw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DA */ { UD_Ipminub,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DB */ { UD_Ipand,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DC */ { UD_Ipaddusb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DD */ { UD_Ipaddusw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DE */ { UD_Ipmaxub,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DF */ { UD_Ipandn,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E0 */ { UD_Ipavgb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E1 */ { UD_Ipsraw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E2 */ { UD_Ipsrad,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E3 */ { UD_Ipavgw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E4 */ { UD_Ipmulhuw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E5 */ { UD_Ipmulhw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E7 */ { UD_Imovntq,	M,	P,	NOARG,	Pnone },
/* E8 */ { UD_Ipsubsb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E9 */ { UD_Ipsubsw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EA */ { UD_Ipminsw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EB */ { UD_Ipor,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EC */ { UD_Ipaddsb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* ED */ { UD_Ipaddsw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EE */ { UD_Ipmaxsw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EF */ { UD_Ipxor,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F1 */ { UD_Ipsllw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F2 */ { UD_Ipslld,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F3 */ { UD_Ipsllq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F4 */ { UD_Ipmuludq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F5 */ { UD_Ipmaddwd,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F6 */ { UD_Ipsadbw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F7 */ { UD_Imaskmovq,P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F8 */ { UD_Ipsubb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F9 */ { UD_Ipsubw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FA */ { UD_Ipsubd,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FB */ { UD_Ipsubq,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FC */ { UD_Ipaddb,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FD */ { UD_Ipaddw,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FE */ { UD_Ipaddd,	P,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_2byte_prefixF3[0x100] = 
{
/* 00 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 01 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 02 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 03 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 04 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 05 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 06 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 07 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 08 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 09 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 10 */ { UD_Imovss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 11 */ { UD_Imovss,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 12 */ { UD_Imovsldup,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 13 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 14 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 15 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 16 */ { UD_Imovshdup,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 17 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 18 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 19 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 20 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 21 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 22 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 23 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 24 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 25 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 26 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 27 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 28 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 29 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2A */ { UD_Icvtsi2ss,V,	Ex,	NOARG,	Pc2 | Pa32 | REX(_R|_X|_B) },
/* 2B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2C */ { UD_Icvttss2si,Gvw,	W,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
/* 2D */ { UD_Icvtss2si,Gvw,	W,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
/* 2E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 30 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 31 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 32 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 33 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 34 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 35 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 36 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 37 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 38 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 39 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 40 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 41 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 42 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 43 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 44 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 45 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 46 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 47 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 48 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 49 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 50 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 51 */ { UD_Isqrtss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 52 */ { UD_Irsqrtss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 53 */ { UD_Ircpss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 54 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 55 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 56 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 57 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 58 */ { UD_Iaddss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 59 */ { UD_Imulss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5A */ { UD_Icvtss2sd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5B */ { UD_Icvttps2dq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5C */ { UD_Isubss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5D */ { UD_Iminss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5E */ { UD_Idivss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5F */ { UD_Imaxss,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 60 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 61 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 62 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 63 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 64 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 65 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 66 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 67 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 68 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 69 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6F */ { UD_Imovdqu,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 70 */ { UD_Ipshufhw,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* 71 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 72 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 73 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 74 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 75 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 76 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 77 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 78 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 79 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7E */ { UD_Imovq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 7F */ { UD_Imovdqu,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 80 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 81 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 82 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 83 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 84 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 85 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 86 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 87 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 88 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 89 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 90 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 91 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 92 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 93 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 94 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 95 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 96 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 97 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 98 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 99 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C0 */ { UD_Ixadd,	Eb,	Gb,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
/* C1 */ { UD_Ixadd,	Ev,	Gv,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
/* C2 */ { UD_Icmpss,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FC7 },
/* C8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* D0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D6 */ { UD_Imovq2dq,	V,	PR,	NOARG,	Pa32  },
/* D7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DD */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* CF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E6 */ { UD_Icvtdq2pd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* ED */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FD */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_2byte_prefix66[0x100] = 
{
/* 00 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 01 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 02 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 03 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 04 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 05 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 06 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 07 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 08 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 09 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 10 */ { UD_Imovupd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 11 */ { UD_Imovupd,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 12 */ { UD_Imovlpd,	V,	M,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 13 */ { UD_Imovlpd,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 14 */ { UD_Iunpcklpd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 15 */ { UD_Iunpckhpd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 16 */ { UD_Imovhpd,	V,	M,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 17 */ { UD_Imovhpd,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 18 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 19 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 20 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 21 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 22 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 23 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 24 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 25 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 26 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 27 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 28 */ { UD_Imovapd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 29 */ { UD_Imovapd,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2A */ { UD_Icvtpi2pd,V,	Q,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2B */ { UD_Imovntpd,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2C */ { UD_Icvttpd2pi,P,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2D */ { UD_Icvtpd2pi,P,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2E */ { UD_Iucomisd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 2F */ { UD_Icomisd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 30 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 31 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 32 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 33 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 34 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 35 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 36 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 37 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 38 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 39 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 40 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 41 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 42 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 43 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 44 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 45 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 46 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 47 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 48 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 49 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 50 */ { UD_Imovmskpd,Gd,	VR,	NOARG,	Po32 | REX(_W|_R|_B) },
/* 51 */ { UD_Isqrtpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 52 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 53 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 54 */ { UD_Iandpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 55 */ { UD_Iandnpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 56 */ { UD_Iorpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 57 */ { UD_Ixorpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 58 */ { UD_Iaddpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 59 */ { UD_Imulpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5A */ { UD_Icvtpd2ps,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5B */ { UD_Icvtps2dq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5C */ { UD_Isubpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5D */ { UD_Iminpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5E */ { UD_Idivpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5F */ { UD_Imaxpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 60 */ { UD_Ipunpcklbw,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 61 */ { UD_Ipunpcklwd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 62 */ { UD_Ipunpckldq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 63 */ { UD_Ipacksswb,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 64 */ { UD_Ipcmpgtb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 65 */ { UD_Ipcmpgtw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 66 */ { UD_Ipcmpgtd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 67 */ { UD_Ipackuswb,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 68 */ { UD_Ipunpckhbw,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 69 */ { UD_Ipunpckhwd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6A */ { UD_Ipunpckhdq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6B */ { UD_Ipackssdw,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6C */ { UD_Ipunpcklqdq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6D */ { UD_Ipunpckhqdq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 6E */ { UD_Imovd,	V,	Ex,	NOARG,	Pc2 | Pa32 | REX(_W|_R|_X|_B) },
/* 6F */ { UD_Imovqa,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 70 */ { UD_Ipshufd,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* 71 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F71 },
/* 72 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F72 },
/* 73 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0F73 },
/* 74 */ { UD_Ipcmpeqb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 75 */ { UD_Ipcmpeqw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 76 */ { UD_Ipcmpeqd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 77 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 78 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 79 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7C */ { UD_Ihaddpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 7D */ { UD_Ihsubpd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 7E */ { UD_Imovd,	Ex,	V,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
/* 7F */ { UD_Imovdqa,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 80 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 81 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 82 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 83 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 84 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 85 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 86 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 87 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 88 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 89 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 90 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 91 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 92 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 93 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 94 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 95 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 96 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 97 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 98 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 99 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C0 */ { UD_Ixadd,	Eb,	Gb,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
/* C1 */ { UD_Ixadd,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_W|_R|_X|_B) },
/* C2 */ { UD_Icmppd,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C4 */ { UD_Ipinsrw,	V,	Ew,	Ib,	Pa32 | REX(_W|_R|_X|_B) },
/* C5 */ { UD_Ipextrw,	Gd,	VR,	Ib,	Pa32  },
/* C6 */ { UD_Ishufpd,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FC7 },
/* C8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* D0 */ { UD_Iaddsubpd,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D1 */ { UD_Ipsrlw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D2 */ { UD_Ipsrld,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D3 */ { UD_Ipsrlq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D4 */ { UD_Ipaddq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D5 */ { UD_Ipmullw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D6 */ { UD_Imovq,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D7 */ { UD_Ipmovmskb,Gd,	VR,	NOARG,	Pnone },
/* D8 */ { UD_Ipsubusb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D9 */ { UD_Ipsubusw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DA */ { UD_Ipminub,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DB */ { UD_Ipand,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DC */ { UD_Ipaddusb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DD */ { UD_Ipaddusw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DE */ { UD_Ipmaxub,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* DF */ { UD_Ipandn,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E0 */ { UD_Ipavgb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E1 */ { UD_Ipsraw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E2 */ { UD_Ipsrad,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E3 */ { UD_Ipavgw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E4 */ { UD_Ipmulhuw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E5 */ { UD_Ipmulhw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E6 */ { UD_Icvttpd2dq,V,	W,	NOARG,	Pnone },
/* E7 */ { UD_Imovntdq,	M,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E8 */ { UD_Ipsubsb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E9 */ { UD_Ipsubsw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EA */ { UD_Ipminsw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EB */ { UD_Ipor,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EC */ { UD_Ipaddsb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* ED */ { UD_Ipaddsw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EE */ { UD_Ipmaxsw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* EF */ { UD_Ipxor,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F1 */ { UD_Ipsllw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F2 */ { UD_Ipslld,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F3 */ { UD_Ipsllq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F4 */ { UD_Ipmuludq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F5 */ { UD_Ipmaddwd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F6 */ { UD_Ipsadbw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F7 */ { UD_Imaskmovq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F8 */ { UD_Ipsubb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F9 */ { UD_Ipsubw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FA */ { UD_Ipsubd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FB */ { UD_Ipsubq,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FC */ { UD_Ipaddb,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FD */ { UD_Ipaddw,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FE */ { UD_Ipaddd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* FF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_2byte_prefixF2[0x100] = 
{
/* 00 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 01 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 02 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 03 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 04 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 05 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 06 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 07 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 08 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 09 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 0F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 10 */ { UD_Imovsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 11 */ { UD_Imovsd,	W,	V,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 12 */ { UD_Imovddup,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 13 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 14 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 15 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 16 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 17 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 18 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 19 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 1F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 20 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 21 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 22 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 23 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 24 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 25 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 26 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 27 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 28 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 29 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2A */ { UD_Icvtsi2sd,V,	Ex,	NOARG,	Pc2 | Pa32 | REX(_W|_R|_X|_B) },
/* 2B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2C */ { UD_Icvttsd2si,Gvw,	W,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
/* 2D */ { UD_Icvtsd2si,Gvw,	W,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
/* 2E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 2F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 30 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 31 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 32 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 33 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 34 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 35 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 36 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 37 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 38 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 39 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 3F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 40 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 41 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 42 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 43 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 44 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 45 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 46 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 47 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 48 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 49 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 4F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 50 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 51 */ { UD_Isqrtsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 52 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 53 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 54 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 55 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 56 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 57 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 58 */ { UD_Iaddsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 59 */ { UD_Imulsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5A */ { UD_Icvtsd2ss,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 5C */ { UD_Isubsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5D */ { UD_Iminsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5E */ { UD_Idivsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 5F */ { UD_Imaxsd,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 60 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 61 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 62 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 63 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 64 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 65 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 66 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 67 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 68 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 69 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6C */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6D */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 6F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 70 */ { UD_Ipshuflw,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* 71 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 72 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 73 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 74 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 75 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 76 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 77 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 78 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 79 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7A */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7B */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7C */ { UD_Ihaddps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 7D */ { UD_Ihsubps,	V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* 7E */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 7F */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* 80 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 81 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 82 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 83 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 84 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 85 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 86 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 87 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 88 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 89 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 8F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 90 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 91 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 92 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 93 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 94 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 95 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 96 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 97 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 98 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 99 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9A */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9B */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9C */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9D */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9E */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* 9F */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* A9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* AF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B0 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B1 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B2 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B3 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B4 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B5 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B6 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B7 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* B9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* BF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C0 */ { UD_Ixadd,	Eb,	Gb,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
/* C1 */ { UD_Ixadd,	Ev,	Gv,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
/* C2 */ { UD_Icmpsd,	V,	W,	Ib,	Pa32 | REX(_R|_X|_B) },
/* C3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* C7 */ { UD_Igrp,	NOARG,	NOARG,	NOARG,	GRP_0FC7 },
/* C8 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* C9 */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CA */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CB */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CC */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CD */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CE */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* CF */ { UD_Ina,	NOARG,	NOARG,	NOARG,	Pnone },
/* D0 */ { UD_Iaddsubps,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* D1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D6 */ { UD_Imovdq2q,	P,	VR,	NOARG,	Pa32  },
/* D7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* D9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DD */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* DF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E0 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E6 */ { UD_Icvtpd2dq,V,	W,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* E7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* E9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* ED */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* EF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F0 */ { UD_Ilddqu,	V,	M,	NOARG,	Pa32 | REX(_R|_X|_B) },
/* F1 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F2 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F3 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F4 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F5 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F6 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F7 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F8 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* F9 */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FA */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FB */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FC */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FD */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FE */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
/* FF */ { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_g1_op80[0x8] = 
{
  { UD_Iadd,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ior,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iadc,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isbb,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iand,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isub,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ixor,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Icmp,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g1_op81[0x8] = 
{
  { UD_Iadd,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ior,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iadc,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isbb,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iand,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isub,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ixor,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Icmp,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g1_op82[0x8] = {
  { UD_Iadd,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ior,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iadc,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isbb,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iand,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isub,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ixor,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Icmp,	Eb,	Ib,	NOARG,	Pc1 | Pinv64 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g1_op83[0x8] = {
  { UD_Iadd,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Ior,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Iadc,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Isbb,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Iand,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Isub,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Ixor,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) },
  { UD_Icmp,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_R|_X|_B|_W) }
};

struct map_entry itab_g1A_op8F[0x8] = {
  { UD_Ipop,		Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | Pdef64 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_g2_opC0[0x8] = {
  { UD_Irol,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isal,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g2_opC1[0x8] = {
  { UD_Irol,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isal,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g2_opD0[0x8] = {
  { UD_Irol,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isal,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Eb,	I1,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g2_opD1[0x8] = {
  { UD_Irol,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Ev,	I1,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g2_opD2[0x8] = {
  { UD_Irol,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isal,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Eb,	CL,	NOARG,	Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g2_opD3[0x8] = {
  { UD_Irol,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iror,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircl,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ircr,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishl,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ishr,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isal,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Isar,	Ev,	CL,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g3_opF6[0x8] = {
  { UD_Itest,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Itest,	Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Inot,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ineg,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Imul,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iimul,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Idiv,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iidiv,	Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g3_opF7[0x8] = {
  { UD_Itest,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Itest,	Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Inot,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ineg,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Imul,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iimul,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Idiv,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iidiv,	Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) }
};

struct map_entry itab_g4_opFE[0x8] = {
  { UD_Iinc,		Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Idec,		Eb,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_g5_opFF[0x8] = {
  { UD_Iinc,		Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Idec,		Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Icall,		Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | Pdef64 | REX(_W|_R|_X|_B) },
  { UD_Icall,		Ep,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ijmp,		Ev,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | Pdef64 | REX(_W|_R|_X|_B) },
  { UD_Ijmp,		Ep,	NOARG,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ipush,		Ev,	NOARG,	NOARG,	Pc1 | Pdef64 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG, 	NOARG,	NOARG,	Pnone }
};

/* group 6 */
struct map_entry itab_g6_op0F00[0x8] = {
  { UD_Isldt,		M,	NOARG,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
  { UD_Istr,		M,	NOARG,	NOARG,	Po32 | Pa32 | REX(_R|_X|_B) },
  { UD_Illdt,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iltr,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iverr,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iverw,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};


/* group 7  */
struct map_entry itab_g7_op0F01[0x8] = {
  { UD_Isgdt,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Isidt,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ilgdt,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ilidt,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ismsw,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ilmsw,		Ew,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iinvlpg,		M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) }
};

/* group 7 -- Reg7 */
struct map_entry itab_g7_op0F01_Reg7[0x8] = {
  { UD_Iswapgs, 	NOARG,	NOARG,	NOARG,	PdepM },
  { UD_Irdtscp,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group 7 -- Reg7 */
struct map_entry itab_g7_op0F01_Reg7_intel[0x8] = {
  { UD_Iswapgs, 	NOARG,	NOARG,	NOARG,	PdepM },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group 7 -- Reg3 */
struct map_entry itab_g7_op0F01_Reg3[0x8] = {
  { UD_Ivmrun,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmmcall,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmload, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmsave, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Istgi,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iclgi,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iskinit, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvlpga,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group 7 -- Reg0: Intel */
struct map_entry itab_g7_op0F01_Reg0_intel[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmcall,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmlaunch, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmresume, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmxoff,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group 7 -- Reg1: Intel */
struct map_entry itab_g7_op0F01_Reg1_intel[0x8] = {
  { UD_Imonitor,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Imwait,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group 8  */
struct map_entry itab_g8_op0FBA[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ibt,		Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ibts,		Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ibtr,		Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ibtc,		Ev,	Ib,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
};

/* group 9  */
struct map_entry itab_g9_op0FC7[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Icmpxchg8b,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) | PdepM },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group 9 - Intel */
struct map_entry itab_g9_op0FC7_intel[0x8] = {
  { UD_Ivmptrld,	Mq,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Icmpxchg8b,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) | PdepM },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmptrst,	Mq,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
};

/* group 9 - Intel */
struct map_entry itab_g9_op0FC7_prefix66_intel[0x8] = {
  { UD_Ivmclear,	Mq,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group 9 - Intel */
struct map_entry itab_g9_op0FC7_prefixF3_intel[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ivmxon,		Mq,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
};

/* group A  */
struct map_entry itab_gA_op0FB9[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group B  */
struct map_entry itab_gB_opC6[0x8] = {
  { UD_Imov,		Eb,	Ib,	NOARG,	Pc1 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group B  */
struct map_entry itab_gB_opC7[0x8] = {
  { UD_Imov,		Ev,	Iz,	NOARG,	Pc1 | Po32 | Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group C  */
struct map_entry itab_gC_op0F71[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrlw,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsraw,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsllw,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

struct map_entry itab_gC_op0F71_prefix66[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrlw,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsraw,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsllw,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

struct map_entry itab_gC_op0F71_prefixF3[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gC_op0F71_prefixF2[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group D  */
struct map_entry itab_gD_op0F72[0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrld,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrad,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipslld,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* group D, prefixed by 0x66  */
struct map_entry itab_gD_op0F72_prefix66[0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrld,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrad,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipslld,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

struct map_entry itab_gD_op0F72_prefixF3[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gD_op0F72_prefixF2[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group E  */
struct map_entry itab_gE_op0F73[0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrlq,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsllq,		PR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gE_op0F73_prefix66[0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsrlq,		VR,	Ib,	NOARG,	Pnone },
  { UD_Ipsrldq,		VR,	Ib,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ipsllq,		VR,	Ib,	NOARG,	Pnone },
  { UD_Ipslldq,		VR,	Ib,	NOARG,	Pnone }
};

struct map_entry itab_gE_op0F73_prefixF3[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gE_op0F73_prefixF2[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group F  */
struct map_entry itab_gF_op0FAE[0x8] = 
{
  { UD_Ifxsave,		M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ifxrstor,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Ildmxcsr,	Md,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Istmxcsr,	Md,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iclflush,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
};

struct map_entry itab_gF_op0FAE_prefix66[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gF_op0FAE_prefixF3[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry itab_gF_op0FAE_prefixF2[0x8] = {
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group F -- Extensions */
struct map_entry itab_gF_op0FAE_Reg5 = { 
	UD_Ilfence,	NOARG,	NOARG,	NOARG,	Pnone
};
struct map_entry itab_gF_op0FAE_Reg6 = {
	UD_Imfence,	NOARG,	NOARG,	NOARG,	Pnone
};
struct map_entry itab_gF_op0FAE_Reg7 = {
	UD_Isfence,	NOARG,	NOARG,	NOARG,	Pnone
};

/* group 10  */
struct map_entry itab_g10_op0F18[0x8] = {
  { UD_Iprefetchnta,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetcht0,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetcht1,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetcht2,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* group P  */
struct map_entry itab_gP_op0F0D[0x8] = {
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) },
  { UD_Iprefetch,	M,	NOARG,	NOARG,	Pa32 | REX(_W|_R|_X|_B) }
};

struct
{
  struct map_entry *me_pfx_none;
  struct map_entry *me_pfx_66;
  struct map_entry *me_pfx_f2;
  struct map_entry *me_pfx_f3;
} itab_groups[] =  {
  { itab_g1_op80,	0, 0, 0 },
  { itab_g1_op81,	0, 0, 0 },
  { itab_g1_op82,	0, 0, 0 },
  { itab_g1_op83,	0, 0, 0 },
  { itab_g1A_op8F,	0, 0, 0 },
  { itab_g2_opC0,	0, 0, 0 },
  { itab_g2_opC1,	0, 0, 0 },
  { itab_gB_opC6,	0, 0, 0 },
  { itab_gB_opC7,	0, 0, 0 },
  { itab_g2_opD0,	0, 0, 0 },
  { itab_g2_opD1,	0, 0, 0 },
  { itab_g2_opD2,	0, 0, 0 },
  { itab_g2_opD3,	0, 0, 0 },
  { itab_g3_opF6,	0, 0, 0 },
  { itab_g3_opF7,	0, 0, 0 },
  { itab_g4_opFE,	0, 0, 0 },
  { itab_g5_opFF,	0, 0, 0 },
  { itab_g6_op0F00,	0, 0, 0 },
  { itab_g7_op0F01,	0, 0, 0 },
  { itab_gP_op0F0D,	0, 0, 0 },
  { itab_g10_op0F18,	0, 0, 0 },
  { itab_gC_op0F71,	itab_gC_op0F71_prefix66, itab_gC_op0F71_prefixF3, itab_gC_op0F71_prefixF2 },
  { itab_gD_op0F72,	itab_gD_op0F72_prefix66, itab_gD_op0F72_prefixF3, itab_gD_op0F72_prefixF2 },
  { itab_gE_op0F73,	itab_gE_op0F73_prefix66, itab_gE_op0F73_prefixF3, itab_gE_op0F73_prefixF2 },
  { itab_gF_op0FAE,	itab_gF_op0FAE_prefix66, itab_gF_op0FAE_prefixF3, itab_gF_op0FAE_prefixF2 },
  { itab_g8_op0FBA,	0, 0, 0 },
  { itab_gA_op0FB9,	0, 0, 0 },
  { itab_g9_op0FC7,	0, 0, 0 },

#define ITAB_GROUPS_START_INTEL 28

  { itab_g1_op80,	0, 0, 0 },
  { itab_g1_op81,	0, 0, 0 },
  { itab_g1_op82,	0, 0, 0 },
  { itab_g1_op83,	0, 0, 0 },
  { itab_g1A_op8F,	0, 0, 0 },
  { itab_g2_opC0,	0, 0, 0 },
  { itab_g2_opC1,	0, 0, 0 },
  { itab_gB_opC6,	0, 0, 0 },
  { itab_gB_opC7,	0, 0, 0 },
  { itab_g2_opD0,	0, 0, 0 },
  { itab_g2_opD1,	0, 0, 0 },
  { itab_g2_opD2,	0, 0, 0 },
  { itab_g2_opD3,	0, 0, 0 },
  { itab_g3_opF6,	0, 0, 0 },
  { itab_g3_opF7,	0, 0, 0 },
  { itab_g4_opFE,	0, 0, 0 },
  { itab_g5_opFF,	0, 0, 0 },
  { itab_g6_op0F00,	0, 0, 0 },
  { itab_g7_op0F01,	0, 0, 0 },
  { itab_gP_op0F0D,	0, 0, 0 },
  { itab_g10_op0F18,	0, 0, 0 },
  { itab_gC_op0F71,	itab_gC_op0F71_prefix66, itab_gC_op0F71_prefixF3, itab_gC_op0F71_prefixF2 },
  { itab_gD_op0F72,	itab_gD_op0F72_prefix66, itab_gD_op0F72_prefixF3, itab_gD_op0F72_prefixF2 },
  { itab_gE_op0F73,	itab_gE_op0F73_prefix66, itab_gE_op0F73_prefixF3, itab_gE_op0F73_prefixF2 },
  { itab_gF_op0FAE,	itab_gF_op0FAE_prefix66, itab_gF_op0FAE_prefixF3, itab_gF_op0FAE_prefixF2 },
  { itab_g8_op0FBA,	0, 0, 0 },
  { itab_gA_op0FB9,	0, 0, 0 },
  { itab_g9_op0FC7_intel,	itab_g9_op0FC7_prefix66_intel, itab_g9_op0FC7_prefixF3_intel, 0 },
};

/* D8 Opcode Map */
struct map_entry itab_x87_opD8reg[0x8] = 
{
  { UD_Ifadd,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifmul,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifcom,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifcomp,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifsub,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifsubr,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifdiv,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifdivr,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* D9 Opcode Map */
struct map_entry itab_x87_opD9reg[0x8] = 
{
  { UD_Ifld,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifstp,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifldenv,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ifldcw,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifnstenv,M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ifnstcw,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* DA Opcode Map */
struct map_entry itab_x87_opDAreg[0x8] = 
{
  { UD_Ifiadd,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifimul,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ificom,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ificomp,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisub,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisubr,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifidiv,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifidivr,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* DB Opcode Map */
struct map_entry itab_x87_opDBreg[0x8] = 
{
  { UD_Ifild,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisttp,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifist,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifistp,	Md,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifld,	Mt,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,	Mt,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* DC Opcode Map */
struct map_entry itab_x87_opDCreg[0x8] = 
{
  { UD_Ifadd,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifmul,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifcom,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifcomp,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifsub,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifsubr,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifdiv,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifdivr,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* DD Opcode Map */
struct map_entry itab_x87_opDDreg[0x8] = 
{
  { UD_Ifld,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisttp,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifst,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifstp,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifrstor,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Iinvalid,NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifnsave,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ifnstsw,	M,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) }
};

/* DE Opcode Map */
struct map_entry itab_x87_opDEreg[0x8] = 
{
  { UD_Ifiadd,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifimul,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ificom,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ificomp,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisub,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisubr,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifidiv,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifidivr,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

/* DF Opcode Map */
struct map_entry itab_x87_opDFreg[0x8] = 
{
  { UD_Ifild,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifisttp, Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifist,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifistp,	Mw,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifbld,	Mt,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ifild,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) },
  { UD_Ifbstp,	Mt,	NOARG,	NOARG,	Pa32 | REX(_R|_X|_B) },
  { UD_Ifistp,	Mq,	NOARG,	NOARG,	Pc1 | Pa32 | REX(_R|_X|_B) }
};

struct map_entry itab_g_invalid[0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
};

/* D8 Opcode Map */
struct map_entry itab_x87_opD8[0x8*0x8] = 
{
  { UD_Ifadd,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifadd,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcom,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcomp,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST7,	NOARG,	Pnone }
};

/* D9 Opcode Map */
struct map_entry itab_x87_opD9[0x8*0x8] = 
{
  { UD_Ifld,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifld,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifxch,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifnop,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Inone,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifchs,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifabs,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iftst,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifxam,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifld1,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldl2t,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldl2e,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldlpi,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldlg2,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldln2,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifldz,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_If2xm1,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifyl2x,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifptan,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifpatan,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifpxtract,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifprem1,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifdecstp,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifncstp,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifprem,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifyl2xp1,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifsqrt,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifsincos,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifrndint,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifscale,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifsin,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifcos,		NOARG,	NOARG,	NOARG,	Pnone }
};

/* DA Opcode Map */
struct map_entry itab_x87_opDA[0x8*0x8] = {
  { UD_Ifcmovb,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovb,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmove,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovbe,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovu,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifucompp,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* DB Opcode Map */
struct map_entry itab_x87_opDB[0x8*0x8] = 
{
  { UD_Ifcmovnb,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovnb,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovne,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovnbe,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcmovnu,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifclex,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifninit,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifucomi,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcomi,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid, 	NOARG,	NOARG,	NOARG,	Pnone }
};

/* DC Opcode Map */
struct map_entry itab_x87_opDC[0x8*0x8] = 
{
  { UD_Ifadd,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifadd,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifmul,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifsubr,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifsubr,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifsub,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifdivr,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifdiv,		ST7,	ST0,	NOARG,	Pnone }
};	

/* DD Opcode Map */
struct map_entry itab_x87_opDD[0x8*0x8] = 
{
  { UD_Iffree,		ST0,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST1,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST2,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST3,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST4,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST5,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST6,	NOARG,	NOARG,	Pnone },
  { UD_Iffree,		ST7,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST0,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST1,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST2,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST3,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST4,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST5,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST6,	NOARG,	NOARG,	Pnone },
  { UD_Ifst,		ST7,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST0,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST1,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST2,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST3,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST4,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST5,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST6,	NOARG,	NOARG,	Pnone },
  { UD_Ifstp,		ST7,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST0,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST1,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST2,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST3,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST4,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST5,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST6,	NOARG,	NOARG,	Pnone },
  { UD_Ifucom,		ST7,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST0,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST1,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST2,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST3,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST4,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST5,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST6,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomp,		ST7,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

/* DE Opcode Map */
struct map_entry itab_x87_opDE[0x8*0x8] = 
{
  { UD_Ifaddp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifaddp,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifmulp,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifcompp,		NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifsubrp,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifsubp,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifdivrp,		ST7,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST1,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST2,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST3,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST4,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST5,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST6,	ST0,	NOARG,	Pnone },
  { UD_Ifdivp,		ST7,	ST0,	NOARG,	Pnone }
};

/* DF Opcode Map */
struct map_entry itab_x87_opDF[0x8*0x8] = 
{
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifnstsw,		AX,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifucomip,	ST0,	ST7,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST0,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST1,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST2,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST3,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST4,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST5,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST6,	NOARG,	Pnone },
  { UD_Ifcomip,		ST0,	ST7,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone },
  { UD_Iinvalid,	NOARG,	NOARG,	NOARG,	Pnone }
};

struct map_entry *itab_x87_reg[] = 
{
  itab_x87_opD8reg,
  itab_x87_opD9reg,
  itab_x87_opDAreg,
  itab_x87_opDBreg,
  itab_x87_opDCreg,
  itab_x87_opDDreg,
  itab_x87_opDEreg,
  itab_x87_opDFreg
};

struct map_entry *itab_x87[] = 
{
  itab_x87_opD8,
  itab_x87_opD9,
  itab_x87_opDA,
  itab_x87_opDB,
  itab_x87_opDC,
  itab_x87_opDD,
  itab_x87_opDE,
  itab_x87_opDF
};

/* AMD 3DNow! Instructions */
struct map_entry itab_3DNow =  
  { UD_I3dnow,	P,	Q,	NOARG };
struct map_entry nop = 
  { UD_Inop,	NOARG,	NOARG,	NOARG, Pnone };
struct map_entry pause = 
  { UD_Ipause,	NOARG,	NOARG,	NOARG, Pnone };
struct map_entry movsxd = 
  { UD_Imovsxd,	Gv,	Ed,	NOARG,	Pc2 | Po32 | Pa32 | REX(_X|_W|_B|_R) };
struct map_entry db = 
  { UD_Idb, Ib, NOARG, NOARG, Pnone };
struct map_entry invalid = 
  { UD_Iinvalid, NOARG, NOARG, NOARG, Pnone };

struct map_entry* ud_me_db() {
	return &db;
}

struct map_entry* ud_me_invalid() {
	return &invalid;
}

/* 3D Now instructions with suffix */
extern enum ud_mnemonic_code 
ud_map_get_3dnow(uint8_t suffix)
{
  switch(suffix) {
	case 0x0C: return UD_Ipi2fw;
	case 0x0D: return UD_Ipi2fd;
	case 0x1C: return UD_Ipf2iw;
	case 0x1D: return UD_Ipf2id;
	case 0x8A: return UD_Ipfnacc;
	case 0x8E: return UD_Ipfpnacc;
	case 0x90: return UD_Ipfcmpge;
	case 0x94: return UD_Ipfmin;
	case 0x96: return UD_Ipfrcp;
	case 0x97: return UD_Ipfrsqrt;
	case 0x9A: return UD_Ipfsub;
	case 0x9E: return UD_Ipfadd;
	case 0xA0: return UD_Ipfcmpgt;
	case 0xA4: return UD_Ipfmax;
	case 0xA6: return UD_Ipfrcpit1;
	case 0xA7: return UD_Ipfrsqit1;
	case 0xAA: return UD_Ipfsubr;
	case 0xAE: return UD_Ipfacc;
	case 0xB0: return UD_Ipfcmpeq;
	case 0xB4: return UD_Ipfmul;
	case 0xB6: return UD_Ipfrcpit2;
	case 0xB7: return UD_Ipmulhrw;
	case 0xBB: return UD_Ipswapd;
	case 0xBF: return UD_Ipavgusb;
  }
  return(0);
}

/* -----------------------------------------------------------------------------
 * search_1byte_insn() - Searches for 1-byte instructions.
 * -----------------------------------------------------------------------------
 */
static void
search_1byte_insn(register struct ud* u)
{
  u->mapen = &itab_1byte[inp_curr(u)];

  if (inp_curr(u) == 0x90) {
	if (!(u->dis_mode == 64 && P_REX_B(u->pfx_rex))) {
		if (u->pfx_rep) {
			u->mapen = &pause;
			u->pfx_rep = 0;
		} else  u->mapen = &nop;
	}
  } else if (u->dis_mode == 64 && (u->mapen)->mnemonic == UD_Iarpl)
	u->mapen = &movsxd;

  else if (u->mapen->mnemonic == UD_Igrp)
	u->mapen = &itab_groups[u->mapen->prefix].me_pfx_none[MODRM_REG(inp_peek(u))];

  else if ((u->mapen)->mnemonic == UD_Ix87) {
	if (inp_peek(u) <= 0xBF) {
		u->mapen = &itab_x87_reg[(inp_curr(u))-0xD8][MODRM_REG(inp_peek(u))];		
	}
	else {
		u->mapen = &itab_x87[inp_curr(u)-0xD8][inp_peek(u)-0xC0];
		inp_next(u);
	}
  }  
}

/* -----------------------------------------------------------------------------
 * search_2byte_insn() - Searches for 2-byte instructions.
 * -----------------------------------------------------------------------------
 */
static void
search_2byte_insn(register struct ud* u)
{
  uint32_t gindex;

  inp_next(u);

  if (u->pfx_insn == 0x66) {
	u->mapen = &itab_2byte_prefix66[inp_curr(u)];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina)
		u->pfx_opr = 0;
  } else if (u->pfx_insn == 0xF2) {
	u->mapen = &itab_2byte_prefixF2[inp_curr(u)];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina)
		u->pfx_repne = 0;
  } else if (u->pfx_insn == 0xF3) {
	u->mapen = &itab_2byte_prefixF3[inp_curr(u)];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina)
		u->pfx_rep = 0;
  }

  if (u->mapen == NULL || u->mapen->mnemonic == UD_Ina)
	u->mapen = &itab_2byte[inp_curr(u)];

  if (u->mapen->mnemonic == UD_I3dnow)
	u->mapen = &itab_3DNow;

  if (u->mapen->mnemonic != UD_Igrp)
	return;

  /* If instruction is in a Group */
  gindex = u->mapen->prefix + ((u->vendor == UD_VENDOR_INTEL) ? 
				ITAB_GROUPS_START_INTEL : 0);

  if (u->pfx_insn == 0x66 && itab_groups[gindex].me_pfx_66) {
	u->mapen = &itab_groups[gindex].me_pfx_66[MODRM_REG(inp_peek(u))];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina) {
		u->pfx_opr = 0;
		return;
	}
  }
  else if (u->pfx_insn == 0xF2 && itab_groups[gindex].me_pfx_f2) {
	u->mapen = &itab_groups[gindex].me_pfx_f2[MODRM_REG(inp_peek(u))];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina) {
		u->pfx_repne = 0;
		return;
	}
  }
  else if (u->pfx_insn == 0xF3 && itab_groups[gindex].me_pfx_f3) {
	u->mapen = &itab_groups[gindex].me_pfx_f3[MODRM_REG(inp_peek(u))];
	if (u->mapen != NULL && u->mapen->mnemonic != UD_Ina) {
		u->pfx_rep = 0;
		return;
	}
  }

  if (! u->pfx_insn || u->mapen->mnemonic == UD_Igrp)
	u->mapen = &itab_groups[gindex].me_pfx_none[MODRM_REG(inp_peek(u))];

  /* 0F01 - opcode extensions */
  if (inp_curr(u) == 0x01) {
	uint8_t reg = MODRM_REG(inp_peek(u));
	uint8_t mod = MODRM_MOD(inp_peek(u));
	uint8_t rm  = MODRM_RM(inp_peek(u));

	if (u->vendor == UD_VENDOR_INTEL) {
		if (reg == 0 && mod == 3) {
			u->mapen = &itab_g7_op0F01_Reg0_intel[rm];
			inp_next(u);
		} else if (reg == 1 && mod == 3) {
			u->mapen = &itab_g7_op0F01_Reg1_intel[rm];
			inp_next(u);
		} else if (reg == 7 && mod == 3) {
			u->mapen = &itab_g7_op0F01_Reg7_intel[rm];
			inp_next(u);
		}
	}
	else {
		if (reg == 3 && mod == 3) {
			u->mapen = &itab_g7_op0F01_Reg3[rm];
			inp_next(u);
		} else if (reg == 7 && mod == 3) {
			u->mapen = &itab_g7_op0F01_Reg7[rm];
			inp_next(u);
		} else u->mapen = &itab_g7_op0F01[reg];
	}	
  } 
  /* 0FAE - opcode extensions */
  else if (inp_curr(u) == 0xAE) {
	uint8_t reg = MODRM_REG(inp_peek(u));
	uint8_t mod = MODRM_MOD(inp_peek(u));

	if (reg == 5 && mod == 3) {
		u->mapen = &itab_gF_op0FAE_Reg5;
		inp_next(u);
	} else if (reg == 6 && mod == 3) {
		u->mapen = &itab_gF_op0FAE_Reg6;
		inp_next(u);
	} else if (reg == 7 && mod == 3) {
		u->mapen = &itab_gF_op0FAE_Reg7;
		inp_next(u);
	} else u->mapen = &itab_gF_op0FAE[reg];
  }
}

/* =============================================================================
 * ud_search_map() - Searches the x86 opcode table for the instruction
 * corresponding to the opcode given by next byte in the byte stream.
 * =============================================================================
 */
void ud_search_map(register struct ud* u) 
{
  inp_next(u);

  if (0x0F == inp_curr(u))
	search_2byte_insn(u);
  else	search_1byte_insn(u);

  u->mnemonic = u->mapen->mnemonic;
}

/* =============================================================================
 * ud_lookup_mnemonic() - Looks-up the mnemonic code.
 * =============================================================================
 */
const char* ud_lookup_mnemonic(ud_mnemonic_code_t c) 
{
  if (c < UD_I3vil) 
	return ud_mnemonics[c];
  return NULL;
}