Index: /trunk/include/VBox/dis.h
===================================================================
--- /trunk/include/VBox/dis.h	(revision 8298)
+++ /trunk/include/VBox/dis.h	(revision 8299)
@@ -60,17 +60,17 @@
 #define PREFIX_NONE                     0
 /** non-default address size. */
-#define PREFIX_ADDRSIZE                 1
+#define PREFIX_ADDRSIZE                 RT_BIT(0)
 /** non-default operand size. */
-#define PREFIX_OPSIZE                   2
+#define PREFIX_OPSIZE                   RT_BIT(1)
 /** lock prefix. */
-#define PREFIX_LOCK                     4
+#define PREFIX_LOCK                     RT_BIT(2)
 /** segment prefix. */
-#define PREFIX_SEG                      8
+#define PREFIX_SEG                      RT_BIT(3)
 /** rep(e) prefix (not a prefix, but we'll treat is as one). */
-#define PREFIX_REP                      16
+#define PREFIX_REP                      RT_BIT(4)
 /** rep(e) prefix (not a prefix, but we'll treat is as one). */
-#define PREFIX_REPNE                    32
+#define PREFIX_REPNE                    RT_BIT(5)
 /** REX prefix (64 bits) */
-#define PREFIX_REX                      64
+#define PREFIX_REX                      RT_BIT(6)
 /** @} */
 
