/****************************************************************
 *								*
 *	Copyright 2007 Fidelity Information Services, Inc	*
 *								*
 *	This source code contains the intellectual property	*
 *	of its copyright holder(s), and is made available	*
 *	under a license.  If you do not know the terms of	*
 *	the license, please stop and do not read further.	*
 *								*
 ****************************************************************/

/* Two-Byte Opcodes: */
I386_OP(Grp6,Prefix,0x00)
I386_OP(Grp7,Prefix,0x01)
I386_OP(LAR,Gv_Ew,0x02)
I386_OP(LSL,Gv_Ew,0x03)
I386_OP(INVALID_2_BYTE_OP,04,0x04)
I386_OP(INVALID_2_BYTE_OP,05,0x05)
I386_OP(CLTS,_,0x06)
I386_OP(INVALID_2_BYTE_OP,07,0x07)

I386_OP(INVALID_2_BYTE_OP,08,0x08)
I386_OP(INVALID_2_BYTE_OP,09,0x09)
I386_OP(INVALID_2_BYTE_OP,0A,0x0a)
I386_OP(INVALID_2_BYTE_OP,0B,0x0b)
I386_OP(INVALID_2_BYTE_OP,0C,0x0c)
I386_OP(INVALID_2_BYTE_OP,0D,0x0d)
I386_OP(INVALID_2_BYTE_OP,0E,0x0e)
I386_OP(INVALID_2_BYTE_OP,0F,0x0f)

I386_OP(INVALID_2_BYTE_OP,10,0x10)
I386_OP(INVALID_2_BYTE_OP,11,0x11)
I386_OP(INVALID_2_BYTE_OP,12,0x12)
I386_OP(INVALID_2_BYTE_OP,13,0x13)
I386_OP(INVALID_2_BYTE_OP,14,0x14)
I386_OP(INVALID_2_BYTE_OP,15,0x15)
I386_OP(INVALID_2_BYTE_OP,16,0x16)
I386_OP(INVALID_2_BYTE_OP,17,0x17)

I386_OP(INVALID_2_BYTE_OP,18,0x18)
I386_OP(INVALID_2_BYTE_OP,19,0x19)
I386_OP(INVALID_2_BYTE_OP,1A,0x1a)
I386_OP(INVALID_2_BYTE_OP,1B,0x1b)
I386_OP(INVALID_2_BYTE_OP,1C,0x1c)
I386_OP(INVALID_2_BYTE_OP,1D,0x1d)
I386_OP(INVALID_2_BYTE_OP,1E,0x1e)
I386_OP(INVALID_2_BYTE_OP,1F,0x1f)

I386_OP(MOV,Rd_Cd,0x20)
I386_OP(MOV,Rd_Dd,0x21)
I386_OP(MOV,Cd_Rd,0x22)
I386_OP(MOV,Dd_Rd,0x23)
I386_OP(MOV,Rd_Td,0x24)
I386_OP(INVALID_2_BYTE_OP,25,0x25)
I386_OP(MOV,Td_Rd,0x26)
I386_OP(INVALID_2_BYTE_OP,27,0x27)

I386_OP(INVALID_2_BYTE_OP,28,0x28)
I386_OP(INVALID_2_BYTE_OP,29,0x29)
I386_OP(INVALID_2_BYTE_OP,2A,0x2a)
I386_OP(INVALID_2_BYTE_OP,2B,0x2b)
I386_OP(INVALID_2_BYTE_OP,2C,0x2c)
I386_OP(INVALID_2_BYTE_OP,2D,0x2d)
I386_OP(INVALID_2_BYTE_OP,2E,0x2e)
I386_OP(INVALID_2_BYTE_OP,2F,0x2f)

I386_OP(INVALID_2_BYTE_OP,30,0x30)
I386_OP(INVALID_2_BYTE_OP,31,0x31)
I386_OP(INVALID_2_BYTE_OP,32,0x32)
I386_OP(INVALID_2_BYTE_OP,33,0x33)
I386_OP(INVALID_2_BYTE_OP,34,0x34)
I386_OP(INVALID_2_BYTE_OP,35,0x35)
I386_OP(INVALID_2_BYTE_OP,36,0x36)
I386_OP(INVALID_2_BYTE_OP,37,0x37)

