
static const UINT32 optbl[0x100] = {
		// 00
		OP_BE(RSTR_ADD,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_ADD,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_ADD,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_ADD,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_ADD,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_ADD,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_PUSH,	OP_SEG,	0,		0),
		OP_W_(RSTR_POP,		OP_SEG,	0,		0),
		OP_BE(RSTR_OR,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_OR,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_OR,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_OR,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_OR,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_OR,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_PUSH,	OP_SEG,	0,		0),
		OP_PF(OPF_286,		0),

		// 10
		OP_BE(RSTR_ADC,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_ADC,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_ADC,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_ADC,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_ADC,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_ADC,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_PUSH,	OP_SEG,	0,		0),
		OP_W_(RSTR_POP,		OP_SEG,	0,		0),
		OP_BE(RSTR_SBB,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_SBB,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_SBB,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_SBB,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_SBB,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_SBB,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_PUSH,	OP_SEG,	0,		0),
		OP_W_(RSTR_POP,		OP_SEG,	0,		0),

		// 20
		OP_BE(RSTR_AND,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_AND,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_AND,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_AND,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_AND,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_AND,		OP_AX,	OP_IMM,	0),
		OP_PF(OPF_SOR,		UAFLAG_ES),
		OP_F1(RSTR_DAA,		0),
		OP_BE(RSTR_SUB,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_SUB,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_SUB,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_SUB,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_SUB,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_SUB,		OP_AX,	OP_IMM,	0),
		OP_PF(OPF_SOR,		UAFLAG_CS),
		OP_F1(RSTR_DAS,		0),

		// 30
		OP_BE(RSTR_XOR,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_XOR,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_XOR,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_XOR,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_XOR,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_XOR,		OP_AX,	OP_IMM,	0),
		OP_PF(OPF_SOR,		UAFLAG_SS),
		OP_F1(RSTR_AAA,		0),
		OP_BE(RSTR_CMP,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_CMP,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_CMP,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_CMP,		OP_REG,	OP_EA,	0),
		OP_B_(RSTR_CMP,		OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_CMP,		OP_AX,	OP_IMM,	0),
		OP_PF(OPF_SOR,		UAFLAG_DS),
		OP_F1(RSTR_AAS,		0),

		// 40
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_INC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),
		OP_W_(RSTR_DEC,		OP_MR,	0,		0),

		// 50
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_PUSH,	OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),
		OP_W_(RSTR_POP,		OP_MR,	0,		0),

		// 60
		OP_F1(RSTR_PUSHA,	OP1_32),
		OP_F1(RSTR_POPA,	OP1_32),
		OP_WE(RSTR_BOUND,	OP_REG,	OP_EA,	0),
		OP_WE(RSTR_ARPL,	OP_EA,	OP_REG,	0),
		OP_PF(OPF_SOR,		UAFLAG_FS),
		OP_PF(OPF_SOR,		UAFLAG_GS),
		OP_PF(OPF_OPE,		0),
		OP_PF(OPF_ADDR,		0),
		OP_W_(RSTR_PUSH,	OP_IMM,	0,		0),
		OP_WE(RSTR_IMUL,	OP_REG,	OP_EA,	OP_IMM),
		OP_W_(RSTR_PUSH,	OP_IS8,	0,		0),
		OP_WE(RSTR_IMUL,	OP_REG,	OP_EA,	OP_I8),
		OP_Fb(RSTR_INS,		OP1_STR),
		OP_F1(RSTR_INS,		OP1_STR),
		OP_Fb(RSTR_OUTS,	OP1_STR),
		OP_F1(RSTR_OUTS,	OP1_STR),

		// 70
		OP_F1(RSTR_JCC+0,	OP1_SHORT),
		OP_F1(RSTR_JCC+1,	OP1_SHORT),
		OP_F1(RSTR_JCC+2,	OP1_SHORT),
		OP_F1(RSTR_JCC+3,	OP1_SHORT),
		OP_F1(RSTR_JCC+4,	OP1_SHORT),
		OP_F1(RSTR_JCC+5,	OP1_SHORT),
		OP_F1(RSTR_JCC+6,	OP1_SHORT),
		OP_F1(RSTR_JCC+7,	OP1_SHORT),
		OP_F1(RSTR_JCC+8,	OP1_SHORT),
		OP_F1(RSTR_JCC+9,	OP1_SHORT),
		OP_F1(RSTR_JCC+10,	OP1_SHORT),
		OP_F1(RSTR_JCC+11,	OP1_SHORT),
		OP_F1(RSTR_JCC+12,	OP1_SHORT),
		OP_F1(RSTR_JCC+13,	OP1_SHORT),
		OP_F1(RSTR_JCC+14,	OP1_SHORT),
		OP_F1(RSTR_JCC+15,	OP1_SHORT),

		// 80
		OP_T3(OP3_80),
		OP_T3(OP3_81),
		OP_T3(OP3_80),
		OP_T3(OP3_83),
		OP_BE(RSTR_TEST,	OP_EA,	OP_REG,	0),
		OP_WE(RSTR_TEST,	OP_EA,	OP_REG,	0),
		OP_BE(RSTR_XCHG,	OP_EA,	OP_REG,	0),
		OP_WE(RSTR_XCHG,	OP_EA,	OP_REG,	0),
		OP_BE(RSTR_MOV,		OP_EA,	OP_REG,	0),
		OP_WE(RSTR_MOV,		OP_EA,	OP_REG,	0),
		OP_BE(RSTR_MOV,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_MOV,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_MOV,		OP_EA,	OP_SEG,	0),
		OP_WE(RSTR_LEA,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_MOV,		OP_SEG,	OP_EA,	0),
		OP_WE(RSTR_POP,		OP_PEA,	0,		0),

		// 90
		OP_F1(RSTR_NOP,		0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_W_(RSTR_XCHG,	OP_AX,	OP_MR,	0),
		OP_F1(RSTR_CBW,		OP1_32),
		OP_F1(RSTR_CWD,		OP1_32),
		OP_F1(RSTR_CALL,	OP1_FAR),
		OP_F1(RSTR_WAIT,	0),
		OP_F1(RSTR_PUSHF,	OP1_32),
		OP_F1(RSTR_POPF,	OP1_32),
		OP_F1(RSTR_SAHF,	0),
		OP_F1(RSTR_LAHF,	0),

		// a0
		OP_B_(RSTR_MOV,		OP_AX,	OP_MEM,	0),
		OP_W_(RSTR_MOV,		OP_AX,	OP_MEM,	0),
		OP_B_(RSTR_MOV,		OP_MEM,	OP_AX,	0),
		OP_W_(RSTR_MOV,		OP_MEM,	OP_AX,	0),
		OP_Fb(RSTR_MOVS,	OP1_STR),
		OP_F1(RSTR_MOVS,	OP1_STR),
		OP_Fb(RSTR_CMPS,	OP1_STR),
		OP_F1(RSTR_CMPS,	OP1_STR),
		OP_B_(RSTR_TEST,	OP_AX,	OP_IMM,	0),
		OP_W_(RSTR_TEST,	OP_AX,	OP_IMM,	0),
		OP_Fb(RSTR_STOS,	OP1_STR),
		OP_F1(RSTR_STOS,	OP1_STR),
		OP_Fb(RSTR_LODS,	OP1_STR),
		OP_F1(RSTR_LODS,	OP1_STR),
		OP_Fb(RSTR_SCAS,	OP1_STR),
		OP_F1(RSTR_SCAS,	OP1_STR),

		// b0
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_B_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),
		OP_W_(RSTR_MOV,		OP_MR,	OP_IMM,	0),

		// c0
		OP_T3(OP3_c0),
		OP_T3(OP3_c1),
		OP_W_(RSTR_RET,		OP_I16,	0,		0),
		OP_F1(RSTR_RET,		0),
		OP_WE(RSTR_LES,		OP_REG,	OP_EA,	0),
		OP_WE(RSTR_LDS,		OP_REG,	OP_EA,	0),
		OP_BE(RSTR_MOV,		OP_EA,	OP_IMM,	0),
		OP_WE(RSTR_MOV,		OP_EA,	OP_IMM,	0),
		OP_W_(RSTR_ENTER,	OP_I16,	OP_I8,	0),
		OP_F1(RSTR_LEAVE,	0),
		OP_W_(RSTR_RETF,	OP_I16,	0,		0),
		OP_F1(RSTR_RETF,	0),
		OP_F1(RSTR_INT,		OP1_3),
		OP_W_(RSTR_INT,		OP_I8,	0,		0),
		OP_F1(RSTR_INTO,	0),
		OP_F1(RSTR_IRET,	OP1_32),

		// d0
		OP_T3(OP3_d0),
		OP_T3(OP3_d1),
		OP_T3(OP3_d2),
		OP_T3(OP3_d3),
		OP_F1(RSTR_AAM,		OP1_I10),
		OP_F1(RSTR_AAD,		OP1_I10),
		OP_F1(RSTR_SALC,	0),
		OP_F1(RSTR_XLAT,	OP1_SOR),
		OP_PF(OPF_FPU,		0),
		OP_PF(OPF_FPU,		1),
		OP_PF(OPF_FPU,		2),
		OP_PF(OPF_FPU,		3),
		OP_PF(OPF_FPU,		4),
		OP_PF(OPF_FPU,		5),
		OP_PF(OPF_FPU,		6),
		OP_PF(OPF_FPU,		7),

		// e0
		OP_F1(RSTR_LOOPNZ,	OP1_SHORT),
		OP_F1(RSTR_LOOPZ,	OP1_SHORT),
		OP_F1(RSTR_LOOP,	OP1_SHORT),
		OP_F1(RSTR_JCXZ,	OP1_JCXZ),
		OP_B_(RSTR_IN,		OP_AX,	OP_I8,	0),
		OP_W_(RSTR_IN,		OP_AX,	OP_I8,	0),
		OP_B_(RSTR_OUT,		OP_I8,	OP_AX,	0),
		OP_W_(RSTR_OUT,		OP_I8,	OP_AX,	0),
		OP_F1(RSTR_CALL,	OP1_NEAR),
		OP_F1(RSTR_JMP,		OP1_NEAR),
		OP_F1(RSTR_JMP,		OP1_FAR),
		OP_F1(RSTR_JMP,		OP1_SHORT),
		OP_B_(RSTR_IN,		OP_AX,	OP_DX,	0),
		OP_W_(RSTR_IN,		OP_AX,	OP_DX,	0),
		OP_B_(RSTR_OUT,		OP_DX,	OP_AX,	0),
		OP_W_(RSTR_OUT,		OP_DX,	OP_AX,	0),

		// f0
		OP_PF(OPF_REP,		UAFLAG_RL),
		OP_W_(RSTR_INT,		OP_1,	0,		0),
		OP_PF(OPF_REP,		UAFLAG_RNE),
		OP_PF(OPF_REP,		UAFLAG_RE),
		OP_F1(RSTR_HLT,		0),
		OP_F1(RSTR_CMC,		0),
		OP_T3(OP3_f6),
		OP_T3(OP3_f7),
		OP_F1(RSTR_CLC,		0),
		OP_F1(RSTR_STC,		0),
		OP_F1(RSTR_CLI,		0),
		OP_F1(RSTR_STI,		0),
		OP_F1(RSTR_CLD,		0),
		OP_F1(RSTR_STD,		0),
		OP_T3(OP3_fe),
		OP_T3(OP3_ff),
};