@@ -78,21 +78,21 @@
  * @{
  */
-#define PREFIX_REX_OP_2_FLAGS(a)        (a - OP_REX)
-#define PREFIX_REX_FLAGS                PREFIX_REX_OP_2_FLAGS(OP_REX)
-#define PREFIX_REX_FLAGS_B              PREFIX_REX_OP_2_FLAGS(OP_REX_B)
-#define PREFIX_REX_FLAGS_X              PREFIX_REX_OP_2_FLAGS(OP_REX_X)
-#define PREFIX_REX_FLAGS_XB             PREFIX_REX_OP_2_FLAGS(OP_REX_XB)
-#define PREFIX_REX_FLAGS_R              PREFIX_REX_OP_2_FLAGS(OP_REX_R)
-#define PREFIX_REX_FLAGS_RB             PREFIX_REX_OP_2_FLAGS(OP_REX_RB)
-#define PREFIX_REX_FLAGS_RX             PREFIX_REX_OP_2_FLAGS(OP_REX_RX)
-#define PREFIX_REX_FLAGS_RXB            PREFIX_REX_OP_2_FLAGS(OP_REX_RXB)
-#define PREFIX_REX_FLAGS_W              PREFIX_REX_OP_2_FLAGS(OP_REX_W)
-#define PREFIX_REX_FLAGS_WB             PREFIX_REX_OP_2_FLAGS(OP_REX_WB)
-#define PREFIX_REX_FLAGS_WX             PREFIX_REX_OP_2_FLAGS(OP_REX_WX)
-#define PREFIX_REX_FLAGS_WXB            PREFIX_REX_OP_2_FLAGS(OP_REX_WXB)
-#define PREFIX_REX_FLAGS_WR             PREFIX_REX_OP_2_FLAGS(OP_REX_WR)
-#define PREFIX_REX_FLAGS_WRB            PREFIX_REX_OP_2_FLAGS(OP_REX_WRB)
-#define PREFIX_REX_FLAGS_WRX            PREFIX_REX_OP_2_FLAGS(OP_REX_WRX)
-#define PREFIX_REX_FLAGS_WRXB           PREFIX_REX_OP_2_FLAGS(OP_REX_WRXB)
+#define PREFIX_REX_OP_2_FLAGS(a)        (a - OP_PARM_REX_START)
+#define PREFIX_REX_FLAGS                PREFIX_REX_OP_2_FLAGS(OP_PARM_REX)
+#define PREFIX_REX_FLAGS_B              PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_B)
+#define PREFIX_REX_FLAGS_X              PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_X)
+#define PREFIX_REX_FLAGS_XB             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_XB)
+#define PREFIX_REX_FLAGS_R              PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_R)
+#define PREFIX_REX_FLAGS_RB             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RB)
+#define PREFIX_REX_FLAGS_RX             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RX)
+#define PREFIX_REX_FLAGS_RXB            PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_RXB)
+#define PREFIX_REX_FLAGS_W              PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_W)
+#define PREFIX_REX_FLAGS_WB             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WB)
+#define PREFIX_REX_FLAGS_WX             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WX)
+#define PREFIX_REX_FLAGS_WXB            PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WXB)
+#define PREFIX_REX_FLAGS_WR             PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WR)
+#define PREFIX_REX_FLAGS_WRB            PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRB)
+#define PREFIX_REX_FLAGS_WRX            PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRX)
+#define PREFIX_REX_FLAGS_WRXB           PREFIX_REX_OP_2_FLAGS(OP_PARM_REX_WRXB)
 /** @} */
 
Index: /trunk/include/VBox/disopcode.h
===================================================================
--- /trunk/include/VBox/disopcode.h	(revision 8298)
+++ /trunk/include/VBox/disopcode.h	(revision 8299)
@@ -50,193 +50,192 @@
 #define OP_REPNE        4
 #define OP_REPE         5
-#define OP_LOCK         6   /* disassembler assumes this is the last prefix byte value!!!! */
-#define OP_AND          7
-#define OP_OR           8
-#define OP_DAA          9
-#define OP_SUB          10
-#define OP_DAS          11
-#define OP_XOR          12
-#define OP_AAA          13
-#define OP_CMP          14
-#define OP_IMM_GRP1     15
-#define OP_AAS          16
-#define OP_INC          17
-#define OP_DEC          18
-#define OP_PUSHA        19
-#define OP_POPA         20
-#define OP_BOUND        21
-#define OP_ARPL         22
-#define OP_PUSH         23
-#define OP_POP          24
-#define OP_IMUL         25
-#define OP_INSB         26
-#define OP_INSWD        27
-#define OP_OUTSB        28
-#define OP_OUTSWD       29
-#define OP_JO           30
-#define OP_JNO          31
-#define OP_JC           32
-#define OP_JNC          33
-#define OP_JE           34
-#define OP_JNE          35
-#define OP_JBE          36
-#define OP_JNBE         37
-#define OP_JS           38
-#define OP_JNS          39
-#define OP_JP           40
-#define OP_JNP          41
-#define OP_JL           42
-#define OP_JNL          43
-#define OP_JLE          44
-#define OP_JNLE         45
-#define OP_ADD          46
-#define OP_TEST         47
-#define OP_XCHG         48
-#define OP_MOV          49
-#define OP_LEA          50
-#define OP_NOP          51
-#define OP_CBW          52
-#define OP_CWD          53
-#define OP_CALL         54
-#define OP_WAIT         55
-#define OP_PUSHF        56
-#define OP_POPF         57
-#define OP_SAHF         58
-#define OP_LAHF         59
-#define OP_MOVSB        60
-#define OP_MOVSWD       61
-#define OP_CMPSB        62
-#define OP_CMPWD        63
-#define OP_STOSB        64
-#define OP_STOSWD       65
-#define OP_LODSB        66
-#define OP_LODSWD       67
-#define OP_SCASB        68
-#define OP_SCASWD       69
-#define OP_SHIFT_GRP2   70
-#define OP_RETN         71
-#define OP_LES          72
-#define OP_LDS          73
-#define OP_ENTER        74
-#define OP_LEAVE        75
-#define OP_RETF         76
-#define OP_INT3         77
-#define OP_INT          78
-#define OP_INTO         79
-#define OP_IRET         80
-#define OP_AAM          81
-#define OP_AAD          82
-#define OP_XLAT         83
-#define OP_ESCF0        84
-#define OP_ESCF1        85
-#define OP_ESCF2        86
-#define OP_ESCF3        87
-#define OP_ESCF4        88
-#define OP_ESCF5        89
-#define OP_ESCF6        90
-#define OP_ESCF7        91
-#define OP_LOOPNE       92
-#define OP_LOOPE        93
-#define OP_LOOP         94
-#define OP_JECXZ        95
-#define OP_IN           96
-#define OP_OUT          97
-#define OP_JMP          98
-#define OP_2B_ESC       99
-#define OP_ADC          100
-#define OP_SBB          101
-#define OP_HLT          102
-#define OP_CMC          103
-#define OP_UNARY_GRP3   104
-#define OP_CLC          105
-#define OP_STC          106
-#define OP_CLI          107
-#define OP_STI          108
-#define OP_CLD          109
-#define OP_STD          110
-#define OP_INC_GRP4     111
-#define OP_IND_GRP5     112
-#define OP_GRP6         113
-#define OP_GRP7         114
-#define OP_LAR          115
-#define OP_LSL          116
-#define OP_SYSCALL      117
-#define OP_CLTS         118
-#define OP_SYSRET       119
-#define OP_INVD         120
-#define OP_WBINVD       121
-#define OP_ILLUD2       122
-#define OP_FEMMS        123
-#define OP_3DNOW        124
-#define OP_MOVUPS       125
-#define OP_MOVLPS       126
-#define OP_UNPCKLPS     127
-#define OP_MOVHPS       128
-#define OP_UNPCKHPS     129
-#define OP_PREFETCH_GRP16   130
-#define OP_MOV_CR       131
-#define OP_MOVAPS       132
-#define OP_CVTPI2PS     133
-#define OP_MOVNTPS      134
-#define OP_CVTTPS2PI    135
-#define OP_CVTPS2PI     136
-#define OP_UCOMISS      137
-#define OP_COMISS       138
-#define OP_WRMSR        139
-#define OP_RDTSC        140
-#define OP_RDMSR        141
-#define OP_RPPMC        142
-#define OP_SYSENTER     143
-#define OP_SYSEXIT      144
-#define OP_PAUSE        145
-#define OP_CMOVO        146
-#define OP_CMOVNO       147
-#define OP_CMOVC        148
-#define OP_CMOVNC       149
-#define OP_CMOVZ        150
-#define OP_CMOVNZ       151
-#define OP_CMOVBE       152
-#define OP_CMOVNBE      153
-#define OP_CMOVS        154
-#define OP_CMOVNS       155
-#define OP_CMOVP        156
-#define OP_CMOVNP       157
-#define OP_CMOVL        158
-#define OP_CMOVNL       159
-#define OP_CMOVLE       160
-#define OP_CMOVNLE      161
-#define OP_MOVMSKPS     162
-#define OP_SQRTPS       163
-#define OP_RSQRTPS      164
-#define OP_RCPPS        165
-#define OP_ANDPS        166
-#define OP_ANDNPS       167
-#define OP_ORPS         168
-#define OP_XORPS        169
-#define OP_ADDPS        170
-#define OP_MULPS        171
-#define OP_CVTPS2PD     172
-#define OP_CVTDQ2PS     173
-#define OP_SUBPS        174
-#define OP_MINPS        175
-#define OP_DIVPS        176
-#define OP_MAXPS        177
-#define OP_PUNPCKLBW    178
-#define OP_PUNPCKLWD    179
-#define OP_PUNPCKLDQ    180
-#define OP_PACKSSWB     181
-#define OP_PCMPGTB      182
-#define OP_PCMPGTW      183
-#define OP_PCMPGTD      184
-#define OP_PACKUSWB     185
-#define OP_PUNPCKHBW    186
-#define OP_PUNPCKHWD    187
-#define OP_PUNPCKHDQ    188
-#define OP_PACKSSDW     189
-#define OP_MOVD         190
-#define OP_MOVQ         191
-#define OP_PSHUFW       192
-
-
+#define OP_REX          6
+#define OP_LOCK         7   /* disassembler assumes this is the last prefix byte value!!!! */
+#define OP_AND          8
+#define OP_OR           9
+#define OP_DAA          10
+#define OP_SUB          11
+#define OP_DAS          12
+#define OP_XOR          13
+#define OP_AAA          14
+#define OP_CMP          15
+#define OP_IMM_GRP1     16
+#define OP_AAS          17
+#define OP_INC          18
+#define OP_DEC          19
+#define OP_PUSHA        20
+#define OP_POPA         21
+#define OP_BOUND        22
+#define OP_ARPL         23
+#define OP_PUSH         24
+#define OP_POP          25
+#define OP_IMUL         26
+#define OP_INSB         27
+#define OP_INSWD        28
+#define OP_OUTSB        29
+#define OP_OUTSWD       30
+#define OP_JO           31
+#define OP_JNO          32
+#define OP_JC           33
+#define OP_JNC          34
+#define OP_JE           35
+#define OP_JNE          36
+#define OP_JBE          37
+#define OP_JNBE         38
+#define OP_JS           39
+#define OP_JNS          40
+#define OP_JP           41
+#define OP_JNP          42
+#define OP_JL           43
+#define OP_JNL          44
+#define OP_JLE          45
+#define OP_JNLE         46
+#define OP_ADD          47
+#define OP_TEST         48
+#define OP_XCHG         49
+#define OP_MOV          50
+#define OP_LEA          51
+#define OP_NOP          52
+#define OP_CBW          53
+#define OP_CWD          54
+#define OP_CALL         55
+#define OP_WAIT         56
+#define OP_PUSHF        57
+#define OP_POPF         58
+#define OP_SAHF         59
+#define OP_LAHF         60
+#define OP_MOVSB        61
+#define OP_MOVSWD       62
+#define OP_CMPSB        63
+#define OP_CMPWD        64
+#define OP_STOSB        65
+#define OP_STOSWD       66
+#define OP_LODSB        67
+#define OP_LODSWD       68
+#define OP_SCASB        69
+#define OP_SCASWD       70
+#define OP_SHIFT_GRP2   71
+#define OP_RETN         72
+#define OP_LES          73
+#define OP_LDS          74
+#define OP_ENTER        75
+#define OP_LEAVE        76
+#define OP_RETF         77
+#define OP_INT3         78
+#define OP_INT          79
+#define OP_INTO         80
+#define OP_IRET         81
+#define OP_AAM          82
+#define OP_AAD          83
+#define OP_XLAT         84
+#define OP_ESCF0        85
+#define OP_ESCF1        86
+#define OP_ESCF2        87
+#define OP_ESCF3        88
+#define OP_ESCF4        89
+#define OP_ESCF5        90
+#define OP_ESCF6        91
+#define OP_ESCF7        92
+#define OP_LOOPNE       93
+#define OP_LOOPE        94
+#define OP_LOOP         95
+#define OP_JECXZ        96
+#define OP_IN           97
+#define OP_OUT          98
+#define OP_JMP          99
+#define OP_2B_ESC       100
+#define OP_ADC          101
+#define OP_SBB          102
+#define OP_HLT          103
+#define OP_CMC          104
+#define OP_UNARY_GRP3   105
+#define OP_CLC          106
+#define OP_STC          107
+#define OP_CLI          108
+#define OP_STI          109
+#define OP_CLD          110
+#define OP_STD          111
+#define OP_INC_GRP4     112
+#define OP_IND_GRP5     113
+#define OP_GRP6         114
+#define OP_GRP7         115
+#define OP_LAR          116
+#define OP_LSL          117
+#define OP_SYSCALL      118
+#define OP_CLTS         119
+#define OP_SYSRET       120
+#define OP_INVD         121
+#define OP_WBINVD       122
+#define OP_ILLUD2       123
+#define OP_FEMMS        124
+#define OP_3DNOW        125
+#define OP_MOVUPS       126
+#define OP_MOVLPS       127
+#define OP_UNPCKLPS     128
+#define OP_MOVHPS       129
+#define OP_UNPCKHPS     130
+#define OP_PREFETCH_GRP16   131
+#define OP_MOV_CR       132
+#define OP_MOVAPS       133
+#define OP_CVTPI2PS     134
+#define OP_MOVNTPS      135
+#define OP_CVTTPS2PI    136
+#define OP_CVTPS2PI     137
+#define OP_UCOMISS      138
+#define OP_COMISS       139
+#define OP_WRMSR        140
+#define OP_RDTSC        141
+#define OP_RDMSR        142
+#define OP_RPPMC        143
+#define OP_SYSENTER     144
+#define OP_SYSEXIT      145
+#define OP_PAUSE        146
+#define OP_CMOVO        147
+#define OP_CMOVNO       148
+#define OP_CMOVC        149
+#define OP_CMOVNC       150
+#define OP_CMOVZ        151
+#define OP_CMOVNZ       152
+#define OP_CMOVBE       153
+#define OP_CMOVNBE      154
+#define OP_CMOVS        155
+#define OP_CMOVNS       156
+#define OP_CMOVP        157
+#define OP_CMOVNP       158
+#define OP_CMOVL        159
+#define OP_CMOVNL       160
+#define OP_CMOVLE       161
+#define OP_CMOVNLE      162
+#define OP_MOVMSKPS     163
+#define OP_SQRTPS       164
+#define OP_RSQRTPS      165
+#define OP_RCPPS        166
+#define OP_ANDPS        167
+#define OP_ANDNPS       168
+#define OP_ORPS         169
+#define OP_XORPS        170
+#define OP_ADDPS        171
+#define OP_MULPS        172
+#define OP_CVTPS2PD     173
+#define OP_CVTDQ2PS     174
+#define OP_SUBPS        175
+#define OP_MINPS        176
+#define OP_DIVPS        177
+#define OP_MAXPS        178
+#define OP_PUNPCKLBW    179
+#define OP_PUNPCKLWD    180
+#define OP_PUNPCKLDQ    181
+#define OP_PACKSSWB     182
+#define OP_PCMPGTB      183
+#define OP_PCMPGTW      184
+#define OP_PCMPGTD      185
+#define OP_PACKUSWB     186
+#define OP_PUNPCKHBW    187
+#define OP_PUNPCKHWD    188
+#define OP_PUNPCKHDQ    189
+#define OP_PACKSSDW     190
+#define OP_MOVD         191
+#define OP_MOVQ         192
+#define OP_PSHUFW       193
 
 #define OP_PCMPEQB      196
@@ -597,22 +596,6 @@
 #define OP_VMPTRST      659
 
-
-/* 64 bits prefix bytes */
-#define OP_REX          0x40
-#define OP_REX_B        0x41
-#define OP_REX_X        0x42
-#define OP_REX_XB       0x43
-#define OP_REX_R        0x44
-#define OP_REX_RB       0x45
-#define OP_REX_RX       0x46
-#define OP_REX_RXB      0x47
-#define OP_REX_W        0x48
-#define OP_REX_WB       0x49
-#define OP_REX_WX       0x4A
-#define OP_REX_WXB      0x4B
-#define OP_REX_WR       0x4C
-#define OP_REX_WRB      0x4D
-#define OP_REX_WRX      0x4E
-#define OP_REX_WRXB     0x4F
+/* 64 bits instruction */
+#define OP_MOVSXD       700
 
 /** @} */
@@ -623,168 +606,204 @@
  */
 /* NOTE: Register order is important for translations!! */
-#define OP_PARM_NONE    0
-#define OP_PARM_REG_EAX 1
-#define OP_PARM_REG_GEN32_START   OP_PARM_REG_EAX
-#define OP_PARM_REG_ECX 2
-#define OP_PARM_REG_EDX 3
-#define OP_PARM_REG_EBX 4
-#define OP_PARM_REG_ESP 5
-#define OP_PARM_REG_EBP 6
-#define OP_PARM_REG_ESI 7
-#define OP_PARM_REG_EDI 8
-
-#define OP_PARM_REG_ES  9
+#define OP_PARM_NONE            0
+#define OP_PARM_REG_EAX         1
+#define OP_PARM_REG_GEN32_START OP_PARM_REG_EAX
+#define OP_PARM_REG_ECX         2
+#define OP_PARM_REG_EDX         3
+#define OP_PARM_REG_EBX         4
+#define OP_PARM_REG_ESP         5
+#define OP_PARM_REG_EBP         6
+#define OP_PARM_REG_ESI         7
+#define OP_PARM_REG_EDI         8
+
+#define OP_PARM_REG_ES          9
 #define OP_PARM_REG_SEG_START   OP_PARM_REG_ES
-#define OP_PARM_REG_CS  10
-#define OP_PARM_REG_SS  11
-#define OP_PARM_REG_DS  12
-#define OP_PARM_REG_FS  13
-#define OP_PARM_REG_GS  14
-
-#define OP_PARM_REG_AX  15
+#define OP_PARM_REG_CS          10
+#define OP_PARM_REG_SS          11
+#define OP_PARM_REG_DS          12
+#define OP_PARM_REG_FS          13
+#define OP_PARM_REG_GS          14
+
+#define OP_PARM_REG_AX          15
 #define OP_PARM_REG_GEN16_START   OP_PARM_REG_AX
-#define OP_PARM_REG_CX  16
-#define OP_PARM_REG_DX  17
-#define OP_PARM_REG_BX  18
-#define OP_PARM_REG_SP  19
-#define OP_PARM_REG_BP  20
-#define OP_PARM_REG_SI  21
-#define OP_PARM_REG_DI  22
-
-#define OP_PARM_REG_AL  23
-#define OP_PARM_REG_GEN8_START   OP_PARM_REG_AL
-#define OP_PARM_REG_CL  24
-#define OP_PARM_REG_DL  25
-#define OP_PARM_REG_BL  26
-#define OP_PARM_REG_AH  27
-#define OP_PARM_REG_CH  28
-#define OP_PARM_REG_DH  29
-#define OP_PARM_REG_BH  30
-
-#define OP_PARM_REGFP_0 31
-#define OP_PARM_REG_FP_START   OP_PARM_REGFP_0
-#define OP_PARM_REGFP_1 32
-#define OP_PARM_REGFP_2 33
-#define OP_PARM_REGFP_3 34
-#define OP_PARM_REGFP_4 35
-#define OP_PARM_REGFP_5 36
-#define OP_PARM_REGFP_6 37
-#define OP_PARM_REGFP_7 38
-
-#define OP_PARM_NTA     39
-#define OP_PARM_T0      40
-#define OP_PARM_T1      41
-#define OP_PARM_T2      42
-
-#define OP_PARM_1       43
-
-#define OP_PARM_VTYPE(a)    ((int)a & 0xFE0)
-#define OP_PARM_VSUBTYPE(a) ((int)a & 0x01F)
-
-#define OP_PARM_A       0x40
-#define OP_PARM_VARIABLE OP_PARM_A
-#define OP_PARM_E       0x60
-#define OP_PARM_F       0x80
-#define OP_PARM_G       0xA0
-#define OP_PARM_I       0x100
-#define OP_PARM_J       0x120
-#define OP_PARM_M       0x140
-#define OP_PARM_O       0x160
-#define OP_PARM_Q       0x180
-#define OP_PARM_R       0x1A0
-#define OP_PARM_X       0x200
-#define OP_PARM_Y       0x220
+#define OP_PARM_REG_CX          16
+#define OP_PARM_REG_DX          17
+#define OP_PARM_REG_BX          18
+#define OP_PARM_REG_SP          19
+#define OP_PARM_REG_BP          20
+#define OP_PARM_REG_SI          21
+#define OP_PARM_REG_DI          22
+
+#define OP_PARM_REG_AL          23
+#define OP_PARM_REG_GEN8_START  OP_PARM_REG_AL
+#define OP_PARM_REG_CL          24
+#define OP_PARM_REG_DL          25
+#define OP_PARM_REG_BL          26
+#define OP_PARM_REG_AH          27
+#define OP_PARM_REG_CH          28
+#define OP_PARM_REG_DH          29
+#define OP_PARM_REG_BH          30
+
+#define OP_PARM_REGFP_0         31
+#define OP_PARM_REG_FP_START    OP_PARM_REGFP_0
+#define OP_PARM_REGFP_1         32
+#define OP_PARM_REGFP_2         33
+#define OP_PARM_REGFP_3         34
+#define OP_PARM_REGFP_4         35
+#define OP_PARM_REGFP_5         36
+#define OP_PARM_REGFP_6         37
+#define OP_PARM_REGFP_7         38
+
+#define OP_PARM_NTA             39
+#define OP_PARM_T0              40
+#define OP_PARM_T1              41
+#define OP_PARM_T2              42
+
+#define OP_PARM_1               43
+
+#define OP_PARM_REX             50
+#define OP_PARM_REX_START       OP_PARM_REX
+#define OP_PARM_REX_B           51
+#define OP_PARM_REX_X           52
+#define OP_PARM_REX_XB          53
+#define OP_PARM_REX_R           54
+#define OP_PARM_REX_RB          55
+#define OP_PARM_REX_RX          56
+#define OP_PARM_REX_RXB         57
+#define OP_PARM_REX_W           58
+#define OP_PARM_REX_WB          59
+#define OP_PARM_REX_WX          60
+#define OP_PARM_REX_WXB         61
+#define OP_PARM_REX_WR          62
+#define OP_PARM_REX_WRB         63
+#define OP_PARM_REX_WRX         64
+#define OP_PARM_REX_WRXB        65
+
+#define OP_PARM_REG_RAX         100
+#define OP_PARM_REG_GEN64_START OP_PARM_REG_RAX
+#define OP_PARM_REG_RCX         101
+#define OP_PARM_REG_RDX         102
+#define OP_PARM_REG_RBX         103
+#define OP_PARM_REG_RSP         104
+#define OP_PARM_REG_RBP         105
+#define OP_PARM_REG_RSI         106
+#define OP_PARM_REG_RDI         107
+#define OP_PARM_REG_R8          108
+#define OP_PARM_REG_R9          109
+#define OP_PARM_REG_R10         110
+#define OP_PARM_REG_R11         111
+#define OP_PARM_REG_R12         112
+#define OP_PARM_REG_R13         113
+#define OP_PARM_REG_R14         114
+#define OP_PARM_REG_R15         115
+
+
+#define OP_PARM_VTYPE(a)        ((int)a & 0xFE0)
+#define OP_PARM_VSUBTYPE(a)     ((int)a & 0x01F)
+
+#define OP_PARM_A               0x100
+#define OP_PARM_VARIABLE        OP_PARM_A
+#define OP_PARM_E               0x120
+#define OP_PARM_F               0x140
+#define OP_PARM_G               0x160
+#define OP_PARM_I               0x180
+#define OP_PARM_J               0x1A0
+#define OP_PARM_M               0x1C0
+#define OP_PARM_O               0x1E0
+#define OP_PARM_Q               0x200
+#define OP_PARM_R               0x220
+#define OP_PARM_X               0x240
+#define OP_PARM_Y               0x260
 
 /* Grouped rare parameters for optimization purposes */
-#define IS_OP_PARM_RARE(a)   ((a & 0xF00) == 0x300)
-#define OP_PARM_C       0x300 /* control register */
-#define OP_PARM_D       0x320 /* debug register */
-#define OP_PARM_S       0x340 /* segment register */
-#define OP_PARM_T       0x360 /* test register */
-#define OP_PARM_P       0x380 /* mmx register */
-#define OP_PARM_W       0x3A0 /* xmm register */
-#define OP_PARM_V       0x3C0
-
-#define OP_PARM_NONE    0
-#define OP_PARM_a       0x1
-#define OP_PARM_b       0x2
-#define OP_PARM_d       0x3
-#define OP_PARM_dq      0x4
-#define OP_PARM_p       0x5
-#define OP_PARM_pd      0x6
-#define OP_PARM_pi      0x7
-#define OP_PARM_ps      0x8
-#define OP_PARM_pq      0x9
-#define OP_PARM_q       0xA
-#define OP_PARM_s       0xB
-#define OP_PARM_sd      0xC
-#define OP_PARM_ss      0xD
-#define OP_PARM_v       0xE
-#define OP_PARM_w       0xF
-#define OP_PARM_z       0x10
-
-
-#define OP_PARM_Ap      (OP_PARM_A+OP_PARM_p)
-#define OP_PARM_Cd      (OP_PARM_C+OP_PARM_d)
-#define OP_PARM_Dd      (OP_PARM_D+OP_PARM_d)
-#define OP_PARM_Eb      (OP_PARM_E+OP_PARM_b)
-#define OP_PARM_Ed      (OP_PARM_E+OP_PARM_d)
-#define OP_PARM_Ep      (OP_PARM_E+OP_PARM_p)
-#define OP_PARM_Ev      (OP_PARM_E+OP_PARM_v)
-#define OP_PARM_Ew      (OP_PARM_E+OP_PARM_w)
-#define OP_PARM_Fv      (OP_PARM_F+OP_PARM_v)
-#define OP_PARM_Gb      (OP_PARM_G+OP_PARM_b)
-#define OP_PARM_Gd      (OP_PARM_G+OP_PARM_d)
-#define OP_PARM_Gv      (OP_PARM_G+OP_PARM_v)
-#define OP_PARM_Gw      (OP_PARM_G+OP_PARM_w)
-#define OP_PARM_Ib      (OP_PARM_I+OP_PARM_b)
-#define OP_PARM_Id      (OP_PARM_I+OP_PARM_d)
-#define OP_PARM_Iq      (OP_PARM_I+OP_PARM_q)
-#define OP_PARM_Iw      (OP_PARM_I+OP_PARM_w)
-#define OP_PARM_Iv      (OP_PARM_I+OP_PARM_v)
-#define OP_PARM_Iz      (OP_PARM_I+OP_PARM_z)
-#define OP_PARM_Jb      (OP_PARM_J+OP_PARM_b)
-#define OP_PARM_Jv      (OP_PARM_J+OP_PARM_v)
-#define OP_PARM_Ma      (OP_PARM_M+OP_PARM_a)
-#define OP_PARM_Mb      (OP_PARM_M+OP_PARM_b)
-#define OP_PARM_Mw      (OP_PARM_M+OP_PARM_w)
-#define OP_PARM_Md      (OP_PARM_M+OP_PARM_d)
-#define OP_PARM_Mp      (OP_PARM_M+OP_PARM_p)
-#define OP_PARM_Mq      (OP_PARM_M+OP_PARM_q)
-#define OP_PARM_Ms      (OP_PARM_M+OP_PARM_s)
-#define OP_PARM_Ob      (OP_PARM_O+OP_PARM_b)
-#define OP_PARM_Ov      (OP_PARM_O+OP_PARM_v)
-#define OP_PARM_Pq      (OP_PARM_P+OP_PARM_q)
-#define OP_PARM_Pd      (OP_PARM_P+OP_PARM_d)
-#define OP_PARM_Qd      (OP_PARM_Q+OP_PARM_d)
-#define OP_PARM_Qq      (OP_PARM_Q+OP_PARM_q)
-#define OP_PARM_Rd      (OP_PARM_R+OP_PARM_d)
-#define OP_PARM_Rw      (OP_PARM_R+OP_PARM_w)
-#define OP_PARM_Sw      (OP_PARM_S+OP_PARM_w)
-#define OP_PARM_Td      (OP_PARM_T+OP_PARM_d)
-#define OP_PARM_Vq      (OP_PARM_V+OP_PARM_q)
-#define OP_PARM_Wq      (OP_PARM_W+OP_PARM_q)
-#define OP_PARM_Ws      (OP_PARM_W+OP_PARM_s)
-#define OP_PARM_Xb      (OP_PARM_X+OP_PARM_b)
-#define OP_PARM_Xv      (OP_PARM_X+OP_PARM_v)
-#define OP_PARM_Yb      (OP_PARM_Y+OP_PARM_b)
-#define OP_PARM_Yv      (OP_PARM_Y+OP_PARM_v)
-
-
-#define OP_PARM_Vps     (OP_PARM_V+OP_PARM_ps)
-#define OP_PARM_Vss     (OP_PARM_V+OP_PARM_ss)
-#define OP_PARM_Vpd     (OP_PARM_V+OP_PARM_pd)
-#define OP_PARM_Vdq     (OP_PARM_V+OP_PARM_dq)
-#define OP_PARM_Wps     (OP_PARM_W+OP_PARM_ps)
-#define OP_PARM_Wpd     (OP_PARM_W+OP_PARM_pd)
-#define OP_PARM_Wss     (OP_PARM_W+OP_PARM_ss)
-#define OP_PARM_Wdq     (OP_PARM_W+OP_PARM_dq)
-#define OP_PARM_Ppi     (OP_PARM_P+OP_PARM_pi)
-#define OP_PARM_Qpi     (OP_PARM_Q+OP_PARM_pi)
-#define OP_PARM_Qdq     (OP_PARM_Q+OP_PARM_dq)
-#define OP_PARM_Vsd     (OP_PARM_V+OP_PARM_sd)
-#define OP_PARM_Wsd     (OP_PARM_W+OP_PARM_sd)
-#define OP_PARM_Vpq     (OP_PARM_V+OP_PARM_pq)
-#define OP_PARM_Pdq     (OP_PARM_P+OP_PARM_dq)
+#define IS_OP_PARM_RARE(a)      ((a & 0xF00) == 0x300)
+#define OP_PARM_C               0x300       /* control register */
+#define OP_PARM_D               0x320       /* debug register */
+#define OP_PARM_S               0x340       /* segment register */
+#define OP_PARM_T               0x360       /* test register */
+#define OP_PARM_P               0x380       /* mmx register */
+#define OP_PARM_W               0x3A0       /* xmm register */
+#define OP_PARM_V               0x3C0
+
+#define OP_PARM_NONE            0
+#define OP_PARM_a               0x1
+#define OP_PARM_b               0x2
+#define OP_PARM_d               0x3
+#define OP_PARM_dq              0x4
+#define OP_PARM_p               0x5
+#define OP_PARM_pd              0x6
+#define OP_PARM_pi              0x7
+#define OP_PARM_ps              0x8
+#define OP_PARM_pq              0x9
+#define OP_PARM_q               0xA
+#define OP_PARM_s               0xB
+#define OP_PARM_sd              0xC
+#define OP_PARM_ss              0xD
+#define OP_PARM_v               0xE
+#define OP_PARM_w               0xF
+#define OP_PARM_z               0x10
+
+
+#define OP_PARM_Ap              (OP_PARM_A+OP_PARM_p)
+#define OP_PARM_Cd              (OP_PARM_C+OP_PARM_d)
+#define OP_PARM_Dd              (OP_PARM_D+OP_PARM_d)
+#define OP_PARM_Eb              (OP_PARM_E+OP_PARM_b)
+#define OP_PARM_Ed              (OP_PARM_E+OP_PARM_d)
+#define OP_PARM_Ep              (OP_PARM_E+OP_PARM_p)
+#define OP_PARM_Ev              (OP_PARM_E+OP_PARM_v)
+#define OP_PARM_Ew              (OP_PARM_E+OP_PARM_w)
+#define OP_PARM_Fv              (OP_PARM_F+OP_PARM_v)
+#define OP_PARM_Gb              (OP_PARM_G+OP_PARM_b)
+#define OP_PARM_Gd              (OP_PARM_G+OP_PARM_d)
+#define OP_PARM_Gv              (OP_PARM_G+OP_PARM_v)
+#define OP_PARM_Gw              (OP_PARM_G+OP_PARM_w)
+#define OP_PARM_Ib              (OP_PARM_I+OP_PARM_b)
+#define OP_PARM_Id              (OP_PARM_I+OP_PARM_d)
+#define OP_PARM_Iq              (OP_PARM_I+OP_PARM_q)
+#define OP_PARM_Iw              (OP_PARM_I+OP_PARM_w)
+#define OP_PARM_Iv              (OP_PARM_I+OP_PARM_v)
+#define OP_PARM_Iz              (OP_PARM_I+OP_PARM_z)
+#define OP_PARM_Jb              (OP_PARM_J+OP_PARM_b)
+#define OP_PARM_Jv              (OP_PARM_J+OP_PARM_v)
+#define OP_PARM_Ma              (OP_PARM_M+OP_PARM_a)
+#define OP_PARM_Mb              (OP_PARM_M+OP_PARM_b)
+#define OP_PARM_Mw              (OP_PARM_M+OP_PARM_w)
+#define OP_PARM_Md              (OP_PARM_M+OP_PARM_d)
+#define OP_PARM_Mp              (OP_PARM_M+OP_PARM_p)
+#define OP_PARM_Mq              (OP_PARM_M+OP_PARM_q)
+#define OP_PARM_Ms              (OP_PARM_M+OP_PARM_s)
+#define OP_PARM_Ob              (OP_PARM_O+OP_PARM_b)
+#define OP_PARM_Ov              (OP_PARM_O+OP_PARM_v)
+#define OP_PARM_Pq              (OP_PARM_P+OP_PARM_q)
+#define OP_PARM_Pd              (OP_PARM_P+OP_PARM_d)
+#define OP_PARM_Qd              (OP_PARM_Q+OP_PARM_d)
+#define OP_PARM_Qq              (OP_PARM_Q+OP_PARM_q)
+#define OP_PARM_Rd              (OP_PARM_R+OP_PARM_d)
+#define OP_PARM_Rw              (OP_PARM_R+OP_PARM_w)
+#define OP_PARM_Sw              (OP_PARM_S+OP_PARM_w)
+#define OP_PARM_Td              (OP_PARM_T+OP_PARM_d)
+#define OP_PARM_Vq              (OP_PARM_V+OP_PARM_q)
+#define OP_PARM_Wq              (OP_PARM_W+OP_PARM_q)
+#define OP_PARM_Ws              (OP_PARM_W+OP_PARM_s)
+#define OP_PARM_Xb              (OP_PARM_X+OP_PARM_b)
+#define OP_PARM_Xv              (OP_PARM_X+OP_PARM_v)
+#define OP_PARM_Yb              (OP_PARM_Y+OP_PARM_b)
+#define OP_PARM_Yv              (OP_PARM_Y+OP_PARM_v)
+
+#define OP_PARM_Vps             (OP_PARM_V+OP_PARM_ps)
+#define OP_PARM_Vss             (OP_PARM_V+OP_PARM_ss)
+#define OP_PARM_Vpd             (OP_PARM_V+OP_PARM_pd)
+#define OP_PARM_Vdq             (OP_PARM_V+OP_PARM_dq)
+#define OP_PARM_Wps             (OP_PARM_W+OP_PARM_ps)
+#define OP_PARM_Wpd             (OP_PARM_W+OP_PARM_pd)
+#define OP_PARM_Wss             (OP_PARM_W+OP_PARM_ss)
+#define OP_PARM_Wdq             (OP_PARM_W+OP_PARM_dq)
+#define OP_PARM_Ppi             (OP_PARM_P+OP_PARM_pi)
+#define OP_PARM_Qpi             (OP_PARM_Q+OP_PARM_pi)
+#define OP_PARM_Qdq             (OP_PARM_Q+OP_PARM_dq)
+#define OP_PARM_Vsd             (OP_PARM_V+OP_PARM_sd)
+#define OP_PARM_Wsd             (OP_PARM_W+OP_PARM_sd)
+#define OP_PARM_Vpq             (OP_PARM_V+OP_PARM_pq)
+#define OP_PARM_Pdq             (OP_PARM_P+OP_PARM_dq)
 
 /** @} */
Index: /trunk/src/VBox/Disassembler/Disasm.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/Disasm.cpp	(revision 8298)
+++ /trunk/src/VBox/Disassembler/Disasm.cpp	(revision 8299)
@@ -219,4 +219,11 @@
                     prefixbytes += sizeof(uint8_t);
                     continue;   //fetch the next byte
+
+                case OP_REX:
+                    Assert(pCpu->mode == CPUMODE_64BIT);
+                    /* REX prefix byte */
+                    pCpu->prefix    |= PREFIX_REX;
+                    pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode);
+                    break;
                 }
             }