I386_OP(INVALID_2_BYTE_OP,38,0x38)
I386_OP(INVALID_2_BYTE_OP,39,0x39)
I386_OP(INVALID_2_BYTE_OP,3A,0x3a)
I386_OP(INVALID_2_BYTE_OP,3B,0x3b)
I386_OP(INVALID_2_BYTE_OP,3C,0x3c)
I386_OP(INVALID_2_BYTE_OP,3D,0x3d)
I386_OP(INVALID_2_BYTE_OP,3E,0x3e)
I386_OP(INVALID_2_BYTE_OP,3F,0x3f)

I386_OP(INVALID_2_BYTE_OP,40,0x40)
I386_OP(INVALID_2_BYTE_OP,41,0x41)
I386_OP(INVALID_2_BYTE_OP,42,0x42)
I386_OP(INVALID_2_BYTE_OP,43,0x43)
I386_OP(INVALID_2_BYTE_OP,44,0x44)
I386_OP(INVALID_2_BYTE_OP,45,0x45)
I386_OP(INVALID_2_BYTE_OP,46,0x46)
I386_OP(INVALID_2_BYTE_OP,47,0x47)

I386_OP(INVALID_2_BYTE_OP,48,0x48)
I386_OP(INVALID_2_BYTE_OP,49,0x49)
I386_OP(INVALID_2_BYTE_OP,4A,0x4a)
I386_OP(INVALID_2_BYTE_OP,4B,0x4b)
I386_OP(INVALID_2_BYTE_OP,4C,0x4c)
I386_OP(INVALID_2_BYTE_OP,4D,0x4d)
I386_OP(INVALID_2_BYTE_OP,4E,0x4e)
I386_OP(INVALID_2_BYTE_OP,4F,0x4f)

I386_OP(INVALID_2_BYTE_OP,50,0x50)
I386_OP(INVALID_2_BYTE_OP,51,0x51)
I386_OP(INVALID_2_BYTE_OP,52,0x52)
I386_OP(INVALID_2_BYTE_OP,53,0x53)
I386_OP(INVALID_2_BYTE_OP,54,0x54)
I386_OP(INVALID_2_BYTE_OP,55,0x55)
I386_OP(INVALID_2_BYTE_OP,56,0x56)
I386_OP(INVALID_2_BYTE_OP,57,0x57)

I386_OP(INVALID_2_BYTE_OP,58,0x58)
I386_OP(INVALID_2_BYTE_OP,59,0x59)
I386_OP(INVALID_2_BYTE_OP,5A,0x5a)
I386_OP(INVALID_2_BYTE_OP,5B,0x5b)
I386_OP(INVALID_2_BYTE_OP,5C,0x5c)
I386_OP(INVALID_2_BYTE_OP,5D,0x5d)
I386_OP(INVALID_2_BYTE_OP,5E,0x5e)
I386_OP(INVALID_2_BYTE_OP,5F,0x5f)

I386_OP(INVALID_2_BYTE_OP,60,0x60)
I386_OP(INVALID_2_BYTE_OP,61,0x61)
I386_OP(INVALID_2_BYTE_OP,62,0x62)
I386_OP(INVALID_2_BYTE_OP,63,0x63)
I386_OP(INVALID_2_BYTE_OP,64,0x64)
I386_OP(INVALID_2_BYTE_OP,65,0x65)
I386_OP(INVALID_2_BYTE_OP,66,0x66)
I386_OP(INVALID_2_BYTE_OP,67,0x67)

I386_OP(INVALID_2_BYTE_OP,68,0x68)
I386_OP(INVALID_2_BYTE_OP,69,0x69)
I386_OP(INVALID_2_BYTE_OP,6A,0x6a)
I386_OP(INVALID_2_BYTE_OP,6B,0x6b)
I386_OP(INVALID_2_BYTE_OP,6C,0x6c)
I386_OP(INVALID_2_BYTE_OP,6D,0x6d)
I386_OP(INVALID_2_BYTE_OP,6E,0x6e)
I386_OP(INVALID_2_BYTE_OP,6F,0x6f)

I386_OP(INVALID_2_BYTE_OP,70,0x70)
I386_OP(INVALID_2_BYTE_OP,71,0x71)
I386_OP(INVALID_2_BYTE_OP,72,0x72)
I386_OP(INVALID_2_BYTE_OP,73,0x73)
I386_OP(INVALID_2_BYTE_OP,74,0x74)
I386_OP(INVALID_2_BYTE_OP,75,0x75)
I386_OP(INVALID_2_BYTE_OP,76,0x76)
I386_OP(INVALID_2_BYTE_OP,77,0x77)