@@ -229,5 +236,8 @@
             pCpu->opaddr = pu8Instruction + idx + u32EipOffset - prefixbytes;
 
-            inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX86[pCpu->opcode], pCpu);
+            if (pCpu->mode == CPUMODE_64BIT)
+                inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX64[pCpu->opcode], pCpu);
+            else
+                inc = ParseInstruction(pu8Instruction + i, &g_aOneByteMapX86[pCpu->opcode], pCpu);
 
             pCpu->opsize = prefixbytes + inc + sizeof(uint8_t);
Index: /trunk/src/VBox/Disassembler/DisasmCore.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 8298)
+++ /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 8299)
@@ -258,5 +258,6 @@
      * Parse byte by byte.
      */
-    unsigned      iByte          = 0;
+    unsigned  iByte = 0;
+    unsigned  cbInc;
 
     while(1)
@@ -318,13 +319,9 @@
                 continue;   //fetch the next byte
 
-            default:
-                if (    pCpu->mode == CPUMODE_64BIT
-                    &&  opcode >= OP_REX
-                    &&  opcode <= OP_REX_WRXB)
-                {
-                    /* REX prefix byte */
-                    pCpu->prefix    |= PREFIX_REX;
-                    pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode);
-                }
+            case OP_REX:
+                Assert(pCpu->mode == CPUMODE_64BIT);
+                /* REX prefix byte */
+                pCpu->prefix    |= PREFIX_REX;
+                pCpu->prefix_rex = PREFIX_REX_OP_2_FLAGS(opcode);
                 break;
             }
@@ -337,5 +334,8 @@
         pCpu->opcode = codebyte;
 
-        int cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX86[pCpu->opcode], pCpu);
+        if (pCpu->mode == CPUMODE_64BIT)
+            cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX64[pCpu->opcode], pCpu);
+        else
+            cbInc = ParseInstruction(InstructionAddr + iByte, &g_aOneByteMapX86[pCpu->opcode], pCpu);
 
         iByte += cbInc;
Index: /trunk/src/VBox/Disassembler/DisasmTables.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmTables.cpp	(revision 8298)
+++ /trunk/src/VBox/Disassembler/DisasmTables.cpp	(revision 8299)
@@ -54,5 +54,5 @@
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-char SZINVALID_OPCODE[] = "Invalid Opcode";
+static char SZINVALID_OPCODE[] = "Invalid Opcode";
 
 #define INVALID_OPCODE  \
@@ -309,4 +309,5 @@
     OP("les %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,      0,          OP_LES,         OP_PARM_Gv,      OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_INVALID_64),
     OP("lds %Gv,%Mp",        IDX_ParseModRM,     IDX_UseModRM,      0,          OP_LDS,         OP_PARM_Gv,      OP_PARM_Mp,     OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_RRM_DANGEROUS | OPTYPE_INVALID_64),
+    /* @todo these two are groups */
     OP("mov %Eb,%Ib",        IDX_ParseModRM,     IDX_ParseImmByte,  0,          OP_MOV,         OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("mov %Ev,%Iv",        IDX_ParseModRM,     IDX_ParseImmV,     0,          OP_MOV,         OP_PARM_Ev,      OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
@@ -388,7 +389,7 @@
     OP("lsl %Gv,%Ew",        IDX_ParseModRM,    IDX_UseModRM,   0,          OP_LSL,             OP_PARM_Gv,         OP_PARM_Ew,     OP_PARM_NONE,   OPTYPE_DANGEROUS | OPTYPE_PRIVILEGED_NOTRAP),
     INVALID_OPCODE,
-    OP("syscall",            0,                 0,              0,          OP_SYSCALL,         OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW),
+    OP("syscall",            0,                 0,              0,          OP_SYSCALL,         OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_ONLY_64),
     OP("clts",               0,                 0,              0,          OP_CLTS,            OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_PRIVILEGED),
-    OP("sysret",             0,                 0,              0,          OP_SYSRET,          OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
+    OP("sysret",             0,                 0,              0,          OP_SYSRET,          OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_ONLY_64),
     OP("invd",               0,                 0,              0,          OP_INVD,            OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_PRIVILEGED),
     OP("wbinvd",             0,                 0,              0,          OP_WBINVD,          OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_PRIVILEGED),
@@ -534,20 +535,20 @@
 
     /* 8 */
-    OP("jo %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JO,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jno %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNO,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jc %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JC,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jnc %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNC,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("je %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JE,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jne %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jbe %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JBE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jnbe %Jv",           IDX_ParseImmVRel,   0,          0,          OP_JNBE,    OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("js %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JS,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jns %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNS,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jp %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JP,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jnp %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNP,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jl %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JL,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jnl %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNL,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jle %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JLE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
-    OP("jnle %Jv",           IDX_ParseImmVRel,   0,          0,          OP_JNLE,    OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW),
+    OP("jo %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JO,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jno %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNO,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jc %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JC,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnc %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNC,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("je %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JE,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jne %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jbe %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JBE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnbe %Jv",           IDX_ParseImmVRel,   0,          0,          OP_JNBE,    OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("js %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JS,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jns %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNS,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jp %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JP,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnp %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNP,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jl %Jv",             IDX_ParseImmVRel,   0,          0,          OP_JL,      OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnl %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JNL,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jle %Jv",            IDX_ParseImmVRel,   0,          0,          OP_JLE,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnle %Jv",           IDX_ParseImmVRel,   0,          0,          OP_JNLE,    OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW|OPTYPE_FORCED_64_OP_SIZE),
 
     /* 9 */
@@ -570,19 +571,19 @@
 
     /* a */
-    OP("push fs",            IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_FS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("pop fs",             IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_FS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("cpuid",              0,                  0,          0,          OP_CPUID,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS),
+    OP("push fs",            IDX_ParseFixedReg,  0,              0,          OP_PUSH,    OP_PARM_REG_FS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop fs",             IDX_ParseFixedReg,  0,              0,          OP_POP,     OP_PARM_REG_FS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("cpuid",              0,                  0,              0,          OP_CPUID,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS),
     OP("bt %Ev,%Gv",         IDX_ParseModRM,     IDX_UseModRM,   0,          OP_BT,      OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("shld %Ev,%Gv,%Ib",   IDX_ParseModRM,     IDX_UseModRM,   IDX_ParseImmByte, OP_SHLD,  OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_Ib,     OPTYPE_HARMLESS),
-    OP("shld %Ev,%Gv,CL",    IDX_ParseModRM,     IDX_UseModRM,   0,      OP_SHLD,  OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_Ib,     OPTYPE_HARMLESS),
-    INVALID_OPCODE,
-    INVALID_OPCODE,
-    OP("push gs",            IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_GS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("pop gs",             IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_GS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("rsm",                0,              0,          0,          OP_RSM,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("shld %Ev,%Gv,CL",    IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SHLD,  OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_Ib,     OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    OP("push gs",            IDX_ParseFixedReg,  0,              0,          OP_PUSH,    OP_PARM_REG_GS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop gs",             IDX_ParseFixedReg,  0,              0,          OP_POP,     OP_PARM_REG_GS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("rsm",                0,                  0,              0,          OP_RSM,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("bts %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_BTS,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("shrd %Ev,%Gv,%Ib",   IDX_ParseModRM,     IDX_UseModRM,   IDX_ParseImmByte,OP_SHRD,   OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_Ib,     OPTYPE_HARMLESS),
     OP("shrd %Ev,%Gv,CL",    IDX_ParseModRM,     IDX_UseModRM,   IDX_ParseFixedReg,OP_SHRD,  OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_REG_CL, OPTYPE_HARMLESS),
-    OP("Grp15",              IDX_ParseGrp15,     0,          0,          OP_GRP15,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Grp15",              IDX_ParseGrp15,     0,              0,          OP_GRP15,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("imul %Gv,%Ev",       IDX_ParseModRM,     IDX_UseModRM,   0,          OP_IMUL,    OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_HARMLESS),
 
@@ -597,6 +598,6 @@
     OP("movzx %Gv,%Ew",      IDX_ParseModRM,     IDX_UseModRM,   0,          OP_MOVZX,   OP_PARM_Gv,         OP_PARM_Ew,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     INVALID_OPCODE,
-    OP("Grp10 Invalid Op",   IDX_ParseGrp10,     0,          0,          OP_GRP10_INV,OP_PARM_NONE,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("Grp8",               IDX_ParseGrp8,      0,          0,          OP_GRP8,    OP_PARM_Ev,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Grp10 Invalid Op",   IDX_ParseGrp10,     0,              0,          OP_GRP10_INV,OP_PARM_NONE,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Grp8",               IDX_ParseGrp8,      0,              0,          OP_GRP8,    OP_PARM_Ev,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("btc %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_BTC,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("bsf %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_BSF,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
@@ -2181,9 +2182,9 @@
     OP("inc %Ev",            IDX_ParseModRM,     0,          0,          OP_INC,     OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
     OP("dec %Ev",            IDX_ParseModRM,     0,          0,          OP_DEC,     OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
-    OP("call %Ev",           IDX_ParseModRM,     0,          0,          OP_CALL,    OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW),
+    OP("call %Ev",           IDX_ParseModRM,     0,          0,          OP_CALL,    OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
     OP("call %Ep",           IDX_ParseModRM,     0,          0,          OP_CALL,    OP_PARM_Ep,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW),
-    OP("jmp %Ev",            IDX_ParseModRM,     0,          0,          OP_JMP,     OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
+    OP("jmp %Ev",            IDX_ParseModRM,     0,          0,          OP_JMP,     OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
     OP("jmp %Ep",            IDX_ParseModRM,     0,          0,          OP_JMP,     OP_PARM_Ep,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
-    OP("push %Ev",           IDX_ParseModRM,     0,          0,          OP_PUSH,    OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("push %Ev",           IDX_ParseModRM,     0,          0,          OP_PUSH,    OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
     INVALID_OPCODE,
 };
Index: /trunk/src/VBox/Disassembler/DisasmTables.h
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmTables.h	(revision 8298)
+++ /trunk/src/VBox/Disassembler/DisasmTables.h	(revision 8299)
@@ -27,4 +27,5 @@
 
 extern const OPCODE g_aOneByteMapX86[256];
+extern const OPCODE g_aOneByteMapX64[256];
 extern const OPCODE g_aTwoByteMapX86[256];
 
Index: /trunk/src/VBox/Disassembler/DisasmTablesX64.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmTablesX64.cpp	(revision 8299)
+++ /trunk/src/VBox/Disassembler/DisasmTablesX64.cpp	(revision 8299)
@@ -0,0 +1,380 @@
+/** @file
+ *
+ * VBox disassembler:
+ * Tables for x64 (long mode)
+ */
+
+/*
+ * Copyright (C) 2006-2007 Sun Microsystems, Inc.
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
+ * Clara, CA 95054 USA or visit http://www.sun.com if you need
+ * additional information or have any questions.
+ */
+
+
+/*******************************************************************************
+*   Header Files                                                               *
+*******************************************************************************/
+#ifdef USING_VISUAL_STUDIO
+# include <stdafx.h>
+#endif
+#include <VBox/dis.h>
+#include <VBox/disopcode.h>
+#include "DisasmTables.h"
+#include "DisasmInternal.h"
+
+
+/** @def O
+ * Wrapper which initializes an OPCODE.
+ * We must use this so that we can exclude unused fields in order
+ * to save precious bytes in the GC version.
+ *
+ * @internal
+ */
+#ifndef DIS_CORE_ONLY
+# define OP(pszOpcode, idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype) \
+    { pszOpcode, idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype }
+#else
+# define OP(pszOpcode, idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype) \
+    { idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype }
+#endif
+
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//TODO: Verify tables for correctness
+//TODO: opcode type (harmless, potentially dangerous, dangerous)
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+static char SZINVALID_OPCODE[] = "Invalid Opcode";
+
+#define INVALID_OPCODE  \
+    OP(SZINVALID_OPCODE,     0,              0,          0,          OP_INVALID, OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INVALID)
+
+#define INVALID_OPCODE_BLOCK \
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,\
+    INVALID_OPCODE,
+
+/* Tables for the elegant Intel X64 instruction set */
+
+const OPCODE g_aOneByteMapX64[256] =
+{
+    /* 0 */
+    OP("add %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADD,     OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("add %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADD,     OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("add %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADD,     OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("add %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADD,     OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("add AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_ADD,     OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("add %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_ADD,     OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    OP("or %Eb,%Gb",         IDX_ParseModRM,     IDX_UseModRM,   0,          OP_OR,      OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("or %Ev,%Gv",         IDX_ParseModRM,     IDX_UseModRM,   0,          OP_OR,      OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("or %Gb,%Eb",         IDX_ParseModRM,     IDX_UseModRM,   0,          OP_OR,      OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("or %Gv,%Ev",         IDX_ParseModRM,     IDX_UseModRM,   0,          OP_OR,      OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("or AL,%Ib",          IDX_ParseFixedReg,  IDX_ParseImmByte, 0,        OP_OR,      OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("or %eAX,%Iv",        IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_OR,      OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    OP("2-BYTE ESCAPE",      IDX_ParseTwoByteEsc,0,          0,              OP_2B_ESC,  OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+    /* 1 */
+    OP("adc %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADC,     OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("adc %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADC,     OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("adc %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADC,     OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("adc %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_ADC,     OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("adc AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_ADC,     OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("adc %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_ADC,     OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    OP("sbb %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SBB,     OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sbb %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SBB,     OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sbb %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SBB,     OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sbb %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SBB,     OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sbb AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_SBB,     OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sbb %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_SBB,     OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+
+    /* 2 */
+    OP("and %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_AND,     OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("and %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_AND,     OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("and %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_AND,     OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("and %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_AND,     OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("and AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_AND,     OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("and %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_AND,     OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("SEG ES",             0,                  0,              0,          OP_SEG,     OP_PARM_REG_ES,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    OP("sub %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SUB,     OP_PARM_Eb,         OP_PARM_Gb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sub %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SUB,     OP_PARM_Ev,         OP_PARM_Gv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sub %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SUB,     OP_PARM_Gb,         OP_PARM_Eb ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sub %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_SUB,     OP_PARM_Gv,         OP_PARM_Ev ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sub AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_SUB,     OP_PARM_REG_AL,     OP_PARM_Ib ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("sub %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_SUB,     OP_PARM_REG_EAX,    OP_PARM_Iv ,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    /* Branch not taken hint prefix for branches on a Pentium 4 or Xeon CPU (or higher)! */
+    OP("SEG CS",             0,                  0,              0,          OP_SEG,     OP_PARM_REG_CS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+
+    /* 3 */
+    OP("xor %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_XOR,     OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xor %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_XOR,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xor %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_XOR,     OP_PARM_Gb,         OP_PARM_Eb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xor %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_XOR,     OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xor AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_XOR,     OP_PARM_REG_AL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xor %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_XOR,     OP_PARM_REG_EAX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("SEG SS",             0,                  0,              0,          OP_SEG,     OP_PARM_REG_SS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    OP("cmp %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMP,     OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmp %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMP,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmp %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMP,     OP_PARM_Gb,         OP_PARM_Eb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmp %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,   0,          OP_CMP,     OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmp AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,0,         OP_CMP,     OP_PARM_REG_AL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmp %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,  0,          OP_CMP,     OP_PARM_REG_EAX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    /* Branch not taken hint prefix for branches on a Pentium 4 or Xeon CPU (or higher)! */
+    OP("SEG DS",             0,                  0,              0,          OP_SEG,     OP_PARM_REG_DS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+
+    /* 4 */
+    OP("REX",                0,                  0,              0,          OP_REX,     OP_PARM_REX,        OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.B",              0,                  0,              0,          OP_REX,     OP_PARM_REX_B,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.X",              0,                  0,              0,          OP_REX,     OP_PARM_REX_X,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.XB",             0,                  0,              0,          OP_REX,     OP_PARM_REX_XB,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.R",              0,                  0,              0,          OP_REX,     OP_PARM_REX_R,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.RB",             0,                  0,              0,          OP_REX,     OP_PARM_REX_RB,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.RX",             0,                  0,              0,          OP_REX,     OP_PARM_REX_RX,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.RXB",            0,                  0,              0,          OP_REX,     OP_PARM_REX_RXB,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.W",              0,                  0,              0,          OP_REX,     OP_PARM_REX_W,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WB",             0,                  0,              0,          OP_REX,     OP_PARM_REX_WB,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WX",             0,                  0,              0,          OP_REX,     OP_PARM_REX_WX,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WXB",            0,                  0,              0,          OP_REX,     OP_PARM_REX_WXB,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WR",             0,                  0,              0,          OP_REX,     OP_PARM_REX_WR,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WRB",            0,                  0,              0,          OP_REX,     OP_PARM_REX_WRB,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WRX",            0,                  0,              0,          OP_REX,     OP_PARM_REX_WRX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("REX.WRXB",           0,                  0,              0,          OP_REX,     OP_PARM_REX_WRXB,   OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+    /* 5 */
+    OP("push %eAX",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RAX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eCX",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RCX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eDX",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RDX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eBX",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RBX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eSP",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RSP,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eBP",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RBP,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eSI",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RSI,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("push %eDI",          IDX_ParseFixedReg,  0,          0,          OP_PUSH,    OP_PARM_REG_RDI,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eAX",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RAX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eCX",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RCX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eDX",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RDX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eBX",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RBX,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eSP",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RSP,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eBP",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RBP,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eSI",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RSI,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("pop %eDI",           IDX_ParseFixedReg,  0,          0,          OP_POP,     OP_PARM_REG_RDI,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+
+    /* 6 */
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    OP("movsxd %Gv,%Ev",     IDX_ParseModRM,     IDX_UseModRM,      0,                  OP_MOVSXD,      OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("SEG FS",             0,                  0,                 0,                  OP_SEG,         OP_PARM_REG_FS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("SEG GS",             0,                  0,                 0,                  OP_SEG,         OP_PARM_REG_GS,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("OP SIZE",            0,                  0,                 0,                  OP_OPSIZE,      OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("ADR SIZE",           0,                  0,                 0,                  OP_ADRSIZE,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("push %Iv",           IDX_ParseImmV,      0,                 0,                  OP_PUSH,        OP_PARM_Iv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("imul %Gv,%Ev,%Iv",   IDX_ParseModRM,     IDX_UseModRM,      IDX_ParseImmV,      OP_IMUL,        OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_Iv,     OPTYPE_HARMLESS),
+    OP("push %Ib",           IDX_ParseImmByteSX, 0,                 0,                  OP_PUSH,        OP_PARM_Ib,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("imul %Gv,%Ev,%Ib",   IDX_ParseModRM,     IDX_UseModRM,      IDX_ParseImmByteSX, OP_IMUL,        OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_Ib,     OPTYPE_HARMLESS),
+    OP("insb %Yb,DX",        IDX_ParseYb,        IDX_ParseFixedReg, 0,                  OP_INSB,        OP_PARM_Yb,         OP_PARM_REG_DX, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("insw/d %Yv,DX",      IDX_ParseYv,        IDX_ParseFixedReg, 0,                  OP_INSWD,       OP_PARM_Yv,         OP_PARM_REG_DX, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("outsb DX,%Xb",       IDX_ParseFixedReg,  IDX_ParseXb,       0,                  OP_OUTSB,       OP_PARM_REG_DX,     OP_PARM_Yb,     OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+    OP("outsw/d DX,%Xv",     IDX_ParseFixedReg,  IDX_ParseXv,       0,                  OP_OUTSWD,      OP_PARM_REG_DX,     OP_PARM_Yv,     OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+
+
+    /* 7 */
+    OP("jo %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JO,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jno %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNO,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jc %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JC,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnc %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNC,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("je %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JE,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jne %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNE,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jbe %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JBE,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnbe %Jb",           IDX_ParseImmBRel,   0,          0,          OP_JNBE,    OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("js %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JS,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jns %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNS,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jp %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JP,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnp %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNP,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jl %Jb",             IDX_ParseImmBRel,   0,          0,          OP_JL,      OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnl %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JNL,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jle %Jb",            IDX_ParseImmBRel,   0,          0,          OP_JLE,     OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jnle %Jb",           IDX_ParseImmBRel,   0,          0,          OP_JNLE,    OP_PARM_Jb  ,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+
+    /* 8 */
+    OP("Imm Grp1 %Eb,%Ib",   IDX_ParseImmGrpl,   0,             0,          OP_IMM_GRP1,OP_PARM_Eb,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Imm Grp1 %Ev,%Iv",   IDX_ParseImmGrpl,   0,             0,          OP_IMM_GRP1,OP_PARM_Ev,         OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    OP("Imm Grp1 %Ev,%Ib",   IDX_ParseImmGrpl,   0,             0,          OP_IMM_GRP1,OP_PARM_Ev,         OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("test %Eb,%Gb",       IDX_ParseModRM,     IDX_UseModRM,  0,          OP_TEST,    OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("test %Ev,%Gv",       IDX_ParseModRM,     IDX_UseModRM,  0,          OP_TEST,    OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %Eb,%Gb",       IDX_ParseModRM,     IDX_UseModRM,  0,          OP_XCHG,    OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %Ev,%Gv",       IDX_ParseModRM,     IDX_UseModRM,  0,          OP_XCHG,    OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Eb,%Gb",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Eb,         OP_PARM_Gb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Ev,%Gv",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Ev,         OP_PARM_Gv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Gb,%Eb",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Gb,         OP_PARM_Eb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Gv,%Ev",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Gv,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Ev,%Sw",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Ev,         OP_PARM_Sw,     OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS),
+    OP("lea %Gv,%M",         IDX_ParseModRM,     IDX_UseModRM,  0,          OP_LEA,     OP_PARM_Gv,         OP_PARM_M,      OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Sw,%Ev",        IDX_ParseModRM,     IDX_UseModRM,  0,          OP_MOV,     OP_PARM_Sw,         OP_PARM_Ev,     OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS | OPTYPE_INHIBIT_IRQS),
+    OP("pop %Ev",            IDX_ParseModRM,     0,             0,          OP_POP,     OP_PARM_Ev,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+    /* 9 */
+    OP("nop/pause/xchg %eAX,%eAX",  IDX_ParseNopPause,  0,                  0,      OP_NOP,     OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eCX,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_ECX,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eDX,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_EDX,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eBX,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_EBX,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eSP,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_ESP,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eBP,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_EBP,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eSI,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_ESI,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("xchg %eDI,%eAX",            IDX_ParseFixedReg,  IDX_ParseFixedReg,  0,      OP_XCHG,    OP_PARM_REG_EDI,    OP_PARM_REG_EAX,    OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cbw",                       0,                  0,                  0,      OP_CBW,     OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cwd",                       0,                  0,                  0,      OP_CWD,     OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    OP("wait",                      0,                  0,                  0,      OP_WAIT,    OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("pushf %Fv",                 0,                  0,                  0,      OP_PUSHF,   OP_PARM_Fv,         OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("popf %Fv",                  0,                  0,                  0,      OP_POPF,    OP_PARM_Fv,         OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_POTENTIALLY_DANGEROUS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("sahf",                      0,                  0,                  0,      OP_SAHF,    OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("lahf",                      0,                  0,                  0,      OP_LAHF,    OP_PARM_NONE,       OP_PARM_NONE,       OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+
+    /* A */
+    OP("mov AL,%Ob",         IDX_ParseFixedReg,  IDX_ParseImmAddr,  0,          OP_MOV,     OP_PARM_REG_AL,     OP_PARM_Ob,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eAX,%Ov",       IDX_ParseFixedReg,  IDX_ParseImmAddr,  0,          OP_MOV,     OP_PARM_REG_EAX,    OP_PARM_Ov,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Ob,AL",         IDX_ParseImmAddr,   IDX_ParseFixedReg, 0,          OP_MOV,     OP_PARM_Ob,         OP_PARM_REG_AL, OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Ov,%eAX",       IDX_ParseImmAddr,   IDX_ParseFixedReg, 0,          OP_MOV,     OP_PARM_Ov,         OP_PARM_REG_EAX,OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("movsb %Xb,%Yb",      IDX_ParseXb,        IDX_ParseYb,       0,          OP_MOVSB,   OP_PARM_Xb,         OP_PARM_Yb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("movsw/d %Xv,%Yv",    IDX_ParseXv,        IDX_ParseYv,       0,          OP_MOVSWD,  OP_PARM_Xv,         OP_PARM_Yv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmpsb %Xb,%Yb",      IDX_ParseXb,        IDX_ParseYb,       0,          OP_CMPSB,   OP_PARM_Xb,         OP_PARM_Yb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cmpsw/d %Xv,%Yv",    IDX_ParseXv,        IDX_ParseYv,       0,          OP_CMPWD,   OP_PARM_Xv,         OP_PARM_Yv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("test AL,%Ib",        IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_TEST,    OP_PARM_REG_AL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("test %eAX,%Iv",      IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_TEST,    OP_PARM_REG_EAX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("stosb %Yb,AL",       IDX_ParseYb,        IDX_ParseFixedReg, 0,          OP_STOSB,   OP_PARM_Yb,         OP_PARM_REG_AL, OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("stosw/d %Yv,%eAX",   IDX_ParseYv,        IDX_ParseFixedReg, 0,          OP_STOSWD,  OP_PARM_Yv,         OP_PARM_REG_EAX,OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("lodsb AL,%Xb",       IDX_ParseFixedReg,  IDX_ParseXb,       0,          OP_LODSB,   OP_PARM_REG_AL,     OP_PARM_Xb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("lodsw/d %eAX,%Xv",   IDX_ParseFixedReg,  IDX_ParseXv,       0,          OP_LODSWD,  OP_PARM_REG_EAX,    OP_PARM_Xv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("scasb AL,%Xb",       IDX_ParseFixedReg,  IDX_ParseXb,       0,          OP_SCASB,   OP_PARM_REG_AL,     OP_PARM_Xb,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("scasw/d %eAX,%Xv",   IDX_ParseFixedReg,  IDX_ParseXv,       0,          OP_SCASWD,  OP_PARM_REG_EAX,    OP_PARM_Xv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+
+    /* B */
+    OP("mov AL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_AL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov CL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_CL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov DL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_DL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov BL,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_BL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov AH,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_AH,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov CH,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_CH,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov DH,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_DH,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov BH,%Ib",         IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_MOV,     OP_PARM_REG_BH,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eAX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_EAX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eCX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_ECX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eDX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_EDX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eBX,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_EBX,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eSP,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_ESP,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eBP,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_EBP,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eSI,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_ESI,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %eDI,%Iv",       IDX_ParseFixedReg,  IDX_ParseImmV,     0,          OP_MOV,     OP_PARM_REG_EDI,    OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+    /* C */
+    OP("Shift Grp2 %Eb,%Ib", IDX_ParseShiftGrp2, 0,                 0,          OP_SHIFT_GRP2,  OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Shift Grp2 %Ev,%Ib", IDX_ParseShiftGrp2, 0,                 0,          OP_SHIFT_GRP2,  OP_PARM_Ev,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("retn %Iw",           IDX_ParseImmUshort, 0,                 0,          OP_RETN,        OP_PARM_Iw,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("retn",               0,                  0,                 0,          OP_RETN,        OP_PARM_NONE,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    OP("mov %Eb,%Ib",        IDX_ParseModRM,     IDX_ParseImmByte,  0,          OP_MOV,         OP_PARM_Eb,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("mov %Ev,%Iv",        IDX_ParseModRM,     IDX_ParseImmV,     0,          OP_MOV,         OP_PARM_Ev,      OP_PARM_Iv,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("enter %Iw,%Ib",      IDX_ParseImmUshort, IDX_ParseImmByte,  0,          OP_ENTER,       OP_PARM_Iw,      OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("leave",              0,                  0,                 0,          OP_LEAVE,       OP_PARM_NONE,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_DEFAULT_64_OP_SIZE),
+    OP("retf %Iw",           IDX_ParseImmUshort, 0,                 0,          OP_RETF,        OP_PARM_Iw,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
+    OP("retf",               0,                  0,                 0,          OP_RETF,        OP_PARM_NONE,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
+    OP("int 3",              0,                  0,                 0,          OP_INT3,        OP_PARM_NONE,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
+    OP("int %Ib",            IDX_ParseImmByte,   0,                 0,          OP_INT,         OP_PARM_Ib,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_INTERRUPT),
+    INVALID_OPCODE,
+    OP("iret",               0,                  0,                 0,          OP_IRET,        OP_PARM_NONE,    OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW),
+
+    /* D */
+    OP("Shift Grp2 %Eb,1",   IDX_ParseShiftGrp2, 0,                 0,          OP_SHIFT_GRP2,  OP_PARM_Eb,         OP_PARM_1,      OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Shift Grp2 %Ev,1",   IDX_ParseShiftGrp2, 0,                 0,          OP_SHIFT_GRP2,  OP_PARM_Ev,         OP_PARM_1,      OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Shift Grp2 %Eb,CL",  IDX_ParseShiftGrp2, IDX_ParseFixedReg, 0,          OP_SHIFT_GRP2,  OP_PARM_Eb,         OP_PARM_REG_CL, OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Shift Grp2 %Ev,CL",  IDX_ParseShiftGrp2, IDX_ParseFixedReg, 0,          OP_SHIFT_GRP2,  OP_PARM_Ev,         OP_PARM_REG_CL, OP_PARM_NONE,   OPTYPE_HARMLESS),
+    INVALID_OPCODE,
+    INVALID_OPCODE,
+    /* setalc?? */
+    INVALID_OPCODE,
+    OP("xlat",               0,                  0,                 0,          OP_XLAT,        OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf0",           IDX_ParseEscFP,     0,                 0,          OP_ESCF0,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf1",           IDX_ParseEscFP,     0,                 0,          OP_ESCF1,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf2",           IDX_ParseEscFP,     0,                 0,          OP_ESCF2,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf3",           IDX_ParseEscFP,     0,                 0,          OP_ESCF3,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf4",           IDX_ParseEscFP,     0,                 0,          OP_ESCF4,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf5",           IDX_ParseEscFP,     0,                 0,          OP_ESCF5,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf6",           IDX_ParseEscFP,     0,                 0,          OP_ESCF6,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("esc 0xf7",           IDX_ParseEscFP,     0,                 0,          OP_ESCF7,       OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+
+
+    /* E */
+    OP("loopne %Jb",         IDX_ParseImmBRel,   0,                 0,          OP_LOOPNE,  OP_PARM_Jb,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("loope %Jb",          IDX_ParseImmBRel,   0,                 0,          OP_LOOPE,   OP_PARM_Jb,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("loop %Jb",           IDX_ParseImmBRel,   0,                 0,          OP_LOOP,    OP_PARM_Jb,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("j(e)cxz %Jb",        IDX_ParseImmBRel,   0,                 0,          OP_JECXZ,   OP_PARM_Jb,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW|OPTYPE_RELATIVE_CONTROLFLOW|OPTYPE_COND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("in AL,%Ib",          IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_IN,      OP_PARM_REG_AL,     OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("in %eAX,%Ib",        IDX_ParseFixedReg,  IDX_ParseImmByte,  0,          OP_IN,      OP_PARM_REG_EAX,    OP_PARM_Ib,     OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("out %Ib,AL",         IDX_ParseImmByte,   IDX_ParseFixedReg, 0,          OP_OUT,     OP_PARM_Ib,         OP_PARM_REG_AL, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+    OP("out %Ib,%eAX",       IDX_ParseImmByte,   IDX_ParseFixedReg, 0,          OP_OUT,     OP_PARM_Ib,         OP_PARM_REG_EAX,OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+    OP("call %Jv",           IDX_ParseImmVRel,   0,                 0,          OP_CALL,    OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("jmp %Jv",            IDX_ParseImmVRel,   0,                 0,          OP_JMP,     OP_PARM_Jv,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    INVALID_OPCODE,
+    OP("jmp %Jb",            IDX_ParseImmBRel,   0,                 0,          OP_JMP,     OP_PARM_Jb,         OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_CONTROLFLOW | OPTYPE_UNCOND_CONTROLFLOW | OPTYPE_RELATIVE_CONTROLFLOW | OPTYPE_FORCED_64_OP_SIZE),
+    OP("in AL,DX",           IDX_ParseFixedReg,  IDX_ParseFixedReg, 0,          OP_IN,      OP_PARM_REG_AL,     OP_PARM_REG_DX, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("in %eAX,DX",         IDX_ParseFixedReg,  IDX_ParseFixedReg, 0,          OP_IN,      OP_PARM_REG_EAX,    OP_PARM_REG_DX, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_READ),
+    OP("out DX,AL",          IDX_ParseFixedReg,  IDX_ParseFixedReg, 0,          OP_OUT,     OP_PARM_REG_DX,     OP_PARM_REG_AL, OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+    OP("out DX,%eAX",        IDX_ParseFixedReg,  IDX_ParseFixedReg, 0,          OP_OUT,     OP_PARM_REG_DX,     OP_PARM_REG_EAX,OP_PARM_NONE,   OPTYPE_PORTIO | OPTYPE_PRIVILEGED | OPTYPE_PORTIO_WRITE),
+
+
+    /* F */
+    OP("lock",               0,              0,          0,          OP_LOCK,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    /* softice bp */
+    INVALID_OPCODE,
+    OP("repne",              0,              0,          0,          OP_REPNE,   OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("rep(e)",             0,              0,          0,          OP_REPE,    OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("hlt",                0,              0,          0,          OP_HLT,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS | OPTYPE_PRIVILEGED),
+    OP("cmc",                0,              0,          0,          OP_CMC,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Unary Grp3 %Eb",     IDX_ParseGrp3,  0,          0,          OP_UNARY_GRP3,  OP_PARM_Eb,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Unary Grp3 %Ev",     IDX_ParseGrp3,  0,          0,          OP_UNARY_GRP3,  OP_PARM_Ev,     OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("clc",                0,              0,          0,          OP_CLC,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("stc",                0,              0,          0,          OP_STC,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("cli",                0,              0,          0,          OP_CLI,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_DANGEROUS | OPTYPE_PRIVILEGED),
+    OP("sti",                0,              0,          0,          OP_STI,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_DANGEROUS | OPTYPE_PRIVILEGED | OPTYPE_INHIBIT_IRQS),
+    OP("cld",                0,              0,          0,          OP_CLD,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("std",                0,              0,          0,          OP_STD,     OP_PARM_NONE,       OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("inc/dec Grp4",       IDX_ParseGrp4,  0,          0,          OP_INC_GRP4, OP_PARM_NONE,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+    OP("Indirect Grp5",      IDX_ParseGrp5,  0,          0,          OP_IND_GRP5, OP_PARM_NONE,      OP_PARM_NONE,   OP_PARM_NONE,   OPTYPE_HARMLESS),
+};
+
Index: /trunk/src/VBox/Disassembler/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Disassembler/Makefile.kmk	(revision 8298)
+++ /trunk/src/VBox/Disassembler/Makefile.kmk	(revision 8299)
@@ -35,17 +35,17 @@
  endif
 endif
-DisasmR3_SOURCES        = Disasm.cpp DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp
+DisasmR3_SOURCES        = Disasm.cpp DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp
 DisasmR3_DEFS           = IN_DIS_R3
 
 DisasmCoreR3_TEMPLATE   = VBOXR3
-DisasmCoreR3_SOURCES    = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp
+DisasmCoreR3_SOURCES    = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp
 DisasmCoreR3_DEFS       = IN_DIS_R3 DIS_CORE_ONLY
 
 DisasmGC_TEMPLATE       = VBOXGC
-DisasmGC_SOURCES        = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp
+DisasmGC_SOURCES        = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp
 DisasmGC_DEFS           = IN_DIS_GC IN_RT_GC DIS_CORE_ONLY
 
 DisasmR0_TEMPLATE       = VBOXR0
-DisasmR0_SOURCES        = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp
+DisasmR0_SOURCES        = DisasmCore.cpp DisasmReg.cpp DisasmTables.cpp DisasmTablesX64.cpp
 DisasmR0_DEFS           = IN_DIS_R0 IN_RT_R0 DIS_CORE_ONLY
 