I386_OP(INVALID_2_BYTE_OP,78,0x78)
I386_OP(INVALID_2_BYTE_OP,79,0x79)
I386_OP(INVALID_2_BYTE_OP,7A,0x7a)
I386_OP(INVALID_2_BYTE_OP,7B,0x7b)
I386_OP(INVALID_2_BYTE_OP,7C,0x7c)
I386_OP(INVALID_2_BYTE_OP,7D,0x7d)
I386_OP(INVALID_2_BYTE_OP,7E,0x7e)
I386_OP(INVALID_2_BYTE_OP,7F,0x7f)

I386_OP(JO,Jv,0x80)
I386_OP(JNO,Jv,0x81)
I386_OP(JB,Jv,0x82)
I386_OP(JNB,Jv,0x83)
I386_OP(JZ,Jv,0x84)
I386_OP(JNZ,Jv,0x85)
I386_OP(JBE,Jv,0x86)
I386_OP(JNBE,Jv,0x87)

I386_OP(JS,Jv,0x88)
I386_OP(JNS,Jv,0x89)
I386_OP(JP,Jv,0x8a)
I386_OP(JNP,Jv,0x8b)
I386_OP(JL,Jv,0x8c)
I386_OP(JNL,Jv,0x8d)
I386_OP(JLE,Jv,0x8e)
I386_OP(JNLE,Jv,0x8f)

I386_OP(SETO,Eb,0x90)
I386_OP(SETNO,Eb,0x91)
I386_OP(SETB,Eb,0x92)
I386_OP(SETNB,Eb,0x93)
I386_OP(SETZ,Eb,0x94)
I386_OP(SETNZ,Eb,0x95)
I386_OP(SETBE,Eb,0x96)
I386_OP(SETNBE,Eb,0x97)

I386_OP(SETS,Eb,0x98)
I386_OP(SETNS,Eb,0x99)
I386_OP(SETP,Eb,0x9a)
I386_OP(SETNP,Eb,0x9b)
I386_OP(SETL,Eb,0x9c)
I386_OP(SETNL,Eb,0x9d)
I386_OP(SETLE,Eb,0x9e)
I386_OP(SETNLE,Eb,0x9f)

I386_OP(PUSH,FS,0xa0)
I386_OP(POP,FS,0xa1)
I386_OP(INVALID_2_BYTE_OP,A2,0xa2)
I386_OP(BT,Ev_Gv,0xa3)
I386_OP(SHLD,EvGvIb,0xa4)
I386_OP(SHLD,EvGvCL,0xa5)
I386_OP(INVALID_2_BYTE_OP,A6,0xa6)
I386_OP(INVALID_2_BYTE_OP,A7,0xa7)

I386_OP(PUSH,GS,0xa8)
I386_OP(POP,GS,0xa9)
I386_OP(INVALID_2_BYTE_OP,AA,0xaa)
I386_OP(BTS,Ev_Gv,0xab)
I386_OP(SHRD,EvGvIb,0xac)
I386_OP(SHRD,EvGvCL,0xad)
I386_OP(INVALID_2_BYTE_OP,AE,0xae)
I386_OP(IMUL,Gv_Ev,0xaf)

I386_OP(INVALID_2_BYTE_OP,B0,0xb0)
I386_OP(INVALID_2_BYTE_OP,B1,0xb1)
I386_OP(LSS,Mp,0xb2)
I386_OP(BTR,Ev_Gv,0xb3)
I386_OP(LFS,Mp,0xb4)
I386_OP(LGS,Mp,0xb5)
I386_OP(MOVZX,Gv_Eb,0xb6)
I386_OP(MOVZX,Gv_Ew,0xb7)

I386_OP(INVALID_2_BYTE_OP,B8,0xb8)
I386_OP(INVALID_2_BYTE_OP,B9,0xb9)
I386_OP(Grp8,Ev_Ib,0xba)
I386_OP(BTC,Ev_Gv,0xbb)
I386_OP(BSF,Gv_Ev,0xbc)
I386_OP(BSR,Gv_Ev,0xbd)
I386_OP(MOVSX,Gv_Eb,0xbe)
I386_OP(MOVSX,Gv_Ew,0xbf)

I386_OP(INVALID_2_BYTE_OP,C0,0xc0)
I386_OP(INVALID_2_BYTE_OP,C1,0xc1)
I386_OP(INVALID_2_BYTE_OP,C2,0xc2)
I386_OP(INVALID_2_BYTE_OP,C3,0xc3)
I386_OP(INVALID_2_BYTE_OP,C4,0xc4)
I386_OP(INVALID_2_BYTE_OP,C5,0xc5)
I386_OP(INVALID_2_BYTE_OP,C6,0xc6)
I386_OP(INVALID_2_BYTE_OP,C7,0xc7)

I386_OP(INVALID_2_BYTE_OP,C8,0xc8)
I386_OP(INVALID_2_BYTE_OP,C9,0xc9)
I386_OP(INVALID_2_BYTE_OP,CA,0xca)
I386_OP(INVALID_2_BYTE_OP,CB,0xcb)
I386_OP(INVALID_2_BYTE_OP,CC,0xcc)
I386_OP(INVALID_2_BYTE_OP,CD,0xcd)
I386_OP(INVALID_2_BYTE_OP,CE,0xce)
I386_OP(INVALID_2_BYTE_OP,CF,0xcf)

I386_OP(INVALID_2_BYTE_OP,D0,0xd0)
I386_OP(INVALID_2_BYTE_OP,D1,0xd1)
I386_OP(INVALID_2_BYTE_OP,D2,0xd2)
I386_OP(INVALID_2_BYTE_OP,D3,0xd3)
I386_OP(INVALID_2_BYTE_OP,D4,0xd4)
I386_OP(INVALID_2_BYTE_OP,D5,0xd5)
I386_OP(INVALID_2_BYTE_OP,D6,0xd6)
I386_OP(INVALID_2_BYTE_OP,D7,0xd7)

I386_OP(INVALID_2_BYTE_OP,D8,0xd8)
I386_OP(INVALID_2_BYTE_OP,D9,0xd9)
I386_OP(INVALID_2_BYTE_OP,DA,0xda)
I386_OP(INVALID_2_BYTE_OP,DB,0xdb)
I386_OP(INVALID_2_BYTE_OP,DC,0xdc)
I386_OP(INVALID_2_BYTE_OP,DD,0xdd)
I386_OP(INVALID_2_BYTE_OP,DE,0xde)
I386_OP(INVALID_2_BYTE_OP,DF,0xdf)

I386_OP(INVALID_2_BYTE_OP,E0,0xe0)
I386_OP(INVALID_2_BYTE_OP,E1,0xe1)
I386_OP(INVALID_2_BYTE_OP,E2,0xe2)
I386_OP(INVALID_2_BYTE_OP,E3,0xe3)
I386_OP(INVALID_2_BYTE_OP,E4,0xe4)
I386_OP(INVALID_2_BYTE_OP,E5,0xe5)
I386_OP(INVALID_2_BYTE_OP,E6,0xe6)
I386_OP(INVALID_2_BYTE_OP,E7,0xe7)

I386_OP(INVALID_2_BYTE_OP,E8,0xe8)
I386_OP(INVALID_2_BYTE_OP,E9,0xe9)
I386_OP(INVALID_2_BYTE_OP,EA,0xea)
I386_OP(INVALID_2_BYTE_OP,EB,0xeb)
I386_OP(INVALID_2_BYTE_OP,EC,0xec)
I386_OP(INVALID_2_BYTE_OP,ED,0xed)
I386_OP(INVALID_2_BYTE_OP,EE,0xee)
I386_OP(INVALID_2_BYTE_OP,EF,0xef)

I386_OP(INVALID_2_BYTE_OP,F0,0xf0)
I386_OP(INVALID_2_BYTE_OP,F1,0xf1)
I386_OP(INVALID_2_BYTE_OP,F2,0xf2)
I386_OP(INVALID_2_BYTE_OP,F3,0xf3)
I386_OP(INVALID_2_BYTE_OP,F4,0xf4)
I386_OP(INVALID_2_BYTE_OP,F5,0xf5)
I386_OP(INVALID_2_BYTE_OP,F6,0xf6)
I386_OP(INVALID_2_BYTE_OP,F7,0xf7)

I386_OP(INVALID_2_BYTE_OP,F8,0xf8)
I386_OP(INVALID_2_BYTE_OP,F9,0xf9)
I386_OP(INVALID_2_BYTE_OP,FA,0xfa)
I386_OP(INVALID_2_BYTE_OP,FB,0xfb)
I386_OP(INVALID_2_BYTE_OP,FC,0xfc)
I386_OP(INVALID_2_BYTE_OP,FD,0xfd)
I386_OP(INVALID_2_BYTE_OP,FE,0xfe)
I386_OP(INVALID_2_BYTE_OP,FF,0xff)
