This is an OS-independent module of EuroTool program
EuroView which performs disassembly of a code.
EUROASM CPU=X64, Debug=no
viewdasm PROGRAM FORMAT=COFF,WIDTH=64
%DROPMACRO *
INCLUDEHEAD viewmain.htm
INCLUDE1 cpuext.htm, cpuext64.htm, string64.htm, status32.htm, debug.htm
Format of byte REX
| REX | W | R | X | B |
0 | 1 | 0 | 0 | operand width 64 |
Reg/Opcode extension r3 | SIB.I extension x3 | SIB.B or R/M extension b3 |
Format of prefix XOP
| Byte 0 | Byte 1 | Byte 2 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
~r3 | ~x3 | ~b3 | m4 | m3 | m2 | m1 | m0 |
W | ~v3 | ~v2 | ~v1 | ~v0 | L | p1 | p0 |
Format of prefix VEX2
| Byte 0 | Byte 1 |
| 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
~r3 | ~v3 | ~v2 | ~v1 | ~v0 | L | p1 | p0 |
Format of prefix VEX3
| Byte 0 | Byte 1 | Byte 2 |
| 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
~r3 | ~x3 | ~b3 | m4 | m3 | m2 | m1 | m0 |
W | ~v3 | ~v2 | ~v1 | ~v0 | L | p1 | p0 |
Format of prefix MVEX
| Byte 0 | Byte 1 | Byte 2 | Byte 3 |
| 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
~r3 | ~x3 | ~b3 | ~r4 | m3 | m2 | m1 | m0 |
W | ~v3 | ~v2 | ~v1 | ~v0 | 0 | p1 | p0 |
E | S2 | S1 | S0 | ~v4 | k2 | k1 | k0 |
Format of prefix EVEX
| Byte 0 | Byte 1 | Byte 2 | Byte 3 |
| 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
~r3 | ~x3 | ~b3 | ~r4 | m3 | m2 | m1 | m0 |
W | ~v3 | ~v2 | ~v1 | ~v0 | 1 | p1 | p0 |
z | L' | L | b | ~v4 | k2 | k1 | k0 |
Format of byte ModR/M
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Mod | Reg/Opcode |
R/M |
mod1 | mod0 | r2 | r1 |
r0 | b2 | b1 | b0 |
Format of byte SIB
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SS: Scale | I: Index |
B: Base |
S1 | S0 | x2 | x1 |
x0 | b2 | b1 | b0 |
Operands encoding in MVEX|EVEX prefix
| AVX-512 operands | EVEX / MVEX |
ModRM byte | (V)SIB byte |
| R | X | B | R' | V' |
mod | reg | R/M |
scale | index | base |
| Mod=0|1|2; mem type: Rr, [S * Rx + Rb] |
r3 | x3 | b3 | r4 | x4 |
m | m | r2 | r1 | r0 | 1 | 0 | 0 |
S1 | S0 | x2 | x1 | x0 | b2 | b1 | b0 |
| Mod=3; reg type: Rr, Rb |
r3 | b4 | b3 | r4 | |
1 | 1 | r2 | r1 | r0 | b2 | b1 | b0 |
not used |
- ↑ DIS
- 128-bit structure DIS declares recipes for disassembly of one prefix or machine instruction.
For each opcode 0x01..0x0F3XXX there is one member Dii of this structure in the table
DisTab.
DIS STRUC ; Declaration of disassembly of one prefix or instruction.
.Operation D 24*BYTE ; Instruction mnemonic in upper case.
.Opcode D DWORD ; E.g. 0x0000_00XX, 0x000F_38XX etc.
.Conditions D DWORD ; stCondMask + stTypeMask, see DIS.Conditions encoding flags below.
ENDSTRUC DIS
- ↑ DII
- Structure DII declares memory variables used in disassembly on one instructions.
There is one member Dii of this structure in this program.
DII STRUC ; Disassembled machine (Intel) instruction.
.Prefix1 D Q ; Pointer to explicitly disassembled machine prefix #1 name. 0x00
.Prefix2 D Q ; Pointer to explicitly disassembled machine prefix #2 name. 0x08
.Prefix3 D Q ; Pointer to explicitly disassembled machine prefix #3 name. 0x10
.Prefix4 D Q ; Pointer to explicitly disassembled machine prefix #4 name. 0x18
.Operand1 D Q ; Pointer to operand 1 as a string. 0x20
.Operand2 D Q ; Pointer to operand 2 as a string. 0x28
.Operand3 D Q ; Pointer to operand 3 as a string. 0x30
.Operand4 D Q ; Pointer to operand 4 as a string. 0x38
.OperReg D Q ; Pointer to operational register name from RegOp field. May be GPR or changed. 0x40
.BaseReg D Q ; Pointer to base register name from R/M field or from SIB/B field. May be GPR or changed.
.IndexReg D Q ; Pointer to index register name from SIB/I field. May be GPR or changed. 0x50
.VvvvReg D Q ; Pointer to Vvvv register name from (E)VEX field. May be GPR or changed. 0x58
.Memory D Q ; Pointer to a memory string from ModR/M in braces, e.g. "[EBX+2*ECX+0x12]",0 0x60
.Operation D Q ; Pointer to operation name. Upper case, zero terminated. +0x68
.Disp D Q ; Displacement value. +0x70
.Imm D Q ; Immediate value. +0x78
.$VA D Q ; File address of $ (current section offset) +0x80
.Opcode D D ; Opcode (one,two,three-bytes) +0x88
.InstrSize D D ; Instruction size (1..15) +0x8C
.Prefix D D ; Prefix flags, see below. +0x90
.Flags D D ; Miscellaneous status flags, see below. +0x94
.Disp8EVEX D D ; see IidDisp8EVEX +0x98
.Disp8MVEX D D ; see IidDisp8MVEX +0x9C
.Status D D ; Status flags, see below. +0xA0
.Family D D ; Register families for oper,base,Vvv,index register. +0xA4
D D ; reserved +0xA8
D 2*B ; reserved +0xAC
.OperWidth D B ; Effective operation width (may have been Otoggled or W-ed). +0xAE.
.AddrWidth D B ; Effective address width (may have been Atoggled). +0xAF.
.OperNr D B ; Number of operational register r0..r4 +0xB0.
.BaseNr D B ; Number of base register b0..b4 +0xB1.
.VvvvNr D B ; Number of Vvvv register v0..v4 +0xB2.
.IndexNr D B ; Number of index register x0..x4 +0xB3.
D B ; reserved +0xB4
.MaskNr D B ; Number of key register k0..k7 +0xB5.
.Scale D B ; 0|'2'|'4'|'8' +0xB6.
.MapNr D B ; 0=base,1=0F, 2=0F38, 3=0F3A, 5=baseMod5, 8=XOP8, 9=XOP9, 10=XOP10
.DispSize D B ; 0,1,2,4,8 bytes of displacement. +0xB8.
.ImmSize D B ; 0,1,2,4,8 bytes of immediate operand. +0xB9.
.Imm2Size D B ; 0,1 bytes of secondary imm. operand. +0xBA
.@VEXtype D B ; 0..5 see Dii.@VEXtype encoding below +0xBB
.ModRM D B ; +0xBC
.SIB D B ; +0xBD
.DATA D B ; 0|'B'|'W'|'D'|'Q'|'O'|'T'|'Y'|'Z'. +0xBE
.DISP D B ; 0|'B'|'W'|'D'|'Q'. +0xBF
.IMM D B ; 0|'B'|'W'|'D'|'Q'. +0xC0
.CODE D B ; 0|'S'|'L'. +0xC1
.SCALE D B ; 0|'S'|'V'. +0xC2
.ADDR D B ; 0|'A'|'R'. +0xC3
.DIST D B ; 0|'S'|'N'|'F'. +0xC4
.MASK D B ; 0|'0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'. +0xC5
.OPER D B ; 0|'0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'. +0xC6
.ROUND D B ; 0|'N'|'U'|'D'|'Z'. +0xC7
.ZEROING D B ; 0|'0'|'1'. +0xC8
.SAE D B ; 0|'0'|'1'. +0xC9
.BCST D B ; 0|'0'|'1'. +0xCA
.EH D B ; 0|'0'|'1'. +0xCB
.PREFIX D 4*B ; 0|"EVEX"|"MVEX"|"VEX3"|"VEX2"|"XOP" +0xCC
ENDSTRUC DII
; Dii.Flags miscellaneous encoding flags:
flagS0 = 0x0000_0001 ; Bit MVEX.S0 alias EVEX.b
flagS1 = 0x0000_0002 ; Bit MVEX.S1 alias EVEX.L alias XOP|VEX.L.
flagS2 = 0x0000_0004 ; Bit MVEX.S2 alias EVEX.L'
flagProm64 = 0x0000_0010 ; OperWidth is promoted to 64.
flagSIB = 0x0000_0020 ; SIB byte follows ModR/M.
flagNoBase = 0x0000_0040 ; ModR/M with no base register.
flagNoIndex = 0x0000_0080 ; ModR/M with no index register.
flagNoDATAinMod3 = 0x0000_0100 ; Do not display DATA= if Mod=3.
flagImmFar = 0x0000_0200 ; Immediate operand will be 0xSeg:0xOffs rather than 0xPointer.
flagImmSignExt = 0x0000_0400 ; Immediate operand will be sign-extended, IMM=D and not IMM=Q.
flagVSIB = 0x0000_0800 ; Index register is XMM|YMM|ZMM even when SIB.X=4.
flagFWAIT = 0x0000_1000 ; Flag|prefix 0x9B preceeded certain FPU instructions.
flagOverrideES = 0x0000_2000 ; Dest.segment in GetStringRegs can be overriden.
; Dii.Status encoding flags:
stXpfx = 0x0000_0800 ; Presence of prefix *VEX or XOP is queried.
stF2:: = 0x0001_0000 ; EpfxF2
stF3:: = 0x0002_0000 ; EpfxF3
st66:: = 0x0004_0000 ; Epfx66
stNP:: = 0x0008_0000 ; EpfxNP
stRegOp0:: = 0x0080_0000 ; ModR/M is in RegOp=0.
stRegOp1:: = 0x0090_0000 ; ModR/M is in RegOp=1.
stRegOp2:: = 0x00A0_0000 ; ModR/M is in RegOp=2.
stRegOp3:: = 0x00B0_0000 ; ModR/M is in RegOp=3.
stRegOp4:: = 0x00C0_0000 ; ModR/M is in RegOp=4.
stRegOp5:: = 0x00D0_0000 ; ModR/M is in RegOp=5.
stRegOp6:: = 0x00E0_0000 ; ModR/M is in RegOp=6.
stRegOp7:: = 0x00F0_0000 ; ModR/M is in RegOp=7.
stMod0 = 0x0100_0000 ; ModR/M is in Mod=0 (0x00..0x3F).
stMod1 = 0x0200_0000 ; ModR/M is in Mod=1 (0x40..0x7F).
stMod2 = 0x0400_0000 ; ModR/M is in Mod=2 (0x80..0xBF).
stMod3 = 0x0800_0000 ; ModR/M is in Mod=3 (0xC0..0xFF).
stMode64 = 0x2000_0000 ; CPU is in 64-bit mode.
stW = 0x4000_0000 ; Wide bit is set (REX.W or *VEX.W).
; Dii.Prefix encoding flags:
pfxREX.B:: = 0x0000_0041
pfxREX.X:: = 0x0000_0042
pfxREX.R:: = 0x0000_0044
pfxREX.W:: = 0x0000_0048 ; Identical with Dii.Status:stW
pfxREX = 0x0000_0040 ; Prefix REX was present. AH,CH,DH,BH are not available.
pfx26 = 0x0000_0100 ; Prefix 26/SEGES was presented explicitly.
pfx36 = 0x0000_0200 ; Prefix 36/SEGSS was presented explicitly.
pfx2E = 0x0000_0400 ; Prefix 2E/SEGCS/SELDOM was presented explicitly.
pfx3E = 0x0000_0800 ; Prefix 3E/SEGDS/OFTEN was presented explicitly.
pfx67 = 0x0000_1000 ; Prefix 67/ATOGGLE was presented explicitly.
pfx64 = 0x0000_2000 ; Prefix 64/SEGFS was presented explicitly.
pfx65 = 0x0000_4000 ; Prefix 65/SEGGS was presented explicitly.
pfxF0 = 0x0000_8000 ; Prefix F0/LOCK was presented explicitly.
pfxF2 = 0x0001_0000 ; Prefix F2/REPNE was presented explicitly.
pfxF3 = 0x0002_0000 ; Prefix F3/REPE was presented explicitly.
pfx66 = 0x0004_0000 ; Prefix 66/OTOGGLE was presented explicitly.
pfxNP = 0x0008_0000 ; No op-modifying prefix (66|F2|F3).
pfxF2IsOpcode = 0x0010_0000 ; Prefix F2 is part of opcode.
pfxF3IsOpcode = 0x0020_0000 ; Prefix F3 is part of opcode.
pfx66IsOpcode = 0x0040_0000 ; Prefix 66 is part of opcode, it does not change Dii.OperWidth.
pfxNPIsOpcode = 0x0080_0000 ; None of prefixes 66,F2,F3 may be present.
pfx66NotUsed = 0x0100_0000 ; Prefix 66 was not used in encoding. Flush as OTOGGLE.
pfx67NotUsed = 0x0200_0000 ; Prefix 67 was not used in encoding. Flush as ATOGGLE.
pfxREXNotUsed = 0x0400_0000 ; Prefix REX was not used in encoding. Flush as DB.
pfxNoMore = 0x0800_0000 ; REX,XOP,VEX,EVEX was already disassembled. Any following legacy prefix is error.
; DIS.Conditions encoding flags, used in macro
DisTab and in DasmBlock in register EBX:
DisTypeMask = 0x0000_03FF ; Mask for ordinal of operands type, one of the @DisTypeList member 1..1023.
condMask = 0xFFFF_FC00 ; Mask for conditions in DIS.Conditions:
condModeLg = 0x0000_0400 ; Check if Dii.Status:stMode64 is reset.
condMode64 = 0x0000_0800 ; Check if Dii.Status:stMode64 is set.
cond0:: = 0x0000_0000 ; No @VEX prefix was used.
condXOP:: = 0x0000_1000 ; Check if prefix XOP was used for encoding.
condMVEX:: = 0x0000_2000 ; Check if prefix MVEX was used for encoding.
condVEX:: = 0x0000_3000 ; Check if prefix VEX2 was used for encoding.
condEVEX:: = 0x0000_4000 ; Check if prefix EVEX with opcode 0F|0F38|0F3A was used for encoding.
condEVEX5:: = 0x0000_5000 ; Check if prefix EVEX with opcode Map5 was used for encoding.
condEVEX6:: = 0x0000_6000 ; Check if prefix EVEX with opcode Map6 was used for encoding.
condXpfx = 0x0000_8000 ; Check if prefix XOP|VEX|MVEX|EVEX was used for encoding.
condW0 = 0x0001_0000 ; Check if wide bit Dii.Status:stW is reset.
condW1 = 0x0002_0000 ; Check if wide bit Dii.Status:stW is set.
condMod0 = 0x0004_0000 ; Check if Dii.Status:stMod0|stMod1|stMod2 is set.
condMod3 = 0x0008_0000 ; Check if Dii.Status:stMod3 is set.
condEpfxNP = 0x0010_0000 ; Check if none of Dii.Prefix:pfx66|pfxF2|pfxF3 is set.
condEpfx66 = 0x0020_0000 ; Check if Dii.Prefix:pfx66 is set.
condEpfxF2 = 0x0040_0000 ; Check if Dii.Prefix:pfxF2 is set.
condEpfxF3 = 0x0080_0000 ; Check if Dii.Prefix:pfxF3 is set.
condRegOp0 = 0x0000_0000 ; Check if ModR/M field RegOp is 0.
condRegOp1 = 0x0100_0000 ; Check if ModR/M field RegOp is 1.
condRegOp2 = 0x0200_0000 ; Check if ModR/M field RegOp is 2.
condRegOp3 = 0x0300_0000 ; Check if ModR/M field RegOp is 3.
condRegOp4 = 0x0400_0000 ; Check if ModR/M field RegOp is 4.
condRegOp5 = 0x0500_0000 ; Check if ModR/M field RegOp is 5.
condRegOp6 = 0x0600_0000 ; Check if ModR/M field RegOp is 6.
condRegOp7 = 0x0700_0000 ; Check if ModR/M field RegOp is 7.
condRegOp = 0x0800_0000 ; RegOp value 0..7 in bits 24..26 should be checked.
condRM0 = 0x0000_0000 ; Check if ModR/M field RM is 0.
condRM1 = 0x1000_0000 ; Check if ModR/M field RM is 1.
condRM2 = 0x2000_0000 ; Check if ModR/M field RM is 2.
condRM3 = 0x3000_0000 ; Check if ModR/M field RM is 3.
condRM4 = 0x4000_0000 ; Check if ModR/M field RM is 4.
condRM5 = 0x5000_0000 ; Check if ModR/M field RM is 5.
condRM6 = 0x6000_0000 ; Check if ModR/M field RM is 6.
condRM7 = 0x7000_0000 ; Check if ModR/M field RM is 7.
condRM = 0x8000_0000 ; RM value 0..7 in bits 28..30 should be checked.
; Dii.Family encoding flags. Bytes of Dii.Family specify fields OpReg, R/M, Vvvv, Imm.
familyR:: = 0 ; GPR (default).
familyC:: = 'C' ; Control register CR0..CR8.
familyG:: = 'G' ; Debug register DR0..DR7.
familyE:: = 'E' ; Test register TR0..TR7.
familyS:: = 'S' ; Segment register ES,DS,CS,SS,FS,GS,SEGR6,SEGR7.
familyF:: = 'F' ; FPU register ST0..ST7.
familyK:: = 'K' ; Keymask register K0..K7.
familyN:: = 'N' ; Bind register BND0..BND3.
familyU:: = 'U' ; Multimedia register MM0..MM7.
familyO:: = 'O' ; SSE register X|Y|ZMM0..31.
familyX:: = 'X' ; SSE register XMM0..XMM31.
familyY:: = 'Y' ; SSE register YMM0..YMM31.
familyZ:: = 'Z' ; SSE register ZMM0..ZMM31.
familyV:: = 'V' ; SIB index is SSE register XMM0..ZMM31.
; Dii.@VEXtype encoding flags:
XpfxXOP = 1 ; XOP with opcode map 0Fxx,0F38xx,0F3Axx.
XpfxMVEX = 2 ; MVEX with opcode map 0Fxx,0F38xx,0F3Axx.
XpfxVEX = 3 ; VEX2 or VEX3 with opcode map 0Fxx,0F38xx,0F3Axx.
XpfxEVEX = 4 ; EVEX with opcode map 0Fxx,0F38xx,0F3Axx.
XpfxEVEX5 = 5 ; EVEX with opcode MAP5. Dii.Opcode is 0x0000_00XX.
XpfxEVEX6 = 6 ; EVEX with opcode MAP6. Dii.Opcode is 0x0000_00XX.
; Dii.OperWidth (effective width, based on ArgCodeWidth:: but changeable by OTOGGLE or by REX.W).
OperWidth8 = 0x01
OperWidth16 = 0x02
OperWidth32 = 0x04 ; R32 or single precision FPU.
OperWidth64 = 0x08 ; R64 or double precision FPU.
; Dii.AddrWidth (effective width, based on ArgCodeWidth:: but changeable by ATOGGLE).
AddrWidth16 = 0x02
AddrWidth32 = 0x04
AddrWidth64 = 0x08
; Status.Width (CPU mode) specified by file format in [argument.htm:Status::].
;ArgWidth16 = 0x0010_0000
;ArgWidth32 = 0x0020_0000
;ArgWidth64 = 0x0040_0000
; The General Disp8*N rule (N = size of the memory element actually loaded, not the vector register width):
; Full vector load (no broadcast): N = full vector width in bytes (16, 32, or 64).
; Broadcast {1toX}): N = element size (4 for float32, 8 for float64 or 1..8 for integer).
; Scalar: N = element size (4 or 8 bytes or 1..8 for integer).
; Dii.Disp8EVEX value encodings for EVEX.L'Lb=Oper=01234567:
FVM = 0x445566FF ; Full Memory
FV64 = 0x435363FF ; Full (Q)
FV32 = 0x425262FF ; Full (D)
FV16 = 0x415161FF ; Full (W)
HVM = 0x334455FF ; Half Memory
HV32 = 0x324252FF ; Half (D)
HV16 = 0x314151FF ; Half (W)
QVM = 0x223344FF ; Quarter Memory
QV16 = 0x213141FF ; Quarter (W)
OVM = 0x112233FF ; Eighth Memory
; Common Dii.Disp8EVEX and Dii.Disp8MVEXvalue encodings:
T8 = 0x00000000 ; Scalar (B)
T16 = 0x11111111 ; Scalar (W)
T32 = 0x22222222 ; Scalar (D)
T64 = 0x33333333 ; Scalar (Q)
T128 = 0x44444444 ; Scalar (O)
T256 = 0x55555555 ; Scalar (Y)
; Dii.Disp8MVEX value encodings for MVEX.S2S1S0=Oper=01234567:
MFVM = 0x456F456F ; Full Memory
MFV64 = 0x4353633F ; Full (Q)
MFV32 = 0x4252622F ; Full (D)
MHV32 = 0x4151611F ; Half (D)
[.rodata]
; Register names and operation names:
RegAddr16:
DB "BX+SI",0
DB "BX+DI",0
DB "BP+SI",0
DB "BP+DI",0
DB "SI",0
DB "DI",0
DB "BP",0
DB "BX",0
RegSeg:
RegES: DB "ES",0
RegCS: DB "CS",0
RegSS: DB "SS",0
RegDS: DB "DS",0
RegFS: DB "FS",0
RegGS: DB "GS",0
DB "SEGR6",0
DB "SEGR7",0
Reg8:
RegAL: DB "AL",0
RegCL: DB "CL",0
DB "DL",0
DB "BL",0
DB "AH",0
DB "CH",0
DB "DH",0
DB "BH",0
Reg8REX:
DB "AL",0
DB "CL",0
DB "DL",0
DB "BL",0
DB "SPL",0
DB "BPL",0
DB "SIL",0
DB "DIL",0
DB "R8B",0
DB "R9B",0
DB "R10B",0
DB "R11B",0
DB "R12B",0
DB "R13B",0
DB "R14B",0
DB "R15B",0
Reg16:
RegAX: DB "AX",0
RegCX: DB "CX",0
RegDX: DB "DX",0
DB "BX",0
DB "SP",0
DB "BP",0
DB "SI",0
DB "DI",0
DB "R8W",0
DB "R9W",0
DB "R10W",0
DB "R11W",0
DB "R12W",0
DB "R13W",0
DB "R14W",0
DB "R15W",0
Reg32:
RegEAX: DB "EAX",0
RegECX: DB "ECX",0
DB "EDX",0
DB "EBX",0
DB "ESP",0
DB "EBP",0
DB "ESI",0
DB "EDI",0
DB "R8D",0
DB "R9D",0
DB "R10D",0
DB "R11D",0
DB "R12D",0
DB "R13D",0
DB "R14D",0
DB "R15D",0
Reg64:
RegRAX: DB "RAX",0
RegRCX: DB "RCX",0
DB "RDX",0
DB "RBX",0
DB "RSP",0
DB "RBP",0
DB "RSI",0
DB "RDI",0
DB "R8",0
DB "R9",0
DB "R10",0
DB "R11",0
DB "R12",0
DB "R13",0
DB "R14",0
DB "R15",0
RegFP:
RegST0: DB "ST0",0
RegST1: DB "ST1",0
DB "ST2",0
DB "ST3",0
DB "ST4",0
DB "ST5",0
DB "ST6",0
DB "ST7",0
RegCR:
DB "CR0",0
DB "CR1",0
DB "CR2",0
DB "CR3",0
DB "CR4",0
DB "CR5",0
DB "CR6",0
DB "CR7",0
DB "CR8",0
DB "CR9",0
DB "CR10",0
DB "CR11",0
DB "CR12",0
DB "CR13",0
DB "CR14",0
DB "CR15",0
RegDR:
DB "DR0",0
DB "DR1",0
DB "DR2",0
DB "DR3",0
DB "DR4",0
DB "DR5",0
DB "DR6",0
DB "DR7",0
DB "DR8",0
DB "DR9",0
DB "DR10",0
DB "DR11",0
DB "DR12",0
DB "DR13",0
DB "DR14",0
DB "DR15",0
RegTest:
DB 'TR0',0
DB 'TR1',0
DB 'TR2',0
DB 'TR3',0
DB 'TR4',0
DB 'TR5',0
DB 'TR6',0
DB 'TR7',0
RegMM:
DB "MM0",0
DB "MM1",0
DB "MM2",0
DB "MM3",0
DB "MM4",0
DB "MM5",0
DB "MM6",0
DB "MM7",0
DB "MM0",0
DB "MM1",0
DB "MM2",0
DB "MM3",0
DB "MM4",0
DB "MM5",0
DB "MM6",0
DB "MM7",0
RegXMM:
RegXMM0:DB "XMM0",0
DB "XMM1",0
DB "XMM2",0
DB "XMM3",0
DB "XMM4",0
DB "XMM5",0
DB "XMM6",0
DB "XMM7",0
DB "XMM8",0
DB "XMM9",0
DB "XMM10",0
DB "XMM11",0
DB "XMM12",0
DB "XMM13",0
DB "XMM14",0
DB "XMM15",0
DB "XMM16",0
DB "XMM17",0
DB "XMM18",0
DB "XMM19",0
DB "XMM20",0
DB "XMM21",0
DB "XMM22",0
DB "XMM23",0
DB "XMM24",0
DB "XMM25",0
DB "XMM26",0
DB "XMM27",0
DB "XMM28",0
DB "XMM29",0
DB "XMM30",0
DB "XMM31",0
RegYMM:
DB "YMM0",0
DB "YMM1",0
DB "YMM2",0
DB "YMM3",0
DB "YMM4",0
DB "YMM5",0
DB "YMM6",0
DB "YMM7",0
DB "YMM8",0
DB "YMM9",0
DB "YMM10",0
DB "YMM11",0
DB "YMM12",0
DB "YMM13",0
DB "YMM14",0
DB "YMM15",0
DB "YMM16",0
DB "YMM17",0
DB "YMM18",0
DB "YMM19",0
DB "YMM20",0
DB "YMM21",0
DB "YMM22",0
DB "YMM23",0
DB "YMM24",0
DB "YMM25",0
DB "YMM26",0
DB "YMM27",0
DB "YMM28",0
DB "YMM29",0
DB "YMM30",0
DB "YMM31",0
RegZMM:
DB "ZMM0",0
DB "ZMM1",0
DB "ZMM2",0
DB "ZMM3",0
DB "ZMM4",0
DB "ZMM5",0
DB "ZMM6",0
DB "ZMM7",0
DB "ZMM8",0
DB "ZMM9",0
DB "ZMM10",0
DB "ZMM11",0
DB "ZMM12",0
DB "ZMM13",0
DB "ZMM14",0
DB "ZMM15",0
DB "ZMM16",0
DB "ZMM17",0
DB "ZMM18",0
DB "ZMM19",0
DB "ZMM20",0
DB "ZMM21",0
DB "ZMM22",0
DB "ZMM23",0
DB "ZMM24",0
DB "ZMM25",0
DB "ZMM26",0
DB "ZMM27",0
DB "ZMM28",0
DB "ZMM29",0
DB "ZMM30",0
DB "ZMM31",0
RegKey:
DB "K0",0
DB "K1",0
DB "K2",0
DB "K3",0
DB "K4",0
DB "K5",0
DB "K6",0
DB "K7",0
RegBind:
DB "BND0",0
DB "BND1",0
DB "BND2",0
DB "BND3",0
; Operation names for instruction groups:
OperGrpD8:
OperFADD DB "FADD",0
OperFMUL DB "FMUL",0
DB "FCOM",0
DB "FCOMP",0
OperFSUB DB "FSUB",0
OperFSUBR DB "FSUBR",0
OperFDIV DB "FDIV",0
OperFDIVR DB "FDIVR",0
DB 0
DB "CMPXCHG8B",0
DB 0
DB "XRSTORS",0
DB "XSAVEC",0
DB "XSAVES",0
DB "VMPTRLD",0
DB "VMPTRST",0
DB 0
DB "CMPXCHG16B",0
DB 0
DB "XRSTORS64",0
DB "XSAVEC64",0
DB "XSAVES64",0
DB 0,0
OperGrpD9:
DB "FLD",0
DB 0
OperFST DB "FST",0
OperFSTP DB "FSTP",0
DB "FLDENV",0
DB "FLDCW",0
DB "FNSTENV",0
DB "FNSTCW",0
OperGrpD9E:
DB "FCHS",0
DB "FABS",0
DB 0
DB 0
DB "FTST",0
DB "FXAM",0
DB 0
DB 0
DB "FLD1",0
DB "FLDL2T",0
DB "FLDL2E",0
DB "FLDPI",0
DB "FLDLG2",0
DB "FLDLN2",0
DB "FLDZ",0
DB 0
DB "F2XM1",0
DB "FYL2X",0
DB "FPTAN",0
DB "FPATAN",0
DB "FXTRACT",0
DB "FPREM1",0
DB "FDECSTP",0
DB "FINCSTP",0
DB "FPREM",0
DB "FYL2XP1",0
DB "FSQRT",0
DB "FSINCOS",0
DB "FRNDINT",0
DB "FSCALE",0
DB "FSIN",0
DB "FCOS",0
OperGrpDA:
DB "FIADD",0
DB "FIMUL",0
DB "FICOM",0
DB "FICOMP",0
DB "FISUB",0
DB "FISUBR",0
DB "FIDIV",0
DB "FIDIVR",0
OperGrpDB:
DB "FILD",0
DB "FISTTP",0
DB "FIST",0
DB "FISTP",0
DB 0
DB "FLD",0
DB 0
DB "FSTP",0
OperGrpDBE:
DB "FNENI",0
DB "FNDISI",0
DB "FNCLEX",0
DB "FNINIT",0
DB "FNSETPM",0
DB "FRSTPM",0
DB 0,0
OperGrpDBEF: ; Operations preceeded by FWAIT prefix 0x9B.
DB "FENI",0
DB "FDISI",0
DB "FCLEX",0
DB "FINIT",0
DB "FSETPM",0
DB "FRSTPM",0
DB 0,0
OperGrpDD:
DB "FLD",0
DB "FISTTP",0
DB "FST",0
DB "FSTP",0
DB "FRSTOR",0
DB 0
DB "FNSAVE",0
OperFNSTSW DB "FNSTSW",0
OperGrpDF:
DB "FILD",0
DB "FISTTP",0
DB "FIST",0
DB "FISTP",0
DB "FBLD",0
DB "FILD",0
DB "FBSTP",0
DB "FISTP",0
OperGrp3DNow:
DB 0xBF,"PAVGUSB",0
DB 0x1D,"PF2ID",0
DB 0x1C,"PF2IW",0
DB 0xAE,"PFACC",0
DB 0x9E,"PFADD",0
DB 0xB0,"PFCMPEQ",0
DB 0x90,"PFCMPGE",0
DB 0xA0,"PFCMPGT",0
DB 0xA4,"PFMAX",0
DB 0x94,"PFMIN",0
DB 0xB4,"PFMUL",0
DB 0x8A,"PFNACC",0
DB 0x8E,"PFPNACC",0
DB 0x96,"PFRCP",0
DB 0x86,"PFRCPV",0
DB 0xA6,"PFRCPIT1",0
DB 0xB6,"PFRCPIT2",0
DB 0xA7,"PFRSQIT1",0
DB 0x97,"PFRSQRT",0
DB 0x87,"PFRSQRTV",0
DB 0x9A,"PFSUB",0
DB 0xAA,"PFSUBR",0
DB 0x0D,"PI2FD",0
DB 0x0C,"PI2FW",0
DB 0xB7,"PMULHRW",0
DB 0xBB,"PSWAPD",0
DB 0,13,10,0
[.bss]
Dii DS DII
MoffsLine D 32*BYTE ; Human-readable moffs operand, e.g. 0x1122334455667788
MemoryLine D 32*BYTE ; Human-readable memory expression, e.g. [EBX+4*ESI-0x11223344]
ImmLine D 32*BYTE ; Human-readable immedate operand, e.g. 0x11223344
Imm2Line D 32*BYTE ; Human-readable second immedate operand, e.g. 0x11
OutputLine D 128*BYTE ; Human-readable disassembled text, e.g. CMOVNC ESI,[EBX]
Status EXTERN ; Defined in "argument.htm".
[.text]
- ↑ DiiInitialize
- Take CPU mode (16,32 or 64) and set default Dii.OperWidth and Dii.AddrWidth.
-
- Documentation
- Effective Operand- and Address-Size Attributes, Table 3-3.
- Input
- RAX=File address of the instruction.
ArgCodeWidth.
- Output
- Dii.OperWidth, Dii.AddrWidth
- Error
- -
- Clobbers
- RAX, RDX
- Invokes
-
- Invoked by
-
- Clobbers
- RAX
DiiInitialize: PROC
Clear Dii
MOV [Dii.$VA],RAX ; File address of code block.
MOV EAX,[ArgCodeWidth::] ; Explicitly specified 16|32|64.
Dispatch AL,16,32,64
JMP .90:
.16:MOV [Dii.OperWidth],OperWidth16
MOV [Dii.AddrWidth],AddrWidth16
JMP .90:
.32:MOV [Dii.OperWidth],OperWidth32
MOV [Dii.AddrWidth],AddrWidth32
JMP .90:
.64:MOV [Dii.OperWidth],OperWidth32
MOV [Dii.AddrWidth],AddrWidth64
SetSt [Dii.Status],stMode64
.90:
RET
ENDP DiiInitialize
Disasm
- Disasm will disassemble one block of code
specified by VIEW_INDEX pointed by RBX.
Code block [RBX+VIEW_INDEX.Size] bytes at file address
[RBX+VIEW_INDEX.FA] is related to InputPtr.
[RBX+VIEW_INDEX.Rem] is the string "!V".
While [RBX+VIEW_INDEX.Size]>0, this procedure Disasm will keep writing strings with level0-records to the output file, i.e.
|file_address:code | Operation operands ; characters for instance
|0113:6893000000 | PUSH 0x00000093,DATA=D,IMM-D ; h, and after the disassembly of each instruction it will
learn the size of disassembled instruction, add it to [RBX+VIEW_INDEX.FA], subtract it from
[RBX+VIEW_INDEX.Size] and repeat while .Size is above 0.
- Input
- [InputPtr]= pointer to the begining of the input file mapped in memory. FA is related to this beginning.
RBX=pointer to VIEW_INDEX variable whose .Rem contains !V and .FA and .Size specify the code block to disassemble.
- Output
- R8,RBX not changed.
- Called by
- ExpandRem
Disasm:: PROC
MOV R10,RBX ; ^VIEW_INDEX
MOV R8D,[R10+VIEW_INDEX.FA]
ADD R8,[InputPtr::]
MOV R9D,[R10+VIEW_INDEX.Size]
ADD R9,R8 ; Code block is pointed to between R8..R9.
.Ini:MOV RAX,R8
SUB RAX,[InputPtr::]
CALL DiiInitialize: ; Clear Dii, let Dii.$VA=FA of the code.
.NoI:CMP R8,R9 ; Not initialized entry. Used when prefix(es) have been just processed and R8 points at Opcode byte.
JNB .95: ; Skip when the entire VIEW_INDEX was disassembled.
MOVZX EAX,[Dii.MapNr]
Dispatch AL,00, 01, 02, 03, 05, 06, 07, 08, 09, 10; -, 0F, 0F38, 0F3A, Map5, Map6, Map7, Map8, Map9, Map10.
JMP .22:
.08:
.09:
.10:
MOV AH,[Dii.MapNr]
JMP .00:
.01: MOV AX,0x000F
JMP .Nxt:
.02: MOV AX,0x0F38
JMP .Nxt:
.03: MOV AX,0x0F3A
.Nxt: SHL EAX,8
.00:
.05:
.06:
.07:
MOV AL,[R8] ; Read the prefix or the first byte of instruction code.
INC R8 ; R8 points at 2nd byte of instruction code or at ModR/M byte.
CMP R8,R9
JNB .95:
TEST EAX,0x00FF_FF00
JNZ .22:
CMP AL,0x0F ; Opcode begins with escape 0x0F?
JNE .22:
SHL EAX,8 ; AH=0x0F
MOV AL,[R8] ; The actual opcode byte which follows 0F.
INC R8 ; R8 points at 3rd byte or ModR/M byte
CMP R8,R9
JNB .95:
MOV [Dii.MapNr],1 ; 1=0x00000FXX
CMP AL,0x38
JNE .20:
MOV [Dii.MapNr],2 ; 2=0x000F38XX
SHL EAX,8
MOV AL,[R8] ; The actual opcode byte which follows 0F38.
INC R8 ; R8 points to ModR/M byte.
JMP .22:
.20: CMP AL,0x3A
JNE .22:
MOV [Dii.MapNr],3 ; 3=0x000F3AXX
SHL EAX,8
MOV AL,[R8] ; The actual opcode byte which follows 0F3A.
INC R8 ; R8 points to ModR/M byte.
.22: CMP R8,R9
JNB .95:
MOV [Dii.Opcode],EAX ; EAX is modified opcode map:
; 000000XX|00000FXX|000F38XX|000F3AXX where XX is opcode in maps -|0F|0F38|0F3A,
; or EAX is 000005YY|000006YY|000007YY where YY is EVEX opcode in maps 5|6|7,
; or EAX is 000008ZZ|000009ZZ|00000AZZ where ZZ is XOP opcode in maps 8|9|10.
LEA RSI,[DisTable-SIZE#DIS] ; The first Dis line.
.25: ADD RSI,SIZE#DIS ; Perhaps the condition was not met. Try the next row.
CMP RSI,DisTableEnd ; The last Dis line?
JNB .90:
MOV DL,[Dii.MapNr]
CMP DL,8
JB .28:
CMP DL,10
JA .28:
CMP [Dii.@VEXtype],XpfxXOP
JNE .25:
CMP DL,AH
JNE .25:
.28: CMP EAX,[RSI+DIS.Opcode]
JNE .25:
MOV EBX,[RSI+DIS.Conditions]
JNSt EBX,condMask, .30: ; Passthru when there is no condition for this instruction.
; Some conditions in EBX need to be checked: @VEX, Mode, W, Prefix, Mod, RegOp, RM.
JNSt EBX,condXpfx,.NX1: ; If condition Xpfx= was not used in DisTab, let it passthru.
MOV EDX,EBX ; Prefix is in bits 0x0000_X000
SHR EDX,4
AND DH,0000_0111b ; 0..7 @VEXtype from EBX.
MOV DL,[Dii.@VEXtype] ; 0..5 actual prefix type as was specified by previous call of DasmBlock.
CMP DH,7 ; MEVEX = EVEX|MVEX
JNE .N7:
CMP DL,XpfxEVEX
JE .NX1:
CMP DL,XpfxEVEX5
JE .NX1:
CMP DL,XpfxMVEX
JE .NX1:
JMP .25: ; Otherwise condition failed.
.N7: CMP DH,DL
JNE .25: ; If @VEX <> Dii.@VEXtype, condition failed.
.NX1:JNSt EBX,condMode64,.N64: ; Otherwise test other conditions.
JNSt [Dii.Status],stMode64,.25:
.N64:JNSt EBX,condModeLg,.NLG:
JSt [Dii.Status],stMode64,.25:
.NLG:JNSt EBX,condW0, .NW0:
JSt [Dii.Status],stW,.25:
.NW0:JNSt EBX,condW1, .NW1:
JNSt [Dii.Status],stW,.25:
.NW1:JNSt EBX,condEpfx66,.N66:
JNSt [Dii.Prefix],pfx66,.25:
SetSt [Dii.Prefix],pfx66IsOpcode
.N66:JNSt EBX,condEpfxF2,.NF2:
JNSt [Dii.Prefix],pfxF2,.25:
SetSt [Dii.Prefix],pfxF2IsOpcode
.NF2:JNSt EBX,condEpfxF3,.NF3:
JNSt [Dii.Prefix],pfxF3,.25:
SetSt [Dii.Prefix],pfxF3IsOpcode
.NF3:JNSt EBX,condEpfxNP,.NNP:
JSt [Dii.Prefix],pfx66|pfxF2|pfxF3,.25:
SetSt [Dii.Prefix],pfxNPIsOpcode
.NNP:; Conditions conMod*, condRegOp*, condRM* expect that potential ModR/M follows at R8.
MOV DL,[R8]
SHR DL,6
JNSt EBX,condMod3,.NM3:
CMP DL,3
JNE .25:
.NM3:JNSt EBX,condMod0,.NM0:
CMP DL,3
JE .25:
.NM0:TEST EBX,condRegOp
JZ .NRO:
MOV DL,[R8]
AND DL,0011_1000b
MOV ECX,EBX
SHR ECX,21
AND CL,0011_1000b
CMP CL,DL
JNE .25:
.NRO:TEST EBX,condRM
JZ .30:
MOV DL,[R8]
AND DL,0000_0111b
MOV ECX,EBX
SHR ECX,28
AND CL,0000_0111b
CMP CL,DL
JNE .25:
.30: LEA RDI,[RSI+DIS.Operation] ; Conditions are met. Perform disassembly with this DisTab line.
MOV [Dii.Operation],RDI
PUSH RSI
CALL DisTabProc:: ; EBX=[ESI+DIS.Conditions].
POP RSI
JC .NoI: ; CF=1 when DisTabProc processed a prefix. Continue at .20: with unerased Dii.
MOV EBX,[RSI+DIS.Conditions] ; CF=0. Flush FA:opcode | Dii.PrefixN, Dii.Operation, Dii.OperandN and
JNSt EBX,condEpfx66,.32: ; Dii modifiers (.DATA, DIST etc) to WorkMemory.
SetSt [Dii.Prefix],pfx66IsOpcode
.32: JNSt EBX,condEpfxF2,.34:
SetSt [Dii.Prefix],pfxF2IsOpcode
.34: JNSt EBX,condEpfxF3,.36:
SetSt [Dii.Prefix],pfxF3IsOpcode
.36: MOV RCX,R8 ; Address of 1st instruction byte in memory.
SUB RCX,[InputPtr::]
SUB RCX,[Dii.$VA]
MOV [Dii.InstrSize],ECX
LEA RDI,[WorkMemory::]
MOV AL,'|'
STOSB
MOV RAX,[Dii.$VA]
StoH RDI,Size=R15
MOV AL,':'
STOSB
MOV RSI,[Dii.$VA]
ADD RSI,[InputPtr::]
MOV ECX,[Dii.InstrSize]
.38: LODSB
MOV DL,AL
CALL StoDL
LOOP .38:
LEA RCX,[WorkMemory+37] ; Fixed end of hexadecimal data.
ADD RCX,R15 ; Respect the variable number of address digits in R15.
SUB RCX,RDI
MOV AL,' '
REP STOSB ; Padd
MOV AX,'| '
STOSW ; Terminate the dump column.
; When the prefix 66|F2|F3 is part of encoding, erase OTOGGLE,REPNE,REP from Dii.PrefixN.
JSt [Dii.Prefix],pfx66IsOpcode,.40:
JSt [Dii.Prefix],pfx66NotUsed,.41:
.40:MOV RAX,"OTOGGLE"
CALL .RemovePrefixRAX:
.41:JNSt [Dii.Prefix],pfxF2IsOpcode,.43:
MOV RAX,"REPNE"
CALL .RemovePrefixRAX:
.43:JNSt [Dii.Prefix],pfxF3IsOpcode,.45:
MOV RAX,"REP"
CALL .RemovePrefixRAX:
.45:JSt [Dii.Prefix],pfx67NotUsed,.60:
MOV RAX,"ATOGGLE"
CALL .RemovePrefixRAX:
.60:
ob %FOR Prefix1,Prefix2,Prefix3,Prefix4
MOV RSI,[Dii.%ob]
TEST RSI
JZ .4%ob:
CMPB [RSI],0
JZ .4%ob:
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,':'
STOSB
.4%ob:
%ENDFOR ob
MOV RSI,[Dii.Operation]
TEST RSI
JZ .65:
.62:LODSB
CMP AL,0
JE .65:
STOSB
JMP .62:
.65:MOV AL,' '
STOSB
ob %FOR Operand1,Operand2,Operand3,Operand4
MOV RSI,[Dii.%ob]
TEST RSI
JZ .4%ob:
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,','
STOSB
.4%ob:
%ENDFOR ob
JNSt [Dii.Flags],flagNoDATAinMod3,.68:
JNSt [Dii.Status],stMod3,.68:
MOV [Dii.DATA],0
.68:
ob %FOR PREFIX,DATA,DISP,IMM,CODE,SCALE,ADDR,DIST,MASK,OPER,ROUND,ZEROING,SAE,BCST,EH
MOVZXB ECX,[Dii.%ob]
JRCXZ .4%ob:
LEA RSI,[="%ob"]
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,'='
STOSB
%IF "%ob" === "PREFIX"
MOV EAX,[Dii.PREFIX]
.3%ob: STOSB
SHR EAX,8
JNZ .3%ob:
MOV AX,','
STOSW
DEC RDI
%ENDIF
%IF "%ob" === "MASK"
MOV AL,'K'
STOSB
MOV AL,CL
MOV AH,','
STOSW
%ENDIF
%IF "%ob" !=== "PREFIX" && "%ob" !=== "MASK"
MOV AL,CL
MOV AH,','
STOSW
%ENDIF
.4%ob:
%ENDFOR ob
CMPB [RDI-1],','
JNE .70:
DEC RDI
.70: MOV AL,' '
STOSB
; Print a character dump after the instruction, e.g. :66696C6573290A00 | OTOGGLE:IMUL EBP,[SI+0x65],0x000A2973 ; files)
LEA RCX,[WorkMemory]
ADD RCX,84 ; Char.dump is printed at least as 84-th on the output line.
CMP RDI,RCX
JAE .72:
SUB RCX,RDI
MOV AL,' '
REP STOSB
.72: MOV AX,'; '
STOSW
MOV RSI,[Dii.$VA]
ADD RSI,[InputPtr]
MOV ECX,[Dii.InstrSize]
.75: LODSB
CMP AL,0x20
JB .78:
CMP AL,0x80
JB .80:
.78: MOV AL,0x20
.80: STOSB
LOOP .75:
MOV AX,0x0A0D
STOSW
LEA RSI,[WorkMemory]
MOV RCX,RDI
SUB RCX,RSI
CALL [FileWriteOutputProc::] ; Write RSI,RCX to OutputFile.
MOV ECX,[Dii.InstrSize]
ADD [R10+VIEW_INDEX.FA],ECX
SUB [R10+VIEW_INDEX.Size],ECX
JA .Ini: ; Initialize Dii, start a new instruction.
MOVD [R10+VIEW_INDEX.Size],0
JMP .95:
.90: ; Opcode AL was not recognized in DisTable.
MOV [Dii.InstrSize],1
MOV DL,AL
LEA RDI,[MemoryLine]
MOV [Dii.Operand1],RDI
MOV AX,'0x'
STOSW
CALL StoDL
XOR EAX,EAX
STOSB
LEA RAX,[=B"DB"]
MOV [Dii.Operation],RAX
JMP .36:
.95: MOV RBX,R10
RET
.RemovePrefixRAX: PROC
ob %FOR Prefix1,Prefix2,Prefix3,Prefix4
MOV RCX,[Dii.%ob]
JRCXZ .x%ob:
CMP RAX,[RCX]
JNE .x%ob:
MOVD [Dii.%ob],0 ; Remove prefix RAX if used.
.x%ob:
%ENDFOR ob
RET
ENDP .RemovePrefixRAX
ENDP Disasm::
- ↑ GetRegByCL
- Find accumulator register name and second register name depending on Dii.OperWidth.
- Input
- CL= 0..15 is ordinal number of GPR.
- Output
- RDX= is pointer to accumulator AL,AX,EAX,RAX.
RSI= is pointer to the GPR selected by CL.
- Clobbers
RAX,RCX
GetRegByCL: PROC
Dispatch [Dii.OperWidth],OperWidth16,OperWidth32,OperWidth64
LEA RSI,[Reg8REX]
JSt [Dii.Prefix],pfxREX,.10:
LEA RSI,[Reg8]
.10:LEA RDX,[RegAL]
JMP .80:
.OperWidth16:
LEA RSI,[Reg16]
LEA RDX,[RegAX]
JMP .80:
.OperWidth32:
LEA RSI,[Reg32]
LEA RDX,[RegEAX]
JMP .80:
.OperWidth64:
LEA RSI,[Reg64]
LEA RDX,[RegRAX]
.80:CALL SelectByCL
RET
ENDP GetRegByCL:
- ↑ GetModRMNr
- Register R8 points to ModR/M byte, this procedure
GetModRMNr will extract its fields and put register number to Dii.BaseNr,
Dii.OperNr, Dii.IndexNr and set Dii.Status:stMod. Unused numbers are set to -1.
- Input
- R8= is pointer to ModR/M byte.
- Output
- R8 is increased by the size of ModR/M, SIB and disp.
Dii.OperNr is set from ModR/M field Reg/Op and from its previous bits r4,r5.
Dii.BaseNr is set from ModR/M field R/M in Mod=3, or from SIB field B, and from its previous bits b4,b5.
Dii.IndexNr is set from SIB field X and from its previous bits x4,x5.
Dii.Scale is set from SIB field SS.
Dii.DispSize is set to 0,1,2,4 from ModR/M fields Mod and R/M.
- Clobbers
- RAX,RBX,RCX,RDX
GetModRMNr PROC
MOV AL,[R8] ; ModRM
INC R8
MOV [Dii.ModRM],AL
; Compute Dii.BaseNr in case NoSIB.
MOV CL,0000_0111b
AND CL,AL
OR [Dii.BaseNr],CL
MOV DL,0011_1000b ; Compute Dii.OperNr
AND DL,AL ; Reg/Op
SHR DL,3
OR [Dii.OperNr],DL ; Field Reg/Op r0,r1,r2.
MOV CL,AL ; Compute Dii.Status:stModX
SHR CL,6
Dispatch CL,01,02,03
MOV EDX,stMod0 ; Compute stModX and DispSize.
JMP .10:
.01:MOV EDX,stMod1
MOV [Dii.DispSize],1
JMP .10
.02:MOV EDX,stMod2
CMP [Dii.AddrWidth],AddrWidth16
JNE .0D:
MOV [Dii.DispSize],2
JMP .10:
.0D:MOV [Dii.DispSize],4
JMP .10:
.03:MOV EDX,stMod3
.10:SetSt [Dii.Status],EDX
CMP [Dii.AddrWidth],AddrWidth16
JNE .15:
JNSt [Dii.Status],stMod0,.70:
MOV CL,AL ; AddrWidth16, Mod0.
AND CL,0000_0111b
CMP CL,0000_0110b
JNE .70:
MOV [Dii.DispSize],2
SetSt [Dii.Flags],flagNoBase+flagNoIndex
JMP .70:
.15:JNSt [Dii.Status],stMod0,.18:
MOV CL,0000_0111b
AND CL,AL ; AdrWidth32|64, Mod0
CMP CL,00000101b
JNE .18:
SetSt [Dii.Flags],flagNoBase+flagNoIndex
MOV [Dii.DispSize],4
.18:; Test if SIB exists. ; AddrWidth32|64
JSt [Dii.Status],stMod3,.NoSIB:
MOV CL,0000_0111b
AND CL,AL
CMP CL,0000_0100b ; [--][--]
JNE .NoSIB:
SetSt [Dii.Flags],flagSIB
MOV AL,[R8] ; SIB. Mod0|1|2.
INC R8
MOV [Dii.SIB],AL
RstSt [Dii.Flags],flagNoIndex
MOV CL,AL ; Compute Dii.Scale.
SHR CL,6 ; CL=0,1,2,3
MOV DL,1
SHL DL,CL ; DL=1,2,4,8
OR DL,'0' ; DL='1','2','4','8'
CMP DL,'1'
JNE .20:
SUB DL,DL
.20:MOV [Dii.Scale],DL ; DL=0,'2','4','8'
MOV CL,0000_0111b ; Get SIB.BaseNr
AND CL,AL
AND [Dii.BaseNr],1111_1000b
OR [Dii.BaseNr],CL ; Overwrite Dii.BaseNr which was written sooner.
CMP CL,0000_0101b ; BaseNr=5 (eBP)?
JNE .40:
JSt [Dii.Status],stMod0, .30:
JSt [Dii.Status],stMod2, .35:
MOV [Dii.DispSize],1
JMP .40:
.30:SetSt [Dii.Flags],flagNoBase
.35:MOV [Dii.DispSize],4
.40:MOV CL,0011_1000b
AND CL,[Dii.SIB]
SHR CL,3
OR [Dii.IndexNr],CL
MOV CX,[Dii.IndexNr]
CMP CL,4 ; IndexNr=4 (eSP)?
JNE .70:
JSt [Dii.Flags],flagVSIB,.70:
SetSt [Dii.Flags],flagNoIndex
JMP .70:
.NoSIB:
SetSt [Dii.Flags],flagNoIndex
.70:MOVZX ECX,[Dii.DispSize] ; 0,1,2,4,8
JRCXZ .90:
MOV DL,CL
XOR EAX,EAX
.80:ROR RAX,8
MOV AL,[R8]
INC R8
LOOP .80:
ROR RAX,8
Dispatch DL,0n1,0n2,0n4
JMP .85:
.0n1:SHR RAX,7*8
CBW ; Sign-extend AL to AX
JMP .82:
.0n2:SHR RAX,6*8
.82: CWDE ; Sign-extend AX to EAX
JMP .84:
.0n4:SHR RAX,4*8
.84:CDQE ; Sign-extend EAX to RAX
.85:MOV [Dii.Disp],RAX
.90:RET
ENDP GetModRMNr
- ↑ GetModRMReg
- Procedure GetModRM will compute and then convert register numbers
Dii.OperNr, Dii.BaseNr, Dii.IndexNr, Dii.VvvvNr to register names
Doo.OperReg, Dii.BaseReg, Dii.IndexReg, Dii.VvvvReg, respecting Dii.Family.
In modes 0,1,2 it also creates Dii.Memory, respecting Dii.DispSize and Dii.Disp.
- Input
- R8= points to ModR/M byte in operation code.
Dii.Family - string of register-family letters for Reg/Op, R/M, Vvvv, Imm
- Output
- R8= points behind ModR/M,SIB,displacement
RAX=pointer to base register name or to memory address in braces (DisTypelist j), e.g.
CX or [RBX+4*RSI+0x55] etc.
RBX=pointer to Vvvv register name (DisTypeList v)
RDX=pointer to operation register name (DisTypeList h)
- Clobbers
- RCX,RSI,RDI
GetModRMReg PROC
CALL GetModRMNr
JSt [Dii.Status],stMod3, .90:
LEA RDI,[MemoryLine] ; Construct Dii.Memory
MOV [Dii.Memory],RDI
MOV AL,'['
STOSB
LEA RDX,[RegAddr16]
CMP [Dii.AddrWidth],AddrWidth16
JNE .20:
MOV CL,[Dii.BaseNr] ; AddrWidth16
AND CL,0000_0111b
JNSt [Dii.Status],stMod0,.10:
CMP CL,0000_0110b ; BaseNr=6 (disp16, no base, no index)?
JE .80:
.10:MOV RSI,RDX
CALL SelectByCL
.15:LODSB
STOSB
CMP AL,0
JNE .15:
DEC RDI
JMP .80:
.20:LEA RDX,[Reg32]
CMP [Dii.AddrWidth],AddrWidth32
JE .25:
LEA RDX,[Reg64]
CMP [Dii.AddrWidth],AddrWidth64
JNE .80:
.25:MOV CL,[Dii.BaseNr] ; AddrWidth32|64
JSt [Dii.Flags],flagNoBase,.40:
MOV RSI,RDX
CALL SelectByCL
MOV [Dii.BaseReg],RSI
.30:LODSB
STOSB
CMP AL,0
JNE .30:
DEC RDI
.40:JNSt [Dii.Flags],flagVSIB,.46:
MOV CL,[Dii.Family+3] ; Index.
Dispatch CL,'X','Y','Z'
JMP .80:
.X: LEA RDX,[RegXMM]
JMP .46:
.Y: LEA RDX,[RegYMM]
JMP .46:
.Z: LEA RDX,[RegZMM]
.46:MOV CL,[Dii.IndexNr]
JSt [Dii.Flags],flagNoIndex,.80:
MOV RSI,RDX
CALL SelectByCL
MOV [Dii.IndexReg],RSI
CMPB [RDI-1],'['
JE .50:
MOV AL,'+'
STOSB
.50:MOV AL,[Dii.Scale]
CMP AL,0
JE .60:
STOSB
MOV AL,'*'
STOSB
.60:MOV RSI,[Dii.IndexReg]
.70:LODSB
STOSB
CMP AL,0
JNE .70:
DEC RDI
.80:SUB AL,AL
MOV EDX,[Dii.Status]
AND EDX,stMode64+stMod0
CMP EDX,stMode64+stMod0
JNE .85:
MOV ECX,[Dii.Flags]
AND ECX,flagNoBase+flagNoIndex
CMP ECX,flagNoBase+flagNoIndex
JNE .85:
MOV AL,'A'
JSt [Dii.Flags],flagSIB,.85:
MOV AL,'R'
.85:MOV [Dii.ADDR],AL
CALL LoadDisplacement
.90: ; Common continuation for all modes and all OperWidths.
MOV BL,[Dii.OperWidth] ; OperWidth8|16|32|64
MOV CL,[Dii.OperNr] ; 0..15 register ordinal
MOV DL,[Dii.Family+0] ; Operreg family: 0 or 'R' for GPR, or 'U', 'O', 'C', 'G', 'S' etc.
LEA RDI,[Dii.OperReg] ; or Dii.Basereg or Dii.IndexReg etc.
CALL .Select:
MOV CL,[Dii.BaseNr]
MOV DL,[Dii.Family+1] ; Basereg family: 0 or 'R' for GPR, or 'U', 'O', 'X', 'Y', 'Z' etc.
LEA RDI,[Dii.BaseReg]
CALL .Select:
MOV CL,[Dii.IndexNr]
MOV DL,[Dii.Family+3] ; Indexreg family: 0 or 'R' for GPR, or 'X', 'Y', 'Z'.
LEA RDI,[Dii.IndexReg]
CALL .Select:
MOV CL,[Dii.VvvvNr]
MOV DL,[Dii.Family+2] ; Vvvvreg family: 0 or 'R' for GPR, or 'X', 'Y', 'Z'.
LEA RDI,[Dii.VvvvReg]
CALL .Select:
MOV RDX,[Dii.OperReg]
MOV RAX,[Dii.BaseReg]
MOV RBX,[Dii.VvvvReg]
MOV RCX,[Dii.Memory]
JRCXZ .99:
MOV RAX,RCX
.99:RET
.Select: PROC ; RDI=pointer where to put target register, BL=Dii.OperWidth,
; CL=register Nr, DL=register family or 0=GPR
CMP DL,0
JE .S1:
CMP DL,'O'
JE .O:
fam %FOR O,U,X,Y,Z,C,G,S,F,K,N,E
CMP DL,'%fam'
JE .%fam:
%ENDFOR fam
.S1:; Not a special family, use GPR.
CMP BL,OperWidth8
JNE .S5:
LEA RSI,[Reg8REX]
JSt [Dii.Prefix],pfxREX,.@4:
CMPB [Dii.@VEXtype],0
JNE .@4:
LEA RSI,[Reg8]
JMP .@4:
.@2:AND CL,0000_0011b
.@3:AND CL,0000_0111b
.@4:AND CL,0000_1111b
.@5 AND CL,0001_1111b
CALL SelectByCL
MOV [RDI],RSI
.S4:RET
.S5:CMP BL,OperWidth16
JNE .S6:
LEA RSI,[Reg16]
JMP .@4:
.S6:CMP BL,OperWidth32
JNE .S7:
LEA RSI,[Reg32]
JMP .@4:
.S7:CMP BL,OperWidth64
JNE .S4:
LEA RSI,[Reg64]
JMP .@4:
.S: LEA RSI,[RegSeg]
JMP .@3
.C: LEA RSI,[RegCR]
JMP .@4:
.G: LEA RSI,[RegDR]
JMP .@3:
.E: LEA RSI,[RegTest]
JMP .@3:
.K: LEA RSI,[RegKey]
JMP .@3:
.N: LEA RSI,[RegBind]
JMP .@2:
.F: LEA RSI,[RegFP]
JMP .@3:
.U: LEA RSI,[RegMM]
JMP .@3:
.O: CMP [Dii.@VEXtype],XpfxMVEX
JE .Z:
JSt [Dii.Flags],flagS2,.Z:
JSt [Dii.Flags],flagS1,.Y:
.X: LEA RSI,[RegXMM]
JMP .@5:
.Y: LEA RSI,[RegYMM]
JMP .@5:
.Z: LEA RSI,[RegZMM]
JMP .@5:
ENDP .Select:
ENDP GetModRMReg
- ↑ LoadDisplacement
- Put displacement in the MemoryLine.
-
- Input
- RDI= pointer inside MemoryLine.
Dii.DispSize 0|1|2|4|8.
Dii.ImmSize 0|1|2|4|8.
Dii.Disp the displacement.
Dii.ADDR 0|'R'|'A'.
- Output
- MemoryLine is completed with the displacement and ']'.
LoadDisplacement PROC
MOV CL,[Dii.DispSize]
LEA RSI,[Dii.Disp]
Dispatch CL,01,02,04,08
JMP .70: ; Dii.DispSize=0, do only ']'.
.01:MOV [Dii.DISP],'B'
LODSB
CBW ; Sign-extend AL to AX
JMP .03:
.02:MOV [Dii.DISP],'W'
LODSW
.03:CWDE ; Sign-extend AX to EAX
JMP .06:
.04:MOV [Dii.DISP],'D'
LODSD
.06:CDQE ; Sign-extend EAX to RAX
JMP .12:
.08:MOV [Dii.DISP],'Q'
LODSQ
.12:MOV [Dii.Disp],RAX
CMPD [Dii.PREFIX],'MVEX'
JNE .16:
MOV [Dii.DISP],0
.16:CMPB [RDI-1],'['
JNE .20: ; Addressing with registers display with signum, e.g.[RBP+0x08]
; Otherwise MemoryLine position is just behind '[', display as unsigned, no '+' signum.
CMP [Dii.ADDR],'R'
JNE .50: ; Absolute addressing without registers display as unsigned.
MOV AL,'$' ; RIP-relative addressing mode (64-bit CPU mode).
STOSB
MOV RSI,R8 ; Relative addressing, display as $ with signum.
SUB RSI,[InputPtr::]
SUB RSI,[Dii.$VA]
MOV AL,[Dii.ImmSize] ;
ADD AL,[Dii.Imm2Size]
MOVZX EAX,AL
ADD RSI,RAX ; RSI is instruction size (prefixes+opcode+ModRM+SIB+disp+imm+imm2).
ADD [Dii.Disp],RSI
.20:MOV RDX,[Dii.Disp]
MOV AL,'+'
CMP [RDI-1],AL
JNE .30:
DEC RDI
.30:TEST RDX
JNS .40:
NEG RDX
MOV [Dii.Disp],RDX
MOV AL,'-'
.40:STOSB
.50:MOV AX,'0x'
STOSW
JNSt [Dii.Status],stMod1,.60: ; Test if Disp8*N is used:
MOV EAX,[Dii.Disp8EVEX]
CMP [Dii.@VEXtype],XpfxEVEX
JE .55:
CMP [Dii.@VEXtype],XpfxEVEX5
JE .55:
CMP [Dii.@VEXtype],XpfxEVEX6
JE .55:
MOV EAX,[Dii.Disp8MVEX]
CMP [Dii.@VEXtype],XpfxMVEX
JNE .60: ; RCX=Dii.DispSize
SetSt [Dii.Flags],flagS2 ; Emulate 512-bit registers.
RstSt [Dii.Flags],flagS1
.55:MOV ECX,[Dii.Flags] ; Oper=0..7 (flagS2,flagS1,flagS0).
AND ECX,7
SHL CL,2 ; CL=0,4,8,12,16,20,24,28.
SHL EAX,CL
SHR EAX,28
MOV ECX,EAX ; CL=1..6 or 0xF.
CMP CL,0x0F
JE .59: ; Invalid - leave Disp8 as is.
SHLD [Dii.Disp],CL
INC [Dii.DispSize] ; Change DispSize=1 to DispSize=2, but leave modifier DISP='B'.
.59:MOV CL,[Dii.DispSize]
.60:MOV DL,[RCX+Dii.Disp-1]
CALL StoDL
LOOP .60:
.70:CMPB [RDI-1],'+'
JNE .80:
DEC RDI
.80:MOV AX,']'
STOSW
RET
ENDP LoadDisplacement
- ↑ ModifyDefaultWidth
- Modify the default width by prefixes OTOGGLE, REX.W, ATOGGLE, if Dii.Status:st66IsOpcode is clear.
-
- Documentation
- Effective Operand- and Address-Size Attributes, Table 3-3.
- Input
- [Dii.Prefix].
- Output
- Dii.OperWidth, Dii.AddrWidth
- Error
- -
- Clobbers
- RAX, RDX
- Invokes
-
- Invoked by
-
ModifyDefaultWidth PROC
JNSt [Dii.Prefix],pfx67,.30:
MOV AL,[Dii.AddrWidth]
MOV AH,AddrWidth16
CMP AL,AddrWidth32
JE .20:
MOV AH,AddrWidth32
.20:MOV [Dii.AddrWidth],AH
.30:CMP [Dii.OperWidth],OperWidth8
JNE .40:
SetSt [Dii.Prefix],pfx66NotUsed
JMP .90:
.40:JNSt [Dii.Status],stMode64,.60:
JSt [Dii.Status],stW,.50:
JNSt [Dii.Flags],flagProm64,.60:
.50:MOV [Dii.OperWidth],OperWidth64
.60:JSt [Dii.Prefix],pfx66IsOpcode,.90:
JSt [Dii.Prefix],pfx66NotUsed,.90:
JNSt [Dii.Prefix],pfx66,.90:
CMP [Dii.OperWidth],OperWidth16
JNE .70:
MOV [Dii.OperWidth],OperWidth32
JMP .90:
.70:MOV [Dii.OperWidth],OperWidth16
.90:RET
ENDP ModifyDefaultWidth
- ↑ FlushDii
- Write the disassembled instruction from the object Dii on standard output
and then clear Dii.
- Input
- Dii specifies the disassembled instruction.
- Output
- OutputLine will be the string with hexa code and disassembled instruction.
RDI= points at the end of text in OutputLine.
R8= points at the code of the next instruction to disassemble.
- Error
- Invokes
-
- Invoked by
-
FlushDii PROC
Clear OutputLine
LEA RDI,[OutputLine] ; Construct disassembled string with the instruction temporary here.
MOV RSI,[Dii.$VA]
MOV RAX,RSI
StoH RDI,Size=6
MOV AX,': '
STOSW
MOV RCX,R8
SUB RCX,RSI
JRCXZ .08:
.05:LODSB
MOV DL,AL
CALL StoDL
LOOP .05:
.08:MOV AL,9
STOSB
STOSB ; Separate the disassembled code with two HT.
JSt [Dii.Prefix],pfx66IsOpcode,.09:
JSt [Dii.Prefix],pfx66NotUsed,.11:
.09:LEA RAX,[="OTOGGLE"]
ob %FOR Prefix1,Prefix2,Prefix3,Prefix4
CMP [Dii.%ob],RAX ; Remove OTOGGLE if used.
JNE .x%ob:
MOVD [Dii.%ob],0
.x%ob:
%ENDFOR ob
.11:JSt [Dii.Prefix],pfx67NotUsed,.13:
LEA RAX,[="ATOGGLE"]
ob %FOR Prefix1,Prefix2,Prefix3,Prefix4
CMP [Dii.%ob],RAX ; Remove ATOGGLE if used.
JNE .y%ob:
MOVD [Dii.%ob],0
.y%ob:
%ENDFOR ob
.13:
.16:JNSt [Dii.Prefix],pfx66IsOpcode,.21:
LEA RAX,[="OTOGGLE"]
JMP .28:
.21:JNSt [Dii.Prefix],pfxF2IsOpcode,.22:
LEA RAX,[="REPNE"]
JMP .28:
.22:JNSt [Dii.Prefix],pfxF3IsOpcode,.33:
LEA RAX,[="REP"]
.28:LEA RSI,[Dii.Prefix1]
MOV ECX,4
.29:CMP RAX,[RSI]
JNE .31:
XOR EDX,EDX
MOV [RSI],RDX
.31:ADD RSI,8
LOOP .29:
.33:
ob %FOR Prefix1,Prefix2,Prefix3,Prefix4
MOV RSI,[Dii.%ob]
TEST RSI
JZ .4%ob:
CMPB [RSI],0
JZ .4%ob:
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,':'
STOSB
.4%ob:
%ENDFOR ob
MOV RSI,[Dii.Operation]
TEST RSI
JZ .40:
.30:LODSB
CMP AL,0
JE .40:
STOSB
JMP .30:
.40:MOV AL,' '
STOSB
ob %FOR Operand1,Operand2,Operand3,Operand4
MOV RSI,[Dii.%ob]
TEST RSI
JZ .4%ob:
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,','
STOSB
.4%ob:
%ENDFOR ob
JNSt [Dii.Flags],flagNoDATAinMod3,.47:
JNSt [Dii.Status],stMod3,.47:
MOV [Dii.DATA],0
.47:
ob %FOR PREFIX,DATA,DISP,IMM,CODE,SCALE,ADDR,DIST,MASK,OPER,ROUND,ZEROING,SAE,BCST,EH
MOVZXB ECX,[Dii.%ob]
JRCXZ .4%ob:
LEA RSI,[="%ob"]
.1%ob:LODSB
CMP AL,0
JE .2%ob:
STOSB
JMP .1%ob:
.2%ob:MOV AL,'='
STOSB
%IF "%ob" === "PREFIX"
MOV EAX,[Dii.PREFIX]
.3%ob: STOSB
SHR EAX,8
JNZ .3%ob:
MOV AX,','
STOSW
DEC RDI
%ENDIF
%IF "%ob" === "MASK"
MOV AL,'K'
STOSB
MOV AL,CL
MOV AH,','
STOSW
%ENDIF
%IF "%ob" !=== "PREFIX" && "%ob" !=== "MASK"
MOV AL,CL
MOV AH,','
STOSW
%ENDIF
.4%ob:
%ENDFOR ob
LEA RSI,[OutputLine] ; Write the instruction.
DEC RDI
MOV EAX,0x0A0D
STOSD
GetLength$ RSI
CALL [FileWriteOutputProc::]
RET
ENDP FlushDii
- ↑ StoDL
- Store one byte from DL to RDI hexadecimally, increase RDI.
- Input
- DL= byte to store.
RDI= pointer to the buffer where two digits will be stored.
- Output
- RDI= is increased by two.
AL=clobbered, other GPR unchanged.
- Error
- -
StoDL:: PROC
MOV AL,DL
SHR AL,4
OR AL,'0'
CMP AL,'9'
JNA .50:
ADD AL,'A'-':'
.50:STOSB
MOV AL,0x0F
AND AL,DL
OR AL,'0'
CMP AL,'9'
JNA .70:
ADD AL,'A'-':'
.70:STOSB
RET
ENDP StoDL
- ↑ Moffs
- Procedure Moffs returns pointer to AL,AX,EAX,RAX in RSI.
It displays 2,4 or 8 bytes of memory offset operand in brackets to [MoffsetLine],
depending on address and operand widths.
- Input
- R8= pointer to the offset bytes in machine code.
R9= pointer to the end of block of machine code (never read behind R9).
- Output
- RCX ^MoffsLine filled with Moffs operand in hexa, e. g.
[0x11223344].
R8= increased by the size of moffs (2,4,8).
RSI= is pointer to the name of register AL, AX, EAX or RAX.
RAX,RBX,RCX,RDX,RDI clobbered.
- Error
- -
- Invokes
-
- Invoked by
-
Moffs PROC
LEA RDI,[MoffsLine]
MOV EAX,'[0x'
STOSD
DEC RDI
MOV AL,[Dii.AddrWidth]
XOR ECX,ECX
Dispatch AL,AddrWidth16,AddrWidth32 ;,AddrWidth64
; .AddrWidth64:
MOV CL,8
MOV [Dii.DISP],'Q'
JMP .20:
.AddrWidth32:
MOV CL,4
MOV [Dii.DISP],'D'
JMP .20:
.AddrWidth16:
MOV CL,2
MOV [Dii.DISP],'W'
.20:MOV RBX,R8
ADD R8,RCX
CMP R8,R9
JA .40:
.30:MOV DL,[RBX+RCX-1]
CALL StoDL
LOOP .30:
MOV AX,']'
STOSW
.40:MOV AL,[Dii.OperWidth]
Dispatch AL,OperWidth8,OperWidth16,OperWidth32 ;,OperWidth64
;.OperWidth64:
LEA RSI,[RegRAX]
JMP .90:
.OperWidth32:
LEA RSI,[RegEAX]
JMP .90:
.OperWidth16:
LEA RSI,[RegAX]
JMP .90:
.OperWidth8:
LEA RSI,[RegAL]
.90:LEA RCX,[MoffsLine]
RET
ENDP Moffs
- ↑ Imm
- Procedure Imm creates a string with 1..8 bytes
of hexadecimal immediate operand.
If Dii.DISP='F', 16-bit immediate segment is displayed first,
then 16-bit or 32-bit offset follows.
- Input
- Dii.OperWidth specifies if ImmSize is 1,2,4 or 8.
Dii.DIST='F' if Imm is FAR pointer. e. g. 0x1122:0x3344.
Dii.Flags:flagImmSignExt is set when the immediate is QWORD.
R8= pointer to the immediate bytes in machine code.
R9= pointer to the end of block of machine code (never read behind R9).
- Output
- RCX= points to ASCIIZ immediate operand in hexa, e. g.
0x1122:0x3344.
Dii.IMM is 'B', 'W', 'D' or 'Q'.
R8= is increased by the size of immediate data.
- Error
- -
- Invokes
-
- Invoked by
-
Imm PROC
MOV AL,[Dii.OperWidth]
Dispatch AL,OperWidth8,OperWidth16,OperWidth32,OperWidth64
JMP .90:
.OperWidth8:
MOV CL,1
MOV AH,'B'
JMP .20:
.OperWidth16:
MOV CL,2
MOV AH,'W'
JNSt [Dii.Flags],flagImmFar,.20:
MOV CL,2+2
JMP .20:
.OperWidth32:
MOV CL,4
MOV AH,'D'
JNSt [Dii.Flags],flagImmFar,.20:
MOV CL,2+4
JMP .20:
.OperWidth64:
MOV CL,4
MOV AH,'D'
JSt [Dii.Flags],flagImmSignExt,.20:
MOV CL,8
MOV AH,'Q'
.20: MOV [Dii.IMM],AH
MOV [Dii.ImmSize],CL
MOVZX ECX,CL
LEA RAX,[R8+RCX-1]
CMP RAX,R9
JA .90:
MOV RSI,R8
ADD R8,RCX
LEA RDI,[ImmLine] ; Temporary space for the display.
JNSt [Dii.Flags],flagImmSignExt,.40:
CMP CL,1
JA .40:
MOVSXB RAX,[R8-1]
TEST AL
JNS .40:
StoD RDI,Signed=yes
JMP .80:
.40: MOV AX,'0x'
STOSW
CMP [Dii.DIST],'F'
JNE .60:
MOV DL,[RSI+RCX-1]
CALL StoDL
MOV DL,[RSI+RCX-2]
CALL StoDL
MOV EAX,':0x'
STOSD
DEC RDI
SUB ECX,2
JNA .90:
.60: MOV DL,[RSI+RCX-1]
CALL StoDL
LOOP .60:
.80: XOR EAX,EAX
STOSB
LEA RCX,[ImmLine]
.90: RET
ENDP Imm
- ↑ Imm2
- Procedure Imm2 creates a string with 1 byte
of hexadecimal secondary immediate operand.
- Input
-
R8= pointer to the secondary immediate byte in machine code.
- Output
- RCX points to secondary immediate operand in hexa, e. g.
0x11.
R8= increased by the size of immediate data.
- Error
- -
- Clobbers
- RAX, RDX, RDI
- Invokes
-
- Invoked by
-
Imm2 PROC
LEA RDI,[Imm2Line]
MOV RCX,RDI
MOV AX,'0x'
STOSW
MOV DL,[R8]
INC R8
CALL StoDL
XOR EAX,EAX
STOSB
MOV [Dii.IMM],'B'
RET
ENDP Imm2
- ↑ Imm2XMM
- Procedure Imm2XMM returns RCX which points to "XMM0".."XMM15" or "YMM0".."YMM15" register name
corresponding with the contents of Imm2 field bits 7..4 in XOP-encoded instructions.
- Input
-
R8= pointer to the secondary immediate byte in machine code.
R9= pointer to the end of block of machine code (never read behind R9).
Dii.Flags:flagS1 decides between XMM and YMM.
- Output
- RCX is pointer to XMM|YMM register name.
- Error
- -
- Invokes
-
- Invoked by
-
Imm2XMM PROC
MOV CL,[R8] ; Imm2
SHR CL,4
LEA RSI,[RegYMM]
JSt [Dii.Flags],flagS1, .I5:
LEA RSI,[RegXMM]
.I5: CALL SelectByCL
MOV RCX,RSI
RET
ENDP Imm2XMM
- ↑ ImmRel
- Procedures Imm loads 1..8 bytes of immediate operand relative to RIP (Dii.$VA).
For ADDR=Rel see LoadDIsplacement.
- Input
- Dii.ImmSize= number of immediate bytes 1,2,4.
R8= pointer to the immediate bytes in machine code.
R9= pointer to the end of block of machine code (never read behind R9).
- Output
- ImmLine set relative to RIP, i. e. to
[Dii.$VA]+instruction size , e.g. [$+3]
RCX= pointer to ImmLine.
R8= increased by the size of immediate operand.
- Clobbers
- RAX,RDX,RSI,RDI
- Error
- -
- Invokes
-
- Invoked by
-
ImmRel PROC
MOV RSI,R8
MOVZX ECX,[Dii.ImmSize] ; 1|2|4
LEA R8,[RSI+RCX]
CMP R8,R9
JA .90:
LEA RDI,[ImmLine]
MOV AL,'$'
STOSB
XOR EAX,EAX
JRCXZ .20:
Dispatch CL,01,02,04
.01:LODSB
CBW
CWDE
JMP .20:
.02:LODSW
CWDE
JMP .20:
.04:LODSD
.20:CDQE ; RAX is the signed integer of imm encoded in instruction.
SUB R8,[InputPtr::]
LEA RDX,[R8+RAX]
SUB RDX,[Dii.$VA]
;; ADD RDX,RCX
MOV AL,'+'
JNS .24:
MOV AL,'-'
NEG RDX
.24:MOV [Dii.Imm],RDX
STOSB
MOV AX,'0x'
STOSW
LEA RSI,[Dii.Imm]
.30:MOV DL,[RSI+RCX-1]
CALL StoDL
LOOP .30:
XOR EAX,EAX
STOSB
.90:LEA RCX,[ImmLine]
ADD R8,[InputPtr::]
RET
ENDP ImmRel
- ↑ GetAccum
- Return an acumulator register name depending on Dii.OperWidth.
- Input
- Dii.OperWidth operation width 1,2,4,8.
- Output
- RAX= pointer to register name AL, AX, EAX, RAX.
- Error
- -
- Clobbers
- -
- Invokes
-
- Invoked by
-
GetAccum PROC
Dispatch [Dii.OperWidth],OperWidth8, OperWidth16, OperWidth32, OperWidth64
.OperWidth8:
LEA RAX,[RegAL]
JMP .90:
.OperWidth16:
LEA RAX,[RegAX]
JMP .90:
.OperWidth32:
LEA RAX,[RegEAX]
JMP .90:
.OperWidth64:
LEA RAX,[RegRAX]
.90:RET
ENDP GetAccum
- ↑ GetCounter
- Return a counter register name depending on Dii.AddrWidth.
- Input
- Dii.AddrWidth address width 2,4,8.
- Output
- RAX= pointer to register name CX, ECX, RCX.
- Error
- -
- Clobbers
- RAX
- Invokes
-
- Invoked by
-
GetCounter PROC
MOV CL,[Dii.AddrWidth]
Dispatch CL,AddrWidth32, AddrWidth64
.AddrWidth16::
LEA RCX,[RegCX]
RET
.AddrWidth32:
LEA RCX,[RegECX]
RET
.AddrWidth64:
LEA RCX,[RegRCX]
RET
ENDP GetCounter
- ↑ SelectByCL
- Return CL-th item from the list at RSI.
- Input
- RSI=pointer to the 0-th ASCIIZ item.
CL= ordinal number of item 0..7.
- Output
- ZF=0, RSI= pointer to the selected item.
- Error
- ZF=1, [RSI]=0
- Clobbers
- RAX,RCX
SelectByCL PROC
MOVZX ECX,CL
JRCXZ .80
.20:LODSB
CMP AL,0
JNE .20:
LOOP .20:
.80:CMPB [RSI],0
RET
ENDP SelectByCL
- ↑ GetSimdDataWidth
- Return the width of data by the last two letters of Dii.Instruction mnemonic
as a letter 'D', 'Q','O','Y' or 'Z' in AL.
- Input
- Dii.Operation.
- Output
- AL= 0 or 'D' or 'Q' or 'O' or 'Y' or 'Z'.
GetSimdDataWidth PROC
MOV RDI,[Dii.Operation]
MOV AL,0
TEST RDI
JZ .90:
.10:CMPB [RDI],0
JE .20:
INC RDI
JMP .10:
.20:MOV DX,[RDI-2]
MOV AL,'D'
CMP DX,'SS'
JE .90:
MOV AL,'Q'
CMP DX,'SD'
JE .90:
CMP DX,'PD'
JE .40:
CMP DX,'PS'
MOV AL,0
JNE .90:
.40:MOV AL,'Y'
JSt [Dii.Flags],flagS1,.90:
MOV AL,'Z'
JSt [Dii.Flags],flagS2,.90:
MOV AL,'O'
.90:RET
ENDP GetSimdDataWidth
- ↑ GetOperWidth
- Return an operation width as a letter 'B', 'W','D', 'Q' in AL
and as a number 1, 2, 4, 8 in AH from Dii.OperWidth.
- Input
- Dii.OperWidth.
- Output
- AL= 'B' or 'W' or 'D' or 'Q'.
- Error
- -
- Invokes
-
- Invoked by
-
GetOperWidth PROC
MOV AL,[Dii.OperWidth]
Dispatch AL,OperWidth8, OperWidth16, OperWidth32, OperWidth64
XOR EAX,EAX
.OperWidth8:
MOV AL,'B'
MOV AH,1
JMP .90:
.OperWidth16:
MOV AL,'W'
MOV AH,2
JMP .90:
.OperWidth32:
MOV AL,'D'
MOV AH,4
JMP .90:
.OperWidth64:
MOV AL,'Q'
MOV AH,8
.90:RET
ENDP GetOperWidth
- ↑ GetStringRegs
- Return string operation registers.
- Input
- Dii.OperWidth= specifies the address width.
Dii.Flags:flagEverrideES when the destination string has overridable segment (MASKMOVQ)
- Output
- RAX= ^MemoryLine - pointer to source address
[DS:SI] or [DS:ESI] or [RSI]. Segment register may be overriden.
RCX= ^ImmLine - pointer to destination address
[ES:DI] or [ES:EDI] or [RDI].
- Error
- -
- Invokes
-
- Invoked by
-
GetStringRegs PROC
MOV EAX,[Dii.Prefix]
JSt EAX,pfx26,.ES:
JSt EAX,pfx36,.SS:
JSt EAX,pfx2E,.CS:
JSt EAX,pfx64,.FS:
JSt EAX,pfx65,.GS:
MOV DL,'D'
JMP .10:
.ES:MOV DL,'E'
JMP .10:
.SS:MOV DL,'S'
JMP .10:
.CS:MOV DL,'C'
JMP .10:
.FS:MOV DL,'F'
JMP .10:
.GS:MOV DL,'G'
.10:LEA RDI,[MemoryLine]
MOV AL,'['
STOSB
MOV AL,[Dii.AddrWidth]
Dispatch AL,AddrWidth32,AddrWidth64
.AddrWidth16::
MOV AL,DL
STOSB
MOV EAX,'S:SI'
STOSD
MOV AX,']'
STOSW
LEA RSI,[="[ES:DI]"]
JMP .50:
.AddrWidth32:
MOV AL,DL
STOSB
MOV EAX,'S:ES'
STOSD
MOV EAX,'I]'
STOSD
LEA RSI,[="[ES:EDI]"]
JMP .50:
.AddrWidth64:
MOV EAX,'RSI]'
STOSD
XOR EAX,EAX
STOSB
LEA RSI,[="[RDI]"]
.50:LEA RDI,[ImmLine]
MOV RCX,RDI
LODSB ; '['
STOSB
LODSB ; 'E' (the 1st letter of segment)
CMP [Dii.AddrWidth],AddrWidth64
JE .70:
JNSt [Dii.Flags],flagOverrideES,.70:
MOV AL,DL ; (the 1st letter of overriding segment, perhaps 'D')
.70:STOSB
.80:LODSB
STOSB
CMP AL,0
JNE .80:
LEA RAX,[MemoryLine]
RET
ENDP GetStringRegs
- ↑ Invalid
- Disassemble the byte at Dii.$VA as DB 0xNN. Let R8=Dii.$VA+1.
- Input
- Dii.$VA is start of code.
- Output
- R8=Dii.$VA+1
- Clobbers
- RAX,RDX,RDI
Invalid PROC
XOR EAX,EAX
MOV [Dii.Prefix1],RAX
MOV [Dii.Prefix2],RAX
MOV [Dii.Prefix3],RAX
MOV [Dii.Prefix4],RAX
LEA RDI,[="DB"]
MOV [Dii.Operation],RDI
LEA RDI,[MemoryLine]
MOV [Dii.Operand1],RDI
MOV AX,'0x'
STOSW
MOV R8,[Dii.$VA]
MOV DL,[R8]
INC R8
CALL StoDL
XOR EAX,EAX
STOSB
; MOV EAX,0x0A0D
; STOSD
RET
ENDP Invalid
- ↑ ExtendM
- Copy fields from instruction prefixes to Dii structure.
ExtendM copies fields m0,m1,m2,m3 to Dii.MapNr
- Input
- BL= is prefix byte with the required fields.
ExtendM PROC
MOV AL,0000_1111b
AND AL,BL
MOV [Dii.MapNr],AL
RET
ENDP ExtendM
- ↑ ExtendV
- Copy fields from instruction prefixes to Dii structure.
ExtendV copies fields v0,v1,v2,v3 to Dii.VvvvNr and bit W to Dii.Status:stW
- Input
- BL= is prefix byte with the required fields.
ExtendV PROC
MOV AL,0111_1000b
AND AL,BL
XOR AL,0111_1000b
SHR AL,3
OR [Dii.VvvvNr],AL
TEST BL,1000_0000b
JZ .90:
SetSt [Dii.Status],stW
.90:RET
ENDP ExtendV
- ↑ ExtendP
- Copy fields from instruction prefixes to Dii structure.
ExtendP copies fields p0,p1 to Dii.Prefix:pfxXXIsOpcode.
- Input
- BL= is prefix byte with the required fields.
ExtendP PROC
MOV AL,0000_0011b
AND AL,BL
Dispatch AL,0,1,2
SetSt [Dii.Prefix],pfxF2IsOpcode
SetSt [Dii.Prefix],pfxF2
RET
.0: SetSt [Dii.Prefix],pfxNPIsOpcode
SetSt [Dii.Prefix],pfxNP
RET
.1: SetSt [Dii.Prefix],pfx66IsOpcode
SetSt [Dii.Prefix],pfx66
RET
.2: SetSt [Dii.Prefix],pfxF3IsOpcode
SetSt [Dii.Prefix],pfxF3
RET
ENDP ExtendP
- ↑ ExtendR
- Copy fields from instruction prefixes to Dii structure.
ExtendR copies fields b3,x3,r3 b3 to Dii.BaseNr, Dii.IndexNr, r3 to Dii.OperNr.
- Input
- BL= is prefix byte with the required fields.
ExtendR PROC
TEST BL,0010_0000b ; EVEX.~b3
JNZ .10:
OR [Dii.BaseNr],0000_1000b ; b3
.10:TEST BL,0100_0000b ; EVEX.~x3 alias EVEX.~b4
JNZ .20:
OR [Dii.IndexNr],0000_1000b; x3
OR [Dii.BaseNr],0001_0000b ; b4
.20:TEST BL,1000_0000b ; EVEX.~r3
JNZ .90:
OR [Dii.OperNr],0000_1000b ; r3
.90:RET
ENDP ExtendR
- ↑ AcceptrLegacyPrefix
- The byte AL just read from R8 is an explicit prefix 0x26,0x36,0x2E,0x3E,0x64,0x65,0xF0,0xF2,0xF3,0x66,0x67.
- Input
- RSI is pointer to prefix name, e.g. SEGES.
- Output
- Dii.Prefix flags is modified, Dii.PrefixN is modified. R8 is unchanged.
PfxLegacyAccept PROC
JSt [Dii.Prefix],pfxNoMore,.70:
XOR EAX,EAX
LEA RDI,[Dii.Prefix1] ; Find a free prefix slot.
MOV ECX,4
.20:CMP [RDI],RAX
JE .80:
ADD RDI,8
LOOP .20:
; All four slots are occupied. Disassemble as DB.
.70:CALL Invalid:
JMP FlushDii:
.80:MOV [RDI],RSI
RET
ENDP PfxLegacyAccept
- ↑ PfxREXAccept
- The byte DL read in 64-bit mode from R8 is between AL=0x40..0x4F which is REX.
This procedure reads and accepts the prefix. R8 is unchanged.
- Input
- DL=REX byte
- Output
- Dii flags are updated.
PfxREXAccept PROC
MOV [Dii.Prefix],DL
SetSt [Dii.Prefix],pfxREX+pfxNoMore
TEST DL,1
JZ .12:
OR [Dii.BaseNr], 0000_1000b ; REX.B
.12:TEST DL,2
JZ .14:
OR [Dii.IndexNr],0000_1000b ; REX.X
.14:TEST DL,4
JZ .16:
OR [Dii.OperNr], 0000_1000b ; REX.R
.16:TEST DL,8
JZ .90:
SetSt [Dii.Status],stW
SetSt [Dii.Prefix],pfx67NotUsed+pfx66NotUsed
.90:RET
ENDP PfxREXAccept
- ↑ PfxMEVEXAccept
- The byte read in 64-bit mode from R8 is AL=0x62 which might be MVEX or EVEX or EVEX5 or EVEX6.
This procedure reads and accepts the prefix.
- Input
- R8 points to the Byte1 of the prefix.
- Output
- R8 is increased by prefix size. It points to the opcode without 0x0F , 0x0F38, 0x0F3A.
PfxMEVEXAccept PROC
SetSt [Dii.Prefix],pfxNoMore ; Accept no further prefixes.
SetSt [Dii.Status],stXpfx
MOV EBX,[R8] ; MVEX+1 or EVEX+1 (Byte 1).
ADD R8,3 ; BL=MEVEX.Byte1. R8 points at opcode.
CALL ExtendM ; -,0F,0F38,0F3A,Map5,Map6 gives Dii.MapNr=0,1,2,3,5,6.
TEST BL,0001_0000b ; ~r4
JNZ .10:
OR [Dii.OperNr],0001_0000b ; ~r4
.10: CALL ExtendR ; ~b3,~x3,~b3
SHR EBX,8 ; BL=MEVEX.Byte2
CALL ExtendP ; NP,66,F3,F2
TEST BL,0000_0100b ; Distinguish EVEX/MVEX.
JZ .20:
MOV AL,XpfxEVEX6
CMP [Dii.MapNr],6
JE .15:
MOV AL,XpfxEVEX5
CMP [Dii.MapNr],5
JE .15:
MOV AL,XpfxEVEX
.15: MOV [Dii.@VEXtype],AL
MOVD [Dii.PREFIX],'EVEX'
JMPS .25:
.20: MOV [Dii.@VEXtype],XpfxMVEX
MOVD [Dii.PREFIX],'MVEX'
.25: CALL ExtendV ; W,~v0..~v3
SHR EBX,8 ; BL=MEVEX.Byte3
MOV AL,0000_0111b ; k2..k0
AND AL,BL
JZ .28:
MOV [Dii.MaskNr],AL
OR AL,'0'
MOV [Dii.MASK],AL
.28: TEST BL,0000_1000b
JNZ .30:
OR [Dii.VvvvNr],0001_0000b ; ~v4
.30: MOV AL,0111_0000b
AND AL,BL
SHR AL,4
OR AL,'0'
MOV [Dii.OPER],AL
TEST BL,0001_0000b
JZ .40:
SetSt [Dii.Flags],flagS0
.40: TEST BL,0010_0000b
JZ .50:
SetSt [Dii.Flags],flagS1
.50: TEST BL,0100_0000b
JZ .60:
SetSt [Dii.Flags],flagS2
.60: MOV AL,'0'
TEST BL,1000_0000b
JZ .70:
MOV AL,'1'
.70: CMP [Dii.@VEXtype],XpfxMVEX
JE .80:
MOV [Dii.ZEROING],AL
JMPS .90:
.80: MOV [Dii.EH],AL
.90: RET
ENDP PfxMEVEXAccept
- ↑ PfxXOPAccept
- The byte read from R8 was AL=0x8F which is XOP.Byte0. R8 points behind it.
This procedure reads and accepts this prefix.
- Input
- R8 points to the Byte1 of the prefix.
- Output
- R8 is increased by two. It points to the opcode without 0x0F or 0x0F38, 0x0F3A.
PfxXOPAccept PROC
SetSt [Dii.Prefix],pfxNoMore ; Accept no further prefixes.
SetSt [Dii.Status],stXpfx
MOVD [Dii.PREFIX],"XOP"
MOV [Dii.@VEXtype],XpfxXOP
MOV EBX,[R8] ; BL=XOP.Byte1
ADD R8,2
CALL ExtendM ; map8,map9,map10
MOV [Dii.MapNr],AL
CALL ExtendR ; ~r3,~x3,~b3
SHR EBX,8 ; BL=XOP.Byte2
CALL ExtendP ; NP,66,F3,F2
TEST BL,0000_0100b ; XOP.L
JZ .20:
SetSt [Dii.Flags],flagS1
.20:CALL ExtendV ; W,~v0..3
RET
ENDP PfxXOPAccept
- ↑ PfxVEX3Accept
- The byte read in 64-bit mode from R8 is AL=0xC4 which is VEX3.
This procedure reads and accepts the prefix.
- Input
- R8 points to the Byte1 of the prefix.
- Output
- R8 is increased by two. It points to the opcode without 0x0F or 0x0F38, 0x0F3A.
PfxVEX3Accept PROC
CALL PfxXOPAccept
MOV [Dii.@VEXtype],XpfxVEX
MOVD [Dii.PREFIX],"VEX3"
RET
ENDP PfxVEX3Accept
- ↑ PfxVEX2Accept
- The byte DL read in 64-bit mode from R8 is AL=0xC5 which is VEX2.
This procedure reads and accepts the prefix.
- Input
- R8 points to the Byte1 of the prefix.
- Output
- R8 is increased by one. It points to the opcode without 0x0F or 0x0F38, 0x0F3A.
PfxVEX2Accept PROC
SetSt [Dii.Prefix],pfxNoMore ; Accept no further prefixes.
SetSt [Dii.Status],stXpfx
MOV [Dii.@VEXtype],XpfxVEX
MOVD [Dii.PREFIX],"VEX2"
MOV [Dii.MapNr],1 ; VEX2 implies opcode map 0x0FXX.
MOV BL,[R8] ; BL=VEX2.Byte1
INC R8
CALL ExtendP ; NP,66,F3,F2
TEST BL,0000_0100b ; VEX2.L
JZ .20:
SetSt [Dii.Flags],flagS1
.20:MOV AL,0111_1000b
AND AL,BL ; ~v0..3
SHR AL,3
AND AL,0000_1111b
XOR AL,0000_1111b
MOV [Dii.VvvvNr],AL
TEST BL,1000_0000b
JNZ .90:
OR [Dii.OperNr],0000_1000b ; ~r3
.90:RET
ENDP PfxVEX2Accept
- ↑ DisTypeList
Enumeration DisTypeList declares operand type of the disassembled instruction.
In fact it defines a small (1..3FFh) ordinal integer for each DisType which will be used in
DIS.Conditions
Each member of DisTypeList represents an identifier which describes how is the instruction encoded.
Identifier is a combination of 0..4 substrings (one for each instruction operand)
separated with underscore _.
The first character of each substring is h|j|v|i|a which tells where is the operand encoded.
The next characters is omitted (for GPR) or it is R|C|G|S|F|K|N|U|O|X|Y|X and this specifies
Dii.Family of used register. GPR may be specified by its width (b|w|d|q or with letter
e which specifies the width depending on Dii.OperationWidth.
h This operand is specified by Reg/Op field of ModR/M byte + REX.R | *VEX.R.
j This operand is specified by R/M field of ModR/M byte + REX.B | SIB.X | *VEX.B.
v This operand is specified by Vvvv field of *VEX.
i This operand is specified by bits 4..7 of immediate 8-bit operand following ModRM+SIB+disp bytes.
l This operand is a relative immediate against RIP.
a This operand is specified by moffs field. No ModR/M exists.
b 8-bit GPR or memory operand.
w 16-bit GPR or memory operand.
d 32-bit GPR or memory operand.
q 64-bit GPR or memory operand.
e 16 or 32-bit GPR or memory operand, depending on effective Dii.OperWidth.
R General-purpose register 8|16|32|64 bits wide, depending on Dii.OperWidth, if not specified otherwise.
M Memory operand 8|16|32|64 bits wide, depending on Dii.OperWidth.
P Memory operand specifying source segment and register eSI in string instructions.
T Memory operand specifying destination segment and register eDI in string instructions.
C Control register CR0..CR8.
G Debug register DR0..DR7.
S Segment register.
F FPU register ST0..ST7.
K Key-mask register K0..K7.
N Bind register BND0..BND3.
U Multimedia register MM0..MM7.
O SSE register XMM0..XMM31, YMM0..YMM31, ZMM..ZMM31, depending on Dii.Status.
X SSE 128-bit register XMM0..XMM31.
Y SSE 256-bit register YMM0..YMM31.
Z SSE 512-bit register ZMM..ZMM31.
Operand may also be absolute immediate ib|iw|id|iq|ie.
Operand may also be RIP-relative immediate lb|lw|ld|le.
Operand may also be the secondary one-byte immediate i2.
Operand may also be a fixed register: AL,eAX,CL,CX,ECX,RCX,DX,ST0,ST1,XMM0.
After operand substrings, miscellaneous modifiers may follow, separated with at-sign @.
The at-sign alone means that the instruction has no operands.
@FV32|@FV64|@HV32|@HV16|@FVM|@T8...@T512|@VSIB etc., see IiDisp8EVEX or
IiDisp8MVEX, or
@DATAb disassemble with DATA=B.
@DATAw disassemble with DATA=W.
@DATAd disassemble with DATA=D.
@DATAq disassemble with DATA=Q.
@DATAa disassemble with DATA=B|W|D|Q specified by Dii.OperWidth.
@DATAx disassemble with DATA=X.
@DATAy disassemble with DATA=Y.
@DATAz disassemble with DATA=Z.
@DATAo disassemble with DATA=X|Y|Z specified by Dii.Flags:flagS1|flagS2.
@DISTn disassemble with DIST=N.
@DISTf disassemble with DIST=F.
@other other modifier(s).
Whenever a new operand type is added to the list, e.g. bO_vO_jO@FV64
, the coresponding paragraph/subprocedure named .bO_vO_jO@FV64: must be written in
DisTabProc below.
%DisTypeList %SET \
@,\
@1,\
@bswap,\
@DATAa,\
@DATAq,\
@DISTf,\
@DISTn,\
@iret,\
@jcc,\
@jcce,\
@jcxz,\
@opc98,\
@opc99,\
@pfxLg,\
@pfxMEVEX,\
@pfxREX,\
@pfxVEX2,\
@pfxVEX3,\
@pfxXOP,\
@pushapopa,\
@pushpopCS,\
@pushpopDS,\
@pushpopES,\
@pushpopFS,\
@pushpopGS,\
@pushpopSS,\
@retf,\
@retn,\
@vzero,\
@xlat,\
a@DISTf,\
a_AL@CODEs,\
a_eAX@CODEs,\
aAX_ie,\
aAX_ie@CODEs,\
AL_a@CODEs,\
AL_DX,\
AL_ib,\
AL_ib@CODEs,\
AL_Pb,\
AL_Tb,\
dest_hO_jO,\
dest_hU_jU,\
DX_AL,\
DX_eAX,\
DX_Pb,\
DX_Pe,\
eAX@,\
eAX_a@CODEs,\
eAX_DX,\
eAX_ECX,\
eAX_ib@in,\
eAX_Pe,\
eAX_Ropc,\
eAX_Te,\
GPRfromOpc,\
Grp9B,\
GrpD8,\
GrpD9,\
GrpDA,\
GrpDB,\
GrpDC,\
GrpDD,\
GrpDE,\
GrpDF,\
h_j,\
hC_jR,\
hE_jRd,\
hG_jR,\
hK_jK,\
hK_jK_ib,\
hK_jO,\
hK_jO_ib@DATAo@FV16,\
hK_jO_ib@DATAo@FV32,\
hK_jO_ib@DATAo@FV64,\
hK_jO_ib@T16,\
hK_jO_ib@T32,\
hK_jO_ib@T64,\
hK_jR_ib,\
hK_jRd,\
hK_jRq,\
hK_jRq_ib,\
hK_jX_ib@T16,\
hK_jX_ib@T32,\
hK_jX_ib@T64,\
hK_vK_jK,\
hK_vO_jO@FV32,\
hK_vO_jO@FV64,\
hK_vO_jO@FVM,\
hK_vO_jO@MFV32,\
hK_vO_jO@MFVM,\
hK_vO_jO_ib@FV16,\
hK_vO_jO_ib@FV32,\
hK_vO_jO_ib@FV64,\
hK_vO_jO_ib@FVM,\
hK_vO_jO_ib@MFV32,\
hK_vO_jO_ib@MFV64,\
hK_vO_jO_ib@T16,\
hK_vO_jO_ib@T32,\
hK_vO_jO_ib@T64,\
hK_vX_jX_ib@T32,\
hK_vX_jX_ib@T64,\
hN_jN,\
hN_jR,\
hN_jRd,\
hN_jRq,\
hO,\
hO_ib,\
hO_jK,\
hO_jO,\
hO_jO@DATAd,\
hO_jO@DATAd@noREP,\
hO_jO@DATAd@T32,\
hO_jO@DATAo,\
hO_jO@DATAo@FV32,\
hO_jO@DATAo@FV64,\
hO_jO@DATAo@MHV32,\
hO_jO@DATAo@T128,\
hO_jO@DATAq,\
hO_jO@DATAq@FV64,\
hO_jO@DATAq@noREP,\
hO_jO@DATAq@T64,\
hO_jO@DATAw,\
hO_jO@DATAx,\
hO_jO@DATAx@T128,\
hO_jO@DATAy,\
hO_jO@DATAy@T256,\
hO_jO@FV16,\
hO_jO@FV32,\
hO_jO@FV64,\
hO_jO@FVM,\
hO_jO@HV16,\
hO_jO@HV32,\
hO_jO@HVM,\
hO_jO@MFV32,\
hO_jO@MFV64,\
hO_jO@MFVM,\
hO_jO@MHV32,\
hO_jO@OVM,\
hO_jO@pfxIsOpcode,\
hO_jO@QV16,\
hO_jO@QVM,\
hO_jO@T128,\
hO_jO@T16,\
hO_jO@T256,\
hO_jO@T32,\
hO_jO@T64,\
hO_jO@T8,\
hO_jO@VSIB@T32,\
hO_jO@VSIB@T64,\
hO_jO_EAX_XMM0,\
hO_jO_ib,\
hO_jO_ib@DATAw,\
hO_jO_ib@FV16,\
hO_jO_ib@FV32,\
hO_jO_ib@FV64,\
hO_jO_ib@FVM,\
hO_jO_ib@MFV32,\
hO_jO_ib@MFV64,\
hO_jO_vO,\
hO_jO_vO@VSIB,\
hO_jO_XMM0,\
hO_jR,\
hO_jR@DATAd,\
hO_jR@DATAd@T32,\
hO_jR@DATAq,\
hO_jR@DATAq@T64,\
hO_jR@DATAw,\
hO_jR@HVM,\
hO_jR_ib,\
hO_jR_ib@DATAb,\
hO_jR_ib@DATAd,\
hO_jR_ib@DATAq,\
hO_jRb@T8,\
hO_jRd@DATAd,\
hO_jRd@DATAd@T32,\
hO_jRd@T32,\
hO_jRd_ib,\
hO_jRd_ib@DATAb,\
hO_jRd_ib@DATAd,\
hO_jRd_ib@DATAq,\
hO_jRd_ib@DATAw,\
hO_jRq@DATAq,\
hO_jRq@DATAq@T64,\
hO_jRq@T64,\
hO_jRq_ib,\
hO_jRq_ib@DATAq,\
hO_jRw@DATAw@T16,\
hO_jRw@T16,\
hO_jU,\
hO_jU@DATAq,\
hO_jU@DATAq@noREP,\
hO_jX,\
hO_jX@DATAd,\
hO_jX@DATAo,\
hO_jX@DATAq,\
hO_jX@DATAx@T128,\
hO_jX@DATAy@T256,\
hO_jX@OVM,\
hO_jX@QVM,\
hO_jX@T128,\
hO_jX@T16,\
hO_jX@T256,\
hO_jX@T32,\
hO_jX@T64,\
hO_jX@T8,\
hO_jXXY,\
hO_jXXY@HV16,\
hO_jXXY@HV32,\
hO_jXXY@HVM,\
hO_jXXY@OVM,\
hO_jXXY@QVM,\
hO_vK_jO@MFV32,\
hO_vK_jO@MFV64,\
hO_vO_is4_jO,\
hO_vO_jO,\
hO_vO_jO@DATAd,\
hO_vO_jO@DATAd@FV32,\
hO_vO_jO@DATAd@FV64,\
hO_vO_jO@DATAd@T32,\
hO_vO_jO@DATAo,\
hO_vO_jO@DATAo@FV32,\
hO_vO_jO@DATAo@FV64,\
hO_vO_jO@DATAq,\
hO_vO_jO@DATAq@FV32,\
hO_vO_jO@DATAq@FV64,\
hO_vO_jO@DATAq@T64,\
hO_vO_jO@FV16,\
hO_vO_jO@FV32,\
hO_vO_jO@FV64,\
hO_vO_jO@FVM,\
hO_vO_jO@HVM,\
hO_vO_jO@MFV32,\
hO_vO_jO@MFV64,\
hO_vO_jO@QVM,\
hO_vO_jO@T128,\
hO_vO_jO@T16,\
hO_vO_jO@T32,\
hO_vO_jO@T64,\
hO_vO_jO_ib,\
hO_vO_jO_ib@DATAb,\
hO_vO_jO_ib@DATAb@T8,\
hO_vO_jO_ib@DATAd,\
hO_vO_jO_ib@DATAd@FV32,\
hO_vO_jO_ib@DATAd@T32,\
hO_vO_jO_ib@DATAq,\
hO_vO_jO_ib@DATAq@FV64,\
hO_vO_jO_ib@DATAq@T64,\
hO_vO_jO_ib@DATAw,\
hO_vO_jO_ib@DATAw@T16,\
hO_vO_jO_ib@FV32,\
hO_vO_jO_ib@FV64,\
hO_vO_jO_ib@FVM,\
hO_vO_jO_ib@MFV32,\
hO_vO_jO_ib@MFV64,\
hO_vO_jO_ib@T128,\
hO_vO_jO_ib@T16,\
hO_vO_jO_ib@T256,\
hO_vO_jO_ib@T32,\
hO_vO_jO_ib@T64,\
hO_vO_jO_is4,\
hO_vO_jO_XMM0,\
hO_vO_jR,\
hO_vO_jR@DATAd@QVM,\
hO_vO_jR@DATAq@HVM,\
hO_vO_jR@HVM,\
hO_vO_jR@QVM,\
hO_vO_jR_ib@DATAb,\
hO_vO_jR_ib@DATAb@T8,\
hO_vO_jR_ib@DATAd,\
hO_vO_jR_ib@DATAd@T32,\
hO_vO_jR_ib@DATAq,\
hO_vO_jR_ib@DATAq@T64,\
hO_vO_jR_ib@DATAw,\
hO_vO_jR_ib@DATAw@T16,\
hO_vO_jRb_ib@DATAb,\
hO_vO_jRd@DATAd,\
hO_vO_jRd@DATAd@QVM,\
hO_vO_jRd@T16,\
hO_vO_jRd@T32,\
hO_vO_jRd_ib@DATAb,\
hO_vO_jRd_ib@DATAb@T8,\
hO_vO_jRd_ib@DATAd,\
hO_vO_jRd_ib@DATAd@T32,\
hO_vO_jRd_ib@DATAw,\
hO_vO_jRd_ib@DATAw@T16,\
hO_vO_jRd_ib@T16,\
hO_vO_jRd_ib@T32,\
hO_vO_jRd_ib@T8,\
hO_vO_jRq@DATAq,\
hO_vO_jRq@DATAq@HVM,\
hO_vO_jRq@T16,\
hO_vO_jRq@T64,\
hO_vO_jRq_ib,\
hO_vO_jRq_ib@DATAq,\
hO_vO_jRq_ib@DATAq@T64,\
hO_vO_jRq_ib@DATAw,\
hO_vO_jRq_ib@T32,\
hO_vO_jRw_ib@DATAw@T16,\
hO_vO_jX,\
hO_vO_jX@T128,\
hO_vO_jX_ib,\
hO_vO_jX_ib@T128,\
hO_vO_jX_ib@T16,\
hO_vO_jY_ib@T256,\
hR,\
hR_jM,\
hR_jM@64,\
hR_jM@ls,\
hR_jO,\
hR_jO@HVM,\
hR_jO@QVM,\
hR_jO_ib,\
hR_jR,\
hR_jR@DATAa,\
hR_jR@DATAq,\
hR_jR@DATAz,\
hR_jR@hint_nop,\
hR_jR_ib,\
hR_jR_id,\
hR_jR_vR,\
hR_jRb,\
hR_jRb@movx,\
hR_jRM,\
hR_jRM@CODEl,\
hR_jRM_ib@DATAa,\
hR_jRM_ib@DATAb,\
hR_jRM_ie@DATAa@IMMd,\
hR_jRMb,\
hR_jRMw,\
hR_jRw@movx,\
hR_jU_ib,\
hR_vK_jK,\
hR_vR_jR,\
hRb_jRb,\
hRb_jRMb@CODEl,\
hRd_jK,\
hRd_jM,\
hRd_jO,\
hRd_jO@DATAd,\
hRd_jO@DATAd@HVM,\
hRd_jO@DATAd@QVM,\
hRd_jO@HVM,\
hRd_jO@QVM,\
hRd_jO@T16,\
hRd_jO@T32,\
hRd_jO@T64,\
hRd_jO_ib,\
hRd_jO_ib@T16,\
hRd_jR,\
hRd_jR@DATAa,\
hRd_jR@popcnt,\
hRd_jR_ib@DATAd,\
hRd_jR_id,\
hRd_jR_vR,\
hRd_jR_vR@DATAd,\
hRd_jRb,\
hRd_jRb@DATAb,\
hRd_jRd_XMM0,\
hRd_jU,\
hRd_jU_ib,\
hRd_jX,\
hRd_jX@DATAd,\
hRd_jX@DATAd@HVM,\
hRd_jX@DATAd@QVM,\
hRd_jX@HVM,\
hRd_jX@QVM,\
hRd_jX@T16,\
hRd_jX@T32,\
hRd_jX@T64,\
hRd_vR_jR,\
hRdq_jO,\
hRe_jR,\
hRe_jR@DATAz,\
hRq_jK,\
hRq_jO,\
hRq_jO@DATAq,\
hRq_jO@DATAq@HVM,\
hRq_jO@DATAq@OVM,\
hRq_jO@HVM,\
hRq_jO@QVM,\
hRq_jO@T16,\
hRq_jO@T32,\
hRq_jO@T64,\
hRq_jR,\
hRq_jR@DATAd,\
hRq_jR@popcnt,\
hRq_jR_ib@DATAq,\
hRq_jR_id,\
hRq_jR_vR,\
hRq_jR_vR@DATAq,\
hRq_jRb,\
hRq_jX,\
hRq_jX@DATAq,\
hRq_jX@DATAq@HVM,\
hRq_jX@DATAq@QVM,\
hRq_jX@HVM,\
hRq_jX@T16,\
hRq_jX@T32,\
hRq_jX@T64,\
hRq_vK_jK,\
hRq_vR_jR,\
hRwdq_jR,\
hS_jR,\
hS_jRM,\
hU_jO,\
hU_jO@DATAq,\
hU_jR_ib@DATAw,\
hU_jRd@DATAd,\
hU_jRd_ib@DATAw,\
hU_jRq@DATAq,\
hU_jU,\
hU_jU@3DNow,\
hU_jU_ib,\
hU_jU_ib@DATAw,\
hX_jO,\
hX_jRd@DATAd,\
hX_jRq@DATAq,\
hX_jX,\
hX_jX@DATAd,\
hX_jX@DATAd@noREP,\
hX_jX@DATAq,\
hX_jX@DATAq@noREP,\
hX_jX_ib,\
hX_jXY,\
hX_vX_jRd@DATAd,\
hX_vX_jRd@DATAd@QVM,\
hX_vX_jRd@DATAd@T32,\
hX_vX_jRd@T16,\
\\hX_vX_jRd@T32,\
hX_vX_jRq@DATAq,\
hX_vX_jRq@DATAq@HVM,\
hX_vX_jRq@DATAq@T64,\
hX_vX_jRq@T16,\
hX_vX_jRq@T64,\
hX_vX_jX,\
hX_vX_jX@DATAd,\
hX_vX_jX@DATAd@T32,\
hX_vX_jX@DATAq,\
hX_vX_jX@DATAq@T64,\
hX_vX_jX@HVM,\
hX_vX_jX@QVM,\
hX_vX_jX@T16,\
hX_vX_jX@T32,\
hX_vX_jX@T64,\
hX_vX_jX_ib,\
hX_vX_jX_ib@T16,\
hX_vX_jX_ib@T32,\
hX_vX_jX_ib@T64,\
hXXY_jO,\
hXXY_jO@FV64,\
hXXY_jO@MFV64,\
hXY_jO,\
hXY_jO@DATAo,\
hXY_jO@DATAo@FV64,\
hXY_jO@FV64,\
hY_jY_ib,\
hY_vY_jY,\
hY_vY_jY_ib,\
i8,\
i8@1,\
ib,\
ib@DATAb@noDATA,\
ib@DATAw,\
ib_AL,\
ib_eAX,\
ib1,\
ie@DATAa,\
invalid,\
iw@retf,\
iw@retn,\
iw_ib,\
j_h,\
jK_hK,\
jM,\
jM@DATAd,\
jM@DATAo,\
jM@DATAq,\
jM@DATAz,\
jMe@DISTf,\
jN_hN,\
jO@VSIB@DATAd@T32,\
jO@VSIB@DATAq@T64,\
jO@VSIB@T32,\
jO@VSIB@T64,\
jO_hO,\
jO_hO@DATAd,\
jO_hO@DATAd@T32,\
jO_hO@DATAq,\
jO_hO@DATAq@T64,\
jO_hO@FVM,\
jO_hO@HVM,\
jO_hO@MFV32,\
jO_hO@MFV64,\
jO_hO@MFVM,\
jO_hO@OVM,\
jO_hO@QVM,\
jO_hO@T16,\
jO_hO@T32,\
jO_hO@T64,\
jO_hO@T8,\
jO_hO@VSIB@T32,\
jO_hO@VSIB@T64,\
jO_hO_ib,\
jO_hO_ib@DATAd,\
jO_hO_ib@DATAd@T32,\
jO_hO_ib@DATAd@T64,\
jO_hO_ib@FVM,\
jO_hO_ib@HVM,\
jO_hO_ib@T128,\
jO_hO_ib@T256,\
jO_hR@DATAd,\
jO_hR@DATAd@T32,\
jO_hR@DATAq,\
jO_hR@DATAq@T64,\
jO_ib,\
jO_vO_hO,\
jR,\
jR@DATAa,\
jR@DATAa@CODEl,\
jR@DATAaq,\
jR@DATAb,\
jR@DATAq,\
jR@DATAw,\
jR@prom64,\
jR_hC,\
jR_hG,\
jR_hO,\
jR_hO@DATAd,\
jR_hO@DATAd@T32,\
jR_hO@DATAq,\
jR_hO@DATAq@T64,\
jR_hO@DATAw,\
jR_hO@FVM,\
jR_hO_ib,\
jR_hO_ib@DATAa,\
jR_hO_ib@DATAb,\
jR_hO_ib@DATAd,\
jR_hO_ib@DATAd@T32,\
jR_hO_ib@DATAq,\
jR_hO_ib@DATAq@T64,\
jR_hO_ib@T16,\
jR_hO_ib@T32,\
jR_hO_ib@T64,\
jR_hR,\
jR_hR_CL,\
jR_hR_ib,\
jR_hRd,\
jR_hRd@DATAd,\
jR_hRq,\
jR_hRq@DATAq,\
jR_i8,\
jR_ib,\
jR_ib@DATAa,\
jR_ib@DATAa@CODEl,\
jR_ibse@DATAa@CODEl,\
jR_ie,\
jR_ie@DATAa,\
jR_ie@DATAa@CODEl,\
jRb,\
jRb@DATAa,\
jRb@DATAb,\
jRb_hRb,\
jRb_i8,\
jRb_i8@DATAb,\
jRb_i8@DATAb@CODEl,\
jRb_ib,\
jRd,\
jRd_hE,\
jRd_hO@DATAd,\
jRd_hO@DATAd@T32,\
jRd_hO_ib,\
jRd_hO_ib@DATAa,\
jRd_hO_ib@DATAb,\
jRd_hO_ib@DATAb@T8,\
jRd_hO_ib@DATAd,\
jRd_hO_ib@DATAd@T32,\
jRd_hO_ib@DATAd@T64,\
jRd_hO_ib@DATAq@T64,\
jRd_hO_ib@T16,\
jRd_hO_ib@T32,\
jRd_hO_ib@T8,\
jRd_hRd_vRd@DATAd,\
jRd_hU@DATAd,\
jRd_ib,\
jRe_hR,\
jRe_ie,\
jRe_ie@DATAa,\
jRe_ie@DATAa@CODEl,\
jRe_ie@DATAq,\
jRM_hR@CODEl,\
jRM_hS,\
jRMb,\
jRMb@DATAb,\
jRMb_1,\
jRMb_CL,\
jRMb_hRb@CODEl,\
jRMb_ib,\
jRMe@DATAa,\
jRMe@DISTn,\
jRMe_1,\
jRMe_CL,\
jRMe_ib,\
jRMw,\
jRq,\
jRq@DATAq,\
jRq_hO@DATAq,\
jRq_hO@DATAq@T64,\
jRq_hO_ib,\
jRq_hO_ib@DATAq,\
jRq_hO_ib@DATAq@T64,\
jRq_hO_ib@T16,\
jRq_hO_ib@T32,\
jRq_hRq_vRq@DATAq,\
jRq_hU@DATAq,\
jRq_ie@DATAq,\
jRq_ie@DATAq@CODEl,\
jRw_hO@DATAw@T16,\
jRw_hRw,\
jU_hU,\
jU_ib,\
jX_hO@OVM,\
jX_hO@QVM,\
jX_hO_ib,\
jX_hO_ib@T128,\
jXXY_hO@HVM,\
jXXY_hO_ib,\
jXXY_hO_ib@HVM,\
jY_hO_ib@T256,\
lb_eCX,\
le,\
le@x,\
none@DATAa,\
Pb_Tb,\
Pe_Te,\
Rb_ib,\
Re_ie,\
Tb_AL,\
Tb_DX,\
Tb_Pb,\
Te_DX,\
Te_eAX,\
Te_Pe,\
vK_lb@DISTs,\
vK_ld@DISTn,\
vO_jO_ib,\
vO_jO_ib@FV32,\
vO_jO_ib@FV64,\
vO_jO_ib@FVM,\
vO_jO_ib@T128,\
vR_jR,\
vR_jR_id,\
vRd_jR,\
vRd_jR_id,\
vRq_jR,\
vRq_jR_id,\
;
%i %SETA 1
ot %FOR %DisTypeList
%ot EQU %i
%i %SETA %i+1
%ENDFOR ot
- ↑ DisTab Opcode, Operation, DisType, Conditions=
- Macro DisTab declares disassembly of one row in DisTable for one prefix or machine instruction.
It constructs the table DisTab with recipes how to disassemble each opcode.
The macro has three ordinal operands and several keyword operands.
Opcode is one, two or three-byte operation code of machine instruction in hexadecimal notation
without hexadecimal decorator, e.g. 0F01
When the condition Xpfx= is none or VEX or MVEX or EVEX, the actual operation code xx may be preceeded by nothing
xx or by opcode-map specifier 0Fxx, 0F38xx or 0F3Axx.
When Xpfx=XOP, the actual operation code xx may be preceeded by opcode-map 8, 9 or 10, i.e.
08xx, 09xx or 0Axx.
When Xpfx=EVEX5 or Xpfx=EVEX6, the actual operation code xx is preceeded by nothing
and the opcode-map 5 or 6 is encoded in EVEX prefix.
Operation is a string without quotes with the mnemonic name of machine instruction, e.g. PUSH.
DisType is one member from the list %DisTypeList, e.g. hX_jR,
which tells DisTabProc how to disassemble each opcode.
Each DisType will be assigned with a small ordinal number 1..0x3FF and put in the LSB of DIS.Conditions doubleword.
For layout of DIS.Conditions flags see DIS.Conditions.
Conditions= may be empty or one of the condition established by previous prefixes
or by the potential ModR/M byte which may follow the opcode.
When a condition is omitted, it does not matter.
Possible conditions are:
Xpfx=XOP|MVEX|VEX|EVEX|EVEX5|EVEX6 when extended encoding prefix is used, otherwise no *VEX prefix is used.
Epfx=NP|66|F2|F3 if the operation is preceeded by this legacy prefix or the prefix is part of *VEX encoding.
Mode=64|Lg if the instruction runs in 64-bit or in legacy (16|32-bit) mode.
W=0|1 if the instruction has wide (64-bit) operands, specified by REX.W, XOP.W, VEX3.W, MVEX.W or EVEX.W bit.
Mod=0|3 if the ModR/M byte is in this mode (Mod=0 specifies memory operand, Mod=3 specifies a register).
RegOp=0|1|2|3|4|5|6|7 if the ModR/M byte has this very RegOp field.
RM=0|1|2|3|4|5|6|7 if the ModR/M byte has this very R/M field.
- Output
- The macro creates 128-bit structure DIS
- Example
- DisTab 0F2F, COMISS, hX_jXMd@DATAd, Epfx=NP
DisTab 0F2F, COMISD, hX_jXMq@DATAq, Epfx=66
DisTab %MACRO Opcode, Operation, DisType, Xpfx=, Epfx=, Mode=, W=, Mod=, RegOp=, RM=
%F %SETA 0 ; %F is a flag accumulator which will be stored to DIS.Conditions
%IF "%Xpfx" === ""
%F %SETA %F+condXpfx+cond0
%ENDIF
%IF "%Xpfx" !=== ""
%F %SETA %F+condXpfx+cond%Xpfx
%ENDIF
%IF "%Mode" !=== ""
%F %SETA %F+condMode%Mode
%ENDIF
%IF "%Epfx" !=== ""
%F %SETA %F+condEpfx%Epfx
%ENDIF
%IF "%Mod" !=== ""
%F %SETA %F+condMod%Mod
%ENDIF
%IF "%W" !=== ""
%F %SETA %F+condW%W
%ENDIF
%IF "%RegOp" !=== ""
%F %SETA %F+condRegOp+condRegOp%RegOp
%ENDIF
%IF "%RM" !=== ""
%F %SETA %F+condRM+condRM%RM
%ENDIF
%NrCh %SETS %Operation
%NrSp %SETA 24-%NrCh
DB "%Operation", %NrSp * B(0)
DD 0x%Opcode
DD %DisType+%F
%ENDMACRO DisTab
- ↑ DisTable
- A table with DIS record for each prefix or instruction.
[.data]
ALIGN OWORD
DisTable:
; Prefixes:
DisTab 40,INC,GPRfromOpc,Mode=Lg
DisTab 40,,@pfxREX,Mode=64
DisTab 41,INC,GPRfromOpc,Mode=Lg
DisTab 41,,@pfxREX,Mode=64
DisTab 42,INC,GPRfromOpc,Mode=Lg
DisTab 42,,@pfxREX,Mode=64
DisTab 43,INC,GPRfromOpc,Mode=Lg
DisTab 43,,@pfxREX,Mode=64
DisTab 44,INC,GPRfromOpc,Mode=Lg
DisTab 44,,@pfxREX,Mode=64
DisTab 45,INC,GPRfromOpc,Mode=Lg
DisTab 45,,@pfxREX,Mode=64
DisTab 46,INC,GPRfromOpc,Mode=Lg
DisTab 46,,@pfxREX,Mode=64
DisTab 47,INC,GPRfromOpc,Mode=Lg
DisTab 47,,@pfxREX,Mode=64
DisTab 48,DEC,GPRfromOpc,Mode=Lg
DisTab 48,,@pfxREX,Mode=64
DisTab 49,DEC,GPRfromOpc,Mode=Lg
DisTab 49,,@pfxREX,Mode=64
DisTab 4A,DEC,GPRfromOpc,Mode=Lg
DisTab 4A,,@pfxREX,Mode=64
DisTab 4B,DEC,GPRfromOpc,Mode=Lg
DisTab 4B,,@pfxREX,Mode=64
DisTab 4C,DEC,GPRfromOpc,Mode=Lg
DisTab 4C,,@pfxREX,Mode=64
DisTab 4D,DEC,GPRfromOpc,Mode=Lg
DisTab 4D,,@pfxREX,Mode=64
DisTab 4E,DEC,GPRfromOpc,Mode=Lg
DisTab 4E,,@pfxREX,Mode=64
DisTab 4F,DEC,GPRfromOpc,Mode=Lg
DisTab 4F,,@pfxREX,Mode=64
DisTab 62,,@pfxMEVEX,Mode=64
DisTab 62,,@pfxMEVEX,Mode=Lg,Mod=3
DisTab 66,OTOGGLE,@pfxLg
DisTab 67,ATOGGLE,@pfxLg
DisTab 8F,,@pfxXOP,RegOp=1
DisTab 8F,,@pfxXOP,RegOp=5
DisTab 8F,POP,jR@DATAaq,RegOp=0
DisTab C4,,@pfxVEX3,Mode=64
DisTab C4,,@pfxVEX3,Mode=Lg,Mod=3
DisTab C5,,@pfxVEX2,Mode=64
DisTab C5,,@pfxVEX2,Mode=Lg,Mod=3
DisTab 26,SEGES,@pfxLg
DisTab 36,SEGSS,@pfxLg
DisTab 2E,SEGCS,@pfxLg
DisTab 3E,SEGDS,@pfxLg
DisTab 64,SEGFS,@pfxLg
DisTab 65,SEGGS,@pfxLg
DisTab F0,LOCK,@pfxLg
DisTab F2,REPNE,@pfxLg
DisTab F3,REP,@pfxLg
; Instructions in the order found in [IntelSDM2026]
DisTab 37,AAA,@,Mode=Lg
DisTab D5,AAD,i8,Mode=Lg
DisTab D4,AAM,i8,Mode=Lg
DisTab 3F,AAS,@,Mode=Lg
DisTab 14,ADC,AL_ib@CODEs
DisTab 15,ADC,aAX_ie@CODEs
DisTab 80,ADC,jRb_i8@DATAb@CODEl,RegOp=2
DisTab 81,ADC,jR_ie@DATAa@CODEl,RegOp=2
DisTab 83,ADC,jR_ibse@DATAa@CODEl,RegOp=2
DisTab 10,ADC,jRb_hRb
DisTab 11,ADC,jR_hR
DisTab 12,ADC,hRb_jRb
DisTab 13,ADC,hR_jR
DisTab 0F38F6,ADCX,hRd_jR,Epfx=66,W=0
DisTab 0F38F6,ADCX,hRq_jR,Epfx=66,W=1
DisTab 04,ADD,AL_ib@CODEs
DisTab 05,ADD,aAX_ie@CODEs
DisTab 80,ADD,jRb_i8@DATAb@CODEl,RegOp=0
DisTab 81,ADD,jR_ie@DATAa@CODEl,RegOp=0
DisTab 83,ADD,jR_ibse@DATAa@CODEl,RegOp=0
DisTab 00,ADD,jRb_hRb
DisTab 01,ADD,jR_hR
DisTab 02,ADD,hRb_jRb
DisTab 03,ADD,hR_jR
DisTab 0F58,ADDPD,hO_jO,Epfx=66
DisTab 0F58,VADDPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F58,VADDPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F58,ADDPS,hO_jO,Epfx=NP
DisTab 0F58,VADDPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F58,VADDPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F58,ADDSD,hX_jX,Epfx=F2
DisTab 0F58,VADDSD,hX_vX_jX,Xpfx=VEX,Epfx=F2
DisTab 0F58,VADDSD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F58,ADDSS,hX_jX,Epfx=F3
DisTab 0F58,VADDSS,hX_vX_jX,Xpfx=VEX,Epfx=F3
DisTab 0F58,VADDSS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0FD0,ADDSUBPD,hO_jO,Epfx=66
DisTab 0FD0,VADDSUBPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FD0,ADDSUBPS,hO_jO,Epfx=F2
DisTab 0FD0,VADDSUBPS,hO_vO_jO,Xpfx=VEX,Epfx=F2
DisTab 0F38F6,ADOX,hRd_jR,Epfx=F3,W=0
DisTab 0F38F6,ADOX,hRq_jR,Epfx=F3,W=1
DisTab 0F38DB,AESIMC,hO_jO,Epfx=66
DisTab 0F38DE,AESDEC,hO_jO,Epfx=66
DisTab 0F38DE,VAESDEC,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F38DE,VAESDEC,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F38DD,AESDEC128KL,hO_jO@pfxIsOpcode,Epfx=F3,Mod=0
DisTab 0F38DF,AESDEC256KL,hO_jO@pfxIsOpcode,Epfx=F3,Mod=0
DisTab 0F38DF,AESDECLAST,hO_jO,Epfx=66
DisTab 0F38DF,VAESDECLAST,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F38DF,VAESDECLAST,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F38D8,AESDECWIDE128KL,jM,Epfx=F3,Mod=0,RegOp=1
DisTab 0F38D8,AESDECWIDE256KL,jM,Epfx=F3,Mod=0,RegOp=3
DisTab 0F38DC,AESENC,hO_jO,Epfx=66
DisTab 0F38DC,VAESENC,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F38DC,VAESENC,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F38DC,AESENC128KL,hO_jO,Epfx=F3,Mod=0
DisTab 0F38DE,AESENC256KL,hO_jO,Epfx=F3,Mod=0
DisTab 0F38DD,AESENCLAST,hO_jO,Epfx=66
DisTab 0F38DD,VAESENCLAST,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F38DD,VAESENCLAST,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F38D8,AESENCWIDE128KL,jM,Epfx=F3,Mod=0,RegOp=0
DisTab 0F38D8,AESENCWIDE256KL,jM,Epfx=F3,Mod=0,RegOp=2
DisTab 0F38DB,AESIMC,hO_jO,Epfx=66
DisTab 0F38DB,VAESIMC,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3ADF,AESKEYGENASSIST,hO_jO_ib,Epfx=66
DisTab 0F3ADF,VAESKEYGENASSIST,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 24,AND,AL_ib@CODEs
DisTab 25,AND,aAX_ie@CODEs
DisTab 80,AND,jRb_i8@DATAb@CODEl,RegOp=4
DisTab 81,AND,jR_ie@DATAa@CODEl,RegOp=4
DisTab 83,AND,jR_ibse@DATAa@CODEl,RegOp=4
DisTab 20,AND,jRb_hRb
DisTab 21,AND,jR_hR
DisTab 22,AND,hRb_jRb
DisTab 23,AND,hR_jR
DisTab 0F38F2,ANDN,hRd_vR_jR,Xpfx=VEX,W=0
DisTab 0F38F2,ANDN,hRq_vR_jR,Xpfx=VEX,W=1
DisTab 0F55,ANDNPD,hO_jO,Epfx=66
DisTab 0F55,VANDNPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F55,VANDNPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F55,ANDNPS,hO_jO,Epfx=NP
DisTab 0F55,VANDNPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F55,VANDNPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F54,ANDPD,hO_jO,Epfx=66
DisTab 0F54,VANDPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F54,VANDPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F54,ANDPS,hO_jO,Epfx=NP
DisTab 0F54,VANDPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F54,VANDPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 63,ARPL,jRw_hRw,Mode=Lg
DisTab 0F38F7,BEXTR,hRd_jR_vR,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F38F7,BEXTR,hRq_jR_vR,Xpfx=VEX,Epfx=NP,W=1
DisTab 0F3A0C,BLENDPS,hO_jO_ib,Epfx=66
DisTab 0F3A0C,VBLENDPS,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A0D,BLENDPD,hO_jO_ib,Epfx=66
DisTab 0F3A0D,VBLENDPD,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3814,BLENDVPS,hO_jO_XMM0,Epfx=66
DisTab 0F3A4A,VBLENDVPS,hO_vO_jO_is4,Xpfx=VEX,W=0
DisTab 0F3815,BLENDVPD,hO_jO_XMM0,Epfx=66
DisTab 0F3A4B,VBLENDVPD,hO_vO_jO_is4,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A4C,VPBLENDVB,hO_vO_jO_is4,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38F3,BLSI,vRd_jR,Xpfx=VEX,Epfx=NP,RegOp=3,W=0
DisTab 0F38F3,BLSI,vRq_jR,Xpfx=VEX,Epfx=NP,RegOp=3,W=1
DisTab 0F38F3,BLSMSK,vRd_jR,Xpfx=VEX,Epfx=NP,RegOp=2,W=0
DisTab 0F38F3,BLSMSK,vRq_jR,Xpfx=VEX,Epfx=NP,RegOp=2,W=1
DisTab 0F38F3,BLSR,vRd_jR,Xpfx=VEX,Epfx=NP,RegOp=1,W=0
DisTab 0F38F3,BLSR,vRq_jR,Xpfx=VEX,Epfx=NP,RegOp=1,W=1
DisTab 0F1A,BNDCL,hN_jRd,Epfx=F3,Mode=Lg
DisTab 0F1A,BNDCL,hN_jRq,Epfx=F3,Mode=64
DisTab 0F1A,BNDCU,hN_jRd,Epfx=F2,Mode=Lg
DisTab 0F1A,BNDCU,hN_jRq,Epfx=F2,Mode=64
DisTab 0F1B,BNDCN,hN_jRd,Epfx=F2,Mode=Lg
DisTab 0F1B,BNDCN,hN_jRq,Epfx=F2,Mode=64
DisTab 0F1A,BNDLDX,hN_jR,Epfx=NP,Mod=0
DisTab 0F1B,BNDMK,hN_jRd,Epfx=F3,Mode=Lg
DisTab 0F1B,BNDMK,hN_jRq,Epfx=F3,Mode=64
DisTab 0F1A,BNDMOV,hN_jN,Epfx=66
DisTab 0F1B,BNDMOV,jN_hN,Epfx=66
DisTab 0F1B,BNDSTX,jN_hN,Epfx=NP,Mod=0
DisTab 62,BOUND,hR_jM
;DisTab 0FBC,BSF,hR_jR
;DisTab 0FBD,BSR,hR_jR
DisTab 0FC8,BSWAP,@bswap
DisTab 0FC9,BSWAP,@bswap
DisTab 0FCA,BSWAP,@bswap
DisTab 0FCB,BSWAP,@bswap
DisTab 0FCC,BSWAP,@bswap
DisTab 0FCD,BSWAP,@bswap
DisTab 0FCE,BSWAP,@bswap
DisTab 0FCF,BSWAP,@bswap
DisTab 0FA3,BT,jR_hR
DisTab 0FBA,BT,jR_ib,RegOp=4
DisTab 0FBB,BTC,jR_hR
DisTab 0FBA,BTC,jR_ib,RegOp=7
DisTab 0FB3,BTR,jR_hR
DisTab 0FBA,BTR,jR_ib,RegOp=6
DisTab 0FAB,BTS,jR_hR
DisTab 0FBA,BTS,jR_ib,RegOp=5
DisTab 0F38F5,BZHI,hRd_jR_vR,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F38F5,BZHI,hRq_jR_vR,Xpfx=VEX,Epfx=NP,W=1
DisTab E8,CALL,le
DisTab FF,CALL,jRMe@DISTn,RegOp=2
DisTab 9A,CALL,a@DISTf,Mode=Lg
DisTab FF,CALL,jMe@DISTf,Mod=0,RegOp=3
DisTab 98,,@opc98
DisTab 0F01,CLAC,@1,Epfx=NP,Mod=3,RegOp=1,RM=2
DisTab F8,CLC,@
DisTab FC,CLD,@
DisTab 0F1C,CLDEMOTE,jM,Epfx=NP,RegOp=0,Mod=0
DisTab FA,CLI,@
DisTab 0FAE,CLRSSBSY,jM,Epfx=F3,Mod=0,RegOp=6
DisTab 0F06,CLTS,@
DisTab 0F01,CLUI,@1,Epfx=F3,Mod=3,RegOp=5,RM=6
DisTab 0FAE,CLWB,jM,Epfx=66,Mod=0,RegOp=6
DisTab F5,CMC,@
DisTab 0F40,CMOVO,hR_jRM
DisTab 0F41,CMOVNO,hR_jRM
DisTab 0F42,CMOVC,hR_jRM
DisTab 0F43,CMOVNC,hR_jRM
DisTab 0F44,CMOVZ,hR_jRM
DisTab 0F45,CMOVNZ,hR_jRM
DisTab 0F46,CMOVNA,hR_jRM
DisTab 0F47,CMOVA,hR_jRM
DisTab 0F48,CMOVS,hR_jRM
DisTab 0F49,CMOVNS,hR_jRM
DisTab 0F4A,CMOVPE,hR_jRM
DisTab 0F4B,CMOVPO,hR_jRM
DisTab 0F4C,CMOVL,hR_jRM
DisTab 0F4D,CMOVGE,hR_jRM
DisTab 0F4E,CMOVLE,hR_jRM
DisTab 0F4F,CMOVG,hR_jRM
DisTab 3C,CMP,AL_ib@CODEs
DisTab 3D,CMP,aAX_ie@CODEs
DisTab 80,CMP,jRb_i8@DATAb@CODEl,RegOp=7
DisTab 81,CMP,jR_ie@DATAa@CODEl,RegOp=7
DisTab 83,CMP,jR_ibse@DATAa@CODEl,RegOp=7
DisTab 38,CMP,jRb_hRb
DisTab 39,CMP,jR_hR
DisTab 3A,CMP,hRb_jRb
DisTab 3B,CMP,hR_jR
DisTab 0F38E6,CMPBEXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E6,CMPBEXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E2,CMPBXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E2,CMPBXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38EE,CMPLEXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38EE,CMPLEXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38EC,CMPLXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38EC,CMPLXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E7,CMPNBEXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E7,CMPNBEXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E3,CMPNBXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E3,CMPNBXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38EF,CMPNLEXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38EF,CMPNLEXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38ED,CMPNLXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38ED,CMPNLXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E1,CMPNOXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E1,CMPNOXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38EB,CMPNPXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38EB,CMPNPXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E9,CMPNSXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E9,CMPNSXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E5,CMPNZXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E5,CMPNZXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E0,CMPOXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E0,CMPOXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38EA,CMPPXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38EA,CMPPXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E8,CMPBXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E8,CMPBXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F38E4,CMPZXADD,jRd_hRd_vRd@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38E4,CMPZXADD,jRq_hRq_vRq@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0FC2,CMPPD,hO_jO_ib,Epfx=66
DisTab 0FC2,VCMPPD,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0FC2,VCMPPD,hK_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FC2,CMPPS,hO_jO_ib,Epfx=NP
DisTab 0FC2,VCMPPS,hO_vO_jO_ib,Xpfx=VEX,Epfx=NP
DisTab 0FC2,VCMPPS,hK_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab A6,CMPS,Pb_Tb
DisTab A7,CMPS,Pe_Te
DisTab 0FC2,CMPSD,hX_jX_ib,Epfx=F2
DisTab 0FC2,VCMPSD,hX_vX_jX_ib,Xpfx=VEX,Epfx=F2
DisTab 0FC2,VCMPSD,hK_vX_jX_ib@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0FC2,CMPSS,hX_jX_ib,Epfx=F3
DisTab 0FC2,VCMPSS,hX_vX_jX_ib,Xpfx=VEX,Epfx=F3
DisTab 0FC2,VCMPSS,hK_vX_jX_ib@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0FB0,CMPXCHG,jRb_hRb
DisTab 0FB1,CMPXCHG,jR_hR
DisTab 0FC7,CMPXCHG8B,jM@DATAq,RegOp=1,W=0
DisTab 0FC7,CMPXCHG16B,jM@DATAo,RegOp=1,W=1
DisTab 0F2F,COMISS,hO_jO@DATAd,Epfx=NP
DisTab 0F2F,VCOMISS,hO_jO@DATAd,Xpfx=VEX,Epfx=NP
DisTab 0F2F,VCOMISS,hO_jO@DATAd@T32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F2F,COMISD,hO_jO@DATAq,Epfx=66
DisTab 0F2F,VCOMISD,hO_jO@DATAq,Xpfx=VEX,Epfx=66
DisTab 0F2F,VCOMISD,hO_jO@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FA2,CPUID,@
DisTab 0F38F0,CRC32,hRd_jRb@DATAb,Epfx=F2
DisTab 0F38F1,CRC32,hRd_jR@DATAa,Epfx=F2
DisTab 0FE6,CVTDQ2PD, hO_jO,Epfx=F3
DisTab 0FE6,VCVTDQ2PD,hO_jXXY,Xpfx=VEX,Epfx=F3
DisTab 0FE6,VCVTDQ2PD,hO_jXXY@HV32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F5B,CVTDQ2PS, hO_jO,Epfx=NP
DisTab 0F5B,VCVTDQ2PS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F5B,VCVTDQ2PS,hO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0FE6,CVTPD2DQ,hO_jO@DATAo,Epfx=F2
DisTab 0FE6,VCVTPD2DQ,hX_jXY,Xpfx=VEX,Epfx=F2
DisTab 0FE6,VCVTPD2DQ,hXY_jO@FV64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F2D,CVTPD2PI,hU_jO,Epfx=66
DisTab 0F5A,CVTPD2PS,hXXY_jO,Epfx=66
DisTab 0F5A,VCVTPD2PS,hXXY_jO,Xpfx=VEX,Epfx=66
DisTab 0F5A,VCVTPD2PS,hXXY_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F5A,VCVTPD2PS,hO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F2A,CVTPI2PD,hO_jU,Epfx=66
DisTab 0F2A,CVTPI2PS,hO_jU,Epfx=NP
DisTab 0F5B,CVTPS2DQ,hO_jO,Epfx=66
DisTab 0F5B,VCVTPS2DQ,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F5B,VCVTPS2DQ,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F5A,CVTPS2PD,hO_jXXY,Epfx=NP
DisTab 0F5A,VCVTPS2PD,hO_jXXY,Xpfx=VEX,Epfx=NP
DisTab 0F5A,VCVTPS2PD,hO_jXXY@HV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F2D,CVTPS2PI,hU_jO,Epfx=NP
DisTab 0F2D, CVTSD2SI,hRd_jO,Epfx=F2,W=0
DisTab 0F2D, CVTSD2SI,hRq_jX,Epfx=F2,W=1
DisTab 0F2D,VCVTSD2SI,hRd_jX,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F2D,VCVTSD2SI,hRq_jX,Xpfx=VEX,Epfx=F2,W=1
DisTab 0F2D,VCVTSD2SI,hRd_jX@HVM,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F2D,VCVTSD2SI,hRq_jX@HVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F5A, CVTSD2SS,hX_jX,Epfx=F2
DisTab 0F5A,VCVTSD2SS,hX_vX_jX,Xpfx=VEX,Epfx=F2
DisTab 0F5A,VCVTSD2SS,hX_vX_jX@HVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F2A, CVTSI2SD,hX_jRd@DATAd,Epfx=F2,W=0
DisTab 0F2A, CVTSI2SD,hX_jRq@DATAq,Epfx=F2,W=1
DisTab 0F2A,VCVTSI2SD,hX_vX_jRd@DATAd,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F2A,VCVTSI2SD,hX_vX_jRq@DATAq,Xpfx=VEX,Epfx=F2,W=1
DisTab 0F2A,VCVTSI2SD,hX_vX_jRd@DATAd@QVM,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F2A,VCVTSI2SD,hX_vX_jRq@DATAq@HVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F2A, CVTSI2SS,hX_jRd@DATAd,Epfx=F3,W=0
DisTab 0F2A, CVTSI2SS,hX_jRq@DATAq,Epfx=F3,W=1
DisTab 0F2A,VCVTSI2SS,hX_vX_jRd@DATAd@QVM,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F2A,VCVTSI2SS,hX_vX_jRq@DATAq@HVM,Xpfx=VEX,Epfx=F3,W=1
DisTab 0F2A,VCVTSI2SS,hX_vX_jRd@DATAd@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F2A,VCVTSI2SS,hX_vX_jRq@DATAq@HVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F5A, CVTSS2SD,hX_jX,Epfx=F3
DisTab 0F5A,VCVTSS2SD,hX_vX_jX,Xpfx=VEX,Epfx=F3
DisTab 0F5A,VCVTSS2SD,hX_vX_jX@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F2D, CVTSS2SI,hRd_jX@DATAd,Epfx=F3,W=0
DisTab 0F2D, CVTSS2SI,hRq_jX@DATAq,Epfx=F3,W=1
DisTab 0F2D,VCVTSS2SI,hRd_jX@DATAd,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F2D,VCVTSS2SI,hRq_jX@DATAq,Xpfx=VEX,Epfx=F3,W=1
DisTab 0F2D,VCVTSS2SI,hRd_jX@DATAd@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F2D,VCVTSS2SI,hRq_jX@DATAq@QVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0FE6, CVTTPD2DQ,hO_jO,Epfx=66
DisTab 0FE6,VCVTTPD2DQ,hX_jXY,Xpfx=VEX,Epfx=66
DisTab 0FE6,VCVTTPD2DQ,hXY_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F2C,CVTTPD2PI,hU_jO,Epfx=66
DisTab 0F5B, CVTTPS2DQ,hO_jO,Epfx=F3
DisTab 0F5B,VCVTTPS2DQ,hO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F5B,VCVTTPS2DQ,hO_jO@FV64,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F2C,CVTTPS2PI,hU_jO,Epfx=NP
DisTab 0F2C, CVTTSD2SI,hRd_jX@DATAd,Epfx=F2,W=0
DisTab 0F2C, CVTTSD2SI,hRq_jX@DATAq,Epfx=F2,W=1
DisTab 0F2C,VCVTTSD2SI,hRd_jX@DATAd,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F2C,VCVTTSD2SI,hRq_jX@DATAq,Xpfx=VEX,Epfx=F2,W=1
DisTab 0F2C,VCVTTSD2SI,hRd_jX@DATAd@HVM,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F2C,VCVTTSD2SI,hRq_jX@DATAq@HVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F2C, CVTTSS2SI,hRd_jX@DATAd,Epfx=F3,W=0
DisTab 0F2C, CVTTSS2SI,hRq_jX@DATAq,Epfx=F3,W=1
DisTab 0F2C,VCVTTSS2SI,hRd_jX@DATAd,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F2C,VCVTTSS2SI,hRq_jX@DATAq,Xpfx=VEX,Epfx=F3,W=1
DisTab 0F2C,VCVTTSS2SI,hRd_jX@DATAd@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F2C,VCVTTSS2SI,hRq_jX@DATAq@QVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 99,,@opc99
DisTab 27,DAA,@
DisTab 2F,DAS,@
DisTab FE,DEC,jRb@DATAb,RegOp=1
DisTab FF,DEC,jR@DATAa@CODEl,RegOp=1
DisTab F6,DIV,jRb@DATAb,RegOp=6
DisTab F7,DIV,jRMe@DATAa,RegOp=6,W=0
DisTab F7,DIV,jRq@DATAq,RegOp=6,W=1
DisTab 0F5E,DIVPD,hO_jO@DATAo,Epfx=66
DisTab 0F5E,VDIVPD,hO_vO_jO@DATAo,Xpfx=VEX,Epfx=66
DisTab 0F5E,VDIVPD,hO_vO_jO@DATAo@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F5E,DIVPS,hO_jO@DATAo,Epfx=NP
DisTab 0F5E,VDIVPS,hO_vO_jO@DATAo,Xpfx=VEX,Epfx=NP
DisTab 0F5E,VDIVPS,hO_vO_jO@DATAo@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F5E,DIVSD,hX_jX@DATAq,Epfx=F2
DisTab 0F5E,VDIVSD,hX_vX_jX@DATAq,Xpfx=VEX,Epfx=F2
DisTab 0F5E,VDIVSD,hX_vX_jX@DATAq@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F5E,DIVSS,hX_jX@DATAd,Epfx=F3
DisTab 0F5E,VDIVSS,hX_vX_jX@DATAd,Xpfx=VEX,Epfx=F3
DisTab 0F5E,VDIVSS,hX_vX_jX@DATAd@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3A40,DPPS,hX_jX_ib,Epfx=66
DisTab 0F3A40,VDPPS,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A41,DPPD,hX_jX_ib,Epfx=66
DisTab 0F3A41,VDPPD,hX_vX_jX_ib,Xpfx=VEX,Epfx=66
DisTab 0F77,EMMS,@
DisTab 0F38FA,ENCODEKEY128,hRd_jRd_XMM0,Epfx=F3,Mod=3
DisTab 0F38FB,ENCODEKEY256,hRd_jRd_XMM0,Epfx=F3,Mod=3
DisTab 0F1E,ENDBR32,@1,Epfx=F3,Mod=3,RegOp=7,RM=3
DisTab 0F1E,ENDBR64,@1,Epfx=F3,Mod=3,RegOp=7,RM=2
DisTab 0F38F8,ENQCMD,hRe_jR@DATAz,Epfx=F2,Mod=0
DisTab 0F38F8,ENQCMDS,hRe_jR@DATAz,Epfx=F3,Mod=0
DisTab C8,ENTER,iw_ib
DisTab 0F01,ERETS,@1,Epfx=F2,Mod=3,RegOp=1,RM=2
DisTab 0F01,ERETU,@1,Epfx=F3,Mod=3,RegOp=1,RM=2
DisTab 0F3A17, EXTRACTPS,jRd_hO_ib@DATAd,Epfx=66
DisTab 0F3A17,VEXTRACTPS,jRd_hO_ib@DATAd,Xpfx=VEX,Epfx=66
DisTab 0F3A17,VEXTRACTPS,jRd_hO_ib@DATAd@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A17,VEXTRACTPS,jRd_hO_ib@DATAd@T64,Xpfx=EVEX,Epfx=66,W=1
; FPU
DisTab 9B,,Grp9B
DisTab D8,,GrpD8
DisTab D9,,GrpD9
DisTab DA,,GrpDA
DisTab DB,,GrpDB
DisTab DC,,GrpDC
DisTab DD,,GrpDD
DisTab DE,,GrpDE
DisTab DF,,GrpDF
DisTab 0FAE,FXRSTOR,jM,Epfx=NP,Mod=0,RegOp=1,W=0
DisTab 0FAE,FXSAVE,jM,Epfx=NP,Mod=0,RegOp=0,W=0
DisTab 0FAE,FXSAVE64,jM,Epfx=NP,Mod=0,RegOp=0,W=1
DisTab 0F3ACF,GF2P8AFFINEINVQB,hO_jO_ib,Epfx=66
DisTab 0F3ACF,VGF2P8AFFINEINVQB,hO_vO_jO_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3ACF,VGF2P8AFFINEINVQB,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3ACE,GF2P8AFFINEQB,hO_jO_ib,Epfx=66
DisTab 0F3ACE,VGF2P8AFFINEQB,hO_vO_jO_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3ACE,VGF2P8AFFINEQB,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38CF,GF2P8MULB,hO_jO,Epfx=66,W=0
DisTab 0F38CF,VGF2P8MULB,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38CF,VGF2P8MULB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3C,HADDPD,hO_jO,Epfx=66
DisTab 0F3C,VHADDPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F7C,HADDPS,hO_jO,Epfx=F2
DisTab 0F7C,VHADDPS,hO_vO_jO,Xpfx=VEX,Epfx=F2
DisTab 0F7C,HADDPD,hO_jO,Epfx=66
DisTab 0F7C,VHADDPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab F4,HLT,@
DisTab 0F3AF0,HRESET,ib1,Epfx=F3,Mod=3,RegOp=0,RM=0
DisTab 0F7D,HSUBPD,hO_jO,Epfx=66
DisTab 0F7D,VHSUBPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F7D,HSUBPS,hO_jO,Epfx=F2
DisTab 0F7D,VHSUBPS,hO_vO_jO,Xpfx=VEX,Epfx=F2
DisTab F6,IDIV,jRMb@DATAb,RegOp=7
DisTab F7,IDIV,jRMe@DATAa,RegOp=7,W=0
DisTab F7,IDIV,jRq@DATAq,RegOp=7,W=1
DisTab F6,IMUL,jRMb@DATAb,RegOp=5
DisTab F7,IMUL,jRMe@DATAa,RegOp=5,W=0
DisTab F7,IMUL,jRq@DATAq,RegOp=5,W=1
DisTab 0FAF,IMUL,hR_jR@DATAa,W=0
DisTab 0FAF,IMUL,hR_jR@DATAq,W=1
DisTab 6B,IMUL,hR_jRM_ib@DATAa
DisTab 69,IMUL,hR_jRM_ie@DATAa@IMMd
DisTab E4,IN,AL_ib
DisTab E5,IN,eAX_ib@in
DisTab EC,IN,AL_DX
DisTab ED,IN,eAX_DX
DisTab FE,INC,jRb@DATAb,RegOp=0
DisTab FF,INC,jR@DATAa@CODEl,RegOp=0
DisTab 0FAE,INCSSPD,jRd,Epfx=F3,Mod=3,RegOp=5,W=0
DisTab 0FAE,INCSSPQ,jRq,Epfx=F3,Mod=3,RegOp=5,W=1
DisTab 0F3A21,INSERTPS,hO_jO_ib,Epfx=66
DisTab 0F3A21,VINSERTPS,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A21,VINSERTPS,hO_vO_jO_ib@T32,Xpfx=EVEX,Epfx=66
DisTab 6C,INS,Tb_DX
DisTab 6D,INS,Te_DX
DisTab CC,INT3,@
DisTab CD,INT,ib@DATAb@noDATA
DisTab CE,INTO,@,Mode=Lg
DisTab F1,INT1,@
DisTab 0F08,INVD,@
DisTab 0F01,INVLPG,jM,Mod=0,RegOp=7
DisTab 0F3882,INVPCID,hRd_jR,Epfx=66,Mod=0 ; PRIV
DisTab CF,IRET,@iret
DisTab 70,JO,@jcc
DisTab 71,JNO,@jcc
DisTab 72,JC,@jcc
DisTab 73,JNC,@jcc
DisTab 74,JZ,@jcc
DisTab 75,JNZ,@jcc
DisTab 76,JNA,@jcc
DisTab 77,JA,@jcc
DisTab 78,JS,@jcc
DisTab 79,JNS,@jcc
DisTab 7A,JPE,@jcc
DisTab 7B,JPO,@jcc
DisTab 7C,JL,@jcc
DisTab 7D,JGE,@jcc
DisTab 7E,JLE,@jcc
DisTab 7F,JG,@jcc
DisTab E3,,@jcxz
DisTab 0F80,JO,@jcce
DisTab 0F81,JNO,@jcce
DisTab 0F82,JC,@jcce
DisTab 0F83,JNC,@jcce
DisTab 0F84,JZ,@jcce
DisTab 0F85,JNZ,@jcce
DisTab 0F86,JNA,@jcce
DisTab 0F87,JA,@jcce
DisTab 0F88,JS,@jcce
DisTab 0F89,JNS,@jcce
DisTab 0F8A,JPE,@jcce
DisTab 0F8B,JPO,@jcce
DisTab 0F8C,JL,@jcce
DisTab 0F8D,JGE,@jcce
DisTab 0F8E,JLE,@jcce
DisTab 0F8F,JG,@jcce
DisTab EB,JMP,@jcc
DisTab E9,JMP,le
DisTab FF,JMP,jRMe@DISTn,RegOp=4
DisTab EA,JMP,a@DISTf,Mode=Lg
DisTab FF,JMP,jMe@DISTf,Mod=0,RegOp=5
; Instructions SGX, SMX, VMX in the order in [IntelSGX]
DisTab 0F01,ENCLS,@1,Epfx=NP,Mod=3,RegOp=1,RM=7
DisTab 0F01,ENCLU,@1,Epfx=NP,Mod=3,RegOp=2,RM=7
DisTab 0F01,ENCLV,@1,Epfx=NP,Mod=3,RegOp=0,RM=0
DisTab 0F37,GETSEC,@,Epfx=NP
DisTab 0F3880,INVEPT,hRd_jR,Epfx=66,Mod=0
DisTab 0F3881,INVVPID,hRd_jR,Epfx=66,Mod=0
DisTab 0F01,VMCALL,@1,Epfx=NP,Mod=3,RegOp=0,RM=1
DisTab 0FC7,VMCLEAR,jR,Epfx=66,Mod=0,RegOp=6
DisTab 0F01,VMFUNC,@1,Epfx=NP,Mod=3,RegOp=2,RM=4
DisTab 0F01,VMLAUNCH,@1,Epfx=NP,Mod=3,RegOp=0,RM=2
DisTab 0F01,VMRESUME,@1,Epfx=NP,Mod=3,RegOp=0,RM=3
DisTab 0FC7,VMPTRLD,jR,Epfx=NP,Mod=0,RegOp=6
DisTab 0FC7,VMPTRST,jR,Epfx=NP,Mod=0,RegOp=7
DisTab 0F78,VMREAD,jRe_hR,Epfx=NP
DisTab 0F79,VMWRITE,hRe_jR,Epfx=NP
DisTab 0F01,VMXOFF,@1,Epfx=NP,Mod=3,RegOp=0,RM=4
DisTab 0FC7,VMXON,jR,Epfx=F3,Mod=0,RegOp=6
DisTab 0F4A,KADDW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F4A,KADDB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F4A,KADDQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F4A,KADDD,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F42,KANDNW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F42,KANDNB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F42,KANDNQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F42,KANDND,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F41,KANDW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F41,KANDB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F41,KANDQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F41,KANDD,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F90,KMOVW,hK_jK,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F90,KMOVB,hK_jK,Xpfx=VEX,Epfx=66,W=0
DisTab 0F90,KMOVQ,hK_jK,Xpfx=VEX,Epfx=NP,W=1
DisTab 0F90,KMOVD,hK_jK,Xpfx=VEX,Epfx=66,W=1
DisTab 0F91,KMOVW,jK_hK,Xpfx=VEX,Epfx=NP,Mod=0,W=0
DisTab 0F91,KMOVB,jK_hK,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F91,KMOVQ,jK_hK,Xpfx=VEX,Epfx=NP,Mod=0,W=1
DisTab 0F91,KMOVD,jK_hK,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F92,KMOVW,hK_jRd,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F92,KMOVB,hK_jRd,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F92,KMOVQ,hK_jRq,Xpfx=VEX,Epfx=F2,Mod=3,W=1
DisTab 0F92,KMOVD,hK_jRd,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F93,KMOVW,hRd_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F93,KMOVB,hRd_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F93,KMOVQ,hRq_jK,Xpfx=VEX,Epfx=F2,Mod=3,W=1
DisTab 0F93,KMOVD,hRd_jK,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F44,KNOTW,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F44,KNOTB,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F44,KNOTQ,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F44,KNOTD,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F98,KORTESTW,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F98,KORTESTB,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F98,KORTESTQ,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F98,KORTESTD,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F45,KORW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F45,KORB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F45,KORQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F45,KORD,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F3A32,KSHIFTLW,hK_jK_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A32,KSHIFTLB,hK_jK_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A33,KSHIFTLQ,hK_jK_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A33,KSHIFTLD,hK_jK_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A30,KSHIFTRW,hK_jK_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A30,KSHIFTRB,hK_jK_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A31,KSHIFTRQ,hK_jK_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A31,KSHIFTRD,hK_jK_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F99,KTESTW,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F99,KTESTB,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F99,KTESTQ,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F99,KTESTD,hK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F4B,KUNPCKBW,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F4B,KUNPCKWD,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F4B,KUNPCKDQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F46,KXNORW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F46,KXNORB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F46,KXNORQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F46,KXNORD,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 0F47,KXORW,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F47,KXORB,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F47,KXORQ,hK_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=1
DisTab 0F47,KXORD,hK_vK_jK,Xpfx=VEX,Epfx=66,Mod=3,W=1
DisTab 9F,LAHF,@
DisTab 0F02,LAR,hR_jRMw
DisTab 0FF0,LDDQU,hO_jR,Epfx=F2,Mod=0
DisTab 0FF0,VLDDQU,hO_jR,Xpfx=VEX,Epfx=F2,Mod=0
DisTab 0FAE,LDMXCSR,jM@DATAd,Epfx=NP,Mod=0,RegOp=2
DisTab 0FAE,VLDMXCSR,jM@DATAd,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=2
DisTab C5,LDS,hR_jM@ls,Mod=0
DisTab 0FB2,LSS,hR_jM@ls,Mod=0
DisTab C4,LES,hR_jM@ls,Mod=0
DisTab 0FB4,LFS,hR_jM@ls,Mod=0
DisTab 0FB5,LGS,hR_jM@ls,Mod=0
DisTab 0F3849,LDTILECFG,jM@DATAz,Xpfx=VEX,Epfx=NP,Mode=64,RegOp=0,W=0
DisTab 8D,LEA,hR_jM,Mod=0
DisTab C9,LEAVE,none@DATAa
DisTab 0FAE,LFENCE,@1,Epfx=NP,Mod=3,RegOp=5,RM=0
DisTab 0F01,LGDT,jM,Mod=0,RegOp=2
DisTab 0F01,LIDT,jM,Mod=0,RegOp=3
DisTab 0F00,LKGS,jR@DATAw,Epfx=F2,RegOp=6
DisTab 0F00,LLDT,jR,RegOp=2
DisTab 0F01,LMSW,jR,RegOp=6
DisTab 0F38DC,LOADIWKEY,hO_jO,Epfx=F3,Mod=3
DisTab F0,LOCK,@pfxLg
DisTab AC,LODS,AL_Pb
DisTab AD,LODS,eAX_Pe
DisTab E2,LOOP,lb_eCX
DisTab E1,LOOPE,lb_eCX
DisTab E0,LOOPNE,lb_eCX
DisTab 0F03,LSL,hR_jR
DisTab 0F00,LTR,jR,RegOp=3
DisTab 0FBD,LZCNT,hR_jR,Epfx=F3
DisTab 0FF7, MASKMOVDQU,hX_jX,Epfx=66,Mod=3
DisTab 0FF7,VMASKMOVDQU,hX_jX,Xpfx=VEX,Epfx=66,Mod=3
DisTab 0FF7, MASKMOVQ,hU_jU,Epfx=NP,Mod=3
DisTab 0F5F, MAXPD,hO_jO,Epfx=66
DisTab 0F5F,VMAXPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F5F,VMAXPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F5F, MAXPS,hO_jO,Epfx=NP
DisTab 0F5F,VMAXPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F5F,VMAXPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F5F, MAXSD,hO_jO,Epfx=F2
DisTab 0F5F,VMAXSD,hO_vO_jO,Xpfx=VEX,Epfx=F2
DisTab 0F5F,VMAXSD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F5F, MAXSS,hO_jO,Epfx=F3
DisTab 0F5F,VMAXSS,hO_vO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F5F,VMAXSS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0FAE,MFENCE,@1,Epfx=NP,Mod=3,RegOp=6,RM=0
DisTab 0F5D, MINPD,hO_jO,Epfx=66
DisTab 0F5D,VMINPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F5D,VMINPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F5D, MINPS,hO_jO,Epfx=NP
DisTab 0F5D,VMINPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F5D,VMINPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F5D, MINSD,hO_jO,Epfx=F2
DisTab 0F5D,VMINSD,hO_vO_jO,Xpfx=VEX,Epfx=F2
DisTab 0F5D,VMINSD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F5D, MINSS,hO_jO,Epfx=F3
DisTab 0F5D,VMINSS,hO_vO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F5D,VMINSS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F01,MONITOR,@1,Epfx=NP,Mod=3,RegOp=1,RM=0
DisTab 88,MOV,jRMb_hRb@CODEl
DisTab 89,MOV,jRM_hR@CODEl
DisTab 8A,MOV,hRb_jRMb@CODEl
DisTab 8B,MOV,hR_jRM@CODEl
DisTab 8C,MOV,jRM_hS
DisTab 8E,MOV,hS_jRM
DisTab A0,MOV,AL_a@CODEs
DisTab A1,MOV,eAX_a@CODEs
DisTab A2,MOV,a_AL@CODEs
DisTab A3,MOV,a_eAX@CODEs
DisTab B0,MOV,Rb_ib
DisTab B1,MOV,Rb_ib
DisTab B2,MOV,Rb_ib
DisTab B3,MOV,Rb_ib
DisTab B4,MOV,Rb_ib
DisTab B5,MOV,Rb_ib
DisTab B6,MOV,Rb_ib
DisTab B7,MOV,Rb_ib
DisTab B8,MOV,Re_ie
DisTab B9,MOV,Re_ie
DisTab BA,MOV,Re_ie
DisTab BB,MOV,Re_ie
DisTab BC,MOV,Re_ie
DisTab BD,MOV,Re_ie
DisTab BE,MOV,Re_ie
DisTab BF,MOV,Re_ie
DisTab C6,MOV,jRb_ib,RegOp=0
DisTab C7,MOV,jRe_ie,RegOp=0
DisTab 0F20,MOV,jR_hC,Mod=3
DisTab 0F21,MOV,jR_hG
DisTab 0F22,MOV,hC_jR,Mod=3
DisTab 0F23,MOV,hG_jR
DisTab 0F28, MOVAPD,hO_jO,Epfx=66
DisTab 0F29, MOVAPD,jO_hO,Epfx=66
DisTab 0F28,VMOVAPD,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F29,VMOVAPD,jO_hO,Xpfx=VEX,Epfx=66
DisTab 0F28,VMOVAPD,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F29,VMOVAPD,jO_hO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F28, MOVAPS,hO_jO,Xpfx=0,Epfx=NP
DisTab 0F29, MOVAPS,jO_hO,Xpfx=0,Epfx=NP
DisTab 0F28,VMOVAPS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F29,VMOVAPS,jO_hO,Xpfx=VEX,Epfx=NP
DisTab 0F28,VMOVAPS,hO_jO@FVM,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F29,VMOVAPS,jO_hO@FVM,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F38F0,MOVBE,hR_jR,Mod=0
DisTab 0F38F1,MOVBE,jR_hR,Mod=0
DisTab 0F12, MOVDDUP,hO_jO,Epfx=F2
DisTab 0F12,VMOVDDUP,hO_jO,Xpfx=VEX,Epfx=F2
DisTab 0F12,VMOVDDUP,hO_jO@FVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F38F8,MOVDIR64B,hRwdq_jR,Epfx=66,Mod=0
DisTab 0F38F9,MOVDIRI,jR_hR,Epfx=NP,Mod=0
DisTab 0F6E,MOVD,hU_jRd@DATAd,Epfx=NP,W=0
DisTab 0F6E,MOVQ,hU_jRq@DATAq,Epfx=NP,W=1
DisTab 0F7E,MOVD,jRd_hU@DATAd,Epfx=NP,W=0
DisTab 0F7E,MOVQ,jRq_hU@DATAq,Epfx=NP,Mode=64,W=1
DisTab 0F6E,MOVD,hO_jRd@DATAd,Epfx=66,W=0
DisTab 0F6E,MOVQ,hO_jRq@DATAq,Epfx=66,Mode=64,W=1
DisTab 0F7E,MOVD,jRd_hO@DATAd,Epfx=66,W=0
DisTab 0F7E,MOVQ,jRq_hO@DATAq,Epfx=66,W=1
DisTab 0F6E,VMOVD,hO_jRd@DATAd,Xpfx=VEX,Epfx=66,W=0
DisTab 0F6E,VMOVQ,hO_jRq@DATAq,Xpfx=VEX,Epfx=66,W=1
DisTab 0F7E,VMOVD,jRd_hO@DATAd,Xpfx=VEX,Epfx=66,W=0
DisTab 0F7E,VMOVQ,jRq_hO@DATAq,Xpfx=VEX,Epfx=66,W=1
DisTab 0F6E,VMOVD,hO_jRd@DATAd@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F6E,VMOVQ,hO_jRq@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F7E,VMOVD,jRd_hO@DATAd@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F7E,VMOVQ,jRq_hO@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FD6,MOVDQ2Q,hU_jO@DATAq,Epfx=F2
DisTab 0F6F,MOVDQA,hO_jO,Epfx=66
DisTab 0F7F,MOVDQA,jO_hO,Epfx=66
DisTab 0F6F,VMOVDQA,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F7F,VMOVDQA,jO_hO,Xpfx=VEX,Epfx=66
DisTab 0F6F,VMOVDQA32,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F7F,VMOVDQA32,jO_hO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F6F,VMOVDQA64,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F7F,VMOVDQA64,jO_hO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F6F, MOVDQU,hO_jO,Epfx=F3
DisTab 0F7F, MOVDQU,jO_hO,Epfx=F3
DisTab 0F6F,VMOVDQU,hO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F7F,VMOVDQU,jO_hO,Xpfx=VEX,Epfx=F3
DisTab 0F6F,VMOVDQU8,hO_jO@FVM,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F7F,VMOVDQU8,jO_hO@FVM,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F6F,VMOVDQU16,hO_jO@FVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F7F,VMOVDQU16,jO_hO@FVM,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F6F,VMOVDQU32,hO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F7F,VMOVDQU32,jO_hO@FVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F6F,VMOVDQU64,hO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F7F,VMOVDQU64,jO_hO@FVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F12, MOVHLPS,hO_jO,Epfx=NP,Mod=3
DisTab 0F12,VMOVHLPS,hO_vO_jO,Xpfx=VEX,Epfx=NP,Mod=3
DisTab 0F12,VMOVHLPS,hO_vO_jO@T64,Xpfx=EVEX,Epfx=NP,Mod=3,W=0
DisTab 0F16, MOVHPD,hO_jO,Epfx=66,Mod=0
DisTab 0F16,VMOVHPD,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F16,VMOVHPD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F17, MOVHPD,jO_hO,Epfx=66,Mod=0
DisTab 0F17,VMOVHPD,jO_hO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F17,VMOVHPD,jO_hO@T64,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F16, MOVHPS,hO_jO,Epfx=NP,Mod=0
DisTab 0F16,VMOVHPS,hO_vO_jO,Xpfx=VEX,Epfx=NP,Mod=0,W=0
DisTab 0F16,VMOVHPS,hO_vO_jO@T64,Xpfx=EVEX,Epfx=NP,Mod=0,W=0
DisTab 0F17, MOVHPS,jO_hO,Epfx=NP,Mod=0
DisTab 0F17,VMOVHPS,jO_hO,Xpfx=VEX,Epfx=NP,Mod=0,W=0
DisTab 0F17,VMOVHPS,jO_hO@T64,Xpfx=EVEX,Epfx=NP,Mod=0,W=0
DisTab 0F16, MOVLHPS,hO_jO,Epfx=NP,Mod=3
DisTab 0F16,VMOVLHPS,hO_vO_jO,Xpfx=VEX,Epfx=NP,Mod=3
DisTab 0F16,VMOVLHPS,hO_vO_jO,Xpfx=EVEX,Epfx=NP,Mod=3,W=0
DisTab 0F12, MOVLPD,hO_jO,Epfx=66,Mod=0
DisTab 0F12,VMOVLPD,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F12,VMOVLPD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F13, MOVLPD,jO_hO,Epfx=66,Mod=0
DisTab 0F13,VMOVLPD,jO_hO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F13,VMOVLPD,jO_hO@T64,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F12, MOVLPS,hO_jO,Epfx=NP,Mod=0
DisTab 0F12,VMOVLPS,hO_vO_jO,Xpfx=VEX,Epfx=NP,Mod=0
DisTab 0F12,VMOVLPS,hO_vO_jO@T64,Xpfx=EVEX,Epfx=NP,Mod=0,W=0
DisTab 0F13, MOVLPS,jO_hO,Epfx=NP,Mod=0
DisTab 0F13,VMOVLPS,jO_hO,Xpfx=VEX,Epfx=NP,Mod=0
DisTab 0F13,VMOVLPS,jO_hO@T64,Xpfx=EVEX,Epfx=NP,Mod=0,W=0
DisTab 0F50,MOVMSKPD,hRdq_jO,Epfx=66,Mod=3
DisTab 0F50,VMOVMSKPD,hRdq_jO,Xpfx=VEX,Epfx=66,Mod=3
DisTab 0F50,MOVMSKPS,hRdq_jO,Epfx=NP,Mod=3
DisTab 0F50,VMOVMSKPS,hRdq_jO,Xpfx=VEX,Epfx=NP,Mod=3
DisTab 0FE7,MOVNTDQ,jR_hO,Epfx=66,Mod=0
DisTab 0FE7,VMOVNTDQ,jR_hO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0FE7,VMOVNTDQ,jR_hO@FVM,Xpfx=EVEX,Epfx=66,W=0,Mod=0
DisTab 0F382A,MOVNTDQA,hO_jO,Epfx=66,Mod=0
DisTab 0F382A,VMOVNTDQA,hO_jO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F382A,VMOVNTDQA,hO_jO@FVM,Xpfx=EVEX,Epfx=66,Mod=0,W=0
DisTab 0FC3,MOVNTI,jR_hRd,Epfx=NP,Mod=0
DisTab 0F2B,MOVNTPD,jO_hO,Epfx=66,Mod=0
DisTab 0F2B,MOVNTSS,jO_hO,Epfx=F3,Mod=0
DisTab 0F2B,MOVNTSD,jO_hO,Epfx=F2,Mod=0
DisTab 0F2B,VMOVNTPD,jO_hO,Xpfx=VEX,Epfx=66,Mod=0
DisTab 0F2B,VMOVNTPD,jO_hO@FVM,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F2B,MOVNTPS,jO_hO,Epfx=NP,Mod=0
DisTab 0F2B,VMOVNTPS,jO_hO,Xpfx=VEX,Epfx=NP,Mod=0
DisTab 0F2B,VMOVNTPS,jO_hO@FVM,Xpfx=EVEX,Epfx=NP,Mod=0,W=0
DisTab 0FE7,MOVNTQ,jU_hU,Epfx=NP,Mod=0
DisTab 0F6F,MOVQ,hU_jU,Epfx=NP
DisTab 0F7F,MOVQ,jU_hU,Epfx=NP
DisTab 0F7E,MOVQ,hO_jO@DATAq@noREP,Epfx=F3
DisTab 0F7E,VMOVQ,hO_jO@DATAq,Xpfx=VEX,Epfx=F3
DisTab 0F7E,VMOVQ,hO_jO@DATAq@T64,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0FD6,MOVQ,jO_hO@DATAq,Epfx=66
DisTab 0FD6,VMOVQ,jO_hO@DATAq,Xpfx=VEX,Epfx=66
DisTab 0FD6,VMOVQ,jO_hO@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FD6,MOVQ2DQ,hO_jU@DATAq@noREP,Epfx=F3,Mod=3
DisTab A4,MOVS,Tb_Pb
DisTab A5,MOVS,Te_Pe
DisTab 0F10, MOVSD,hO_jO@DATAq,Epfx=F2,Mod=3
DisTab 0F10, MOVSD,hO_jO@DATAq,Epfx=F2,Mod=0
DisTab 0F11, MOVSD,jO_hO@DATAq,Epfx=F2
DisTab 0F10,VMOVSD,hO_vO_jO,Xpfx=VEX,Epfx=F2,Mod=3
DisTab 0F10,VMOVSD,hO_jO@DATAq,Xpfx=VEX,Epfx=F2,Mod=0
DisTab 0F11,VMOVSD,jO_vO_hO,Xpfx=VEX,Epfx=F2,Mod=3
DisTab 0F11,VMOVSD,jO_hO@DATAq,Xpfx=VEX,Epfx=F2,Mod=0
DisTab 0F10,VMOVSD,hO_vO_jO,Xpfx=EVEX,Epfx=F2,Mod=3,W=1
DisTab 0F10,VMOVSD,hO_jO@DATAq@T64,Xpfx=EVEX,Epfx=F2,Mod=0,W=1
DisTab 0F11,VMOVSD,jO_vO_hO,Xpfx=EVEX,Epfx=F2,Mod=3,W=1
DisTab 0F11,VMOVSD,jO_hO@DATAq@T64,Xpfx=EVEX,Epfx=F2,Mod=0,W=1
DisTab 0F16, MOVSHDUP,hO_jO,Epfx=F3
DisTab 0F16,VMOVSHDUP,hO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F16,VMOVSHDUP,hO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F12, MOVSLDUP,hO_jO,Epfx=F3
DisTab 0F12,VMOVSLDUP,hO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F12,VMOVSLDUP,hO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F10, MOVSS,hO_jO@DATAd@noREP,Epfx=F3
DisTab 0F10, MOVSS,hO_jO@DATAd,Epfx=F3,Mod=0
DisTab 0F10,VMOVSS,hO_vO_jO,Xpfx=VEX,Epfx=F3,Mod=3
DisTab 0F10,VMOVSS,hO_jO,Xpfx=VEX,Epfx=F3,Mod=0
DisTab 0F11, MOVSS,jO_hO@DATAd,Epfx=F3
DisTab 0F11,VMOVSS,jO_vO_hO,Xpfx=VEX,Epfx=F3,Mod=3
DisTab 0F11,VMOVSS,jO_hO,Xpfx=VEX,Epfx=F3,Mod=0
DisTab 0F10,VMOVSS,hO_vO_jO,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F10,VMOVSS,hO_jO@DATAd@T32,Xpfx=EVEX,Epfx=F3,Mod=0,W=0
DisTab 0F11,VMOVSS,jO_vO_hO,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F11,VMOVSS,jO_hO@DATAd@T32,Xpfx=EVEX,Epfx=F3,Mod=0,W=0
DisTab 0FBE,MOVSX,hR_jRb@movx
DisTab 0FBF,MOVSX,hR_jRw@movx
DisTab 63,MOVSXD,hRq_jR@DATAd,Mode=64
DisTab 0F10, MOVUPD,hO_jO,Epfx=66
DisTab 0F11, MOVUPD,jO_hO,Epfx=66
DisTab 0F10,VMOVUPD,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F11,VMOVUPD,jO_hO,Xpfx=VEX,Epfx=66
DisTab 0F10,VMOVUPD,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F11,VMOVUPD,jO_hO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F10, MOVUPS,hO_jO,Epfx=NP
DisTab 0F11, MOVUPS,jO_hO,Epfx=NP
DisTab 0F10,VMOVUPS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F11,VMOVUPS,jO_hO,Xpfx=VEX,Epfx=NP
DisTab 0F10,VMOVUPS,hO_jO@FVM,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F11,VMOVUPS,jO_hO@FVM,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0FB6,MOVZX,hR_jRb@movx
DisTab 0FB7,MOVZX,hR_jRw@movx
DisTab 0F3A42,MPSADBW,hO_jO_ib,Epfx=66
DisTab 0F3A42,VMPSADBW,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab F6,MUL,jRMb@DATAb,RegOp=4
DisTab F7,MUL,jRMe@DATAa,RegOp=4,W=0
DisTab F7,MUL,jRq@DATAq,RegOp=4,W=1
DisTab 0F59, MULPD,hO_jO,Epfx=66
DisTab 0F59,VMULPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F59,VMULPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F59, MULPS,hO_jO,Epfx=NP
DisTab 0F59,VMULPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F59,VMULPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F59, MULSD,hX_jX@DATAq@noREP,Epfx=F2
DisTab 0F59,VMULSD,hX_vX_jX@DATAq,Xpfx=VEX,Epfx=F2
DisTab 0F59,VMULSD,hX_vX_jX@DATAq@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F59, MULSS,hX_jX@DATAd@noREP,Epfx=F3
DisTab 0F59,VMULSS,hX_vX_jX@DATAd,Xpfx=VEX,Epfx=F3
DisTab 0F59,VMULSS,hX_vX_jX@DATAd@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F38F6,MULX,hR_vR_jR,Xpfx=VEX,Epfx=F2
DisTab 0F01,MWAIT,@1,Mod=3,RegOp=1,RM=1
DisTab F6,NEG,jRb@DATAb,RegOp=3
DisTab F7,NEG,jRMe@DATAa,RegOp=3,W=0
DisTab F7,NEG,jR@DATAq,RegOp=3,W=1
DisTab 90,NOP,@,Epfx=NP
DisTab 0F1F,NOP,jR,Epfx=NP,RegOp=0
DisTab F6,NOT,jRb@DATAb,RegOp=2
DisTab F7,NOT,jRMe@DATAa,RegOp=2,W=0
DisTab F7,NOT,jR@DATAq,RegOp=2,W=1
DisTab 0C,OR,AL_ib@CODEs
DisTab 0D,OR,aAX_ie@CODEs
DisTab 80,OR,jRb_i8@DATAb@CODEl,RegOp=1
DisTab 81,OR,jR_ie@DATAa@CODEl,RegOp=1
DisTab 83,OR,jR_ibse@DATAa@CODEl,RegOp=1
DisTab 08,OR,jRb_hRb
DisTab 09,OR,jR_hR
DisTab 0A,OR,hRb_jRb
DisTab 0B,OR,hR_jR
DisTab 0F56, ORPD,hO_jO,Epfx=66
DisTab 0F56,VORPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F56,VORPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F56, ORPS,hO_jO,Epfx=NP
DisTab 0F56,VORPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F56,VORPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab E6,OUT,ib_AL
DisTab E7,OUT,ib_eAX
DisTab EE,OUT,DX_AL
DisTab EF,OUT,DX_eAX
DisTab 6E,OUTS,DX_Pb
DisTab 6F,OUTS,DX_Pe
DisTab 0F381C,PABSB,hU_jU,Epfx=NP
DisTab 0F381C,PABSB,hO_jO,Epfx=66
DisTab 0F381D,PABSW,hU_jU,Epfx=NP
DisTab 0F381D,PABSW,hO_jO,Epfx=66
DisTab 0F381E,PABSD,hO_jO,Epfx=66
DisTab 0F381E,PABSD,hU_jU,Epfx=NP
DisTab 0F381E,PABSD,hO_jO,Epfx=66
DisTab 0F381C,VPABSB,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F381D,VPABSW,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F381E,VPABSD,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F381C,VPABSB,hO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F381D,VPABSW,hO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F381E,VPABSD,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F381F,VPABSQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F63,PACKSSWB,hU_jU,Epfx=NP
DisTab 0F63,PACKSSWB,hO_jO,Epfx=66
DisTab 0F6B,PACKSSDW,hU_jU,Epfx=NP
DisTab 0F6B,PACKSSDW,hO_jO,Epfx=66
DisTab 0F63,VPACKSSWB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F6B,VPACKSSDW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F63,VPACKSSWB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F6B,VPACKSSDW,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F382B, PACKUSDW,hO_jO,Epfx=66
DisTab 0F382B,VPACKUSDW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F382B,VPACKUSDW,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F67,PACKUSWB,hU_jU,Epfx=NP
DisTab 0F67,PACKUSWB,hO_jO,Epfx=66
DisTab 0F67,VPACKUSWB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F67,VPACKUSWB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FFC,PADDB,hU_jU,Epfx=NP
DisTab 0FFD,PADDW,hU_jU,Epfx=NP
DisTab 0FFE,PADDD,hU_jU,Epfx=NP
DisTab 0FD4,PADDQ,hU_jU,Epfx=NP
DisTab 0FFC,PADDB,hO_jO,Epfx=66
DisTab 0FFD,PADDW,hO_jO,Epfx=66
DisTab 0FFE,PADDD,hO_jO,Epfx=66
DisTab 0FD4,PADDQ,hO_jO,Epfx=66
DisTab 0FFC,VPADDB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FFD,VPADDW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FFE,VPADDD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FD4,VPADDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FFC,VPADDB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FFD,VPADDW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FFE,VPADDD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FD4,VPADDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FEC,PADDSB,hU_jU,Epfx=NP
DisTab 0FEC,PADDSB,hO_jO,Epfx=66
DisTab 0FED,PADDSW,hU_jU,Epfx=NP
DisTab 0FED,PADDSW,hO_jO,Epfx=66
DisTab 0FEC,VPADDSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FED,VPADDSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FEC,VPADDSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FED,VPADDSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FDC,PADDUSB,hU_jU,Epfx=NP
DisTab 0FDC,PADDUSB,hO_jO,Epfx=66
DisTab 0FDD,PADDUSW,hU_jU,Epfx=NP
DisTab 0FDD,PADDUSW,hO_jO,Epfx=66
DisTab 0FDC,VPADDUSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDD,VPADDUSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDC,VPADDUSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FDD,VPADDUSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3A0F, PALIGNR,hU_jU_ib,Epfx=NP
DisTab 0F3A0F, PALIGNR,hO_jO_ib,Epfx=66
DisTab 0F3A0F,VPALIGNR,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A0F,VPALIGNR,hO_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FDB,PAND,hU_jU,Epfx=NP
DisTab 0FDB,PAND,hO_jO,Epfx=66
DisTab 0FDB,VPAND,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDB,VPANDD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FDB,VPANDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FDF,PANDN,hU_jU,Epfx=NP
DisTab 0FDF,PANDN,hO_jO,Epfx=66
DisTab 0FDF,VPANDN,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDF,VPANDND,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FDF,VPANDNQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 90,PAUSE,@,Epfx=F3
DisTab 0FE0,PAVGB,hU_jU,Epfx=NP
DisTab 0FE0,PAVGB,hO_jO,Epfx=66
DisTab 0FE3,PAVGW,hU_jU,Epfx=NP
DisTab 0FE3,PAVGW,hO_jO,Epfx=66
DisTab 0FE0,VPAVGB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE3,VPAVGW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE0,VPAVGB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FE3,VPAVGW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3810,PBLENDVB,hO_jO_XMM0,Epfx=66
DisTab 0F3810,VPBLENDVB,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A0E,PBLENDW,hO_jO_ib,Epfx=66
DisTab 0F3A0E,VPBLENDW,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F01,PBNDKB,@1,Epfx=NP,Mod=3,RegOp=0,RM=7
DisTab 0F3A44,PCLMULQDQ,hO_jO_ib,Epfx=66
DisTab 0F3A44,VPCLMULQDQ,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A44,VPCLMULQDQ,hO_vO_jO_ib,Xpfx=EVEX,Epfx=66
DisTab 0F74,PCMPEQB,hU_jU,Epfx=NP
DisTab 0F74,PCMPEQB,hO_jO,Epfx=66
DisTab 0F75,PCMPEQW,hU_jU,Epfx=NP
DisTab 0F75,PCMPEQW,hO_jO,Epfx=66
DisTab 0F76,PCMPEQD,hU_jU,Epfx=NP
DisTab 0F76,PCMPEQD,hO_jO,Epfx=66
DisTab 0F74,VPCMPEQB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F75,VPCMPEQW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F76,VPCMPEQD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F76,VPCMPEQD,hK_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F74,VPCMPEQB,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F75,VPCMPEQW,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3829,PCMPEQQ,hO_jO,Epfx=66
DisTab 0F3829,VPCMPEQQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3829,VPCMPEQQ,hK_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A61,PCMPESTRI,hO_jO_ib,Epfx=66
DisTab 0F3A61,VPCMPESTRI,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A60,PCMPESTRM,hO_jO_ib,Epfx=66
DisTab 0F3A60,VPCMPESTRM,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F64,PCMPGTB,hU_jU,Epfx=NP
DisTab 0F64,PCMPGTB,hO_jO,Epfx=66
DisTab 0F65,PCMPGTW,hU_jU,Epfx=NP
DisTab 0F65,PCMPGTW,hO_jO,Epfx=66
DisTab 0F66,PCMPGTD,hU_jU,Epfx=NP
DisTab 0F66,PCMPGTD,hO_jO,Epfx=66
DisTab 0F64,VPCMPGTB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F65,VPCMPGTW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F66,VPCMPGTD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F66,VPCMPGTD,hK_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F64,VPCMPGTB,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F65,VPCMPGTW,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3837,PCMPGTQ,hO_jO,Epfx=66
DisTab 0F3837,VPCMPGTQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3837,VPCMPGTQ,hK_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A63,PCMPISTRI,hO_jO_ib,Epfx=66
DisTab 0F3A63,VPCMPISTRI,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A62,PCMPISTRM,hO_jO_ib,Epfx=66
DisTab 0F3A62,VPCMPISTRM,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F01,PCONFIG,@1,Epfx=NP,Mod=3,RegOp=0,RM=5
DisTab 0F38F5,PDEP,hR_vR_jR,Xpfx=VEX,Epfx=F2 ;;;;;;;;;,Mod=3
DisTab 0F38F5,PEXT,hR_vR_jR,Xpfx=VEX,Epfx=F3 ;;;;;;;;;;;;;;;,Mod=3
DisTab 0F3A14,PEXTRB,jRd_hO_ib@DATAb,Epfx=66
DisTab 0F3A14,VPEXTRB,jRd_hO_ib@DATAb,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A14,VPEXTRB,jRd_hO_ib@DATAb@T8,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A16,PEXTRD,jRd_hO_ib@DATAd,Epfx=66,W=0
DisTab 0F3A16,VPEXTRD,jRd_hO_ib@DATAd,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A16,VPEXTRD,jRd_hO_ib@DATAd@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A16,PEXTRQ,jRq_hO_ib@DATAq,Epfx=66,W=1
DisTab 0F3A16,VPEXTRQ,jRq_hO_ib@DATAq,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A16,VPEXTRQ,jRq_hO_ib@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FC5,PEXTRW,hRd_jU_ib,Epfx=NP,Mod=3
DisTab 0FC5,PEXTRW,hRd_jO_ib,Epfx=66,Mod=3
DisTab 0F3A15,PEXTRW,jRd_hO_ib,Epfx=66,Mod=3
DisTab 0FC5,VPEXTRW,hRd_jO_ib,Xpfx=VEX,Epfx=66,Mod=3
DisTab 0F3A15,VPEXTRW,jRd_hO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0FC5,VPEXTRW,hRd_jO_ib@T16,Xpfx=EVEX,Epfx=66,Mod=3
DisTab 0F3A15,VPEXTRW,jRd_hO_ib@T16,Xpfx=EVEX,Epfx=66
DisTab 0F3803,PHADDSW,hU_jU,Epfx=NP
DisTab 0F3803,PHADDSW,hO_jO,Epfx=66
DisTab 0F3803,VPHADDSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3801,PHADDW,hU_jU,Epfx=NP
DisTab 0F3801,PHADDW,hO_jO,Epfx=66
DisTab 0F3802,PHADDD,hU_jU,Epfx=NP
DisTab 0F3802,PHADDD,hO_jO,Epfx=66
DisTab 0F3801,VPHADDW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3802,VPHADDD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3841,PHMINPOSUW,hO_jO,Epfx=66
DisTab 0F3841,VPHMINPOSUW,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3807,PHSUBSW,hU_jU,Epfx=NP
DisTab 0F3807,PHSUBSW,hO_jO,Epfx=66
DisTab 0F3807,VPHSUBSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3805,PHSUBW,hU_jU,Epfx=NP
DisTab 0F3805,PHSUBW,hO_jO,Epfx=66
DisTab 0F3806,PHSUBD,hU_jU,Epfx=NP
DisTab 0F3806,PHSUBD,hO_jO,Epfx=66
DisTab 0F3805,VPHSUBW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3806,VPHSUBD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3A20,PINSRB,hO_jRd_ib@DATAb,Epfx=66
DisTab 0F3A20,VPINSRB,hO_vO_jRd_ib@DATAb,Xpfx=VEX,Epfx=66
DisTab 0F3A20,VPINSRB,hO_vO_jRd_ib@DATAb@T8,Xpfx=EVEX,Epfx=66
DisTab 0FC4,PINSRW,hU_jRd_ib@DATAw,Epfx=NP
DisTab 0FC4,PINSRW,hO_jRd_ib@DATAw,Epfx=66
DisTab 0FC4,VPINSRW,hO_vO_jRd_ib@DATAw,Xpfx=VEX,Epfx=66,W=0
DisTab 0FC4,VPINSRW,hO_vO_jRd_ib@DATAw@T16,Xpfx=EVEX,Epfx=66
DisTab 0F3A22,PINSRD,hO_jRd_ib@DATAd,Epfx=66,W=0
DisTab 0F3A22,VPINSRD,hO_vO_jRd_ib@DATAd,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A22,VPINSRD,hO_vO_jRd_ib@DATAd@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A22,PINSRQ,hO_jRq_ib@DATAq,Epfx=66,W=1
DisTab 0F3A22,VPINSRQ,hO_vO_jRq_ib@DATAq,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A22,VPINSRQ,hO_vO_jRq_ib@DATAq@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3804,PMADDUBSW,hU_jU,Epfx=NP
DisTab 0F3804,PMADDUBSW,hO_jO,Epfx=66
DisTab 0F3804,VPMADDUBSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3804,VPMADDUBSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FF5,PMADDWD,hU_jU,Epfx=NP
DisTab 0FF5,PMADDWD,hO_jO,Epfx=66
DisTab 0FF5,VPMADDWD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FF5,VPMADDWD,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FEE,PMAXSW,hU_jU,Epfx=NP
DisTab 0F383C,PMAXSB,hO_jO,Epfx=66
DisTab 0FEE,PMAXSW,hO_jO,Epfx=66
DisTab 0F383D,PMAXSD,hX_jX,Epfx=66
DisTab 0F383C,VPMAXSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FEE,VPMAXSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383D,VPMAXSD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383C,VPMAXSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FEE,VPMAXSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F383D,VPMAXSD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F383D,VPMAXSD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FDE,PMAXUB,hU_jU,Epfx=NP
DisTab 0FDE,PMAXUB,hO_jO,Epfx=66
DisTab 0F383E,PMAXUW,hO_jO,Epfx=66
DisTab 0FDE,VPMAXUB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383E,VPMAXUW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDE,VPMAXUB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F383E,VPMAXUW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F383F,PMAXUD,hO_jO,Epfx=66
DisTab 0F383F,VPMAXUD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383F,VPMAXUD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F383F,VPMAXUQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FEA,PMINSW,hU_jU,Epfx=NP
DisTab 0F3838,PMINSB,hO_jO,Epfx=66
DisTab 0FEA,PMINSW,hO_jO,Epfx=66
DisTab 0F3838,VPMINSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FEA,VPMINSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3838,VPMINSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FEA,VPMINSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3839,PMINSD,hO_jO,Epfx=66
DisTab 0F3839,VPMINSD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3839,VPMINSD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3839,VPMINSQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FDA,PMINUB,hU_jU,Epfx=NP
DisTab 0FDA,PMINUB,hO_jO,Epfx=66
DisTab 0F383A,PMINUW,hO_jO,Epfx=66
DisTab 0FDA,VPMINUB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383A,VPMINUW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FDA,VPMINUB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F383A,VPMINUW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F383B,PMINUD,hO_jO,Epfx=66
DisTab 0F383B,VPMINUD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F383B,VPMINUD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F383B,VPMINUQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FD7,PMOVMSKB,hRd_jU,Epfx=NP,Mod=3
DisTab 0FD7,PMOVMSKB,hRd_jO,Epfx=NP,Epfx=66,Mod=3
DisTab 0FD7,VPMOVMSKB,hRd_jO,Xpfx=VEX,Epfx=66,Mod=3
DisTab 0F3820,PMOVSXBW,hX_jX,Epfx=66
DisTab 0F3821,PMOVSXBD,hX_jX,Epfx=66
DisTab 0F3822,PMOVSXBQ,hX_jX,Epfx=66
DisTab 0F3823,PMOVSXWD,hX_jX,Epfx=66
DisTab 0F3824,PMOVSXWQ,hX_jX,Epfx=66
DisTab 0F3825,PMOVSXDQ,hX_jX,Epfx=66
DisTab 0F3820,VPMOVSXBW,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3821,VPMOVSXBD,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3822,VPMOVSXBQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3823,VPMOVSXWD,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3824,VPMOVSXWQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3825,VPMOVSXDQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3820,VPMOVSXBW,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66
DisTab 0F3821,VPMOVSXBD,hO_jX@QVM,Xpfx=EVEX,Epfx=66
DisTab 0F3822,VPMOVSXBQ,hO_jX@OVM,Xpfx=EVEX,Epfx=66
DisTab 0F3823,VPMOVSXWD,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66
DisTab 0F3824,VPMOVSXWQ,hO_jX@QVM,Xpfx=EVEX,Epfx=66
DisTab 0F3825,VPMOVSXDQ,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3830,PMOVZXBW,hX_jX,Epfx=66
DisTab 0F3831,PMOVZXBD,hX_jX,Epfx=66
DisTab 0F3832,PMOVZXBQ,hX_jX,Epfx=66
DisTab 0F3833,PMOVZXWD,hX_jX,Epfx=66
DisTab 0F3834,PMOVZXWQ,hX_jX,Epfx=66
DisTab 0F3835,PMOVZXDQ,hX_jX,Epfx=66
DisTab 0F3830,VPMOVZXBW,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3831,VPMOVZXBD,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3832,VPMOVZXBQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3833,VPMOVZXWD,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3834,VPMOVZXWQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3835,VPMOVZXDQ,hO_jXXY,Xpfx=VEX,Epfx=66
DisTab 0F3830,VPMOVZXBW,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66
DisTab 0F3831,VPMOVZXBD,hO_jX@QVM,Xpfx=EVEX,Epfx=66
DisTab 0F3832,VPMOVZXBQ,hO_jX@OVM,Xpfx=EVEX,Epfx=66
DisTab 0F3833,VPMOVZXWD,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66
DisTab 0F3834,VPMOVZXWQ,hO_jX@QVM,Xpfx=EVEX,Epfx=66
DisTab 0F3835,VPMOVZXDQ,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3828,PMULDQ,hO_jO,Epfx=66
DisTab 0F3828,VPMULDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3828,VPMULDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F380B,PMULHRSW,hO_jO,Epfx=66
DisTab 0F380B,PMULHRSW,hU_jU,Epfx=NP
DisTab 0F380B,VPMULHRSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F380B,VPMULHRSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FE4,PMULHUW,hU_jU,Epfx=NP
DisTab 0FE4,PMULHUW,hO_jO,Epfx=66
DisTab 0FE4,VPMULHUW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE4,VPMULHUW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FE5,PMULHW,hU_jU,Epfx=NP
DisTab 0FE5,PMULHW,hO_jO,Epfx=66
DisTab 0FE5,PMULHW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE5,PMULHW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3840,PMULLD,hO_jO,Epfx=66
DisTab 0F3840,VPMULLD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3840,VPMULLD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3840,VPMULLQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FD5,PMULLW,hU_jU,Epfx=NP
DisTab 0FD5,PMULLW,hO_jO,Epfx=66
DisTab 0FD5,VPMULLW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FD5,VPMULLW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FF4,PMULUDQ,hU_jU,Epfx=NP
DisTab 0FF4,PMULUDQ,hO_jO,Epfx=66
DisTab 0FF4,VPMULUDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FF4,VPMULUDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 58,POP,GPRfromOpc
DisTab 59,POP,GPRfromOpc
DisTab 5A,POP,GPRfromOpc
DisTab 5B,POP,GPRfromOpc
DisTab 5C,POP,GPRfromOpc
DisTab 5D,POP,GPRfromOpc
DisTab 5E,POP,GPRfromOpc
DisTab 5F,POP,GPRfromOpc
DisTab 1F,POP,@pushpopDS,Mode=Lg
DisTab 07,POP,@pushpopES,Mode=Lg
DisTab 17,POP,@pushpopSS,Mode=Lg
DisTab 0FA1,POP,@pushpopFS
DisTab 0FA9,POP,@pushpopGS
DisTab 61,POPA,@pushapopa,Mode=Lg
DisTab 61,,invalid,Mode=64
DisTab 0FB8,POPCNT,hR_jR,Epfx=F3
DisTab 9D,POPF,@pushapopa
DisTab 0FEB,POR,hU_jU,Epfx=NP
DisTab 0FEB,POR,hO_jO,Epfx=66
DisTab 0FEB,VPOR,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FEB,VPORD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FEB,VPORQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F18,PREFETCHT0,jR,Mod=0,RegOp=1
DisTab 0F18,PREFETCHT1,jR,Mod=0,RegOp=2
DisTab 0F18,PREFETCHT2,jR,Mod=0,RegOp=3
DisTab 0F18,PREFETCHNTA,jR,Mod=0,RegOp=0
DisTab 0F18,PREFETCHIT0,jR,Mod=0,RegOp=7
DisTab 0F18,PREFETCHIT1,jR,Mod=0,RegOp=6
DisTab 0F0D,PREFETCHW,jR,Mod=0,RegOp=1
DisTab 0FF6,PSADBW,hU_jU,Epfx=NP
DisTab 0FF6,PSADBW,hO_jO,Epfx=66
DisTab 0FF6,VPSADBW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FF6,VPSADBW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3800,PSHUFB,hU_jU,Epfx=NP
DisTab 0F3800,PSHUFB,hO_jO,Epfx=66
DisTab 0F3800,VPSHUFB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3800,VPSHUFB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F70,PSHUFD,hO_jO_ib,Epfx=66
DisTab 0F70,VPSHUFD,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F70,VPSHUFD,hO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F70,PSHUFHW,hO_jO_ib,Epfx=F3
DisTab 0F70,VPSHUFHW,hO_jO_ib,Xpfx=VEX,Epfx=F3
DisTab 0F70,VPSHUFHW,hO_jO_ib@FVM,Xpfx=EVEX,Epfx=F3
DisTab 0F70,PSHUFLW,hO_jO_ib,Epfx=F2
DisTab 0F70,VPSHUFLW,hO_jO_ib,Xpfx=VEX,Epfx=F2
DisTab 0F70,VPSHUFLW,hO_jO_ib@FVM,Xpfx=EVEX,Epfx=F2
DisTab 0F70,PSHUFW,hU_jU_ib,Epfx=NP
DisTab 0F3808,PSIGNB,hU_jU,Epfx=NP
DisTab 0F3808,PSIGNB,hO_jO,Epfx=66
DisTab 0F3809,PSIGNW,hU_jU,Epfx=NP
DisTab 0F3809,PSIGNW,hO_jO,Epfx=66
DisTab 0F380A,PSIGND,hU_jU,Epfx=NP
DisTab 0F380A,PSIGND,hO_jO,Epfx=66
DisTab 0F3808,VPSIGNB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F3809,VPSIGNW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F380A,VPSIGND,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F73,PSLLDQ,jO_ib,Epfx=66,Mod=3,RegOp=7
DisTab 0F73,VPSLLDQ,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=7
DisTab 0F73,VPSLLDQ,vO_jO_ib,Xpfx=EVEX,Epfx=66,Mod=3,RegOp=7
DisTab 0FF1,PSLLW,hU_jU,Epfx=NP
DisTab 0FF1,PSLLW,hO_jO,Epfx=66
DisTab 0F71,PSLLW,jU_ib,Epfx=NP,Mod=3,RegOp=6
DisTab 0F71,PSLLW,jO_ib,Epfx=66,Mod=3,RegOp=6
DisTab 0FF2,PSLLD,hU_jU,Epfx=NP
DisTab 0FF2,PSLLD,hO_jO,Epfx=66
DisTab 0F72,PSLLD,jU_ib,Epfx=NP,Mod=3,RegOp=6
DisTab 0F72,PSLLD,jO_ib,Epfx=66,Mod=3,RegOp=6
DisTab 0FF3,PSLLQ,hU_jU,Epfx=NP
DisTab 0FF3,PSLLQ,hO_jO,Epfx=66
DisTab 0F73,PSLLQ,jU_ib,Epfx=NP
DisTab 0F73,PSLLQ,jO_ib,Epfx=66,Mod=3,RegOp=6
DisTab 0FF1,VPSLLW,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F71,VPSLLW,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=6
DisTab 0FF2,VPSLLD,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F72,VPSLLD,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=6
DisTab 0FF3,VPSLLQ,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F73,VPSLLQ,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=6
DisTab 0FF1,VPSLLW,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66
DisTab 0F71,VPSLLW,vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,RegOp=6
DisTab 0F71,VPSLLW,vO_jO_ib@FVM,Xpfx=MVEX,Epfx=66,RegOp=6
DisTab 0FF2,VPSLLD,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F72,VPSLLD,vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,RegOp=6,W=0
DisTab 0FF3,VPSLLQ,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F73,VPSLLQ,vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,RegOp=6,W=1
DisTab 0FE1,PSRAW,hU_jU,Epfx=NP
DisTab 0FE1,PSRAW,hO_jO,Epfx=66
DisTab 0F71,PSRAW,jU_ib,Epfx=NP,Mod=3,RegOp=4
DisTab 0F71,PSRAW,jO_ib,Epfx=66,Mod=3,RegOp=4
DisTab 0FE2,PSRAD,hU_jU,Epfx=NP
DisTab 0FE2,PSRAD,hO_jO,Epfx=66
DisTab 0F72,PSRAD,jU_ib,Epfx=NP,Mod=3,RegOp=4
DisTab 0F72,PSRAD,jO_ib,Epfx=66,Mod=3,RegOp=4
DisTab 0FE1,VPSRAW,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F71,VPSRAW,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=4
DisTab 0FE2,VPSRAD,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F72,VPSRAD,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=4
DisTab 0FE1,VPSRAW,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66
DisTab 0F71,VPSRAW,vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,RegOp=4
DisTab 0FE2,VPSRAD,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F72,VPSRAD,vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,RegOp=4,W=0
DisTab 0FE2,VPSRAQ,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F72,VPSRAQ,vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,RegOp=4,W=1
DisTab 0F73,PSRLDQ,jO_ib,Epfx=66,Mod=3,RegOp=3
DisTab 0F73,VPSRLDQ,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=3
DisTab 0F73,VPSRLDQ,vO_jO_ib@FVM,Xpfx=EVEX,RegOp=3
DisTab 0FD1,PSRLW,hU_jU,Epfx=NP
DisTab 0FD1,PSRLW,hO_jO,Epfx=66
DisTab 0F71,PSRLW,jU_ib,Epfx=NP,Mod=3,RegOp=2
DisTab 0F71,PSRLW,jO_ib,Epfx=66,Mod=3,RegOp=2
DisTab 0FD2,PSRLD,hU_jU,Epfx=NP
DisTab 0FD2,PSRLD,hO_jO,Epfx=66
DisTab 0F72,PSRLD,jU_ib,Epfx=NP,Mod=3,RegOp=2
DisTab 0F72,PSRLD,jO_ib,Epfx=66,Mod=3,RegOp=2
DisTab 0FD3,PSRLQ,hU_jU,Epfx=NP
DisTab 0FD3,PSRLQ,hO_jO,Epfx=66
DisTab 0F73,PSRLQ,jU_ib,Epfx=NP,Mod=3,RegOp=2
DisTab 0F73,PSRLQ,jO_ib,Epfx=66,Mod=3,RegOp=2
DisTab 0FD1,VPSRLW,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F71,VPSRLW,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=2
DisTab 0FD2,VPSRLD,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F72,VPSRLD,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=2
DisTab 0FD3,VPSRLQ,hO_vO_jX,Xpfx=VEX,Epfx=66
DisTab 0F73,VPSRLQ,vO_jO_ib,Xpfx=VEX,Epfx=66,Mod=3,RegOp=2
DisTab 0FD1,VPSRLW,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66
DisTab 0F71,VPSRLW,vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,RegOp=2
DisTab 0FD2,VPSRLD,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F72,VPSRLD,vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,RegOp=2,W=0
DisTab 0F72,VPSRLD,vO_jO_ib@FV32,Xpfx=MVEX,Epfx=66,RegOp=2,W=0
DisTab 0FD3,VPSRLQ,hO_vO_jX@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F73,VPSRLQ,vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,RegOp=2,W=1
DisTab 0FF8,PSUBB,hU_jU,Epfx=NP
DisTab 0FF8,PSUBB,hO_jO,Epfx=66
DisTab 0FF9,PSUBW,hU_jU,Epfx=NP
DisTab 0FF9,PSUBW,hO_jO,Epfx=66
DisTab 0FFA,PSUBD,hU_jU,Epfx=NP
DisTab 0FFA,PSUBD,hO_jO,Epfx=66
DisTab 0FF8,VPSUBB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FF9,VPSUBW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FFA,VPSUBD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FF8,VPSUBB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FF9,VPSUBW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FFA,VPSUBD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FFB,PSUBQ,hU_jU,Epfx=NP
DisTab 0FFB,PSUBQ,hO_jO,Epfx=66
DisTab 0FFB,VPSUBQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FFB,VPSUBQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FE8,PSUBSB,hU_jU,Epfx=NP
DisTab 0FE8,PSUBSB,hO_jO,Epfx=66
DisTab 0FE9,PSUBSW,hU_jU,Epfx=NP
DisTab 0FE9,PSUBSW,hO_jO,Epfx=66
DisTab 0FE8,VPSUBSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE9,VPSUBSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FE8,VPSUBSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FE9,VPSUBSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FD8,PSUBUSB,hU_jU,Epfx=NP
DisTab 0FD8,PSUBUSB,hO_jO,Epfx=66
DisTab 0FD9,PSUBUSW,hU_jU,Epfx=NP
DisTab 0FD9,PSUBUSW,hO_jO,Epfx=66
DisTab 0FD8,VPSUBUSB,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FD9,VPSUBUSW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FD8,VPSUBUSB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0FD9,VPSUBUSW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F3817,PTEST,hO_jO,Epfx=66
DisTab 0F3817,VPTEST,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0FAE,PTWRITE,jM@DATAd,Epfx=F3,RegOp=4,W=0
DisTab 0FAE,PTWRITE,jM@DATAq,Epfx=F3,RegOp=4,W=1
DisTab 0F68,PUNPCKHBW,hU_jU,Epfx=NP
DisTab 0F68,PUNPCKHBW,hO_jO,Epfx=66
DisTab 0F69,PUNPCKHWD,hU_jU,Epfx=NP
DisTab 0F69,PUNPCKHWD,hO_jO,Epfx=66
DisTab 0F6A,PUNPCKHDQ,hU_jU,Epfx=NP
DisTab 0F6A,PUNPCKHDQ,hO_jO,Epfx=66
DisTab 0F6D,PUNPCKHQDQ,hO_jO,Epfx=66
DisTab 0F68,VPUNPCKHBW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F69,VPUNPCKHWD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F6A,VPUNPCKHDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F6D,VPUNPCKHQDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F68,VPUNPCKHBW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F69,VPUNPCKHWD,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F6A,VPUNPCKHDQ,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F6D,VPUNPCKHQDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F60,PUNPCKLBW,hU_jU,Epfx=NP
DisTab 0F60,PUNPCKLBW,hO_jO,Epfx=66
DisTab 0F61,PUNPCKLWD,hU_jU,Epfx=NP
DisTab 0F61,PUNPCKLWD,hO_jO,Epfx=66
DisTab 0F62,PUNPCKLDQ,hU_jU,Epfx=NP
DisTab 0F62,PUNPCKLDQ,hO_jO,Epfx=66
DisTab 0F6C,PUNPCKLQDQ,hO_jO,Epfx=66
DisTab 0F60,VPUNPCKLBW,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F61,VPUNPCKLWD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F62,VPUNPCKLDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F6C,VPUNPCKLQDQ,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F60,VPUNPCKLBW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F61,VPUNPCKLWD,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66
DisTab 0F62,VPUNPCKLDQ,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F6C,VPUNPCKLQDQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab FF,PUSH,jR@DATAaq,RegOp=6
DisTab 50,PUSH,GPRfromOpc
DisTab 51,PUSH,GPRfromOpc
DisTab 52,PUSH,GPRfromOpc
DisTab 53,PUSH,GPRfromOpc
DisTab 54,PUSH,GPRfromOpc
DisTab 55,PUSH,GPRfromOpc
DisTab 56,PUSH,GPRfromOpc
DisTab 57,PUSH,GPRfromOpc
DisTab 6A,PUSH,ib@DATAw
DisTab 68,PUSH,ie@DATAa
DisTab 0E,PUSH,@pushpopCS,Mode=Lg
DisTab 16,PUSH,@pushpopSS,Mode=Lg
DisTab 1E,PUSH,@pushpopDS,Mode=Lg
DisTab 06,PUSH,@pushpopES,Mode=Lg
DisTab 0FA0,PUSH,@pushpopFS
DisTab 0FA8,PUSH,@pushpopGS
DisTab 60,PUSHA,@pushapopa,Mode=Lg
DisTab 9C,PUSHF,@pushapopa
DisTab 0FEF,PXOR,hU_jU,Epfx=NP
DisTab 0FEF,PXOR,hO_jO,Epfx=66
DisTab 0FEF,VPXOR,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0FEF,VPXORD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FEF,VPXORQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab D0,RCL,jRMb_1,RegOp=2
DisTab D2,RCL,jRMb_CL,RegOp=2
DisTab C0,RCL,jRMb_ib,RegOp=2
DisTab D1,RCL,jRMe_1,RegOp=2
DisTab D3,RCL,jRMe_CL,RegOp=2
DisTab C1,RCL,jRMe_ib,RegOp=2
DisTab D0,RCR,jRMb_1,RegOp=3
DisTab D2,RCR,jRMb_CL,RegOp=3
DisTab C0,RCR,jRMb_ib,RegOp=3
DisTab D1,RCR,jRMe_1,RegOp=3
DisTab D3,RCR,jRMe_CL,RegOp=3
DisTab C1,RCR,jRMe_ib,RegOp=3
DisTab D0,ROL,jRMb_1,RegOp=0
DisTab D2,ROL,jRMb_CL,RegOp=0
DisTab C0,ROL,jRMb_ib,RegOp=0
DisTab D1,ROL,jRMe_1,RegOp=0
DisTab D3,ROL,jRMe_CL,RegOp=0
DisTab C1,ROL,jRMe_ib,RegOp=0
DisTab D0,ROR,jRMb_1,RegOp=1
DisTab D2,ROR,jRMb_CL,RegOp=1
DisTab C0,ROR,jRMb_ib,RegOp=1
DisTab D1,ROR,jRMe_1,RegOp=1
DisTab D3,ROR,jRMe_CL,RegOp=1
DisTab C1,ROR,jRMe_ib,RegOp=1
DisTab 0F53,RCPPS,hO_jO,Epfx=NP
DisTab 0F53,VRCPPS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F53,RCPSS,hO_jO,Epfx=F3
DisTab 0F53,VRCPSS,hO_vO_jO,Xpfx=VEX,Epfx=F3
DisTab 0FAE,RDFSBASE,jR,Epfx=F3,Mode=64,Mod=3,RegOp=0
DisTab 0FAE,RDGSBASE,jR,Epfx=F3,Mode=64,Mod=3,RegOp=1
DisTab 0F32,RDMSR,@,Epfx=NP
DisTab 0F01,RDMSRLIST,@1,Epfx=F2,Mod=3,RegOp=0,RM=6
DisTab 0FC7,RDPID,jR@prom64,Epfx=F3,Mod=3,RegOp=7
DisTab 0F01,RDPKRU,@1,Epfx=NP,Mod=3,RegOp=5,RM=6
DisTab 0F33,RDPMC,@,Epfx=NP
DisTab 0FC7,RDRAND,jR,Epfx=NP,Mod=3,RegOp=6
DisTab 0FC7,RDSEED,jR,Mod=3,RegOp=7
DisTab 0F1E,RDSSPD,jR,Epfx=NP,Mod=3,RegOp=1,W=0
DisTab 0F1E,RDSSPQ,jR,Epfx=NP,Mod=3,RegOp=1,W=1
DisTab 0F31,RDTSC,@,Epfx=NP
DisTab 0F01,RDTSCP,@1,Epfx=NP,Mod=3,RegOp=7,RM=1
DisTab C3,RET,@retn
DisTab CB,RET,@retf
DisTab C2,RET,iw@retn
DisTab CA,RET,iw@retf
DisTab 0F3AF0,RORX,hRd_jR_ib@DATAd,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F3AF0,RORX,hRq_jR_ib@DATAq,Xpfx=VEX,Epfx=F2,W=1
DisTab 0F3A09,ROUNDPD,hO_jO_ib,Epfx=66
DisTab 0F3A09,VROUNDPD,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A08,ROUNDPS,hO_jO_ib,Epfx=66
DisTab 0F3A08,VROUNDPS,hO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A0B,ROUNDSD,hO_jO_ib,Epfx=66
DisTab 0F3A0B,VROUNDSD,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0F3A0A,ROUNDSS,hO_jO_ib,Epfx=66
DisTab 0F3A0A,VROUNDSS,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0FAA,RSM,@
DisTab 0F52,RSQRTPS,hO_jO,Epfx=NP
DisTab 0F52,VRSQRTPS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F52,RSQRTSS,hO_jO,Epfx=F3
DisTab 0F52,VRSQRTSS,hO_vO_jO,Xpfx=VEX,Epfx=F3
DisTab 0F01,RSTORSSP,jM,Epfx=F3,Mod=0,RegOp=5
DisTab 9E,SAHF,@
DisTab D0,SAL,jRMb_1,RegOp=6
DisTab D2,SAL,jRMb_CL,RegOp=6
DisTab C0,SAL,jRMb_ib,RegOp=6
DisTab D1,SAL,jRMe_1,RegOp=6
DisTab D3,SAL,jRMe_CL,RegOp=6
DisTab C1,SAL,jRMe_ib,RegOp=6
DisTab D0,SAR,jRMb_1,RegOp=7
DisTab D2,SAR,jRMb_CL,RegOp=7
DisTab C0,SAR,jRMb_ib,RegOp=7
DisTab D1,SAR,jRMe_1,RegOp=7
DisTab D3,SAR,jRMe_CL,RegOp=7
DisTab C1,SAR,jRMe_ib,RegOp=7
DisTab D0,SHL,jRMb_1,RegOp=4
DisTab D2,SHL,jRMb_CL,RegOp=4
DisTab C0,SHL,jRMb_ib,RegOp=4
DisTab D1,SHL,jRMe_1,RegOp=4
DisTab D3,SHL,jRMe_CL,RegOp=4
DisTab C1,SHL,jRMe_ib,RegOp=4
DisTab D0,SHR,jRMb_1,RegOp=5
DisTab D2,SHR,jRMb_CL,RegOp=5
DisTab C0,SHR,jRMb_ib,RegOp=5
DisTab D1,SHR,jRMe_1,RegOp=5
DisTab D3,SHR,jRMe_CL,RegOp=5
DisTab C1,SHR,jRMe_ib,RegOp=5
DisTab 0F38F7,SARX,hRd_jR_vR@DATAd,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F38F7,SHLX,hRd_jR_vR@DATAd,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38F7,SHRX,hRd_jR_vR@DATAd,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F38F7,SARX,hRq_jR_vR@DATAq,Xpfx=VEX,Epfx=F3,W=1
DisTab 0F38F7,SHLX,hRq_jR_vR@DATAq,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38F7,SHRX,hRq_jR_vR@DATAq,Xpfx=VEX,Epfx=F2,W=1
DisTab 0F01,SAVEPREVSSP,@1,Epfx=F3,Mod=3,RegOp=5,RM=2
DisTab 1C,SBB,AL_ib@CODEs
DisTab 1D,SBB,aAX_ie@CODEs
DisTab 80,SBB,jRb_i8@DATAb@CODEl,RegOp=3
DisTab 81,SBB,jR_ie@DATAa@CODEl,RegOp=3
DisTab 83,SBB,jR_ibse@DATAa@CODEl,RegOp=3
DisTab 18,SBB,jRb_hRb
DisTab 19,SBB,jR_hR
DisTab 1A,SBB,hRb_jRb
DisTab 1B,SBB,hR_jR
DisTab AE,SCAS,AL_Tb
DisTab AF,SCAS,eAX_Te
DisTab 0FC7,SENDUIPI,jRq,Epfx=F3,Mode=64,Mod=3,RegOp=6
DisTab 0F01,SERIALIZE,@1,Epfx=NP,Mod=3,RegOp=5,RM=0
DisTab 0F90,SETO,jRMb,RegOp=0
DisTab 0F91,SETNO,jRMb,RegOp=0
DisTab 0F92,SETC,jRMb,RegOp=0
DisTab 0F93,SETNC,jRMb,RegOp=0
DisTab 0F94,SETZ,jRMb,RegOp=0
DisTab 0F95,SETNZ,jRMb,RegOp=0
DisTab 0F96,SETNA,jRMb,RegOp=0
DisTab 0F97,SETA,jRMb,RegOp=0
DisTab 0F98,SETS,jRMb,RegOp=0
DisTab 0F99,SETNS,jRMb,RegOp=0
DisTab 0F9A,SETPE,jRMb,RegOp=0
DisTab 0F9B,SETPO,jRMb,RegOp=0
DisTab 0F9C,SETL,jRMb,RegOp=0
DisTab 0F9D,SETGE,jRMb,RegOp=0
DisTab 0F9E,SETLE,jRMb,RegOp=0
DisTab 0F9F,SETG,jRMb,RegOp=0
DisTab 0F01,SETSSBSY,@1,Epfx=F3,Mod=3,RegOp=5,RM=0
DisTab 0FAE,SFENCE,@1,Epfx=NP,Mod=3,RegOp=7,RM=0
DisTab 0F38C9,SHA1MSG1,hO_jO,Epfx=NP
DisTab 0F38CA,SHA1MSG2,hO_jO,Epfx=NP
DisTab 0F38C8,SHA1NEXTE,hO_jO,Epfx=NP
DisTab 0F3ACC,SHA1RNDS4,hO_jO_ib,Epfx=NP
DisTab 0F38CC,SHA256MSG1,hO_jO,Epfx=NP
DisTab 0F38CD,SHA256MSG2,hO_jO,Epfx=NP
DisTab 0F38CB,SHA256RNDS2,hO_jO_XMM0,Epfx=NP
DisTab 0FA4,SHLD,jR_hR_ib
DisTab 0FA5,SHLD,jR_hR_CL
DisTab 0FAC,SHRD,jR_hR_ib
DisTab 0FAD,SHRD,jR_hR_CL
DisTab 0FC6,SHUFPD,hO_jO_ib,Epfx=66
DisTab 0FC6,VSHUFPD,hO_vO_jO_ib,Xpfx=VEX,Epfx=66
DisTab 0FC6,VSHUFPD,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0FC6,SHUFPS,hO_jO_ib,Epfx=NP
DisTab 0FC6,VSHUFPS,hO_vO_jO_ib,Xpfx=VEX,Epfx=NP
DisTab 0FC6,VSHUFPS,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F01,SGDT,jM,Mod=0,Epfx=NP,RegOp=0
DisTab 0F01,SIDT,jR,Epfx=NP,Mod=0,RegOp=1
DisTab 0F00,SLDT,jR,RegOp=0
DisTab 0F01,SMSW,jR,RegOp=4
DisTab 0F51,SQRTPD,hO_jO,Epfx=66
DisTab 0F51,VSQRTPD,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F51,VSQRTPD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F51,SQRTPS,hO_jO,Epfx=NP
DisTab 0F51,VSQRTPS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F51,VSQRTPS,hO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F51,SQRTSD,hX_jX,Epfx=F2
DisTab 0F51,VSQRTSD,hX_vX_jX,Xpfx=VEX,Epfx=F2
DisTab 0F51,VSQRTSD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F51,SQRTSS,hX_jX,Epfx=F3
DisTab 0F51,VSQRTSS,hX_vX_jX,Xpfx=VEX,Epfx=F3
DisTab 0F51,VSQRTSS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F01,STAC,@1,Epfx=NP,Mod=3,RegOp=1,RM=3
DisTab F9,STC,@
DisTab FD,STD,@
DisTab FB,STI,@
DisTab 0FAE,STMXCSR,jM@DATAd,,Epfx=NP,Mod=0,RegOp=3
DisTab 0FAE,VSTMXCSR,jM@DATAd,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=3
DisTab AA,STOS,Tb_AL
DisTab AB,STOS,Te_eAX
DisTab 0F00,STR,jR,RegOp=1 ; PROT
DisTab 0F3849,STTILECFG,jM@DATAz,Xpfx=VEX,Epfx=66,Mod=0,RegOp=0
DisTab 0F01,STUI,@1,Epfx=F3,Mod=3,RegOp=5,RM=7
DisTab 2C,SUB,AL_ib@CODEs
DisTab 2D,SUB,aAX_ie@CODEs
DisTab 80,SUB,jRb_i8@DATAb@CODEl,RegOp=5
DisTab 81,SUB,jR_ie@DATAa@CODEl,RegOp=5
DisTab 83,SUB,jR_ibse@DATAa@CODEl,RegOp=5
DisTab 28,SUB,jRb_hRb
DisTab 29,SUB,jR_hR
DisTab 2A,SUB,hRb_jRb
DisTab 2B,SUB,hR_jR
DisTab 0F5C,SUBPD,hO_jO,Epfx=66
DisTab 0F5C,VSUBPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F5C,VSUBPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F5C,SUBPS,hO_jO,Epfx=NP
DisTab 0F5C,VSUBPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F5C,VSUBPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F5C,SUBSD,hX_jX,Epfx=F2
DisTab 0F5C,VSUBSD,hX_vX_jX,Xpfx=VEX,Epfx=F2
DisTab 0F5C,VSUBSD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F5C,SUBSS,hX_jX,Epfx=F3
DisTab 0F5C,VSUBSS,hX_vX_jX,Xpfx=VEX,Epfx=F3
DisTab 0F5C,VSUBSS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F5C,VSUBPS,hO_vO_jO@T32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F01,SWAPGS,@1,Epfx=NP,Mode=64,Mod=3,RegOp=7,RM=0 ; PRIV
DisTab 0F05,SYSCALL,@
DisTab 0F34,SYSENTER,@
DisTab 0F35,SYSEXIT,@
DisTab 0F07,SYSRET,@
DisTab 0F386C,TCMMIMFP16PS,hO_jO_vO,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F386C,TCMMRLFP16PS,hO_jO_vO,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F385C,TDPBF16PS,hO_jO_vO,Xpfx=VEX,Epfx=F3,Mod=3,W=0
DisTab 0F385E,TDPBSSD,hO_jO_vO,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F385E,TDPBSUD,hO_jO_vO,Xpfx=VEX,Epfx=F3,Mod=3,W=0
DisTab 0F385E,TDPBUSD,hO_jO_vO,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F385E,TXPBUUD,hO_jO_vO,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F385C,TXPFP16PS,hO_jO_vO,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab A8,TEST,AL_ib@CODEs
DisTab A9,TEST,aAX_ie@CODEs
DisTab F6,TEST,jRb_i8@DATAb@CODEl,RegOp=0
DisTab F6,TEST2,jRb_i8@DATAb@CODEl,RegOp=1
;;DisTab F7,TEST,jRe_ie,RegOp=0
DisTab F7,TEST,jRe_ie@DATAa@CODEl,RegOp=0,W=0
DisTab F7,TEST,jRq_ie@DATAq@CODEl,RegOp=0,W=1
DisTab F7,TEST2,jRe_ie@DATAa@CODEl,RegOp=1,W=0
DisTab F7,TEST2,jRq_ie@DATAq@CODEl,RegOp=1,W=1
DisTab 84,TEST,jRb_hRb
DisTab 85,TEST,jR_hR
DisTab 0F01,TESTUI,@1,Epfx=F3,Mod=3,RegOp=5,RM=5
DisTab 0F384B,TILELOADD,hO_jO,Xpfx=VEX,Epfx=F2,Mode=64,Mod=0,RM=4,W=0
DisTab 0F384B,TILELOADDT1,hO_jO,Xpfx=VEX,Epfx=66,Mode=64,Mod=0,RM=4,W=0
DisTab 0F3849,TILERELEASE,@,Xpfx=VEX,Epfx=NP,Mode=64,Mod=3,RegOp=0,RM=0,W=0
DisTab 0F384B,TILESTORED,jO_hO,Xpfx=VEX,Epfx=F3,Mode=64,Mod=0,RM=4,W=0
DisTab 0F3849,TILEZERO,hO,Xpfx=VEX,Epfx=F2,Mode=64,Mod=3,RM=0,W=0
DisTab 0FAE,TPAUSE,jRd,Epfx=66,Mod=3,RegOp=6
DisTab 0F2E,UCOMISD,hO_jO,Epfx=66
DisTab 0F2E,VUCOMISD,hO_jO,Xpfx=VEX,Epfx=66
DisTab 0F2E,VUCOMISD,hO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F2E,UCOMISS,hO_jO,Epfx=NP
DisTab 0F2E,VUCOMISS,hO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F2E,VUCOMISS,hO_jO@T32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0FFF,UD0,hRd_jR
DisTab 0FB9,UD1,hRd_jR
DisTab 0F0B,UD2,@
DisTab D6,UDB,@,Mode=64
DisTab D6,SETALC,@ ; alias SALC
DisTab 0F01,UIRET,@1,Epfx=F3,Mode=64,Mod=3,RegOp=5,RM=4
DisTab 0FAE,UMONITOR,jR,Epfx=F3,Mod=3,RegOp=6
DisTab 0FAE,UMWAIT,jRd,Epfx=F2,Mod=3,RegOp=6
DisTab 0F15,UNPCKHPD,hO_jO,Epfx=66
DisTab 0F15,VUNPCKHPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F15,VUNPCKHPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F15,UNPCKHPS,hO_jO,Epfx=NP
DisTab 0F15,VUNPCKHPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F15,VUNPCKHPS,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F14,UNPCKLPD,hO_jO,Epfx=66
DisTab 0F14,VUNPCKLPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F14,VUNPCKLPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F14,UNPCKLPS,hO_jO,Epfx=NP
DisTab 0F14,VUNPCKLPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F14,VUNPCKLPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F0A,CL1INVMB,@
; Instructions in the order found in [IntelAVX512]
DisTab 58,VADDPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 58,VADDSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 0F3A03,VALIGND,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A03,VALIGNQ,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B1,VBCSTNEBF162PS,hO_jO@DATAw,Xpfx=VEX,Epfx=F3,Mod=0,W=0
DisTab 0F38B1,VBCSTNESH2PS,hO_jO@DATAw,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F3865,VBLENDMPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3865,VBLENDMPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3865,VBLENDMPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3865,VBLENDMPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3818,VBROADCASTSS, hO_jX@DATAd,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F3819,VBROADCASTSD, hO_jX@DATAq,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F381A,VBROADCASTF128, hO_jX@DATAo,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F3818,VBROADCASTSS, hO_jX@DATAd,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F3819,VBROADCASTSD, hO_jX@DATAq,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F3819,VBROADCASTSD, hO_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3819,VBROADCASTF32X2,hO_jX@T64,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3818,VBROADCASTSS, hO_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F381A,VBROADCASTF32X4,hO_jX@DATAx@T128,Xpfx=EVEX,Epfx=66,Mod=0,W=0
DisTab 0F381A,VBROADCASTF64X2,hO_jX@DATAx@T128,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F381B,VBROADCASTF32X8,hO_jX@DATAy@T256,Xpfx=EVEX,Epfx=66,Mod=0,W=0
DisTab 0F381B,VBROADCASTF64X4,hO_jX@DATAy@T256,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F3AC2,VCMPPH,hK_vO_jO_ib@FV16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3AC2,VCMPSH,hK_vO_jO_ib@T16,Xpfx=EVEX,Epfx=F3,W=0
DisTab 2F,VCOMISH,hO_jO@T16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 0F388A,VCOMPRESSPD,jO_hO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F388A,VCOMPRESSPS,jO_hO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 5B,VCVTDQ2PH,hO_jO@FV32,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 0F3872,VCVTNE2PS2BF16,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F38B0,VCVTNEEBF162PS,hO_jO,Xpfx=VEX,Epfx=F3,Mod=0,W=0
DisTab 0F38B0,VCVTNEEPH2PS,hO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F38F0,VCVTNEOBF162PS,hO_jO,Xpfx=VEX,Epfx=F2,Mod=0,W=0
DisTab 0F38B0,VCVTNEOPH2PS,hO_jO,,Xpfx=VEX,Epfx=NP,Mod=0,W=0
DisTab 0F3872,VCVTNEPS2BF16,hO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F3872,VCVTNEPS2BF16,hO_jO@FV32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 5A,VCVTPD2PH,hO_jO@FV64,Xpfx=EVEX5,Epfx=66,W=1
DisTab 0F7B,VCVTPD2QQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F79,VCVTPD2UDQ,hXY_jO@FV64,Xpfx=EVEX,Epfx=NP,W=1
DisTab 0F79,VCVTPD2UQQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 5B,VCVTPH2DQ,hO_jO@HV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 5A,VCVTPH2PD,hO_jO@QV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 0F3813,VCVTPH2PS,hO_jXXY,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3813,VCVTPH2PS,hO_jXXY@HVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 13,VCVTPH2PSX,hO_jXXY@HV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 7B,VCVTPH2QQ,hO_jO@QV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 79,VCVTPH2UDQ,hO_jO@HV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 79,VCVTPH2UQQ,hO_jO@QV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 7F,VCVTPH2UW,hO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 7D,VCVTPH2W,hO_jO@FV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 0F3A1D,VCVTPS2PH,jXXY_hO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A1D,VCVTPS2PH,jXXY_hO_ib@HVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 1D,VCVTPS2PHX,hO_jO@FV32,Xpfx=EVEX5,Epfx=66,W=0
DisTab 0F7B,VCVTPS2QQ,hO_jXXY@HV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F79,VCVTPS2UDQ,hO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F79,VCVTPS2UQQ,hO_jXXY@HV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0FE6,VCVTQQ2PD,hO_jO@FV64,Xpfx=EVEX,Epfx=F3,W=1
DisTab 5B,VCVTQQ2PH,hO_jO@FV64,Xpfx=EVEX5,Epfx=NP,W=1
DisTab 0F5B,VCVTQQ2PS,hXY_jO@FV64,Xpfx=EVEX,Epfx=NP,W=1
DisTab 5A,VCVTSD2SH,hO_vO_jO@T64,Xpfx=EVEX5,Epfx=F2,W=1
DisTab 0F79,VCVTSD2USI,hRd_jX@T64,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F79,VCVTSD2USI,hRq_jX@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 5A,VCVTSH2SD,hX_vX_jX@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 2D,VCVTSH2SI,hRd_jX@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 2D,VCVTSH2SI,hRq_jX@T16,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 13,VCVTSH2SS,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=NP,W=0
DisTab 79,VCVTSH2USI,hRd_jX@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 79,VCVTSH2USI,hRq_jX@T16,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 2A,VCVTSI2SH,hX_vX_jRd@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 2A,VCVTSI2SH,hX_vX_jRq@T16,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 1D,VCVTSS2SH,hX_vX_jX@T32,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 0F79,VCVTSS2USI,hRd_jX@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F79,VCVTSS2USI,hRq_jX@T32,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F7A,VCVTPD2QQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F78,VCVTPD2UDQ,hXY_jO@FV64,Xpfx=EVEX,Epfx=NP,W=1
DisTab 0F78,VCVTTPD2UQQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 5B,VCVTTPH2DQ,hO_jO@HV16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 7A,VCVTTPH2QQ,hO_jO@QV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 78,VCVTTPH2UDQ,hO_jO@HV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 78,VCVTTPH2UQQ,hO_jO@QV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 7C,VCVTTPH2UW,hO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 7C,VCVTTPH2W,hO_jO@FV16,Xpfx=EVEX5,Epfx=66,W=0
DisTab 0F7A,VCVTTPS2QQ,hO_jXXY@HV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F78,VCVTTPS2UDQ,hO_jO@HV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F78,VCVTTPS2UQQ,hO_jXXY@HV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F78,VCVTTSD2USI,hRd_jO@T64,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F78,VCVTTSD2USI,hRq_jO@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 2C,VCVTTSH2SI,hRd_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 2C,VCVTTSH2SI,hRq_jO@T16,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 78,VCVTTSH2USI,hRd_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 78,VCVTTSH2USI,hRq_jO@T16,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 0F78,VCVTTSS2USI,hRd_jO@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F78,VCVTTSS2USI,hRq_jO@T32,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F7A,VCVTUDQ2PD,hO_jXXY@HV32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 7A,VCVTUDQ2PH,hO_jO@FV32,Xpfx=EVEX5,Epfx=F2,W=0
DisTab 0F7A,VCVTUDQ2PS,hO_jO@FV32,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F7A,VCVTUQQ2PD,hO_jO@FV64,Xpfx=EVEX,Epfx=F3,W=1
DisTab 7A,VCVTUQQ2PH,hO_jO@FV64,Xpfx=EVEX5,Epfx=F2,W=1
DisTab 0F7A,VCVTUQQ2PS,hXY_jO@FV64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F7B,VCVTUSI2SD,hX_vX_jRd@DATAd@T32,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F7B,VCVTUSI2SD,hX_vX_jRq@DATAq@T64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 7B,VCVTUSI2SH,hX_vX_jRd@DATAd@T32,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 7B,VCVTUSI2SH,hX_vX_jRq@DATAq@T64,Xpfx=EVEX5,Epfx=F3,W=1
DisTab 0F7B,VCVTUSI2SS,hX_vX_jRd@DATAd@T32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F7B,VCVTUSI2SS,hX_vX_jRq@DATAq@T64,Xpfx=EVEX,Epfx=F3,W=1
DisTab 7D,VCVTUW2PH,hO_jO@FV16,Xpfx=EVEX5,Epfx=F2,W=0
DisTab 7D,VCVTW2PH,hO_jO@FV16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 0F3A42,VDBPSADBW,hO_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 5E,VDIVPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 5E,VDIVSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 0F3852,VDPBF16PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F00,VERR,jR,RegOp=4 ; PROT
DisTab 0F00,VERW,jR,RegOp=5 ; PROT
DisTab 0F3888,VEXPANDPD,hO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3888,VEXPANDPS,hO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A19,VEXTRACTF128,jX_hO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A19,VEXTRACTF32X4,jX_hO_ib@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A19,VEXTRACTF64X2,jX_hO_ib@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A1B,VEXTRACTF32X8,jY_hO_ib@T256,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A1B,VEXTRACTF64X4,jY_hO_ib@T256,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A39,VEXTRACTI128,jX_hO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A39,VEXTRACTI32X4,jX_hO_ib@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A39,VEXTRACTI64X2,jX_hO_ib@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A3B,VEXTRACTI32X8,jY_hO_ib@T256,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A3B,VEXTRACTI64X4,jY_hO_ib@T256,Xpfx=EVEX,Epfx=66,W=1
DisTab 56,VFCMADDCPH,hO_vO_jO@FV32,Xpfx=EVEX6,Epfx=F2,W=0
DisTab 56,VFMADDCPH,hO_vO_jO@FV32,Xpfx=EVEX6,Epfx=F3,W=0
DisTab 57,VFCMADDCSH,hO_vO_jO@T32,Xpfx=EVEX6,Epfx=F2,W=0
DisTab 57,VFMADDCSH,hO_vO_jO@T32,Xpfx=EVEX6,Epfx=F3,W=0
DisTab D6,VFCMULCPH,hO_vO_jO@FV32,Xpfx=EVEX6,Epfx=F2,W=0
DisTab D6,VFMULCPH,hO_vO_jO@FV32,Xpfx=EVEX6,Epfx=F3,W=0
DisTab D7,VFCMULCSH,hO_vO_jO@T32,Xpfx=EVEX6,Epfx=F2,W=0
DisTab D7,VFMULCSH,hO_vO_jO@T32,Xpfx=EVEX6,Epfx=F3,W=0
DisTab 0F3A54,VFIXUPIMMPD,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A54,VFIXUPIMMPS,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A55,VFIXUPIMMSD,hO_vO_jO_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A55,VFIXUPIMMSS,hO_vO_jO_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3898,VFMADD132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38A8,VFMADD213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B8,VFMADD231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3898,VFMADD132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38A8,VFMADD213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B8,VFMADD231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 98,VFMADD132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab A8,VFMADD213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab B8,VFMADD231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 9C,VFNMADD132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AC,VFNMADD213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BC,VFNMADD231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3898,VFMADD132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38A8,VFMADD213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38B8,VFMADD231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3898,VFMADD132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38A8,VFMADD213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38B8,VFMADD231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3899,VFMADD132SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38A9,VFMADD213SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B9,VFMADD231SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3899,VFMADD132SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38A9,VFMADD213SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B9,VFMADD231SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 99,VFMADD132SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab A9,VFMADD213SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab B9,VFMADD231SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 9D,VFNMADD132SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AD,VFNMADD213SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BD,VFNMADD231SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3899,VFMADD132SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38A9,VFMADD213SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38B9,VFMADD231SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3899,VFMADD132SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38A9,VFMADD213SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38B9,VFMADD231SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3896,VFMADDSUB132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38A6,VFMADDSUB213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B6,VFMADDSUB231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3896,VFMADDSUB132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38A6,VFMADDSUB213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B6,VFMADDSUB231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 96,VFMADDSUB132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab A6,VFMADDSUB213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab B6,VFMADDSUB231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3896,VFMADDSUB132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38A6,VFMADDSUB213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38B6,VFMADDSUB231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3896,VFMADDSUB132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38A6,VFMADDSUB213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38B6,VFMADDSUB231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389A,VFMSUB132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AA,VFMSUB213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BA,VFMSUB231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389A,VFMSUB132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AA,VFMSUB213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BA,VFMSUB231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 9A,VFMSUB132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AA,VFMSUB213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BA,VFMSUB231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 9E,VFNMSUB132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AE,VFNMSUB213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BE,VFNMSUB231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F389A,VFMSUB132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AA,VFMSUB213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BA,VFMSUB231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389A,VFMSUB132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AA,VFMSUB213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BA,VFMSUB231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389B,VFMSUB132SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AB,VFMSUB213SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BB,VFMSUB231SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389B,VFMSUB132SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AB,VFMSUB213SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BB,VFMSUB231SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 9B,VFMSUB132SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AB,VFMSUB213SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BB,VFMSUB231SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 9F,VFNMSUB132SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab AF,VFNMSUB213SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab BF,VFNMSUB231SH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F389B,VFMSUB132SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AB,VFMSUB213SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BB,VFMSUB231SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389B,VFMSUB132SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AB,VFMSUB213SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BB,VFMSUB231SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3897,VFMSUBADD132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38A7,VFMSUBADD213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B7,VFMSUBADD231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3897,VFMSUBADD132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38A7,VFMSUBADD213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B7,VFMSUBADD231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 97,VFMSUBADD132PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab A7,VFMSUBADD213PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab B7,VFMSUBADD231PH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3897,VFMSUBADD132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38A7,VFMSUBADD213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38B7,VFMSUBADD231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3897,VFMSUBADD132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38A7,VFMSUBADD213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38B7,VFMSUBADD231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389C,VFNMADD132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AC,VFNMADD213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BC,VFNMADD231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389C,VFNMADD132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AC,VFNMADD213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BC,VFNMADD231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F389C,VFNMADD132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AC,VFNMADD213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BC,VFNMADD231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389C,VFNMADD132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AC,VFNMADD213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BC,VFNMADD231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389D,VFNMADD132SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AD,VFNMADD213SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BD,VFNMADD231SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389D,VFNMADD132SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AD,VFNMADD213SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BD,VFNMADD231SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F389D,VFNMADD132SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AD,VFNMADD213SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BD,VFNMADD231SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389D,VFNMADD132SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AD,VFNMADD213SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BD,VFNMADD231SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389E,VFNMSUB132PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AE,VFNMSUB213PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BE,VFNMSUB231PD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389E,VFNMSUB132PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AE,VFNMSUB213PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BE,VFNMSUB231PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F389E,VFNMSUB132PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AE,VFNMSUB213PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BE,VFNMSUB231PS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389E,VFNMSUB132PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AE,VFNMSUB213PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BE,VFNMSUB231PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F389F,VFNMSUB132SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38AF,VFNMSUB213SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38BF,VFNMSUB231SD,hX_vX_jX,Xpfx=VEX,Epfx=66,W=1
DisTab 0F389F,VFNMSUB132SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38AF,VFNMSUB213SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BF,VFNMSUB231SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F389F,VFNMSUB132SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38AF,VFNMSUB213SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38BF,VFNMSUB231SS,hX_vX_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F389F,VFNMSUB132SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38AF,VFNMSUB213SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38BF,VFNMSUB231SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A66,VFPCLASSPD,hK_jO_ib@DATAo@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A66,VFPCLASSPS,hK_jO_ib@DATAo@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A66,VFPCLASSPH,hK_jO_ib@DATAo@FV16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A67,VFPCLASSSD,hK_jX_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A67,VFPCLASSSH,hK_jX_ib@T16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A67,VFPCLASSSS,hK_jX_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3892,VGATHERDPD,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3893,VGATHERQPD,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3892,VGATHERDPS,hO_jO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3892,VGATHERDPD,hO_jO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3892,VGATHERDPS,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3893,VGATHERQPS,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3893,VGATHERQPS,hO_jO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3893,VGATHERQPD,hO_jO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3842,VGETEXPPD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 42,VGETEXPPH,hO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3842,VGETEXPPS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3843,VGETEXPSD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 43,VGETEXPSH,hO_vO_jO@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3843,VGETEXPSS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A26,VGETMANTPD,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A26,VGETMANTPH,hO_jO_ib@FV16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A26,VGETMANTPS,hO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A27,VGETMANTSD,hX_vX_jX_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A27,VGETMANTSH,hO_vO_jO@T16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A27,VGETMANTSS,hX_vX_jX_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A18,VINSERTF128,hO_vO_jX_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A18,VINSERTF32X4,hO_vO_jX_ib@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A18,VINSERTF64X2,hO_vO_jX_ib@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A1A,VINSERTF32X8,hO_vO_jY_ib@T256,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A1A,VINSERTF64X4,hO_vO_jY_ib@T256,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A38,VINSERTI128,hO_vO_jX_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A38,VINSERTI32X4,hO_vO_jX_ib@T128,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A38,VINSERTI64X2,hO_vO_jX_ib@T128,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A3A,VINSERTI32X8,hO_vO_jY_ib@T256,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A3A,VINSERTI64X4,hO_vO_jY_ib@T256,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F382C,VMASKMOVPS,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F382D,VMASKMOVPD,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F382E,VMASKMOVPS,jO_vO_hO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F382F,VMASKMOVPD,jO_vO_hO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 5F,VMAXPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 5F,VMAXSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 5D,VMINPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 5D,VMINSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 10,VMOVSH,hO_jO@T16,Xpfx=EVEX5,Epfx=F3,Mod=0,W=0
DisTab 11,VMOVSH,jO_hO@T16,Xpfx=EVEX5,Epfx=F3,Mod=0,W=0
DisTab 10,VMOVSH,hO_vO_jO,Xpfx=EVEX5,Epfx=F3,Mod=3,W=0
DisTab 11,VMOVSH,jO_vO_hO,Xpfx=EVEX5,Epfx=F3,Mod=3,W=0
DisTab 6E,VMOVW,hO_jRw@DATAw@T16,Xpfx=EVEX5,Epfx=66
DisTab 7E,VMOVW,jRw_hO@DATAw@T16,Xpfx=EVEX5,Epfx=66
DisTab 59,VMULPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 59,VMULSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 0F3868,VP2INTERSECTD,hK_vO_jO@FV32,Xpfx=EVEX,Epfx=F2,W=0
DisTab 0F3868,VP2INTERSECTQ,hK_vO_jO@FV64,Xpfx=EVEX,Epfx=F2,W=1
DisTab 0F3A02,VPBLENDD,hO_vO_jO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3866,VPBLENDMB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3866,VPBLENDMW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3864,VPBLENDMD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3864,VPBLENDMQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3878,VPBROADCASTB,hO_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3878,VPBROADCASTB,hO_jX@T8,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3879,VPBROADCASTW,hO_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3879,VPBROADCASTW,hO_jX@T16,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3858,VPBROADCASTD,hO_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3858,VPBROADCASTD,hO_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3859,VPBROADCASTQ,hO_jX,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3859,VPBROADCASTQ,hO_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3859,VBROADCASTI32X2,hO_jX@T64,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F385A,VBROADCASTI128, hO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F385A,VBROADCASTI32X4,hO_jO@T128,Xpfx=EVEX,Epfx=66,Mod=0,W=0
DisTab 0F385A,VBROADCASTI64X2,hO_jO@T128,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F385B,VBROADCASTI32X8,hO_jO@T256,Xpfx=EVEX,Epfx=66,Mod=0,W=0
DisTab 0F385B,VBROADCASTI64X4,hO_jO@T256,Xpfx=EVEX,Epfx=66,Mod=0,W=1
DisTab 0F387A,VPBROADCASTB,hO_jRb@T8,Xpfx=EVEX,Epfx=66,Mod=3,W=0
DisTab 0F387B,VPBROADCASTW,hO_jRw@T16,Xpfx=EVEX,Epfx=66,Mod=3,W=0
DisTab 0F387C,VPBROADCASTD,hO_jRd@T32,Xpfx=EVEX,Epfx=66,Mod=3,W=0
DisTab 0F387C,VPBROADCASTQ,hO_jRq@T64,Xpfx=EVEX,Epfx=66,Mod=3,W=1
DisTab 0F382A,VPBROADCASTMB2Q,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=1
DisTab 0F383A,VPBROADCASTMW2D,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F3A3F,VPCMPB,hK_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A3E,VPCMPUB,hK_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A1F,VPCMPD,hK_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A1E,VPCMPUD,hK_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A1F,VPCMPQ,hK_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A1E,VPCMPUQ,hK_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A3F,VPCMPW,hK_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A3E,VPCMPUW,hK_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3863,VPCOMPRESSB,jO_hO@T8,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3863,VPCOMPRESSW,jO_hO@T8,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F388B,VPCOMPRESSD,jO_hO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F388B,VPCOMPRESSQ,jO_hO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38C4,VPCONFLICTD,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38C4,VPCONFLICTQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3850,VPDPBSSD,hO_vO_jO,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F3851,VPDPBSSDS,hO_vO_jO,Xpfx=VEX,Epfx=F2,W=0
DisTab 0F3850,VPDPBSUD,hO_vO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F3851,VPDPBSUDS,hO_vO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F3850,VPDPBUUD,hO_vO_jO,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F3851,VPDPBUUDS,hO_vO_jO,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F3850,VPDPBUSD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3850,VPDPBUSD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3851,VPDPBUSDS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3851,VPDPBUSDS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3852,VPDPWSSD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3852,VPDPWSSD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3853,VPDPWSSDS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3853,VPDPWSSDS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38D2,VPDPWSUD,hO_vO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F38D3,VPDPWSUDS,hO_vO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F38D2,VPDPWUSD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38D3,VPDPWUSDS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38D2,VPDPWUUD,hO_vO_jO,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F38D3,VPDPWUUDS,hO_vO_jO,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F3A06,VPERM2F128,hY_vY_jY_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A46,VPERM2I128,hY_vY_jY_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F388D,VPERMB,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3836,VPERMD,hY_vY_jY,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3836,VPERMD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F388D,VPERMW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3875,VPERMI2B,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3875,VPERMI2W,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3876,VPERMI2D,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3876,VPERMI2Q,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3877,VPERMI2PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3877,VPERMI2PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F380D,VPERMILPD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F380D,VPERMILPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A05,VPERMILPD,hO_jO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A05,VPERMILPD,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F380C,VPERMILPS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3A04,VPERMILPS,hO_jO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F380C,VPERMILPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A04,VPERMILPS,hO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A01,VPERMPD,hO_jO_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A01,VPERMPD,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3816,VPERMPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3816,VPERMPS,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3816,VPERMPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A00,VPERMQ,hY_jY_ib,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3A00,VPERMQ,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3836,VPERMQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F387D,VPERMT2B,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F387D,VPERMT2W,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F387E,VPERMT2D,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F387E,VPERMT2Q,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F387F,VPERMT2PS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F387F,VPERMT2PD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3862,VPEXPANDB,hO_jO@T8,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3862,VPEXPANDW,hO_jO@T16,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3889,VPEXPANDD,hO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3889,VPEXPANDQ,hO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3890,VPGATHERDD,hO_jO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3890,VPGATHERDQ,hO_jO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3890,VPGATHERDD,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3891,VPGATHERQD,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3890,VPGATHERDQ,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3891,VPGATHERQQ,hO_jO_vO@VSIB,Xpfx=VEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3891,VPGATHERQD,hO_jO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F3891,VPGATHERQQ,hO_jO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3844,VPLZCNTD,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3844,VPLZCNTQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B5,VPMADD52HUQ,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B5,VPMADD52HUQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38B4,VPMADD52LUQ,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F38B4,VPMADD52LUQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F388C,VPMASKMOVD,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F388C,VPMASKMOVQ,hO_vO_jO,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F388E,VPMASKMOVD,jO_vO_hO,Xpfx=VEX,Epfx=66,Mod=0,W=0
DisTab 0F388E,VPMASKMOVQ,jO_vO_hO,Xpfx=VEX,Epfx=66,Mod=0,W=1
DisTab 0F3829,VPMOVB2M,hK_jO,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F3829,VPMOVW2M,hK_jO,Xpfx=EVEX,Epfx=F3,Mod=3,W=1
DisTab 0F3839,VPMOVD2M,hK_jO,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F3839,VPMOVQ2M,hK_jO,Xpfx=EVEX,Epfx=F3,Mod=3,W=1
DisTab 0F3831,VPMOVDB,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3821,VPMOVSDB,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3811,VPMOVUSDB,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3833,VPMOVDW,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3823,VPMOVSDW,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3813,VPMOVUSDW,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3828,VPMOVM2B,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F3828,VPMOVM2W,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=1
DisTab 0F3838,VPMOVM2D,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=0
DisTab 0F3838,VPMOVM2Q,hO_jK,Xpfx=EVEX,Epfx=F3,Mod=3,W=1
DisTab 0F3832,VPMOVQB,jX_hO@OVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3822,VPMOVSQB,jX_hO@OVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3812,VPMOVUSQB,jX_hO@OVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3835,VPMOVQD,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3825,VPMOVSQD,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3815,VPMOVUSQD,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3834,VPMOVQW,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3824,VPMOVSQW,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3814,VPMOVUSQW,jX_hO@QVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3830,VPMOVWB,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3820,VPMOVSWB,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3810,VPMOVUSWB,jXXY_hO@HVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3883,VPMULTISHIFTQB,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3854,VPOPCNTB,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3854,VPOPCNTW,hO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
;;DisTab 0F3855,VPOPCNTD,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3855,VPOPCNTD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3855,VPOPCNTQ,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3815,VPROLVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F72,VPROLD,vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,RegOp=1,W=0
DisTab 0F3815,VPROLVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F72,VPROLQ,vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,RegOp=1,W=1
DisTab 0F3814,VPRORVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F72,VPRORD,vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,RegOp=0,W=0
DisTab 0F3814,VPRORVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F72,VPRORQ,vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,RegOp=0,W=1
DisTab 0F38A0,VPSCATTERDD,jO_hO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38A0,VPSCATTERDQ,jO_hO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F38A1,VPSCATTERQD,jO_hO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38A1,VPSCATTERQQ,jO_hO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3A70,VPSHLDW,hO_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A71,VPSHLDD,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A71,VPSHLDQ,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3870,VPSHLDVW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3871,VPSHLDVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3871,VPSHLDVQ,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A72,VPSHRDW,hO_vO_jO_ib@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A73,VPSHRDD,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A73,VPSHRDQ,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3872,VPSHRDVW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3873,VPSHRDVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3873,VPSHRDVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38BF,VPSHUFBITQMB,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3847,VPSLLVD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3847,VPSLLVQ,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3812,VPSLLVW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3847,VPSLLVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3847,VPSLLVD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3847,VPSLLVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3847,VPSLLVQ,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3846,VPSRAVD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3811,VPSRAVW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3846,VPSRAVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3846,VPSRAVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3845,VPSRLVD,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3845,VPSRLVQ,hO_vO_jO,Xpfx=VEX,Epfx=66,W=1
DisTab 0F3810,VPSRLVW,hO_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3845,VPSRLVD,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3845,VPSRLVQ,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A25,VPTERNLOGD,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A25,VPTERNLOGQ,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3826,VPTESTMB,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3826,VPTESTMW,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3827,VPTESTMD,hK_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3827,VPTESTMQ,hK_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3826,VPTESTNMB,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3826,VPTESTNMW,hK_vO_jO@FVM,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F3827,VPTESTNMD,hK_vO_jO@FV32,Xpfx=EVEX,Epfx=F3,W=0
DisTab 0F3827,VPTESTNMQ,hK_vO_jO@FV64,Xpfx=EVEX,Epfx=F3,W=1
DisTab 0F3A50,VRANGEPD,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A50,VRANGEPS,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A51,VRANGESD,hX_vX_jX_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A51,VRANGESS,hX_vX_jX_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F384C,VRCP14PD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F384C,VRCP14PS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F384D,VRCP14SD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F384D,VRCP14SS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 4C,VRCPPH,hO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 4D,VRCPSH,hO_vO_jO@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F3A56,VREDUCEPD,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A56,VREDUCEPH,hO_jO_ib@FV16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A56,VREDUCEPS,hO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A57,VREDUCESD,hX_vX_jX_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A57,VREDUCESH,hX_vX_jX_ib@T16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A57,VREDUCESS,hX_vX_jX_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A09,VRNDSCALEPD,hO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A08,VRNDSCALEPH,hO_jO_ib@FV16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A08,VRNDSCALEPS,hO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A0B,VRNDSCALESD,hX_vX_jX_ib@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A0A,VRNDSCALESH,hX_vX_jX_ib@T16,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F3A0A,VRNDSCALESS,hX_vX_jX_ib@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F384E,VRSQRT14PD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F384E,VRSQRT14PS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F384F,VRSQRT14SD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F384F,VRSQRT14SS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 4E,VRSQRTPH,hO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 4F,VRSQRTSH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F382C,VSCALEFPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 2C,VSCALEFPH,hO_vO_jO@FV16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F382C,VSCALEFPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F382D,VSCALEFSD,hX_vX_jX@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 2D,VSCALEFSH,hX_vX_jX@T16,Xpfx=EVEX6,Epfx=66,W=0
DisTab 0F382D,VSCALEFSS,hX_vX_jX@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38A2,VSCATTERDPS,jO_hO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38A2,VSCATTERDPD,jO_hO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F38A3,VSCATTERQPS,jO_hO@VSIB@T32,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38A3,VSCATTERQPD,jO_hO@VSIB@T64,Xpfx=EVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F38CC,VSHA512MSG1,hO_jO,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F38CD,VSHA512MSG2,hO_jO,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F38CB,VSHA512RNDS2,hO_vO_jO,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0F3A23,VSHUFF32X4,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A23,VSHUFF64X2,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F3A43,VSHUFI32X4,hO_vO_jO_ib@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F3A43,VSHUFI64X2,hO_vO_jO_ib@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38DA,VSM3MSG1,hO_vO_jO,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F38DA,VSM3MSG2,hO_vO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F3ADE,VSM3RNDS2,hO_vO_jO_ib,Xpfx=VEX,Epfx=66,W=0
DisTab 0F38DA,VSM4KEY4,hO_vO_jO,Xpfx=VEX,Epfx=F3,W=0
DisTab 0F38DA,VSM4RNDS4,hO_vO_jO,Xpfx=VEX,Epfx=F2,W=0
DisTab 51,VSQRTPH,hO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 51,VSQRTSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 5C,VSUBPH,hO_vO_jO@FV16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 5C,VSUBSH,hO_vO_jO@T16,Xpfx=EVEX5,Epfx=F3,W=0
DisTab 0F380E,VTESTPS,hO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 0F380F,VTESTPD,hO_jO,Xpfx=VEX,Epfx=66,W=0
DisTab 2E,VUCOMISH,hO_jO@T16,Xpfx=EVEX5,Epfx=NP,W=0
DisTab 0F77,,@vzero,Xpfx=VEX
DisTab 0F77,,@vzero,Xpfx=VEX
DisTab 0F09,WBINVD,@,Epfx=NP
DisTab 0F09,WBNOINVD,@,Epfx=F3
DisTab 0FAE,WRFSBASE,jR,Epfx=F3,Mod=3,RegOp=2
DisTab 0FAE,WRGSBASE,jR,Epfx=F3,Mod=3,RegOp=3
DisTab 0F30,WRMSR,@,Epfx=NP
DisTab 0F01,WRMSRLIST,@1,Epfx=F3,Mod=3,RegOp=0,RM=6
DisTab 0F01,WRMSRNS,@1,Epfx=NP,Mod=3,RegOp=0,RM=6
DisTab 0F01,WRPKRU,@1,Epfx=NP,Mod=3,RegOp=5,RM=7
DisTab 0F38F6,WRSSD,jR_hRd,Epfx=NP,Mod=0,W=0
DisTab 0F38F6,WRSSQ,jR_hRq,Epfx=NP,Mod=0,W=1
DisTab 0F38F5,WRUSSD,jR_hRd,Epfx=66,Mod=0,W=0
DisTab 0F38F5,WRUSSQ,jR_hRq,Epfx=66,Mod=0,W=1
DisTab C6,XABORT,i8@1,Epfx=NP,Mod=3,RegOp=7,RM=0
DisTab 0FC0,XADD,jRb_hRb
DisTab 0FC1,XADD,jR_hR
DisTab C7,XBEGIN,le@x,Mod=3,RegOp=7,RM=0
DisTab 90,XCHG,eAX_Ropc
DisTab 91,XCHG,eAX_Ropc
DisTab 92,XCHG,eAX_Ropc
DisTab 93,XCHG,eAX_Ropc
DisTab 94,XCHG,eAX_Ropc
DisTab 95,XCHG,eAX_Ropc
DisTab 96,XCHG,eAX_Ropc
DisTab 97,XCHG,eAX_Ropc
DisTab 86,XCHG,hRb_jRb
DisTab 87,XCHG,hR_jR
DisTab 0F01,XEND,@1,Epfx=NP,Mod=3,RegOp=2,RM=5
DisTab 0F01,XGETBV,@1,Epfx=NP,Mod=3,RegOp=2,RM=0
DisTab D7,XLAT,@xlat
DisTab 34,XOR,AL_ib@CODEs
DisTab 35,XOR,aAX_ie@CODEs
DisTab 80,XOR,jRb_i8@DATAb@CODEl,RegOp=6
DisTab 81,XOR,jR_ie,RegOp=6
DisTab 83,XOR,jR_ibse@DATAa@CODEl,RegOp=6
DisTab 30,XOR,jRb_hRb
DisTab 31,XOR,jR_hR
DisTab 32,XOR,hRb_jRb
DisTab 33,XOR,hR_jR
DisTab 0F57,XORPD,hO_jO,Epfx=66
DisTab 0F57,VXORPD,hO_vO_jO,Xpfx=VEX,Epfx=66
DisTab 0F57,VXORPD,hO_vO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F57,XORPS,hO_jO,Epfx=NP
DisTab 0F57,VXORPS,hO_vO_jO,Xpfx=VEX,Epfx=NP
DisTab 0F57,VXORPS,hO_vO_jO@FV32,Xpfx=EVEX,Epfx=NP,W=0
DisTab 0F01,XRESLDTRK,@1,Epfx=F2,Mod=3,RegOp=5,RM=1
DisTab 0FAE,XRSTOR,jR,Epfx=NP,Mod=0,RegOp=5,W=0
DisTab 0FAE,XRSTOR64,jR,Epfx=NP,Mod=0,RegOp=5,W=1
DisTab 0FC7,XRSTORS,jR,Epfx=NP,Mod=0,RegOp=3,W=0
DisTab 0FC7,XRSTORS64,jR,Epfx=NP,Mod=0,RegOp=3,W=1
DisTab 0FAE,XSAVE,jR,Epfx=NP,Mod=0,RegOp=4,W=0
DisTab 0FAE,XSAVE64,jR,Epfx=NP,Mod=0,RegOp=4,W=1
DisTab 0FC7,XSAVEC,jR,Epfx=NP,Mod=0,RegOp=4,W=0
DisTab 0FC7,XSAVEC64,jR,Epfx=NP,Mod=0,RegOp=4,W=1,
DisTab 0FAE,XSAVEOPT,jR,Epfx=NP,Mod=0,RegOp=6,W=0
DisTab 0FAE,XSAVEOPT64,jR,Epfx=NP,Mod=0,RegOp=6,W=1
DisTab 0FC7,XSAVES,jR,Epfx=NP,Mod=0,RegOp=5,W=0,
DisTab 0FC7,XSAVES64,jR,Epfx=NP,Mod=0,RegOp=5,W=1,
DisTab 0F01,XSETBV,@1,Epfx=NP,Mod=3,RegOp=2,RM=1
DisTab 0F01,XSUSLDTRK,@1,Epfx=F2,Mod=3,RegOp=5,RM=0
DisTab 0F01,XTEST,@1,Epfx=NP,Mod=3,RegOp=2,RM=6
DisTab 0F37,GETSEC,@,Epfx=NP
DisTab 0F0D,PREFETCHWT1,jR,Epfx=NP,Mod=0,RegOp=2
DisTab 0F389A,V4FMADDPS,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F38AA,V4FNMADDPS,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F389B,V4FMADDSS,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F38AB,V4FNMADDSS,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F38C8,VEXP2PD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38C8,VEXP2PS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38C6,VGATHERPF0DPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=1,RM=4,W=0
DisTab 0F38C7,VGATHERPF0QPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=1,RM=4,W=0
DisTab 0F38C6,VGATHERPF0DPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=1,RM=4,W=1
DisTab 0F38C7,VGATHERPF0QPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=1,RM=4,W=1
DisTab 0F38C6,VGATHERPF1DPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=2,RM=4,W=0
DisTab 0F38C7,VGATHERPF1QPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=2,RM=4,W=0
DisTab 0F38C6,VGATHERPF1DPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=2,RM=4,W=1
DisTab 0F38C7,VGATHERPF1QPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=2,RM=4,W=1
DisTab 0F3853,VP4DPWSSDS,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F3852,VP4DPWSSD,hO_vO_jO@T128,Xpfx=EVEX,Epfx=F2,Mod=0,W=0
DisTab 0F38CA,VRCP28PD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38CB,VRCP28SD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38CA,VRCP28PS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38CB,VRCP28SS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38CC,VRSQRT28PD,hO_jO@FV64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38CD,VRSQRT28SD,hO_vO_jO@T64,Xpfx=EVEX,Epfx=66,W=1
DisTab 0F38CC,VRSQRT28PS,hO_jO@FV32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38CD,VRSQRT28SS,hO_vO_jO@T32,Xpfx=EVEX,Epfx=66,W=0
DisTab 0F38C6,VSCATTERPF0DPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=5,RM=4,W=0
DisTab 0F38C7,VSCATTERPF0QPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=5,RM=4,W=0
DisTab 0F38C6,VSCATTERPF0DPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=5,RM=4,W=1
DisTab 0F38C7,VSCATTERPF0QPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=5,RM=4,W=1
DisTab 0F38C6,VSCATTERPF1DPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=6,RM=4,W=0
DisTab 0F38C7,VSCATTERPF1QPS,jO@VSIB@DATAd@T32,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=6,RM=4,W=0
DisTab 0F38C6,VSCATTERPF1DPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=6,RM=4,W=1
DisTab 0F38C7,VSCATTERPF1QPD,jO@VSIB@DATAq@T64,Xpfx=EVEX,Epfx=66,Mod=0,RegOp=6,RM=4,W=1
; Instruction in the order in [AMDVol3]
DisTab 0F01,CLGI,@1,Epfx=NP,Mod=3,RegOp=3,RM=5,W=0 ; AMD,SVM
DisTab 0FAE,INCSSP,jR,Epfx=F3,Mod=3,RegOp=5
DisTab 0F01,INVLPGA,@1,Epfx=NP,Mod=3,RegOp=3,RM=7 ; AMD ,PRIV INVLPGA rAX,ECX
DisTab 0F01,INVLPGB,@1,Epfx=NP,Mod=3,RegOp=7,RM=6 ; PRIV
DisTab 0F01,PSMASH,@1,Epfx=F3,Mod=3,RegOp=7,RM=7
DisTab 0F01,PVALIDATE,@1,Epfx=F2,Mod=3,RegOp=7,RM=7 ; AMD PRIV
DisTab 0F1E,RDSSP,jR,Epfx=F3,Mod=3,RegOp=1
DisTab 0F01,RMPADJUST,@1,Epfx=F3,Mode=64,Mod=3,RegOp=7,RM=6 ; PRIV
DisTab 0F01,RMPQUERY,@1,Epfx=F3,Mode=64,Mod=3,RegOp=7,RM=5 ; PRIV
DisTab 0F01,RMPREAD,@1,Epfx=F2,Mode=64,Mod=3,RegOp=7,RM=5 ; PRIV
DisTab 0F01,RMPUPDATE,@1,Epfx=F2,Mode=64,Mod=3,RegOp=7,RM=6 ; PRIV
DisTab 0F01,SKINIT,@1,Epfx=NP,Mod=3,RegOp=3,RM=6 ; SVM
DisTab 0F01,STGI,@1,Epfx=NP,Mod=3,RegOp=3,RM=4 ; SVM
DisTab 0F01,TLBSYNC,@1,Epfx=NP,Mod=3,RegOp=7,RM=7 ; PRIV
DisTab 0F01,VMLOAD,@1,Epfx=NP,Mod=3,RegOp=3,RM=2 ; SVM
DisTab 0F01,VMMCALL,@1,Epfx=NP,Mod=3,RegOp=3,RM=1 ; SVM
DisTab 0F01,VMGEXIT,@1,Epfx=F2,Mod=3,RegOp=3,RM=1 ; SVM
DisTab 0F01,VMGEXIT,@1,Epfx=F3,Mod=3,RegOp=3,RM=1 ; SVM
DisTab 0F01,VMRUN,@1,Epfx=NP,Mod=3,RegOp=3,RM=0 ; SVM
DisTab 0F01,VMSAVE,@1,Epfx=NP,Mod=3,RegOp=3,RM=3 ; SVM
DisTab 0F01,MONITORX,@1,Epfx=NP,Mod=3,RegOp=7,RM=2
DisTab 0F01,CLZERO,@1,Epfx=NP,Mod=3,RegOp=7,RM=4
DisTab 0A10,BEXTR,hR_jR_id,Xpfx=XOP,Epfx=NP
DisTab 0901,BLCFILL,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=1
DisTab 0902,BLCI,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=6
DisTab 0901,BLCIC,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=5
DisTab 0902,BLCMSK,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=1
DisTab 0901,BLCS,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=3
DisTab 0901,BLSFILL,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=2
DisTab 0901,BLSIC,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=6
DisTab 0912,LLWPCB,jRd,Xpfx=XOP,Epfx=NP,Mod=3,RegOp=0,W=0 ; LWP
DisTab 0912,LLWPCB,jRq,Xpfx=XOP,Epfx=NP,Mod=3,RegOp=0,W=1,Mode=64 ; LWP
DisTab 0A12,LWPINS,vRd_jR_id,Xpfx=XOP,Epfx=NP,RegOp=0,W=0 ; PROT LWP
DisTab 0A12,LWPINS,vRq_jR_id,Xpfx=XOP,Epfx=NP,RegOp=0,W=1,Mode=64 ; PROT LWP
DisTab 0A12,LWPVAL,vRd_jR_id,Xpfx=XOP,Epfx=NP,RegOp=1,W=0 ; PROT LWP
DisTab 0A12,LWPVAL,vRq_jR_id,Xpfx=XOP,Epfx=NP,RegOp=1,W=1,Mode=64 ; PROT LWP
DisTab 0F01,MCOMMIT,@1,Epfx=F3,Mod=3,RegOp=7,RM=2
DisTab 0F01,MWAITX,@1,Epfx=NP,Mod=3,RegOp=7,RM=3
DisTab 0F0D,PREFETCH,jR,Epfx=NP,Mod=0,RegOp=0
DisTab 0F01,RDPRU,@1,Epfx=NP,Mod=3,RegOp=7,RM=5
DisTab 0912,SLWPCB,jR,Xpfx=XOP,Epfx=NP,Mod=3,RegOp=1
DisTab 0901,T1MSKC,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=7
DisTab 0901,TZMSK,vR_jR,Xpfx=XOP,Epfx=NP,RegOp=4
DisTab 0F38F5,WRUSSD,jR_hRd@DATAd,Epfx=66
DisTab 0F38F5,WRUSSQ,jR_hRq@DATAq,Epfx=66
DisTab 0F0F,,hU_jU@3DNow
DisTab 0F79,EXTRQ,hO_jO,Epfx=66
DisTab 0F79,INSERTQ,hO_jO,Epfx=F2
; Instructions in the order in [AMDGeode]
DisTab 0F39,DMINT,@
DisTab 0F24,MOV,jRd_hE,Mod=3
DisTab 0F26,MOV,hE_jRd,Mod=3
DisTab 0F3A,RDM,@
DisTab 0F7B,RSLDT,jR,Mod=0,RegOp=0
DisTab 0FAA,RSM,@
DisTab 0F7D,RSTS,jR,Mod=0,RegOp=0
DisTab 0F38,SMINT,@
DisTab 0F78,SVDC,hS_jR,Mod=0
DisTab 0F7A,SVLDT,jR,Mod=0
DisTab 0F7C,SVTS,jR,Mod=0,RegOp=0
; Instructions in the order in [IntelMVEX]
DisTab 0F85,JKNZD,vK_ld@DISTn,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F75,JKNZD,vK_lb@DISTs,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F84,JKZD,vK_ld@DISTn,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F74,JKZD,vK_lb@DISTs,Xpfx=VEX,Epfx=NP,W=0
DisTab 0F41,KAND,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F42,KANDN,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F43,KANDNR,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F95,KCONCATH,hRq_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F97,KCONCATL,hRq_vK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F3A3E,KEXTRACT,hK_jRq_ib,Xpfx=VEX,Epfx=66,Mod=3,W=0
DisTab 0F48,KMERGE2L1H,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F49,KMERGE2L1L,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F90,KMOV,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F93,KMOV,hRd_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F92,KMOV,hK_jRd,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F44,KNOT,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F45,KOR,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F98,KORTEST,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F46,KXNOR,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F47,KXOR,hK_jK,Xpfx=VEX,Epfx=NP,Mod=3,W=0
DisTab 0F3850,VADDNPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3850,VADDNPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F58,VADDPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F58,VADDPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F38CC,VADDSETSPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3A03,VALIGND,hO_vO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F381A,VBROADCASTF32X4,hO_jX@T128,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F381B,VBROADCASTF64X4,hO_jX@T256,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F385A,VBROADCASTI32X4,hO_jX@T128,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F385B,VBROADCASTI64X4,hO_jX@T256,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3819,VBROADCASTSD,hO_jX@T64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F3818,VBROADCASTSS,hO_jX@T64,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0FC2,VCMPPD,hK_vO_jO_ib@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0FC2,VCMPPS,hK_vO_jO_ib@MFV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0FE6,VCVTDQ2PD,hO_jO@MHV32,Xpfx=MVEX,Epfx=F3,W=0
DisTab 0F3ACB,VCVTFXPNTDQ2PS,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F3AE6,VCVTFXPNTPD2DQ,hO_jO_ib@MFV64,Xpfx=MVEX,Epfx=F2,W=1
DisTab 0F3ACA,VCVTFXPNTPD2UDQ,hO_jO_ib@MFV64,Xpfx=MVEX,Epfx=F2,W=1
DisTab 0F3ACB,VCVTFXPNTPS2DQ,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3ACA,VCVTFXPNTPS2UDQ,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3ACA,VCVTFXPNTUDQ2PS,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F5A,VCVTPS2PD,hO_jO@MHV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F7A,VCVTUDQ2PD,hO_jO@MHV32,Xpfx=MVEX,Epfx=F3,W=0
DisTab 0F38C8,VEXP223PS,hO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3855,VFIXUPNANPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3855,VFIXUPNANPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3898,VFMADD132PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3898,VFMADD132PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38A8,VFMADD213PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38A8,VFMADD213PD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38B8,VFMADD231PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38B8,VFMADD231PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38A4,VFMADD233PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F389A,VFMSUB132PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F389A,VFMSUB132PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38AA,VFMSUB213PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38AA,VFMSUB213PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38BA,VFMSUB231PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38BA,VFMSUB231PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F389C,VFNMADD132PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F389C,VFNMADD132PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38AC,VFNMADD213PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38AC,VFNMADD213PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38BC,VFNMADD231PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38BC,VFNMADD231PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F389E,VFNMSUB132PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F389E,VFNMSUB132PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38AE,VFNMSUB213PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38AE,VFNMSUB213PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38BE,VFNMSUB231PD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38BE,VFNMSUB231PS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3892,VGATHERDPD,hO_jO@VSIB@T64,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F3892,VGATHERDPS,hO_jO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38C6,VGATHERPF0DPS,jO@VSIB@DATAd@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=1,RM=4,W=0
DisTab 0F38C6,VGATHERPF0HINTDPD,jO@VSIB@DATAq@T64,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=0,RM=4,W=1
DisTab 0F38C6,VGATHERPF0HINTDPS,jO@VSIB@DATAd@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=0,RM=4,W=1
DisTab 0F38C6,VGATHERPF1DPS,jO@VSIB@DATAd@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=2,RM=4,W=0
DisTab 0F3842,VGETEXPPD,hO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3842,VGETEXPPS,hO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3A26,VGETMANTPD,hO_jO_ib@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3A26,VGETMANTPS,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3851,VGMAXABSPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3853,VGMAXPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3853,VGMAXPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3852,VGMINPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3852,VGMINPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38D4,VLOADUNPACKHD,hO_jO@T32,Xpfx=MVEX,Epfx=NP,Mod=0,W=0
DisTab 0F38D4,VLOADUNPACKHQ,hO_jO@T64,Xpfx=MVEX,Epfx=NP,Mod=0,W=1
DisTab 0F38D5,VLOADUNPACKHPD,hO_jO@T64,Xpfx=MVEX,Epfx=NP,Mod=0,W=1
DisTab 0F38D5,VLOADUNPACKHPS,hO_jO@T32,Xpfx=MVEX,Epfx=NP,Mod=0,W=0
DisTab 0F38D0,VLOADUNPACKLD,hO_jO@T32,Xpfx=MVEX,Epfx=NP,Mod=0,W=0
DisTab 0F38D1,VLOADUNPACKLPD,hO_jO@T64,Xpfx=MVEX,Epfx=NP,Mod=0,W=1
DisTab 0F38D1,VLOADUNPACKLPS,hO_jO@T32,Xpfx=MVEX,Epfx=NP,Mod=0,W=0
DisTab 0F38D0,VLOADUNPACKLQ,hO_jO@T64,Xpfx=MVEX,Epfx=NP,Mod=0,W=1
DisTab 0F38C9,VLOG2PS,hO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F28,VMOVAPD,hO_jO@MFVM,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F29,VMOVAPD,jO_hO@MFVM,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F28,VMOVAPS,hO_jO@MFVM,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F29,VMOVAPS,jO_hO@MFVM,Xpfx=MVEX,Epfx=NP,Mod=0,W=0
DisTab 0F6F,VMOVDQA32,hO_jO@MFVM,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F7F,VMOVDQA32,jO_hO@MFVM,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F6F,VMOVDQA64,hO_jO@MFVM,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F7F,VMOVDQA64,jO_hO@MFVM,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F29,VMOVNRAPD,jO_hO@MFVM,Xpfx=MVEX,Epfx=F3,Mod=0,W=1
DisTab 0F29,VMOVNRAPS,jO_hO@MFVM,Xpfx=MVEX,Epfx=F2,Mod=0,W=0
DisTab 0F29,VMOVNRNGOAPD,jO_hO@MFVM,Xpfx=MVEX,Epfx=F3,Mod=0,W=1
DisTab 0F29,VMOVNRNGOAPS,jO_hO@MFVM,Xpfx=MVEX,Epfx=F2,Mod=0,W=0
DisTab 0F59,VMULPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F59,VMULPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=NP,W=0
DisTab 0F38D4,VPACKSTOREHD,jO_hO@MFV32,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F38D5,VPACKSTOREHPD,jO_hO@MFV64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F38D5,VPACKSTOREHPS,jO_hO@MFV32,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F38D4,VPACKSTOREHQ,jO_hO@MFV64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F38D0,VPACKSTORELD,jO_hO@MFV32,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F38D1,VPACKSTORELPD,jO_hO@MFV64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F38D1,VPACKSTORELPS,jO_hO@MFV32,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F38D0,VPACKSTORELQ,jO_hO@MFV64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F385C,VPADCD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FFE,VPADDD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F385D,VPADDSETCD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38CD,VPADDSETSD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FDB,VPANDD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FDF,VPANDND,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W0
DisTab 0FDF,VPANDNQ,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0FDB,VPANDQ,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3864,VPBLENDMD,hO_vO_jO@FV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3864,VPBLENDMQ,hO_vO_jO@FV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3858,VPBROADCASTD,hO_jO@T32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3859,VPBROADCASTQ,hO_jO@T64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3A1F,VPCMPD,hK_vO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F76,VPCMPEQD,hK_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F66,VPCMPGTD,hK_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3874,VPCMPLTD,hK_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3A1E,VPCMPUD,hK_vO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3836,VPERMD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3A07,VPERMF32X4,hO_jO_ib@MFV32,Epfx=66,W=0
DisTab 0F3890,VPGATHERDD,hO_jO@T32,Xpfx=MVEX,Epfx=66,Mod=0,W=0
DisTab 0F3890,VPGATHERDQ,hO_jO@T64,Xpfx=MVEX,Epfx=66,Mod=0,W=1
DisTab 0F38B5,VPMADD231D,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38B4,VPMADD233D,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F383D,VPMAXSD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F383F,VPMAXUD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3839,VPMINSD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F383B,VPMINUD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3887,VPMULHD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3886,VPMULHUD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3840,VPMULLD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FEB,VPORD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FEB,VPORQ,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F385E,VPSBBD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F386E,VPSBBRD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38A0,VPSCATTERDD,jO_hO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38A0,VPSCATTERDQ,jO_hO@VSIB@T64,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F70,VPSHUFD,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F72,VPSLLD,vO_jO_ib,Xpfx=MVEX,Epfx=66,Mod=3,W=0
DisTab 0F72,VPSRAD,vO_jO_ib,Xpfx=MVEX,Epfx=66,RegOp=4,W=0
DisTab 0F3846,VPSRAVD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F72,VPSRLD,vO_jO_ib,Xpfx=MVEX,Epfx=66,Mod=3,RegOp=2,W=0
DisTab 0F3845,VPSRLVD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FFA,VPSUBD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F386C,VPSUBRD,hO_vO_jO@FV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F386F,VPSUBRSETBD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F385F,VPSUBSETBD,hO_vK_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3827,VPTESTMD,hK_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FEF,VPXORD,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FEF,VPXORQ,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F38CA,VRCP23PS,hO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3A52,VRNDFXPNTPD,hO_jO_ib@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F3A52,VRNDFXPNTPS,hO_jO_ib@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38CB,VRSQRT23PS,hO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F3884,VSCALEPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F38A2,VSCATTERDPD,jO_hO@VSIB@T64,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=1
DisTab 0F38A2,VSCATTERDPS,jO_hO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RM=4,W=0
DisTab 0F38C6,VSCATTERPF0DPS,jO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=5,RM=4,W=0
DisTab 0F38C6,VSCATTERPF0HINTDPD,jO@VSIB@T64,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=4,RM=4,W=1
DisTab 0F38C6,VSCATTERPF0HINTDPS,jO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=4,RM=4,W=0
DisTab 0F38C6,VSCATTERPF1DPS,jO@VSIB@T32,Xpfx=MVEX,Epfx=66,Mod=0,RegOp=6,RM=4,W=0
DisTab 0F5C,VSUBPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F5C,VSUBPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0F386D,VSUBRPD,hO_vO_jO@MFV64,Xpfx=MVEX,Epfx=66,W=1
DisTab 0F386D,VSUBRPS,hO_vO_jO@MFV32,Xpfx=MVEX,Epfx=66,W=0
DisTab 0FAE,CLEVICT0,jR,Xpfx=VEX,Epfx=F2,Mod=0,RegOp=7
DisTab 0FAE,CLEVICT0,jR,Xpfx=MVEX,Epfx=F2,Mod=0,RegOp=7
DisTab 0FAE,CLEVICT1,jR,Xpfx=VEX,Epfx=F3,Mod=0,RegOp=7
DisTab 0FAE,CLEVICT1,jR,Xpfx=MVEX,Epfx=F3,Mod=0,RegOp=7
DisTab 0FAE,DELAY,jRd,Xpfx=VEX,Epfx=F3,Mod=3,RegOp=6,W=0
DisTab 0FAE,DELAY,jRq,Xpfx=VEX,Epfx=F3,Mod=3,RegOp=6,W=1
DisTab 0FBD,LZCNT,hR_jR,Xpfx=VEX,Epfx=F3,Mod=3
DisTab 0FB8,POPCNT,hR_jR,Xpfx=VEX,Epfx=F3,Mod=3 ; MVEX
DisTab 0FAE,SPFLT,jRd,Xpfx=VEX,Epfx=F2,Mod=3,W=0
DisTab 0FAE,SPFLT,jRq,Xpfx=VEX,Epfx=F2,Mod=3,W=1
DisTab 0FBC,TZCNT,hR_jR,Epfx=F3
DisTab 0FBC,TZCNT,hR_jR,Xpfx=VEX,Epfx=F3,Mod=3
DisTab 0FBC,TZCNTI,hR_jR,Xpfx=VEX,Epfx=F2,Mod=3
DisTab 0F18,VPREFETCH0,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=1
DisTab 0F18,VPREFETCH0,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=1
DisTab 0F18,VPREFETCH1,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=2
DisTab 0F18,VPREFETCH1,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=2
DisTab 0F18,VPREFETCH2,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=3
DisTab 0F18,VPREFETCH2,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=3
DisTab 0F18,VPREFETCHE0,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=5
DisTab 0F18,VPREFETCHE0,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=5
DisTab 0F18,VPREFETCHE1,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=6
DisTab 0F18,VPREFETCHE1,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=6
DisTab 0F18,VPREFETCHE2,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=7
DisTab 0F18,VPREFETCHE2,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=7
DisTab 0F18,VPREFETCHENTA,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=4
DisTab 0F18,VPREFETCHENTA,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=4
DisTab 0F18,VPREFETCHNTA,jR,Xpfx=VEX,Epfx=NP,Mod=0,RegOp=0
DisTab 0F18,VPREFETCHNTA,jR,Xpfx=MVEX,Epfx=NP,Mod=0,RegOp=0
DisTab 0FAE,FXRSTOR64,jM,Epfx=NP,Mod=0,RegOp=1,W=1
; Other instructions
DisTab 0F3F,ALTINST,@
DisTab 0FA6,MONTMUL,@1,Epfx=F3,Mod=3,RegOp=0,RM=0
DisTab 0FA7,XSTORE,@1,Epfx=F3,Mod=3,RegOp=0,RM=0
DisTab 0FA7,XCRYPTECB,@1,Epfx=F3,Mod=3,RegOp=1,RM=0
DisTab 0FA7,XCRYPTCBC,@1,Epfx=F3,Mod=3,RegOp=2,RM=0
DisTab 0FA7,XCRYPTCTR,@1,Epfx=F3,Mod=3,RegOp=3,RM=0
DisTab 0FA7,XCRYPTCFB,@1,Epfx=F3,Mod=3,RegOp=4,RM=0
DisTab 0FA7,XCRYPTOFB,@1,Epfx=F3,Mod=3,RegOp=5,RM=0
DisTab 0FA6,XSHA1,@1,Epfx=F3,Mod=3,RegOp=1,RM=0
DisTab 0FA6,XSHA256,@1,Epfx=F3,Mod=3,RegOp=2,RM=0
DisTab 0FAE,PCOMMIT,@1,Epfx=66,Mod=3,RegOp=7,RM=0
DisTab 0885,VPMACSSWW,hO_vO_jO_is4,Xpfx=XOP
DisTab 0886,VPMACSSWD,hO_vO_jO_is4,Xpfx=XOP
DisTab 0887,VPMACSSDQL,hO_vO_jO_is4,Xpfx=XOP
DisTab 088E,VPMACSSDD,hO_vO_jO_is4,Xpfx=XOP
DisTab 088F,VPMACSSDQH,hO_vO_jO_is4,Xpfx=XOP
DisTab 0895,VPMACSWW,hO_vO_jO_is4,Xpfx=XOP
DisTab 0896,VPMACSWD,hO_vO_jO_is4,Xpfx=XOP
DisTab 0897,VPMACSDQL,hO_vO_jO_is4,Xpfx=XOP
DisTab 089E,VPMACSDD,hO_vO_jO_is4,Xpfx=XOP
DisTab 089F,VPMACSDQH,hO_vO_jO_is4,Xpfx=XOP
DisTab 08A6,VPMACSWW,hO_vO_jO_is4,Xpfx=XOP
DisTab 08B6,VPMACSWD,hO_vO_jO_is4,Xpfx=XOP
DisTab 08A3,VPPERM,hO_vO_jO_is4,Xpfx=XOP,W=0
DisTab 08A3,VPPERM,hO_vO_is4_jO,Xpfx=XOP,W=1
DisTab 08A2,VPCMOV,hO_vO_jO_is4,Xpfx=XOP,W=0
DisTab 08A2,VPCMOV,hO_vO_is4_jO,Xpfx=XOP,W=1
DisTab 0990,VPROTB,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0990,VPROTB,hO_vO_jO,Xpfx=XOP,W=1
DisTab 08C0,VPROTB,hO_jO_ib,Xpfx=XOP,W=0
DisTab 0991,VPROTW,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0991,VPROTW,hO_vO_jO,Xpfx=XOP,W=1
DisTab 08C1,VPROTW,hO_jO_ib,Xpfx=XOP,W=0
DisTab 0992,VPROTD,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0992,VPROTD,hO_vO_jO,Xpfx=XOP,W=1
DisTab 08C2,VPROTD,hO_jO_ib,Xpfx=XOP,W=0
DisTab 0993,VPROTQ,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0993,VPROTQ,hO_vO_jO,Xpfx=XOP,W=1
DisTab 08C3,VPROTQ,hO_jO_ib,Xpfx=XOP,W=0
DisTab 0994,VPSHLB,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0994,VPSHLB,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0995,VPSHLW,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0995,VPSHLW,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0996,VPSHLD,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0996,VPSHLD,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0997,VPSHLQ,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0997,VPSHLQ,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0998,VPSHAB,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0998,VPSHAB,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0999,VPSHAW,hO_jO_vO,Xpfx=XOP,W=0
DisTab 0999,VPSHAW,hO_vO_jO,Xpfx=XOP,W=1
DisTab 099A,VPSHAD,hO_jO_vO,Xpfx=XOP,W=0
DisTab 099A,VPSHAD,hO_vO_jO,Xpfx=XOP,W=1
DisTab 099B,VPSHAQ,hO_jO_vO,Xpfx=XOP,W=0
DisTab 099B,VPSHAQ,hO_vO_jO,Xpfx=XOP,W=1
DisTab 0980,VFRCZPS,hO_jO,Xpfx=XOP,W=0
DisTab 0981,VFRCZPD,hO_jO,Xpfx=XOP,W=0
DisTab 0982,VFRCZSS,hO_jO,Xpfx=XOP,W=0
DisTab 0983,VFRCZSD,hO_jO,Xpfx=XOP,W=0
DisTab 09C1,VPHADDBW,hO_jO,Xpfx=XOP,W=0
DisTab 09C2,VPHADDBD,hO_jO,Xpfx=XOP,W=0
DisTab 09C3,VPHADDBQ,hO_jO,Xpfx=XOP,W=0
DisTab 09C6,VPHADDWD,hO_jO,Xpfx=XOP,W=0
DisTab 09C7,VPHADDWQ,hO_jO,Xpfx=XOP,W=0
DisTab 09D1,VPHADDUBW,hO_jO,Xpfx=XOP,W=0
DisTab 09D2,VPHADDUBD,hO_jO,Xpfx=XOP,W=0
DisTab 09D3,VPHADDUBQ,hO_jO,Xpfx=XOP,W=0
DisTab 09D6,VPHADDUWD,hO_jO,Xpfx=XOP,W=0
DisTab 09D7,VPHADDUWQ,hO_jO,Xpfx=XOP,W=0
DisTab 09CB,VPHADDDQ,hO_jO,Xpfx=XOP,W=0
DisTab 09DB,VPHADDUDQ,hO_jO,Xpfx=XOP,W=0
DisTab 09E1,VPHSUBBW,hO_jO,Xpfx=XOP,W=0
DisTab 09E2,VPHSUBWD,hO_jO,Xpfx=XOP,W=0
DisTab 09E3,VPHSUBDQ,hO_jO,Xpfx=XOP,W=0
DisTab 08CC,VPCOMB,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08CD,VPCOMW,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08CE,VPCOMD,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08CF,VPCOMQ,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08EC,VPCOMUB,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08ED,VPCOMUW,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08EE,VPCOMUD,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 08EF,VPCOMUQ,hO_vO_jO_ib,Xpfx=XOP,W=0
DisTab 0F0E,FEMMS,@
DisTab 0FBC,BSF,hR_jR
DisTab 0FBD,BSR,hR_jR
DisTab 0F01,INVLPG,jR,Epfx=NP,RegOp=7
DisTab 0FAE,CLFLUSH,jM,Epfx=NP,RegOp=7
DisTab 0FAE,CLFLUSHOPT,jM,Epfx=66,RegOp=7
DisTab 0F18,HINT_NOP,hR_jR@hint_nop,Mod=3
DisTab 0F19,HINT_NOP,hR_jR@hint_nop,Mod=3
DisTab 0F1A,HINT_NOP,hR_jR@hint_nop
DisTab 0F1B,HINT_NOP,hR_jR@hint_nop
DisTab 0F1C,HINT_NOP,hR_jR@hint_nop
DisTab 0F1D,HINT_NOP,hR_jR@hint_nop
DisTab 0F1E,HINT_NOP,hR_jR@hint_nop
DisTab 0F1F,HINT_NOP,hR_jR@hint_nop
DisTableEnd: ; End of table.
[.text]
- ↑ DisTabProc
- Procedure DisTabProc will disassemble one prefix or machine instruction.
It does not call FlushDii, instead it returns CF=0 to tell its parent (Disasm)
to call FlushDii and reinitialize Dii, or it returns CF=1, which tells Disasm
to not initialize Dii (after prefix) and continue with disassembly of not-prefixed instruction.
- Input
-
Dii is initialized and perhaps some prefixes are incorporated in it.
Dii.Opcode is loaded with the first one, two or three bytes
of the disassembled prefix or instruction. It may be
- legacy prefix 0x26, 0x2E, 0x36, 0x3E, 0x64, 0x65, 0x66, 0x67, 0xF0, 0xF2, 0xF3
- 0x00000040..0x0000004F (REX)
- 0x008FXXXX (XOP prefix)
- 0x0000C5XX (VEX2 prefix)
- 0x00C4XXXX (VEX3 prefix)
- 0x62XXXXXX (MVEX ot EVEX prefix)
- Three-byte opcode 0x000F38XX
- Three-byte opcode 0x000F3AXX
- Two-byte opcode 0x00000FXX
- One-byte opcode 0x000000XX
R8= points behind this one-byte opcode in disassembled code, perhaps at ModR/M or at the next instruction.
RBX= is DIS.Conditions. Layout of EBX is at DIS.Conditions.
- Output
- CF=1 Dii.Opcode was a prefix and no more than 4 prefixes are incorporated yet.
R8 is increased by the prefix size. Information from prefix is incorporated to Dii,
which will be not flushed nor initialized.
CF=0 Dii.Opcode was not a prefix. R8 is increased by the instruction size
including eventual displacement and immediate, so it points to the next instruction.
Dii will be flushed and then reiniatialized.
DisTabProc PROC
MOV EAX,DisTypeMask ; EAX = OpsType ordinal (1..3FFh)
AND EAX,EBX ; EBX = DIS.Conditions
MOV EDX,[Dii.Opcode] ; EDX = Dii.Opcode
MOV RSI,[Dii.Operation]
AND EAX,DisTypeMask
Dispatch AX,%DisTypeList
; *********** Helper subprocedures
.NotInstruction:
DEC R8
LEA RAX,[="DB"]
MOV [Dii.Operation],RAX
LEA RDI,[MemoryLine]
MOV [Dii.Operand1],RDI
XOR EAX,EAX
MOV [Dii.Operand2],RAX
MOV [Dii.Operand3],RAX
MOV AX,'0x'
STOSW
MOV DL,[R8-1]
CALL StoDL
XOR EAX,EAX
STOSB
JMP .Flush:
.invalid: ; The byte at Dii.$VA is invalid. Display as DB and let R8=Dii.$VA+1.
LEA RDI,[="DB"]
MOV [Dii.Operation],RDI
LEA RDI,[MemoryLine]
MOV [Dii.Operand1],RDI
MOV AX,'0x'
STOSW
MOV R8,[Dii.$VA]
ADD R8,[InputPtr::]
MOV DL,[R8]
INC R8
CALL StoDL
XOR EAX,EAX
STOSB
JMP .Flush:
.StorePrefixName: PROC
nr %FOR 1,2,3,4
LEA RDX,[Dii.Prefix%nr]
MOV RCX,[RDX]
JRCXZ .S5: ; Jump when a free slot is found.
%ENDFOR nr
CALL FlushDii ; When all four prefix names are occupied.
DEC R8 ; Return back to the unhandled prefix.
MOV RAX,R8
CALL DiiInitialize
JMP DisTabProc.NoFlush:
.S5:MOV [RDX],RSI
JMP DisTabProc.NoFlush:
ENDP .StorePrefixName:
.Moffs PROC
CALL ModifyDefaultWidth
CALL Moffs
LEA RAX,[MoffsLine]
MOV [Dii.CODE],'S'
RET
ENDP .Moffs
; *********** OpcType subprocedures dispatched by %DisTypes
.VSIB: SetSt [Dii.Flags],flagVSIB
MOV AL,[Dii.VvvvNr]
AND AL,0001_0000b
OR [Dii.IndexNr],AL
MOV ECX,[Dii.Flags]
SHR ECX,1
AND ECX,3
SHL CL,3 ; CL=0,8,16.
MOV EDX,'XYZ?' ; DL='X', DH='Y'.. for 128,256,512 SIMD.
MOV EBX,'XXY' ; EDX for Reg/Op register, EBX for index register.
; Check for exceptions.
MOV AL,[R8-1] ; Opcode (0x90..0x93 or 0xA0..0xA3).
AND AL,0000_0011b
Dispatch AL,0x0,0x1,0x2,0x3
RET
.0x0: JSt [Dii.Status],stW,.VSIB5:
JMP .VSIB3:
.0x1: JNSt [Dii.Status],stW,.VSIB4:
JMP .VSIB3:
.0x2: JSt [Dii.Status],stW,.VSIB5:
JMP .VSIB3:
.0x3: JNSt [Dii.Status],stW,.VSIB4:
.VSIB3:MOV EBX,EDX ; EBX=EDX='XYZ'
.VSIB4:XCHG EBX,EDX
.VSIB5:SHR EDX,CL
SHR EBX,CL
MOV [Dii.Family+0],DL ; Reg/Op.
MOV [Dii.Family+3],BL ; Index.
RET
.CRCq: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand2],RAX
LEA RSI,[Reg64]
MOV CL,[Dii.OperNr]
CALL SelectByCL
MOV [Dii.Operand1],RSI
JMP .Flush:
.DATAo:CALL GetSimdDataWidth ; Depends on the last 2 characters of instruction mnemo.
MOV [Dii.DATA],AL
RET
.DATAx:MOV [Dii.DATA],'O'
RET
.DATAy:MOV [Dii.DATA],'Y'
RET
.DATAz:MOV [Dii.DATA],'Z'
RET
.DATAa:CALL GetOperWidth
MOV [Dii.DATA],AL
SetSt [Dii.Flags],flagNoDATAinMod3
RET
.DATAb:MOV [Dii.DATA],'B'
SetSt [Dii.Flags],flagNoDATAinMod3
RET
.DATAw:MOV [Dii.DATA],'W'
SetSt [Dii.Flags],flagNoDATAinMod3
RET
.DATAd:MOV [Dii.DATA],'D'
SetSt [Dii.Flags],flagNoDATAinMod3
RET
.DATAq:MOV [Dii.DATA],'Q'
SetSt [Dii.Flags],flagNoDATAinMod3
RET
.DISTs:MOV [Dii.DIST],'S'
RET
.DISTn:MOV [Dii.DIST],'N'
RET
.DISTf:MOV [Dii.DIST],'F'
RET
.CODEl:MOV [Dii.CODE],'L'
RET
.CODEs:MOV [Dii.CODE],'S'
RET
.ERRR: MOV [Dii.Family],'ERRR'
RET
.KKKK: MOV [Dii.Family],'KKKK'
RET
.KOOO: MOV [Dii.Family],'KOOO'
RET
.KRKK: MOV [Dii.Family],'KRKK'
RET
.KRRR: MOV [Dii.Family],'KRRR'
RET
.NRRR: MOV [Dii.Family],'NRRR'
RET
.NNNN: MOV [Dii.Family],'NNNN'
RET
.OOOO: MOV [Dii.Family],'OOOO'
RET
.OOKO: MOV [Dii.Family],'OOKO'
RET
.OKOO: MOV [Dii.Family],'OKOO'
RET
.OROO: MOV [Dii.Family],'OROO'
RET
.OXOO: MOV [Dii.Family],'OXOO'
RET
.OYOO: MOV [Dii.Family],'OYOO'
RET
.ORRR: MOV [Dii.Family],'ORRR'
RET
.OUOO: MOV [Dii.Family],'OUOO'
RET
.ROOO: MOV [Dii.Family],'ROOO'
RET
.RKKK: MOV [Dii.Family],'RKKK'
RET
.RUUU: MOV [Dii.Family],'RUUU'
RET
.SRRR: MOV [Dii.Family],'SRRR'
RET
.UOOO: MOV [Dii.Family],'UOOO'
RET
.URRR: MOV [Dii.Family],'URRR'
RET
.UUUU: MOV [Dii.Family],'UUUU'
RET
.RXXX: MOV [Dii.Family],'RXXX'
RET
.XRRR: MOV [Dii.Family],'XRRR'
RET
.XRXX: MOV [Dii.Family],'XRXX'
RET
.KXXX: MOV [Dii.Family],'KXXX'
RET
.XYXX: MOV [Dii.Family],'XYXX'
RET
.XXXX: MOV [Dii.Family],'XXXX'
RET
.XXY: MOV AL,'Y' ; Return AL=X|X|Y, AH=O|Y|Z depending on L,L`
MOV AH,'Z'
JSt [Dii.Flags],flagS2,.XXY9:
MOV AL,'X'
MOV AH,'Y'
JSt [Dii.Flags],flagS1,.XXY9:
MOV AH,'O'
.XXY9:RET
.OperWidth8:
MOV [Dii.OperWidth],OperWidth8
RET
.OperWidth16:
MOV [Dii.OperWidth],OperWidth16
RET
.OperWidth32:
MOV [Dii.OperWidth],OperWidth32
RET
.OperWidth64:
MOV [Dii.OperWidth],OperWidth64
RET
tuple %FOR FVM,FV64,FV32,FV16,HVM,HV32,HV16,QV16,QVM,OVM
.%tuple: MOV [Dii.Disp8EVEX],%tuple
RET
%ENDFOR tuple
tuple %FOR T8,T16,T32,T64,T128,T256
.%tuple: MOV [Dii.Disp8EVEX],%tuple
MOV [Dii.Disp8MVEX],%tuple
MOV [Dii.DISP],0
RET
%ENDFOR tuple
tuple %FOR MFVM,MFV64,MFV32,MHV32
.%tuple: MOV [Dii.Disp8MVEX],%tuple
MOV [Dii.DISP],0
RET
%ENDFOR tuple
.h: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
JMP .Flush
.h_i: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
CALL Imm2
MOV [Dii.Operand2],RCX
JMP .Flush
.h_j: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JMP .Flush
.h_j_i:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL Imm2:
MOV [Dii.Operand3],RCX
JMP .Flush
.h_j_ib: ; PINSR
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL Imm2
MOV [Dii.Operand3],RCX
JNSt [Dii.Status],stMod3,.Flush:
MOV CL,[Dii.BaseNr]
MOV AL,[Dii.DATA]
Dispatch AL,'B','W','D'
LEA RSI,[Reg64]
JMP .hji5:
.D: LEA RSI,[Reg32]
JMP .hji5:
.W: LEA RSI,[Reg16]
JMP .hji5:
.B: LEA RSI,[Reg8REX]
JSt [Dii.Prefix],pfxREX,.hji5:
LEA RSI,[Reg8]
.hji5: CALL SelectByCL
MOV [Dii.Operand2],RSI
JMP .Flush
.h_j_id:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
MOV [Dii.ImmSize],4
MOV [Dii.OperWidth],OperWidth32
CALL Imm:
MOV [Dii.Operand3],RCX
JMP .Flush
.h_j_v:CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
MOV [Dii.Operand3],RBX
JMP .Flush:
.h_v_is4_j:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand4],RAX
CALL Imm2XMM:
MOV [Dii.Operand3],RCX
INC R8
JMP .Flush
.h_v_j:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand3],RAX
JMP .Flush
.h_v_j_i:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand3],RAX
CALL Imm2
MOV [Dii.Operand4],RCX
JMP .Flush
.h_v_j_ib:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand3],RAX
CALL Imm2
MOV [Dii.Operand4],RCX
JMP .Flush
.ie:
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.IMM],AL
MOV [Dii.ImmSize],AH
CALL Imm
MOV AL,[Dii.IMM]
JNSt [Dii.Status],stMode64,.iX5:
MOV AL,'Q'
.iX5:MOV [Dii.DATA],AL
JNSt [Dii.OperWidth],OperWidth16,.iX7:
MOV [Dii.DATA],'W'
.iX7:LEA RAX,[ImmLine]
MOV [Dii.Operand1],RAX
JMP .Flush:
.j: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
JMP .Flush
.j_ib: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
CALL Imm2
MOV [Dii.Operand2],RCX
JMP .Flush:
.j_h: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
JMP .Flush:
.j_h_i:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
CALL Imm2
MOV [Dii.Operand3],RCX
JMP .Flush:
.j_h_v:CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
MOV [Dii.Operand3],RBX
JMP .Flush:
.j_i: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
CALL Imm2
MOV [Dii.Operand2],RCX
CALL .DATAa:
JMP .Flush:
.j_ibse:CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
SetSt [Dii.Flags],flagImmSignExt
CALL GetOperWidth
MOV [Dii.DATA],AL
MOV [Dii.OperWidth],OperWidth8
CALL Imm
MOV [Dii.Operand2],RCX
JMP .Flush
.j_ie: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
SetSt [Dii.Flags],flagImmSignExt
CALL Imm
MOV [Dii.Operand2],RCX
CALL .DATAa:
JMP .Flush
.j_v_h:CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand3],RDX
JMP .Flush
.v_j: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RBX
MOV [Dii.Operand2],RAX
JMP .Flush:
.v_j_i:CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RBX
MOV [Dii.Operand2],RAX
CALL Imm2:
MOV [Dii.Operand3],RCX
JMP .Flush
.v_j_id:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RBX
MOV [Dii.Operand2],RAX
CALL .OperWidth32
CALL Imm:
MOV [Dii.Operand3],RCX
JMP .Flush:
.v_lb: MOV CL,[Dii.VvvvNr]
LEA RSI,[RegKey]
CALL SelectByCL
MOV [Dii.Operand1],RSI
MOV [Dii.ImmSize],1
CALL ImmRel
MOV [Dii.Operand2],RCX
JMP .Flush
.v_ld: MOV CL,[Dii.VvvvNr]
LEA RSI,[RegKey]
CALL SelectByCL
MOV [Dii.Operand1],RSI
MOV [Dii.ImmSize],4
CALL ImmRel
MOV [Dii.Operand2],RCX
JMP .Flush
; Subprocedures for each member of DisTypeList. They terminate with JMP .Flush: or JMP .NoFlush:
.@1: INC R8
.@: SetSt [Dii.Prefix],pfx66NotUsed+pfx67NotUsed+pfxREXNotUsed
JMP .Flush:
.@bswap:
MOV CL,[Dii.Opcode]
AND CL,0000_0111b
JNSt [Dii.Prefix],0x0000_0001, .BSW2
OR CL,0000_1000b
.BSW2:LEA RSI,[Reg64]
JSt [Dii.Prefix], 0x0000_0008,.BSW5:
LEA RSI,[Reg32]
.BSW5:CALL SelectByCL
MOV [Dii.Operand1],RSI
JMP .Flush
.@DATAa:
CALL .DATAa:
JMP .Flush:
.@DATAq:
CALL .DATAq:
JMP .Flush:
.@DISTf:
CALL .DISTf:
JMP .Flush
.@DISTn:
CALL .DISTn:
JMP .Flush
.@iret:
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.@jcc:
CALL .DISTs:
MOV [Dii.IMM],'B'
MOV [Dii.ImmSize],1
CALL ImmRel:
MOV [Dii.Operand1],RCX
JMP .Flush:
.@jcce:SetSt [Dii.Flags],flagImmSignExt
CALL .DISTn:
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV CL,AL
CMP [Dii.AddrWidth],AddrWidth64
JNE .@je5: ; AL=W|D AH=2|4
MOV AL,'Q'
MOV CL,'D'
MOV AH,4
.@je5:MOV [Dii.DATA],AL
MOV [Dii.IMM],CL
MOV [Dii.ImmSize],AH
CALL ImmRel:
MOV [Dii.Operand1],RCX
JMP .Flush:
.@jcxz:CALL ModifyDefaultWidth
MOV AL,[Dii.AddrWidth]
LEA RSI,[="JCXZ"]
CMP AL,AddrWidth16
JE .jcxz5:
LEA RSI,[="JECXZ"]
CMP AL,AddrWidth32
JE .jcxz5:
LEA RSI,[="JRCXZ"]
.jcxz5:MOV [Dii.Operation],RSI
MOV [Dii.ImmSize],1
CALL ImmRel
MOV [Dii.Operand1],RCX
JMP .Flush:
.@opc98: ; CBW | CWDE | CDQE
CALL ModifyDefaultWidth
LEA RSI,[="CBW"]
CMP [Dii.OperWidth],OperWidth16
JE .@o5:
LEA RSI,[="CDQE"]
JSt [Dii.Status],stW,.@o5:
LEA RSI,[="CWDE"]
.@o5:MOV [Dii.Operation],RSI
JMP .Flush:
.@opc99: ; CWD | DDQ | CQO
CALL ModifyDefaultWidth
LEA RSI,[="CWD"]
CMP [Dii.OperWidth],OperWidth16
JE .995
LEA RSI,[="CQO"]
JSt [Dii.Status],stW,.995:
LEA RSI,[="CDQ"]
.995:MOV [Dii.Operation],RSI
JMP .Flush
.@pfxLg: ; Legacy prefixes.
JSt [Dii.Prefix],pfxNoMore,.invalid:
Dispatch DL, 0x26, 0x2E, 0x36, 0x3E, 0x64, 0x65, 0x66, 0x67, 0xF0, 0xF2, 0xF3
JMP .NoFlush:
.0x26:JSt [Dii.Prefix],pfx26,.invalid:
SetSt [Dii.Prefix],pfx26
JMP .StorePrefixName
.0x2E:JSt [Dii.Prefix],pfx2E,.invalid:
SetSt [Dii.Prefix],pfx2E
JMP .StorePrefixName
.0x36:JSt [Dii.Prefix],pfx36,.invalid:
SetSt [Dii.Prefix],pfx36
JMP .StorePrefixName
.0x3E:JSt [Dii.Prefix],pfx3E,.invalid:
SetSt [Dii.Prefix],pfx3E
JMP .StorePrefixName
.0x64:JSt [Dii.Prefix],pfx64,.invalid:
SetSt [Dii.Prefix],pfx64
JMP .StorePrefixName
.0x65:JSt [Dii.Prefix],pfx65,.invalid:
SetSt [Dii.Prefix],pfx65
JMP .StorePrefixName
.0x66:JSt [Dii.Prefix],pfx66,.invalid:
SetSt [Dii.Prefix],pfx66
JMP .StorePrefixName
.0x67:JSt [Dii.Prefix],pfx67,.invalid:
SetSt [Dii.Prefix],pfx67
JMP .StorePrefixName
.0xF0:JSt [Dii.Prefix],pfxF0,.invalid:
SetSt [Dii.Prefix],pfxF0
JMP .StorePrefixName
.0xF2:JSt [Dii.Prefix],pfxF2,.invalid:
SetSt [Dii.Prefix],pfxF2
JMP .StorePrefixName
.0xF3:JSt [Dii.Prefix],pfxF3,.invalid:
SetSt [Dii.Prefix],pfxF3
JMP .StorePrefixName
.@pfxMEVEX:
CALL PfxMEVEXAccept
JMP .NoFlush:
.@pfxREX:
CALL PfxREXAccept
JMP .NoFlush:
.@pfxVEX2:
CALL PfxVEX2Accept
JMP .NoFlush:
.@pfxVEX3:
CALL PfxVEX3Accept
JMP .NoFlush:
.@pfxXOP:
CALL PfxXOPAccept
JMP .NoFlush:
.@pushapopa:
CALL ModifyDefaultWidth
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.@pushpop0:
JSt [Dii.Status],stMode64,.invalid:
.@pushpop1:
CALL ModifyDefaultWidth
CALL GetOperWidth
JNSt [Dii.Status],stMode64, .@pushpop4:
CMP AL,'D'
JNE .@pushpop4:
MOV AL,'Q'
.@pushpop4:
MOV [Dii.DATA],AL
MOV [Dii.Operand1],RSI
JMP .Flush
.@pushpopCS: LEA RSI,[RegCS]
JMP .@pushpop0:
.@pushpopDS: LEA RSI,[RegDS]
JMP .@pushpop0:
.@pushpopES: LEA RSI,[RegES]
JMP .@pushpop0:
.@pushpopFS: LEA RSI,[RegFS]
JMP .@pushpop1:
.@pushpopGS: LEA RSI,[RegGS]
JMP .@pushpop1:
.@pushpopSS: LEA RSI,[RegSS]
JMP .@pushpop0:
.@retf:
CALL .DISTf:
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.@retn: ; RETN
CALL .DISTn:
SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.@vzero: ; flagS1=0 VZEROUPPER flagS1=1 VZEROALL
LEA RSI,[=B"VZEROALL"]
JSt [Dii.Flags],flagS1, .@v5:
LEA RSI,[=B"VZEROUPPER"]
.@v5: MOV [Dii.Operation],RSI
JMP .Flush:
.@xlat:CALL ModifyDefaultWidth
SetSt [Dii.Prefix],pfx66NotUsed
MOV CL,[Dii.AddrWidth]
LEA EAX,[=B"[BX]"]
CMP CL,AddrWidth16
JE .xl6:
LEA EAX,[=B"[RBX]"]
JSt [Dii.Prefix],pfxREX,.xl6:
LEA EAX,[=B"[EBX]"]
.xl6:MOV [Dii.Operand1],RAX
JMP .Flush
.a@DISTf: ; CALL|JMP 16:16|16:32,DIST=F
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
CALL ModifyDefaultWidth
OR [Dii.Flags],flagImmFar
MOV [Dii.DIST],'F'
MOV [Dii.ADDR],'A'
MOV AL,'W'
CMP [Dii.OperWidth],OperWidth16
JE .EA2:
MOV AL,'D'
.EA2:MOV [Dii.IMM],AL
CALL Imm
MOV [Dii.Operand1],RCX
JMP .Flush
.a_AL@CODEs:
MOV [Dii.OperWidth],OperWidth8
SetSt [Dii.Prefix],pfx66NotUsed
.a_eAX@CODEs:
MOV [Dii.CODE],'S'
CALL .Moffs:
MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RSI
JMP .Flush
.aAX_ie@CODEs:
CALL .CODEs:
.aAX_ie: ; AX, i16 | EAX, i32
CALL ModifyDefaultWidth
SetSt [Dii.Prefix],pfx67NotUsed
SetSt [Dii.Flags],flagImmSignExt
CALL Imm
CALL GetAccum
LEA RDX,[ImmLine]
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
JMP .Flush
.AL_a@CODEs:
MOV [Dii.CODE],'S'
MOV [Dii.OperWidth],OperWidth8
SetSt [Dii.Prefix],pfx66NotUsed
JMP .eAX_a@CODEs:
.AL_DX:
CALL .OperWidth8:
JMP .eAX_DX:
.AL_ib@CODEs:
CALL .CODEs:
.AL_ib: ; AL, ib
CALL .OperWidth8
SetSt [Dii.Prefix],pfx66NotUsed+pfx67NotUsed+pfxREXNotUsed
JMP .aAX_ie:
.AL_Pb: ; LODS
MOV [Dii.OperWidth],OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
JMP .eAX_Pe:
.AL_Tb: ; SCAS
MOV [Dii.OperWidth],OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
JMP .eAX_Te:
.dest_hO_jO: ; MASKMOVDQU
CALL .OOOO:
.dest5:
CALL ModifyDefaultWidth
SetSt [Dii.Flags],flagOverrideES
CALL GetStringRegs
MOV [Dii.Operand1],RCX
CALL GetModRMReg
MOV [Dii.Operand2],RDX
MOV [Dii.Operand3],RAX
JMP .Flush
.dest_hU_jU: ; MASKMOVQ
CALL .UUUU:
JMP .dest5:
.DX_AL:
SetSt [Dii.Prefix],pfx66NotUsed+pfx67NotUsed+pfxREXNotUsed
MOV [Dii.OperWidth],OperWidth8
.DX_eAX:
CALL ModifyDefaultWidth
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
CALL GetAccum
LEA RDX,[RegDX]
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JMP .Flush
.DX_Pb: ; OUTS
MOV [Dii.OperWidth],OperWidth8
;JMP .DX_Pe:
.DX_Pe:
SetSt [Dii.Prefix],pfxREXNotUsed
CALL ModifyDefaultWidth
CALL GetStringRegs
LEA RDX,[RegDX]
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush
.eAX@:
CALL GetAccum:
MOV [Dii.Operand1],RAX
JMP .Flush:
.eAX_a@CODEs:
MOV [Dii.CODE],'S'
CALL .Moffs:
MOV [Dii.Operand1],RSI
MOV [Dii.Operand2],RCX
JMP .Flush
.eAX_DX:
SetSt [Dii.Prefix],pfxREXNotUsed
CALL ModifyDefaultWidth
CALL GetAccum
LEA RCX,[RegDX]
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],ECX
JMP .Flush
.eAX_ECX:
CALL GetAccum:
MOV [Dii.Operand1],RAX
LEA RCX,[RegECX]
MOV [Dii.Operand2],RCX
JMP .Flush:
.eAX_ib@in:
CALL ModifyDefaultWidth
CALL Imm2
CALL GetAccum:
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RCX
JMP .Flush
.eAX_Pe:
CALL ModifyDefaultWidth
CALL GetAccum
MOV [Dii.Operand1],RAX
CALL GetStringRegs
MOV [Dii.Operand2],RAX
JMP .Flush
.eAX_Ropc: ; XCHG eAX,Reg. DL=ModRM
SetSt [Dii.Prefix],pfx67NotUsed
MOV CL,0000_0111b
AND CL,DL
TEST [Dii.BaseNr],0000_1000b
JZ .bR1:
OR CL,0000_1000b
.bR1:CMP CL,0
JNZ .bR2:
JSt [Dii.Prefix],pfx66|pfx67|pfxREX, .bR2:
LEA RSI,[="NOP"]
MOV [Dii.Operation],RSI
XOR EDX,EDX
XOR ESI,ESI
JMP .bR4:
.bR2:CALL ModifyDefaultWidth
LEA RSI,[Reg16]
LEA RDX,[RegAX]
TEST [Dii.OperWidth],OperWidth16
JNZ .bR3:
LEA RSI,[Reg64]
LEA RDX,[RegRAX]
TEST [Dii.OperWidth],OperWidth64
JNZ .bR3:
LEA RSI,[Reg32]
LEA RDX,[RegEAX]
.bR3:CALL SelectByCL
.bR4:MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RSI
JMP .Flush
.eAX_Te:
CALL ModifyDefaultWidth
CALL GetAccum
MOV [Dii.Operand1],RAX
CALL GetStringRegs
MOV [Dii.Operand2],RCX
JMP .Flush
.GPRfromOpc: ; INC,DEC,PUSH
SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL .CODEs:
MOV CL,0x07
AND CL,DL
OR [Dii.BaseNr],CL
MOV CL,[Dii.BaseNr]
LEA RSI,[Reg16]
CMP [Dii.OperWidth],OperWidth16
JE .G6:
LEA RSI,[Reg32]
.G6:CALL GetRegByCL
MOV [Dii.Operand1],RSI
JMP .Flush:
.Grp9B:
SetSt [Dii.Prefix],pfx66NotUsed+pfxREXNotUsed
SetSt [Dii.Flags],flagFWAIT
MOV AL,[R8] ; Peek two bytes to find out if prefix can apply.
CMP AL,0xD9
JNE .9B2:
MOV AL,[R8+1]
AND AL,0011_0000b
CMP AL,0011_0000b
JE .NoFlush:
.9B2:CMP AL,0xDD
JNE .9B4:
MOV AL,[R8+1]
AND AL,0011_0000b
CMP AL,0011_0000b
JE .NoFlush:
.9B4:MOV AL,[R8]
CMP AL,0xDB
JNE .9B5:
MOV AL,[R8+1]
CMP AL,0xE0
JB .FW:
CMP AL,0xE4
JA .FW:
JMP .NoFlush: ; Keep prefix FWAIT = 0x9B.
.9B5:CMP AL,0xDF
JNE .FW:
MOV AL,[R8+1]
CMP AL,0xE0
JE .NoFlush:
.FW: LEA RSI,[="FWAIT"]
MOV [Dii.Operation],RSI
JMP .Flush:
.GrpD8: ; GrpD8 ST0,m32
MOV [Dii.Family+1],familyF
MOV [Dii.DATA],'D'
SetSt [Dii.Prefix],pfx66NotUsed
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand2],RAX
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
MOV CL,0011_1000b
AND CL,[Dii.ModRM]
SHR CL,3
LEA RSI,[OperGrpD8]
CALL SelectByCL
MOV [Dii.Operation],RSI
JMP .Flush
.GrpD9:
SetSt [Dii.Prefix],pfx66NotUsed
MOV [Dii.Family+1],familyF
MOV AL,[R8] ; Peek ModR/M
SHR AL,6
CMP AL,3 ; Mod=3?
JE .D9p:
CALL ModifyDefaultWidth; Mod=0|1|2
CALL GetModRMReg
; MOV [Dii.Operand2],RAX
MOV [Dii.Operand1],RAX
MOV CL,[Dii.OperNr] ; RegOp
AND CL,0000_0111b
CMP CL,1
JE .NotInstruction:
CMP CL,0 ; FLD?
JE .D9i:
CMP CL,3 ; FSTP?
JE .D9i:
CMP CL,2
JNE .D9j:
.D9i:MOV [Dii.DATA],'D'
.D9j:CMP CL,5 ; FLDCW?
JE .D9k:
CMP CL,7 ; FSTCW?
JNE .D9l:
.D9k:MOV [Dii.DATA],'W'
.D9l:JNSt [Dii.Flags],flagFWAIT,.D9n:
CMP CL,6
JB .D9n:
JA .D9m:
LEA RSI,[=B"FSTENV"]
JMP .D9o:
.D9m:LEA RSI,[=B"FSTCW"]
JMP .D9o:
.D9n:LEA RSI,[OperGrpD9]
CALL SelectByCL
.D9o:MOV [Dii.Operation],RSI
JMP .Flush
.D9p:MOV CL,[R8] ; Mod=3.
INC R8
MOV AL,1111_1000b
AND AL,CL
AND CL,7
CMP AL,0xC0
JNE .D9r:
LEA RBX,[="FLD"]
.D9q:MOV [Dii.Operation],RBX
LEA RSI,[RegFP]
CALL SelectByCL
MOV [Dii.Operand2],RSI
JMP .Flush
.D9r:CMP AL,0xC8
JNE .D9s:
LEA RBX,[="FXCH"]
JMP .D9q:
.D9s:MOV AL,[R8-1] ; Load ModR/M again.
CMP AL,0xE0
JAE .D9t:
CMP AL,0xD0
JNE .NotInstruction:
LEA RBX,[="FNOP"]
MOV [Dii.Operation],RBX
MOV [Dii.Operand1],0
JMP .Flush
.D9t:MOV CL,0x1F
AND CL,AL
LEA RSI,[OperGrpD9E]
CALL SelectByCL
CMPB [RSI],0
JE .NotInstruction:
MOV [Dii.Operation],RSI
JMP .Flush
.GrpDA:
SetSt [Dii.Prefix],pfx66NotUsed
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
MOV AL,[R8] ; Preload ModR/M
SHR AL,6
CMP AL,3 ; Mod=3?
JE .DA2:
CALL ModifyDefaultWidth ; Update Dii.OperWidth and Dii.AddrWidth by prefixes 66,67,REX.W
CALL GetModRMReg
MOV [Dii.Operand2],RAX
MOV [Dii.DATA],'D'
LEA RSI,[OperGrpDA]
MOV CL,[Dii.OperNr]
AND CL,0000_0111b
CALL SelectByCL
MOV [Dii.Operation],RSI
JMP .Flush
.DA2:MOV CL,[R8] ; Mod=3.
INC R8
MOV AL,1111_1000b
AND AL,CL
CMP AL,0xC8
JAE .DA3:
LEA RBX,[="FCMOVB"]
JMP .DA6:
.DA3:CMP AL,0xD0
JAE .DA4:
LEA RBX,[="FCMOVE"]
JMP .DA6:
.DA4:CMP AL,0xD8
JAE .DA5:
LEA RBX,[="FCMOVBE"]
JMP .DA6:
.DA5:CMP AL,0xE0
JAE .DA7:
LEA RBX,[="FCMOVU"]
.DA6:MOV [Dii.Operation],RBX
AND CL,7
LEA RSI,[RegFP]
CALL SelectByCL
MOV [Dii.Operand2],RSI
JMP .Flush
.DA7:CMPB [R8-1],0xE9
JNE .NotInstruction:
LEA RSI,[RegST1]
MOV [Dii.Operand2],RSI
LEA RSI,[="FUCOMPP"]
MOV [Dii.Operation],RSI
JMP .Flush
.GrpDB: ; ST0,Sti
SetSt [Dii.Prefix],pfx66NotUsed
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RAX
MOV AL,[R8] ; Preload ModR/M
SHR AL,6
CMP AL,3 ; Mod=3?
JE .DB6:
CALL ModifyDefaultWidth ; Update Dii.OperWidth and Dii.AddrWidth by prefixes 66,67,REX.W
CALL GetModRMReg
MOV CL,[Dii.OperNr]
AND CL,0000_0111b
MOV EDX,ECX ; DL=0..7 (ModR/M RM).
LEA RSI,[OperGrpDB]
CALL SelectByCL
CMPB [RSI],0
JE .NotInstruction:
MOV [Dii.Operation],RSI
MOV ECX,[Dii.Memory]
MOV [Dii.DATA],'T'
CMP DL,5
JNE .DB3:
.DB2:MOV [Dii.Operand2],RCX
JMP .Flush
.DB3:CMP DL,7
JNE .DB5:
.DB4:MOV [Dii.Operand1],RCX
JMP .Flush
.DB5:MOV [Dii.DATA],'D'
CMP DL,0
JE .DB2:
CMP DL,4
JE .NotInstruction:
CMP DL,6
JE .NotInstruction:
JMP .DB4:
.DB6:MOV CL,0000_0111b ; Mod=3. R8 points to ModRM.
AND CL,[R8]
INC R8
LEA RSI,[RegFP]
CALL SelectByCL
MOV [Dii.Operand2],RSI
MOV AL,[R8-1]
AND AL,1111_1000b
LEA RBX,[="FCMOVNB"]
CMP AL,0xC0
JE .DB7:
LEA RBX,[="FCMOVNE"]
CMP AL,0xC8
JE .DB7:
LEA RBX,[="FCMOVNBE"]
CMP AL,0xD0
JE .DB7:
LEA RBX,[="FCMOVNU"]
CMP AL,0xD8
JE .DB7:
LEA RBX,[="FUCOMI"]
CMP AL,0xE8
JE .DB7:
LEA RBX,[="FCOMI"]
CMP AL,0xF0
JNE .DB8:
.DB7:MOV [Dii.Operation],RBX
JMP .Flush
.DB8:CMP AL,0xF8
JE .NotInstruction:
CMP AL,0xE0
JNE .NotInstruction:
LEA RSI,[OperGrpDBE:]
JNSt [Dii.Flags],flagFWAIT,.DB9:
LEA RSI,[OperGrpDBEF:]
.DB9:MOV CL,[R8-1]
AND CL,7
CALL SelectByCL
CMPB [RSI],0
JE .NotInstruction:
MOV [Dii.Operation],RSI
MOV [Dii.Operand1],0
MOV [Dii.Operand2],0
JMP .Flush
.GrpDC: ; GrpD8 ST0,m64fp
SetSt [Dii.Prefix],pfx66NotUsed
MOV [Dii.Family+0],familyF
MOV [Dii.Family+1],familyF
CALL ModifyDefaultWidth ; Update Dii.OperWidth and Dii.AddrWidth by prefixes 66,67,REX.
CALL GetModRMReg
JSt [Dii.Status],stMod3,.DC2:
MOV [Dii.Operand2],RAX
MOV [Dii.DATA],'Q'
MOV CL,[Dii.OperNr]
AND CL,0000_0111b
LEA RSI,[OperGrpD8]
CALL SelectByCL
MOV [Dii.Operation],RSI
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
JMP .Flush
.DC2: ; Mod=3
MOV [Dii.Operand1],RAX
LEA RAX,[RegST0]
MOV [Dii.Operand2],RAX
MOV AL,1111_1000b
AND AL,[Dii.ModRM]
LEA RSI,[OperFADD]
CMP AL,0xC0
JE .DC8:
LEA RSI,[OperFMUL]
CMP AL,0xC8
JE .DC8:
LEA RSI,[OperFSUBR]
CMP AL,0xE0
JE .DC8:
LEA RSI,[OperFSUB]
CMP AL,0xE8
JE .DC8:
LEA RSI,[OperFDIVR]
CMP AL,0xF0
JE .DC8:
LEA RSI,[OperFDIV]
CMP AL,0xF8
JNE .NotInstruction:
.DC8:MOV [Dii.Operation],RSI
JMP .Flush
.GrpDD: ; GrpDD mem
SetSt [Dii.Prefix],pfx66NotUsed
CALL ModifyDefaultWidth ; Update Dii.OperWidth and Dii.AddrWidth by prefixes 66,67,REX.W
CALL GetModRMReg
JSt [Dii.Status],stMod3,.DD3
MOV CL,[Dii.OperNr]
AND CL,0000_0111b
MOV DL,CL ; DL=ModR/M RegOp.
LEA RSI,[OperGrpDD]
CALL SelectByCL
CMPB [RSI],0
JE .NotInstruction:
MOV [Dii.Operation],RSI
MOV RCX,[Dii.Memory]
MOV [Dii.Operand1],RCX
Dispatch DL,0n0,0n4,0n6,0n7 ; RegOp /0 /4 /6 /7: FLD FRSTOR FSAVE FSTSW
;;;MOV [Dii.Operand1],RCX
LEA RSI,[RegST0]
MOV [Dii.Operand2],RSI
.DD2:MOV [Dii.DATA],'Q' ; FISTTP,FST,FSTP
JMP .Flush
.0n0:LEA RSI,[RegST0]
MOV [Dii.Operand1],RSI ; FLD
MOV [Dii.Operand2],RCX
JMP .DD2:
.0n4: ; FRSTOR
MOV [Dii.Operand1],RCX ; FNSAVE
JMP .Flush:
.0n6:MOV [Dii.Operand1],RCX
JNSt [Dii.Flags],flagFWAIT,.Flush:
LEA RSI,[=B"FSAVE"]
MOV [Dii.Operation],RSI
JMP .Flush:
.0n7:MOV [Dii.Operand1],RCX ; FNSTSW
JNSt [Dii.Flags],flagFWAIT,.DDw:
LEA RSI,[=B"FSTSW"]
MOV [Dii.Operation],RSI
.DDw:MOV [Dii.DATA],'W'
JMP .Flush:
.DD3:MOV DL,[Dii.ModRM] ; Mod=3.
MOV CL,7
AND CL,DL
AND DL,1111_1000b
LEA RSI,[RegFP]
CALL SelectByCL
LEA RCX,[RegST0]
Dispatch DL,0xC0,0xD0,0xD8,0xE0,0xE8 ; FFREE,FST,FSTP,FUCOM,FUCOMP
JMP .NotInstruction:
.0xC0:LEA RBX,[="FFREE"]
.DD4:MOV [Dii.Operand1],RSI
.DD5:MOV [Dii.Operation],RBX
JMP .Flush
.0xD0:LEA RBX,[OperFST]
.DD6:MOV [Dii.Operand2],RCX
JMP .DD4:
.0xD8:LEA RBX,[OperFSTP]
JMP .DD6:
.0xE0:LEA RBX,[="FUCOM"]
.DD7:MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RSI
JMP .DD5:
.0xE8:LEA RBX,[="FUCOMP"]
JMP .DD7:
.GrpDE: ; GrpDE ST0,m16int
SetSt [Dii.Prefix],pfx66NotUsed
MOV [Dii.Family+1],familyF
CALL ModifyDefaultWidth
CALL GetModRMReg
JSt [Dii.Status],stMod3, .DE2:
MOV CL,[Dii.OperNr]
LEA RSI,[OperGrpDA]
CALL SelectByCL
MOV [Dii.Operation],RSI
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
MOV RCX,[Dii.Memory]
MOV [Dii.Operand2],RCX
MOV [Dii.DATA],'W'
JMP .Flush
.DE2: ; Mod=3
MOV RSI,[Dii.BaseReg]
LEA RAX,[RegST0]
MOV DL,[Dii.ModRM]
CMP DL,0xD9
JNE .DE3
MOV [Dii.Operand1],RAX ; DED9 FCOMPP ST0,ST1
MOV [Dii.Operand2],RSI
LEA RBX,[="FCOMPP"]
MOV [Dii.Operation],RBX
JMP .Flush:
.DE3:
MOV [Dii.Operand1],RSI ; DEC0..DEFF F** ST*,ST0
MOV [Dii.Operand2],RAX
AND DL,1111_1000b
CMP DL,0xC0
LEA RBX,[="FADDP"]
JE .DE8:
CMP DL,0xC8
LEA RBX,[="FMULP"]
JE .DE8:
CMP DL,0xE0
LEA RBX,[="FSUBRP"]
JE .DE8:
CMP DL,0xE8
LEA RBX,[="FSUBP"]
JE .DE8:
CMP DL,0xF0
LEA RBX,[="FDIVRP"]
JE .DE8:
CMP DL,0xF8
LEA RBX,[="FDIVP"]
JNE .NotInstruction:
.DE8:MOV [Dii.Operation],RBX
JMP .Flush
.GrpDF:
SetSt [Dii.Prefix],pfx66NotUsed
MOV [Dii.Family+1],familyF
CALL ModifyDefaultWidth ; Update Dii.OperWidth and Dii.AddrWidth by prefixes 66,67,REX.W
CALL GetModRMReg
JSt [Dii.Status],stMod3,.DF2:
MOV CL,[Dii.OperNr]
AND CL,0000_0111b
MOV DL,CL
LEA RSI,[OperGrpDF]
CALL SelectByCL
MOV [Dii.Operation],RSI
MOV RCX,[Dii.Memory]
LEA RAX,[RegST0]
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RCX
MOV [Dii.DATA],'W'
CMP DL,0
JE .Flush
MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RAX
CMP DL,3
JBE .Flush
MOV [Dii.DATA],'Q'
CMP DL,7
JE .Flush
MOV [Dii.DATA],'T'
CMP DL,6
JE .Flush
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RCX
CMP DL,4
JE .Flush
MOV [Dii.DATA],'Q'
JMP .Flush
.DF2: ; Mod=3.
LEA RAX,[RegST0]
MOV RSI,[Dii.BaseReg]
MOV [Dii.Operand1],RAX
MOV DL,[Dii.ModRM]
AND DL,1111_1000b
Dispatch DL,0XC0,0XE8,0XF0
CMP [Dii.ModRM],0xE0
JNE .NotInstruction:
LEA RBX,[OperFNSTSW]
JNSt [Dii.Flags],flagFWAIT,.DF3:
LEA RBX,[=B"FSTSW"]
.DF3:MOV [Dii.Operation],RBX
LEA RAX,[RegAX]
MOV [Dii.Operand1],RAX
JMP .Flush
.0XC0:LEA RBX,[="FFREEP"]
MOV [Dii.Operand1],RSI
JMP .DF8:
.0XE8:LEA RBX,[="FUCOMIP"]
JMP .DF6:
.0XF0:LEA RBX,[="FCOMIP"]
.DF6:MOV [Dii.Operand2],RSI
.DF8:MOV [Dii.Operation],RBX
JMP .Flush
.hC_jR:
MOV [Dii.Family],'CR'
SetSt [Dii.Flags],flagProm64
CALL .OperWidth32:
JMP .h_j:
.hE_jRd:
CALL .OperWidth32:
CALL .ERRR:
JMP .h_j:
.hG_jR:
MOV [Dii.Family],'GR'
SetSt [Dii.Flags],flagProm64
CALL .OperWidth32:
JMP .h_j:
.hK_jK:
CALL .KKKK:
JMP .h_j:
.hK_jK_ib:CALL .KKKK:
JMP .h_j_i:
.hK_jO:CALL .KOOO:
JMP .h_j:
.hK_jO_ib@DATAo@FV16:
CALL .DATAo:
CALL .KOOO:
CALL .FV16:
JMP .h_j_i:
.hK_jO_ib@DATAo@FV32:
CALL .DATAo:
CALL .KOOO:
CALL .FV32:
JMP .h_j_i:
.hK_jO_ib@DATAo@FV64:
CALL .DATAo:
CALL .KOOO:
CALL .FV64:
JMP .h_j_i:
.hK_jO_ib@T16:
CALL .KOOO:
CALL .T16:
JMP .h_j_i:
.hK_jO_ib@T32:
CALL .KOOO:
CALL .T32:
JMP .h_j_i:
.hK_jO_ib@T64:
CALL .KOOO:
CALL .T64:
JMP .h_j_i:
.hK_jR_ib:
CALL .KRRR:
JMP .h_j_ib:
.hK_jRd:
CALL .KRKK:
CALL .OperWidth32
JMP .h_j:
.hK_jRq:
CALL .KRKK:
CALL .OperWidth64
JMP .h_j:
.hK_jRq_ib:
CALL .OperWidth64:
CALL .KRRR:
JMP .h_j_ib:
.hK_jX_ib@T16:
CALL .KXXX:
CALL .T16:
JMP .h_j_i:
.hK_jX_ib@T32:
CALL .KXXX:
CALL .T32:
JMP .h_j_i:
.hK_jX_ib@T64:
CALL .KXXX:
CALL .T64:
JMP .h_j_i:
.hK_vK_jK:
CALL .KKKK:
JMP .h_v_j:
.hK_vO_jO@FV32:
CALL .KOOO:
CALL .FV32:
JMP .h_v_j:
.hK_vO_jO@FV64:
CALL .KOOO:
CALL .FV64:
JMP .h_v_j:
.hK_vO_jO@FVM:
CALL .KOOO:
CALL .FVM:
JMP .h_v_j:
.hK_vO_jO@MFV32:
CALL .KOOO:
CALL .MFV32:
JMP .h_v_j:
.hK_vO_jO@MFVM
CALL .KOOO:
CALL .MFVM:
JMP .h_v_j:
.hK_vO_jO_ib@FV16:
CALL .KOOO:
CALL .FV16:
JMP .h_v_j_i:
.hK_vO_jO_ib@FV32:
CALL .KOOO:
CALL .FV32:
JMP .h_v_j_i:
.hK_vO_jO_ib@FV64:
CALL .KOOO:
CALL .FV64:
JMP .h_v_j_i:
.hK_vO_jO_ib@FVM:
CALL .KOOO:
CALL .FVM:
JMP .h_v_j_i:
.hK_vO_jO_ib@MFV32:
CALL .KOOO:
CALL .MFV32:
JMP .h_v_j_i:
.hK_vO_jO_ib@MFV64:
CALL .KOOO:
CALL .MFV64:
JMP .h_v_j_i:
.hK_vO_jO_ib@T16:
CALL .KOOO:
CALL .T16:
JMP .h_v_j_i:
.hK_vO_jO_ib@T32:
CALL .KOOO:
CALL .T32:
JMP .h_v_j_i:
.hK_vO_jO_ib@T64:
CALL .KOOO:
CALL .T64:
JMP .h_v_j_i:
.hK_vX_jX_ib@T32:
CALL .KXXX:
CALL .T32:
JMP .h_v_j_i:
.hK_vX_jX_ib@T64:
CALL .KXXX:
CALL .T64:
JMP .h_v_j_i:
.hN_jN:CALL .NNNN:
JMP .h_j:
.hN_jR:CALL .NRRR:
JMP .h_j:
.hN_jRd:CALL .NRRR:
CALL .OperWidth32
JMP .h_j:
.hN_jRq:CALL .NRRR:
CALL .OperWidth64
JMP .h_j:
.hO: CALL .OOOO:
JMP .h:
.hO_ib:CALL .OOOO:
JMP .h_i:
.hO_jK:CALL .OKOO:
JMP .h_j:
.hO_jO:CALL .OOOO:
JMP .h_j:
.hO_jO@DATAd:
CALL .OOOO:
CALL .DATAd:
JMP .h_j:
.hO_jO@DATAd@noREP:
SetSt [Dii.Prefix],pfxF2IsOpcode+pfxF3IsOpcode
.hO_jO@DATAd@T32:
CALL .OOOO:
CALL .DATAd:
CALL .T32:
JMP .h_j:
.hO_jO@DATAo:
CALL .DATAo:
CALL .OOOO:
JMP .h_j:
.hO_jO@DATAo@FV32:
CALL .DATAo:
CALL .OOOO:
CALL .FV32:
JMP .h_j:
.hO_jO@DATAo@FV64:
CALL .DATAo:
CALL .OOOO:
CALL .FV64:
JMP .h_j:
.hO_jO@DATAo@MHV32:
CALL .DATAo:
CALL .OOOO:
CALL .MHV32:
JMP .h_j:
.hO_jO@DATAo@T128
CALL .OOOO:
CALL .DATAo:
CALL .T128:
JMP .h_j:
.hO_jO@DATAq:
CALL .OOOO:
CALL .DATAq:
JMP .h_j:
.hO_jO@DATAq@FV64:
CALL .OOOO:
CALL .DATAq:
CALL .FV64:
JMP .h_j:
.hO_jO@DATAq@noREP:
SetSt [Dii.Prefix],pfxF2IsOpcode+pfxF3IsOpcode
CALL .OOOO:
CALL .DATAq:
JMP .h_j:
.hO_jO@DATAq@T64:
CALL .OOOO:
CALL .DATAq:
CALL .T64:
JMP .h_j:
.hO_jO@DATAw:
CALL .OOOO:
CALL .DATAw:
JMP .h_j:
.hO_jO@DATAx:
CALL .OOOO:
CALL .DATAx:
JMP .h_j:
.hO_jO@DATAx@T128:
CALL .OOOO:
CALL .DATAx:
CALL .T128:
JMP .h_j:
.hO_jO@DATAy:
CALL .OOOO:
CALL .DATAy:
JMP .h_j:
.hO_jO@DATAy@T256
CALL .OOOO:
CALL .DATAy:
CALL .T256:
JMP .h_j:
.hO_jO@FV16:
CALL .OOOO:
CALL .FV16:
JMP .h_j:
.hO_jO@FV32:
CALL .OOOO:
CALL .FV32:
JMP .h_j:
.hO_jO@FV64:
CALL .OOOO:
CALL .FV64:
JMP .h_j:
.hO_jO@FVM:
CALL .OOOO:
CALL .FVM:
JMP .h_j:
.hO_jO@HV16:
CALL .OOOO:
CALL .HV16:
JMP .h_j:
.hO_jO@HV32:
CALL .OOOO:
CALL .HV32:
JMP .h_j:
.hO_jO@HVM:
CALL .OOOO:
CALL .HVM:
JMP .h_j:
.hO_jO@MFV32:
CALL .OOOO:
CALL .MFV32:
JMP .h_j:
.hO_jO@MFV64:
CALL .OOOO:
CALL .MFV64:
JMP .h_j:
.hO_jO@MFVM:
CALL .OOOO:
CALL .MFVM:
JMP .h_j:
.hO_jO@MHV32:
CALL .OOOO:
CALL .MHV32:
JMP .h_j:
.hO_jO@OVM:
CALL .OOOO:
CALL .OVM:
JMP .h_j:
.hO_jO@pfxIsOpcode:
SetSt [Dii.Prefix],pfx66IsOpcode+pfxF2IsOpcode+pfxF3IsOpcode
JMP .h_j:
.hO_jO@QV16:
CALL .OOOO:
CALL .QV16:
JMP .h_j:
.hO_jO@QVM:
CALL .OOOO:
CALL .QVM:
JMP .h_j:
.hO_jO@T128:
CALL .OOOO:
CALL .T128:
JMP .h_j:
.hO_jO@T16:
CALL .OOOO:
CALL .T16:
JMP .h_j:
.hO_jO@T256:
CALL .OOOO:
CALL .T256:
JMP .h_j:
.hO_jO@T32:
CALL .OOOO:
CALL .T32:
JMP .h_j:
.hO_jO@T64:
CALL .OOOO:
CALL .T64:
JMP .h_j:
.hO_jO@T8:
CALL .OOOO:
CALL .T8:
JMP .h_j:
.hO_jO@VSIB@T32:
CALL .T32:
CALL .VSIB:
JMP .h_j:
.hO_jO@VSIB@T64:
CALL .T64:
CALL .VSIB:
JMP .h_j:
.hO_jO_EAX_XMM0:
CALL .OOOO:
LEA RAX,[RegEAX]
MOV [Dii.Operand3],RAX
LEA EAX,[RegXMM0]
MOV [Dii.Operand4],RAX
JMP .h_j:
.hO_jO_ib:
CALL .OOOO:
JMP .h_j_i:
.hO_jO_ib@DATAw:
CALL .UUUU:
CALL .DATAw:
JMP .h_j_i:
.hO_jO_ib@FV16:
CALL .UUUU:
CALL .FV16:
JMP .h_j_i:
.hO_jO_ib@FV32:
CALL .OOOO:
CALL .FV32:
JMP .h_j_i:
.hO_jO_ib@FV64:
CALL .OOOO:
CALL .FV64:
JMP .h_j_i:
.hO_jO_ib@FVM:
CALL .OOOO:
CALL .FVM:
JMP .h_j_i:
.hO_jO_ib@MFV32:
CALL .OOOO:
CALL .MFV32:
JMP .h_j_i:
.hO_jO_ib@MFV64:
CALL .OOOO:
CALL .MFV64:
JMP .h_j_i:
.hO_jO_vO:
CALL .OOOO:
JMP .h_j_v:
.hO_jO_vO@VSIB:
CALL .OOOO:
CALL .VSIB:
JMP .h_j_v:
.hO_jO_XMM0:
CALL .OOOO:
LEA RAX,[RegXMM0]
MOV [Dii.Operand3],RAX
JMP .h_j:
.hO_jR:CALL .OROO:
JMP .h_j:
.hO_jR@DATAd:
CALL .OROO:
CALL .DATAd:
JMP .h_j:
.hO_jR@DATAd@T32:
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .h_j:
.hO_jR@DATAq:
CALL .OROO:
CALL .DATAq:
JMP .h_j:
.hO_jR@DATAq@T64:
CALL .OROO:
CALL .DATAq:
CALL .T64:
JMP .h_j:
.hO_jR@HVM:
CALL .OROO:
CALL .HVM:
JMP .h_j:
.hO_jR_ib:
CALL .ORRR:
JMP .h_j_i:
.hO_jR_ib@DATAb:
CALL .ORRR:
CALL .DATAb:
JMP .h_j_ib:
.hO_jR_ib@DATAd:
CALL .ORRR:
CALL .DATAd:
JMP .h_j_ib:
.hO_jR_ib@DATAq:
CALL .ORRR:
CALL .DATAq:
JMP .h_j_ib:
.hO_jR@DATAw:
CALL .OROO:
CALL .DATAw:
JMP .h_j:
.hO_jRb@T8:
CALL .OperWidth8:
CALL .ORRR:
CALL .T8:
JMP .h_j:
.hO_jRd@DATAd:
CALL .OperWidth32:
CALL .ORRR:
CALL .DATAd:
JMP .h_j:
.hO_jRd@DATAd@T32:
CALL .OperWidth32
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .h_j:
.hO_jRd@T32:
CALL .OperWidth32:
CALL .ORRR:
CALL .T32:
JMP .h_j:
.hO_jRd_ib:
CALL .OperWidth32:
CALL .ORRR:
JMP .h_j_i:
.hO_jRd_ib@DATAb:
CALL .DATAb:
CALL .OperWidth32:
CALL .ORRR:
JMP .h_j_i:
.hO_jRd_ib@DATAd:
CALL .DATAd:
CALL .OperWidth32:
CALL .ORRR:
JMP .h_j_i:
.hO_jRd_ib@DATAq:
CALL .DATAq:
CALL .OperWidth32:
CALL .ORRR:
JMP .h_j_i:
.hO_jRd_ib@DATAw:
CALL .DATAw:
CALL .OperWidth32:
CALL .ORRR:
JMP .h_j_i:
.hO_jRq@DATAq:
CALL .ORRR:
CALL .DATAq:
JMP .h_j:
.hO_jRq@DATAq@T64:
CALL .OperWidth64:
CALL .OROO:
CALL .DATAq:
CALL .T64:
JMP .h_j:
.hO_jRq@T64:
CALL .OperWidth64:
CALL .ORRR:
CALL .T64:
JMP .h_j:
.hO_jRq_ib:
CALL .OperWidth64:
CALL .ORRR:
JMP .h_j_i:
.hO_jRq_ib@DATAq:
CALL .DATAq:
CALL .OperWidth64:
CALL .ORRR:
JMP .h_j_i:
.hO_jRw@DATAw@T16:
CALL .OperWidth16:
CALL .OROO:
CALL .DATAw:
CALL .T16:
JMP .h_j:
.hO_jRw@T16:
CALL .OperWidth16:
CALL .ORRR:
CALL .T16:
JMP .h_j:
.hO_jU:CALL .OUOO:
JMP .h_j:
.hO_jU@DATAq:
CALL .OUOO:
CALL .DATAq:
JMP .h_j:
.hO_jU@DATAq@noREP:
SetSt [Dii.Prefix],pfxF2IsOpcode+pfxF3IsOpcode
CALL .OOKO:
CALL .MFV32:
JMP .h_v_j:
.hO_jX:CALL .OXOO:
JMP .h_j:
.hO_jX@DATAd:
CALL .DATAd:
CALL .OXOO:
JMP .h_j:
.hO_jX@DATAo:
CALL .OXOO:
CALL .DATAo:
JMP .h_j:
.hO_jX@DATAq:
CALL .DATAq:
CALL .OXOO:
JMP .h_j:
.hO_jX@DATAx@T128:
CALL .OXOO:
CALL .DATAx:
CALL .T128:
JMP .h_j:
.hO_jX@DATAy@T256
CALL .OXOO:
CALL .DATAy:
CALL .T256:
JMP .h_j:
.hO_jX@OVM:
CALL .OVM:
CALL .OXOO:
JMP .h_j:
.hO_jX@QVM:
CALL .QVM:
CALL .OXOO:
JMP .h_j:
.hO_jX@T128:
CALL .OXOO:
CALL .T128:
JMP .h_j:
.hO_jX@T16:
CALL .T16:
CALL .OXOO:
JMP .h_j:
.hO_jX@T256:
CALL .OXOO:
CALL .T256:
JMP .h_j:
.hO_jX@T32:
CALL .T32:
CALL .OXOO:
JMP .h_j:
.hO_jX@T64:
CALL .T64:
CALL .OXOO:
JMP .h_j:
.hO_jX@T8:
CALL .T8:
CALL .OXOO:
JMP .h_j:
.hO_jXXY:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hO_jXXY@HV16:
CALL .HV16:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
JMP .h_j:
.hO_jXXY@HV32:
CALL .HV32:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hO_jXXY@HVM:
CALL .HVM:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
JMP .h_j:
.hO_jXXY@OVM:
CALL .OVM:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hO_jXXY@QVM:
CALL .QVM:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hO_vK_jO@MFV32:
CALL .OOKO:
CALL .MFV32:
JMP .h_v_j:
.hO_vK_jO@MFV64:
CALL .OOKO:
CALL .MFV64:
JMP .h_v_j:
.hO_vO_is4_jO:
CALL .OOOO:
JMP .h_v_is4_j:
.hO_vO_jO:
CALL .OOOO:
JMP .h_v_j:
.hO_vO_jO@DATAd:
CALL .OOOO:
CALL .DATAd:
JMP .h_v_j:
.hO_vO_jO@DATAd@FV32:
CALL .OOOO:
CALL .DATAd:
CALL .FV32:
JMP .h_v_j:
.hO_vO_jO@DATAd@FV64:
CALL .OOOO:
CALL .DATAd:
CALL .FV64:
JMP .h_v_j:
.hO_vO_jO@DATAd@T32:
CALL .OOOO:
CALL .DATAd:
CALL .T32:
JMP .h_v_j:
.hO_vO_jO@DATAo:
CALL .OOOO:
CALL .DATAo:
JMP .h_v_j:
.hO_vO_jO@DATAo@FV32:
CALL .OOOO:
CALL .DATAo:
CALL .FV32
JMP .h_v_j:
.hO_vO_jO@DATAo@FV64:
CALL .OOOO:
CALL .DATAo:
CALL .FV64:
JMP .h_v_j:
.hO_vO_jO@DATAq:
CALL .OOOO:
CALL .DATAq:
JMP .h_v_j:
.hO_vO_jO@DATAq@FV32
CALL .OOOO:
CALL .DATAq:
CALL .FV32:
JMP .h_v_j:
.hO_vO_jO@DATAq@FV64:
CALL .OOOO:
CALL .DATAq:
CALL .FV64:
JMP .h_v_j:
.hO_vO_jO@DATAq@T64:
CALL .OOOO:
CALL .DATAq:
CALL .T64:
JMP .h_v_j:
.hO_vO_jO@FV16:
CALL .OOOO:
CALL .FV16:
JMP .h_v_j:
.hO_vO_jO@FV32:
CALL .OOOO:
CALL .FV32:
JMP .h_v_j:
.hO_vO_jO@FV64:
CALL .OOOO:
CALL .FV64:
JMP .h_v_j:
.hO_vO_jO@FVM:
CALL .OOOO:
CALL .FVM:
JMP .h_v_j:
.hO_vO_jO@HVM:
CALL .OOOO:
CALL .HVM:
JMP .h_v_j:
.hO_vO_jO@MFV32:
CALL .OOOO:
CALL .MFV32:
JMP .h_v_j:
.hO_vO_jO@MFV64:
CALL .OOOO:
CALL .MFV64:
JMP .h_v_j:
.hO_vO_jO@QVM:
CALL .OOOO:
CALL .QVM:
JMP .h_v_j:
.hO_vO_jO@T128:
CALL .OOOO:
CALL .T128
JMP .h_v_j:
.hO_vO_jO@T16:
CALL .OOOO:
CALL .T16
JMP .h_v_j:
.hO_vO_jO@T32:
CALL .OOOO:
CALL .T32:
JMP .h_v_j:
.hO_vO_jO@T64:
CALL .OOOO:
CALL .T64:
JMP .h_v_j:
.hO_vO_jO_ib
CALL .OOOO:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAb:
CALL .OOOO:
CALL .DATAb:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAb@T8:
CALL .OOOO:
CALL .DATAb:
CALL .T8:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAd:
CALL .OOOO:
CALL .DATAd:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAd@FV32:
CALL .OOOO:
CALL .DATAd:
CALL .FV32:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAd@T32:
CALL .OOOO:
CALL .DATAd:
CALL .T32:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAq:
CALL .OOOO:
CALL .DATAq:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAq@FV64:
CALL .OOOO:
CALL .DATAq:
CALL .FV64:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAq@T64:
CALL .OOOO:
CALL .DATAq:
CALL .T64
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAw:
CALL .OOOO:
CALL .DATAw:
JMP .h_v_j_i:
.hO_vO_jO_ib@DATAw@T16:
CALL .OOOO:
CALL .DATAw:
CALL .T16:
JMP .h_v_j_i:
.hO_vO_jO_ib@FV32:
CALL .OOOO:
CALL .FV32:
JMP .h_v_j_i:
.hO_vO_jO_ib@FV64:
CALL .OOOO:
CALL .FV64:
JMP .h_v_j_i:
.hO_vO_jO_ib@FVM:
CALL .OOOO:
CALL .FVM:
JMP .h_v_j_i:
.hO_vO_jO_ib@MFV32:
CALL .OOOO:
CALL .MFV32:
JMP .h_v_j_ib:
.hO_vO_jO_ib@MFV64:
CALL .OOOO:
CALL .MFV64:
JMP .h_v_j_ib:
.hO_vO_jO_ib@T128:
CALL .OOOO:
CALL .T128:
JMP .h_v_j_i:
.hO_vO_jO_ib@T16:
CALL .OOOO:
CALL .T16:
JMP .h_v_j_i:
.hO_vO_jO_ib@T256:
CALL .OOOO:
CALL .T256:
JMP .h_v_j_i:
.hO_vO_jO_ib@T32
CALL .OOOO:
CALL .T32
JMP .h_v_j_i:
.hO_vO_jO_ib@T64
CALL .OOOO:
CALL .T64
JMP .h_v_j_i:
.hO_vO_jO_is4:
CALL .OOOO:
CALL ModifyDefaultWidth:
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RBX
MOV [Dii.Operand3],RAX
CALL Imm2XMM:
MOV [Dii.Operand4],RCX
INC R8
JMP .Flush:
.hO_vO_jO_XMM0:
CALL .OOOO:
LEA RAX,[RegXMM0]
MOV [Dii.Operand4],RAX
JMP .h_v_j
.hO_vO_jR:
CALL .OROO:
JMP .h_v_j:
.hO_vO_jR@DATAd@QVM:
CALL .OROO:
CALL .DATAd:
CALL .QVM:
JMP .h_v_j:
.hO_vO_jR@DATAq@HVM:
CALL .OROO:
CALL .DATAq:
CALL .HVM:
JMP .h_v_j:
.hO_vO_jR@HVM:
CALL .OROO:
CALL .HVM:
JMP .h_v_j:
.hO_vO_jR@QVM:
CALL .OROO:
CALL .QVM:
JMP .h_v_j:
.hO_vO_jR_ib@DATAb:
CALL .OROO:
CALL .DATAb:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAb@T8:
CALL .OROO:
CALL .DATAb:
CALL .T8:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAd:
CALL .OROO:
CALL .DATAd:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAd@T32:
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAq:
CALL .OROO:
CALL .DATAq:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAq@T64:
CALL .OROO:
CALL .DATAq:
CALL .T64
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAw:
CALL .OROO:
CALL .DATAw:
JMP .h_v_j_i:
.hO_vO_jR_ib@DATAw@T16:
CALL .OROO:
CALL .DATAw:
CALL .T16
JMP .h_v_j_i:
.hO_vO_jRb_ib@DATAb:
CALL .OROO:
CALL .OperWidth8:
CALL .DATAb:
JMP .h_v_j_i:
.hO_vO_jRd@DATAd:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_v_j:
.hO_vO_jRd@DATAd@QVM:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
CALL .QVM:
JMP .h_v_j
.hO_vO_jRd@T16:
CALL .OROO:
CALL .OperWidth32:
CALL .T16:
JMP .h_v_j:
.hO_vO_jRd@T32:
CALL .OROO:
CALL .OperWidth32:
CALL .T32:
JMP .h_v_j:
.hO_vO_jRd_ib@DATAb:
CALL .DATAb:
CALL .OperWidth32:
CALL .OROO:
JMP .h_v_j_i:
.hO_vO_jRd_ib@DATAb@T8:
CALL .T8:
CALL .DATAb:
CALL .OperWidth32:
CALL .OROO:
JMP .h_v_j_i:
.hO_vO_jRd_ib@DATAd
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_v_j_i:
.hO_vO_jRd_ib@DATAd@T32:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
CALL .T32:
JMP .h_v_j_i:
.hO_vO_jRd_ib@DATAw:
CALL .DATAw:
CALL .OperWidth32:
CALL .OROO:
JMP .h_v_j_i:
.hO_vO_jRd_ib@DATAw@T16:
CALL .T16:
CALL .DATAw:
CALL .OperWidth32:
CALL .OROO:
JMP .h_v_j_i:
.hO_vO_jRd_ib@T16:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
CALL .T16:
JMP .h_v_j:
.hO_vO_jRd_ib@T32:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
CALL .T32:
JMP .h_v_j:
.hO_vO_jRd_ib@T8:
CALL .OROO:
CALL .OperWidth32:
CALL .DATAd:
CALL .T8:
JMP .h_v_j:
.hO_vO_jRq@DATAq:
CALL .OROO:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_v_j:
.hO_vO_jRq@DATAq@HVM:
CALL .OROO:
CALL .OperWidth64:
CALL .DATAq:
CALL .HVM:
JMP .h_v_j:
.hO_vO_jRq@T16:
CALL .OROO:
CALL .OperWidth64:
CALL .T16:
JMP .h_v_j:
.hO_vO_jRq@T64:
CALL .OROO:
CALL .OperWidth64:
CALL .T64:
JMP .h_v_j:
.hO_vO_jRq_ib:
CALL .OROO:
CALL .OperWidth64:
JMP .h_v_j:
.hO_vO_jRq_ib@DATAq
CALL .OROO:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_v_j_i:
.hO_vO_jRq_ib@DATAq@T64:
CALL .OROO:
CALL .OperWidth64:
CALL .DATAq:
CALL .T64
JMP .h_v_j_i:
.hO_vO_jRq_ib@DATAw:
CALL .OROO:
CALL .OperWidth64:
CALL .DATAw:
JMP .h_v_j_i:
.hO_vO_jRq_ib@T32:
CALL .OROO:
CALL .OperWidth64:
CALL .DATAd:
CALL .T32:
JMP .h_v_j:
.hO_vO_jRw_ib@DATAw@T16:
CALL .OROO:
CALL .OperWidth16:
CALL .DATAw:
CALL .T16:
JMP .h_v_j_i:
.hO_vO_jX:
CALL .OXOO:
JMP .h_v_j:
.hO_vO_jX@T128:
CALL .T128:
CALL .OXOO:
JMP .h_v_j:
.hO_vO_jX_ib:
CALL .OXOO:
JMP .h_v_j_i:
.hO_vO_jX_ib@T128:
CALL .T128:
CALL .OXOO:
JMP .h_v_j_i:
.hO_vO_jX_ib@T16:
CALL .T16:
CALL .OXOO:
JMP .h_v_j_i:
.hO_vO_jY_ib@T256:
CALL .T256:
CALL .OYOO:
JMP .h_v_j_i:
.hR: JMP .h:
.hR_jM:JMP .h_j:
.hR_jM@64:
JNSt [Dii.Status],stMode64,.hR_jM@ls:
MOV [Dii.OperWidth],OperWidth64
.hR_jM@ls: JMP .h_j:
.hR_jO:CALL .ROOO:
JMP .h_j:
.hR_jO@HVM:
CALL .ROOO:
CALL .HVM
JMP .h_j:
.hR_jO@QVM:
CALL .ROOO:
CALL .QVM:
JMP .h_j:
.hR_jO_ib:
CALL .ROOO:
JMP .h_j_i:
.hR_jR:JMP .h_j:
.hR_jR@DATAa:
CALL ModifyDefaultWidth
CALL .DATAa:
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JMP .Flush:
.hR_jR@DATAq:
CALL .DATAq:
JMP .h_j:
.hR_jR@DATAz:
CALL .DATAz:
JMP .h_j:
.hR_jR@hint_nop:
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
CALL GetModRMReg
MOV [Dii.Operand2],RAX
MOV EDX,[Dii.Opcode]
AND DL,7
MOV DH,DL
MOV DL,[Dii.ModRM]
SHL DL,2
SHR EDX,5
AND DL,0x3F
LEA RDI,[Imm2Line]
MOV RCX,RDI
MOV AX,'0x'
STOSW
CALL StoDL
MOV [Dii.Operand1],RCX
JMP .Flush:
.hR_jR_ib:
JMP .h_j_i:
.hR_jR_id:
JMP .h_j_id:
.hR_jR_vR:
JMP .h_j_v:
.hR_jRb:
CALL GetModRMReg:
MOV [Dii.Operand1],RDX
CALL .OperWidth8
CALL GetModRMReg:
MOV [Dii.Operand2],RAX
JMP .Flush:
.hR_jRb@movx:
CALL ModifyDefaultWidth
CALL GetModRMReg
JNSt [Dii.Status],stMod3,.movx6:
LEA RSI,[Reg8REX] ; Mod=3
JSt [Dii.Prefix],pfxREX,.movx4:
LEA RSI,[Reg8]
.movx4:MOV CL,[Dii.BaseNr]
CALL SelectByCL
JMP .movx8:
.movx6:MOV RSI,[Dii.Memory] ; Mod=0,1,2
CALL .DATAb:
.movx8:MOV RDX,[Dii.OperReg]
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RSI
JMP .Flush:
.hR_jRM:
JMP .h_j:
.hR_jRM@CODEl:
MOV [Dii.CODE],'L'
JMP .h_j:
.hR_jRM_ib@DATAa:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL Imm2
MOV [Dii.Operand3],RCX
CALL .DATAa:
JMP .Flush:
.hR_jRM_ib@DATAb:
CALL ModifyDefaultWidth
CALL GetModRMReg
CALL Imm2
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
MOV [Dii.Operand3],RCX
CALL .DATAb:
JMP .Flush:
.hR_jRM_ie@DATAa@IMMd:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL .DATAa:
SetSt [Dii.Flags],flagImmSignExt
CALL Imm
MOV [Dii.Operand3],RCX
JMP .Flush:
.hR_jRMb:
CALL .OperWidth8:
JMP .h_j:
.hR_jRMw:
SetSt [Dii.Prefix],pfx67NotUsed
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JSt [Dii.Status],stMod0,.Flush
LEA RSI,[Reg16]
MOV CL,[Dii.BaseNr]
CALL SelectByCL
MOV [Dii.Operand2],RSI
MOV [Dii.DATA],0
JMP .Flush
.hR_jRw@movx:
CALL ModifyDefaultWidth
CALL GetModRMReg
JNSt [Dii.Status],stMod3,.movw6:
LEA RSI,[Reg16] ; Mod=3
MOV CL,[Dii.BaseNr]
CALL SelectByCL
JMP .movw8:
.movw6:MOV RSI,[Dii.Memory] ; Mod=0,1,2
CALL .DATAw:
.movw8:MOV RDX,[Dii.OperReg]
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RSI
JMP .Flush:
.hR_jU_ib:
CALL .RUUU:
JMP .h_j_i:
.hR_vK_jK:
CALL .RKKK:
JMP .h_v_j:
.hR_vR_jR:
JMP .h_v_j:
.hRb_jRb:
CALL .OperWidth8:
JMP .h_j:
.hRb_jRMb@CODEl:
MOV [Dii.CODE],'L'
CALL .OperWidth8:
JMP .h_j:
.hRd_jK:
CALL .RKKK:
CALL .OperWidth32:
JMP .h_j:
.hRd_jM:
CALL .OperWidth32:
JMP .h_j:
.hRd_jO:
CALL .ROOO:
CALL .OperWidth32
JMP .h_j:
.hRd_jO@DATAd:
CALL .ROOO:
CALL .OperWidth32
CALL .DATAd:
JMP .h_j:
.hRd_jO@DATAd@HVM:
CALL .ROOO:
CALL .OperWidth32:
CALL .DATAd:
CALL .HVM:
JMP .h_j:
.hRd_jO@DATAd@QVM:
CALL .ROOO:
CALL .OperWidth32
CALL .DATAd:
CALL .OVM:
JMP .h_j:
.hRd_jO@HVM:
CALL .ROOO:
CALL .OperWidth32
CALL .HVM
JMP .h_j:
.hRd_jO@QVM:
CALL .ROOO:
CALL .OperWidth32
CALL .QVM
JMP .h_j:
.hRd_jO@T16:
CALL .OperWidth32:
CALL .ROOO:
CALL .T16:
JMP .h_j:
.hRd_jO@T32:
CALL .OperWidth32:
CALL .ROOO:
CALL .T32:
JMP .h_j:
.hRd_jO@T64:
CALL .OperWidth32:
CALL .ROOO:
CALL .T64:
JMP .h_j:
.hRd_jO_ib:
CALL .OperWidth32
CALL .ROOO:
JMP .h_j_i:
.hRd_jO_ib@T16:
CALL .T16:
CALL .OperWidth32
CALL .ROOO:
JMP .h_j_i:
.hRd_jR:
MOV AL,OperWidth64
JSt [Dii.Status],stMode64,.hRd7:
MOV AL,OperWidth32
.hRd7: MOV [Dii.OperWidth],AL
JMP .h_j:
.hRd_jR@DATAa:
.CRCd: CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand2],RAX
CALL GetOperWidth
MOV [Dii.DATA],AL
LEA RSI,[Reg64]
JSt [Dii.Status],stW,.CRC5:
LEA RSI,[Reg32]
.CRC5: MOV CL,[Dii.OperNr]
CALL SelectByCL
MOV [Dii.Operand1],RSI
JMP .Flush:
.hRd_jR@popcnt:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JMP .Flush:
.hRd_jR_ib@DATAd:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_j_i:
.hRd_jR_id:
CALL .OperWidth32:
JMP .h_j_id:
.hRd_jR_vR:
CALL .OperWidth32:
JMP .hRq_jR_vR:
.hRd_jR_vR@DATAd:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_j_v:
.hRd_jRb:
CALL .OperWidth8:
CALL .DATAb:
JMP .CRCd:
.hRd_jRb@DATAb:
CALL .OperWidth8:
JMP .hRd_jR@DATAa:
.hRd_jRd_XMM0:
CALL .OperWidth32:
LEA RAX,[RegXMM0]
MOV [Dii.Operand3],RAX
JMP .h_j:
.hRd_jU:
CALL .OperWidth32:
CALL .RUUU:
JMP .h_j:
.hRd_jU_ib:
CALL .OperWidth32:
CALL .RUUU:
JMP .h_j_i:
.hRd_jX:
CALL .RXXX:
CALL .OperWidth32
JMP .h_j:
.hRd_jX@DATAd:
CALL .RXXX:
CALL .OperWidth32
CALL .DATAd:
JMP .h_j:
.hRd_jX@DATAd@HVM:
CALL .RXXX:
CALL .OperWidth32:
CALL .DATAd:
CALL .HVM:
JMP .h_j:
.hRd_jX@DATAd@QVM:
CALL .RXXX:
CALL .OperWidth32
CALL .DATAd:
CALL .OVM:
JMP .h_j:
.hRd_jX@HVM:
CALL .RXXX:
CALL .OperWidth32
CALL .HVM
JMP .h_j:
.hRd_jX@QVM:
CALL .RXXX:
CALL .OperWidth32
CALL .QVM
JMP .h_j:
.hRd_jX@T16:
CALL .OperWidth32:
CALL .RXXX:
CALL .T16:
JMP .h_j:
.hRd_jX@T32:
CALL .OperWidth32:
CALL .RXXX:
CALL .T32:
JMP .h_j:
.hRd_jX@T64:
CALL .OperWidth32:
CALL .RXXX:
CALL .T64:
JMP .h_j:
.hRd_vR_jR:
CALL .OperWidth32
JMP .h_v_j:
.hRdq_jO:
CALL .OperWidth64:
JSt [Dii.Status],stMode64,.hdq2:
CALL .OperWidth32
.hdq2:CALL .ROOO:
JMP .h_j:
.hRe_jR:
MOV AL,OperWidth64
JSt [Dii.Status],stMode64, .hRe5:
MOV AL,OperWidth32
.hRe5:MOV [Dii.OperWidth],AL
JMP .h_j:
.hRe_jR@DATAz:
CALL .DATAz:
JMP .hRe_jR:
.hRq_jK:
CALL .RKKK:
CALL .OperWidth64:
JMP .h_j:
.hRq_jO:
CALL .ROOO:
CALL .OperWidth64
JMP .h_j:
.hRq_jO@DATAq:
CALL .ROOO:
CALL .OperWidth64
CALL .DATAq:
JMP .h_j:
.hRq_jO@DATAq@HVM:
CALL .ROOO:
CALL .OperWidth64
CALL .DATAq:
CALL .HVM
JMP .h_j:
.hRq_jO@DATAq@OVM:
CALL .ROOO:
CALL .OperWidth64
CALL .DATAq:
CALL .OVM:
JMP .h_j:
.hRq_jO@HVM:
CALL .ROOO:
CALL .OperWidth64
CALL .HVM
JMP .h_j:
.hRq_jO@QVM:
CALL .ROOO:
CALL .OperWidth64
CALL .QVM
JMP .h_j:
.hRq_jO@T16:
CALL .OperWidth64:
CALL .ROOO:
CALL .T16:
JMP .h_j:
.hRq_jO@T32:
CALL .OperWidth64:
CALL .ROOO:
CALL .T32:
JMP .h_j:
.hRq_jO@T64:
CALL .OperWidth64:
CALL .ROOO:
CALL .T64:
JMP .h_j:
.hRq_jR:
CALL .OperWidth64:
JMP .h_j:
.hRq_jR@DATAd:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_j:
.hRq_jR@popcnt:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
JMP .Flush:
.hRq_jR_ib@DATAq:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_j_i:
.hRq_jR_id:
CALL .OperWidth64:
JMP .h_j_id:
.hRq_jR_vR:
CALL .OperWidth64:
JMP .h_j_v:
.hRq_jR_vR@DATAq:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_j_v:
.hRq_jRb:
CALL .OperWidth8:
CALL .DATAb:
JMP .CRCq:
.hRq_jX:
CALL .RXXX:
CALL .OperWidth64
JMP .h_j:
.hRq_jX@DATAq:
CALL .RXXX:
CALL .OperWidth64
CALL .DATAq:
JMP .h_j:
.hRq_jX@DATAq@HVM:
CALL .RXXX:
CALL .OperWidth64
CALL .DATAq:
CALL .HVM
JMP .h_j:
.hRq_jX@DATAq@QVM:
CALL .RXXX:
CALL .OperWidth64
CALL .DATAq:
CALL .QVM:
JMP .h_j:
.hRq_jX@HVM:
CALL .RXXX:
CALL .OperWidth64
CALL .HVM
JMP .h_j:
.hRq_jX@T16:
CALL .OperWidth64:
CALL .RXXX:
CALL .T16:
JMP .h_j:
.hRq_jX@T32:
CALL .OperWidth64:
CALL .RXXX:
CALL .T32:
JMP .h_j:
.hRq_jX@T64:
CALL .OperWidth64:
CALL .RXXX:
CALL .T64:
JMP .h_j:
.hRq_vK_jK:
CALL .OperWidth64
CALL .RKKK:
JMP .h_v_j:
.hRq_vR_jR:
CALL .OperWidth64
JMP .h_v_j:
.hRwdq_jR:
JNSt [Dii.Status],stMode64,.wdq2:
CALL .OperWidth64
.wdq2:JMP .h_j:
.hS_jR:
.hS_jRM:
CALL .SRRR:
JMP .h_j:
.hU_jO:
CALL .UOOO:
JMP .h_j:
.hU_jO@DATAq:
CALL .UOOO:
CALL .DATAq:
JMP .h_j:
.hU_jR_ib@DATAw:
CALL .URRR:
CALL .DATAw:
JMP .h_j_i:
.hU_jRd@DATAd:
CALL .URRR:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_j:
.hU_jRd_ib@DATAw:
CALL .DATAw:
CALL .URRR:
JMP .h_j_i:
.hU_jRq@DATAq:
CALL .URRR:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_j:
.hU_jU:
CALL .UUUU:
JMP .h_j:
.hU_jU@3DNow:
CALL .UUUU:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RDX
MOV [Dii.Operand2],RAX
CALL Imm2
MOV CL,[R8-1]
MOV [Dii.DISP],0
MOV [Dii.IMM],0
LEA RSI,[OperGrp3DNow]
.3D1:LODSB
CMP AL,0
JE .3D9:
CMP AL,CL
JE .3D8:
.3D3:LODSB
CMP AL,0
JNE .3D3:
JMP .3D1:
.3D8:MOV [Dii.Operation],RSI
JMP .Flush:
.3D9:INC [Dii.$VA]
JMP .invalid:
.hU_jU_ib:
CALL .UUUU:
JMP .h_j_i:
.hU_jU_ib@DATAw:
CALL .UUUU:
CALL .DATAw:
JMP .h_j_i:
.hX_jO:
MOV [Dii.Family],'XOOO'
JMP .h_j:
.hX_jRd@DATAd:
CALL .OperWidth32:
CALL .XRRR:
CALL .DATAd:
JMP .h_j:
.hX_jRq@DATAq:
; CALL .OperWidth64:
CALL .XRRR:
CALL .DATAq:
JMP .h_j:
.hX_jX:
CALL .XXXX:
JMP .h_j:
.hX_jX@DATAd:
CALL .XXXX:
CALL .DATAd:
JMP .h_j:
.hX_jX@DATAd@noREP:
SetSt [Dii.Prefix],pfxF2IsOpcode+pfxF3IsOpcode
CALL .XXXX:
CALL .DATAd:
JMP .h_j:
.hX_jX@DATAq:
CALL .XXXX:
CALL .DATAq:
JMP .h_j:
.hX_jX@DATAq@noREP:
SetSt [Dii.Prefix],pfxF2IsOpcode+pfxF3IsOpcode
CALL .XXXX:
CALL .DATAq:
JMP .h_j:
.hX_jX_ib:
CALL .XXXX:
JMP .h_j_i:
.hX_jXY:
CALL .XYXX:
MOV [Dii.DATA],'Y'
JSt [Dii.Flags],flagS1,.hX_j3:
CALL .XXXX:
MOV [Dii.DATA],'O'
.hX_j3:JMP .h_j:
.hX_vX_jRd@DATAd@QVM:
CALL .XRXX:
CALL .OperWidth32:
CALL .DATAd:
CALL .QVM:
JMP .h_v_j:
.hX_vX_jRd@DATAd@T32:
CALL .DATAd:
CALL .XRXX:
CALL .T32:
JMP .h_v_j:
.hX_vX_jRq@DATAq:
CALL .XRXX:
CALL .OperWidth64:
CALL .DATAq:
JMP .h_v_j:
.hX_vX_jRq@DATAq@HVM:
CALL .XRXX:
CALL .OperWidth64:
CALL .DATAq:
CALL .HVM:
JMP .h_v_j:
.hX_vX_jRd@DATAd:
CALL .XRXX:
CALL .OperWidth32:
CALL .DATAd:
JMP .h_v_j:
.hX_vX_jRd@T16:
CALL .XRXX:
CALL .OperWidth32:
CALL .T16:
JMP .h_v_j:
.hX_vX_jRq@DATAq@T64:
CALL .DATAq:
CALL .OperWidth64:
CALL .XRXX:
CALL .T64:
JMP .h_v_j:
.hX_vX_jRq@T16:
CALL .XRXX:
CALL .OperWidth64:
CALL .T16:
JMP .h_v_j:
.hX_vX_jRq@T64:
CALL .OperWidth64:
CALL .XRXX:
CALL .T64:
JMP .h_v_j:
.hX_vX_jX:
CALL .XXXX:
JMP .h_v_j:
.hX_vX_jX@DATAd:
CALL .XXXX:
CALL .DATAd:
JMP .h_v_j:
.hX_vX_jX@DATAd@T32:
CALL .XXXX:
CALL .DATAd:
CALL .T32:
JMP .h_v_j:
.hX_vX_jX@DATAq:
CALL .XXXX:
CALL .DATAq:
JMP .h_v_j:
.hX_vX_jX@DATAq@T64:
CALL .XXXX:
CALL .DATAq:
CALL .T64:
JMP .h_v_j:
.hX_vX_jX@HVM:
CALL .XXXX:
CALL .HVM:
JMP .h_v_j:
.hX_vX_jX@QVM:
CALL .XXXX:
CALL .QVM:
JMP .h_v_j:
.hX_vX_jX@T16:
CALL .XXXX:
CALL .T16
JMP .h_v_j:
.hX_vX_jX@T32:
CALL .XXXX:
CALL .T32:
JMP .h_v_j:
.hX_vX_jX@T64:
CALL .XXXX:
CALL .T64:
JMP .h_v_j:
.hX_vX_jX_ib
CALL .XXXX:
JMP .h_v_j_i:
.hX_vX_jX_ib@T16:
CALL .T16:
CALL .XXXX:
JMP .h_v_j_i:
.hX_vX_jX_ib@T32:
CALL .T32:
CALL .XXXX:
JMP .h_v_j_i:
.hX_vX_jX_ib@T64:
CALL .T64:
CALL .XXXX:
JMP .h_v_j_i:
.hXXY_jO:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+0],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hXXY_jO@FV64:
CALL .FV64:
CALL .DATAo:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+0],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hXXY_jO@MFV64:
CALL .MFV64:
CALL .DATAo:
CALL .OOOO:
CALL .XXY:
MOV [Dii.Family+0],AL
MOV [Dii.DATA],AH
JMP .h_j:
.hXY_jO:
MOV EAX,'YOOO'
JSt [Dii.Flags],flagS2,.hXY5:
MOV EAX,'XOOO'
.hXY5: MOV [Dii.Family],EAX
JMP .h_j:
.hXY_jO@DATAo:
MOV EAX,'YOOO'
JSt [Dii.Flags],flagS2,.hXY4:
MOV EAX,'XOOO'
.hXY4: MOV [Dii.Family],EAX
CALL .DATAo:
JMP .h_j:
.hXY_jO@DATAo@FV64:
CALL .FV64:
MOV EAX,'YOOO'
JSt [Dii.Flags],flagS2,.hXY41:
MOV EAX,'XOOO'
.hXY41:MOV [Dii.Family],EAX
CALL .DATAo:
JMP .h_j:
.hXY_jO@FV64:
CALL .FV64:
MOV EAX,'YOOO'
MOV [Dii.DATA],'Z'
JSt [Dii.Flags],flagS2,.hXY6:
MOV EAX,'XOOO'
MOV [Dii.DATA],'Y'
JSt [Dii.Flags],flagS1,.hXY6:
MOV EAX,'XOOO'
MOV [Dii.DATA],'O'
.hXY6: MOV [Dii.Family],EAX
JMP .h_j:
.hY_jY_ib:
MOV [Dii.Family],'YYYY'
JMP .h_j_i:
.hY_vY_jY:
MOV [Dii.Family],'YYYY'
JMP .h_v_j:
.hY_vY_jY_ib:
MOV [Dii.Family],'YYYY'
JMP .h_v_j_i:
.ib1:INC R8
CALL Imm2:
MOV [Dii.Operand1],RCX
JMP .Flush:
.i8@1:
INC R8
.i8:CALL .OperWidth8:
CALL ModifyDefaultWidth
CALL Imm
MOV [Dii.Operand1],RCX
JMP .Flush:
.ib: SetSt [Dii.Flags],flagImmSignExt+flagProm64 ; PUSH ib
SetSt [Dii.Prefix],pfx67NotUsed
JMP .ie:
.ib@DATAb@noDATA:
CALL Imm2
CALL .DATAb:
MOV [Dii.Operand1],RCX
MOV [Dii.DATA],0
JMP .Flush:
.ib@DATAw
CALL Imm2
CALL .DATAw:
MOV [Dii.Operand1],RCX
JMP .Flush:
.ib_AL:
MOV [Dii.OperWidth],OperWidth8
.ib_eAX:
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
CALL ModifyDefaultWidth
CALL Imm2
CALL GetAccum
MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RAX
JMP .Flush
.ie@DATAa:
CALL .DATAa:
JMP .ie:
.iw@retf:
CALL .DISTf:
.iw@r:SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
MOV [Dii.OperWidth],OperWidth16
RstSt [Dii.Flags],flagImmFar
CALL Imm
MOV [Dii.Operand1],RCX
JMP .Flush:
.iw@retn:
CALL .DISTn:
JMP .iw@r:
.iw_ib:
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
CALL .OperWidth16
CALL Imm
MOV [Dii.Operand1],RCX
CALL Imm2
MOV [Dii.Operand2],RCX
MOV [Dii.IMM],0
JMP .Flush
.jK_hK:CALL .KKKK:
JMP .j_h:
.jM: JMP .j:
.jM@DATAd:
CALL .DATAd:
JMP .j:
.jM@DATAo:
CALL .DATAo:
JMP .j:
.jM@DATAq:
CALL .DATAq:
JMP .j:
.jM@DATAz:
CALL .DATAz:
JMP .j:
.jMe@DISTf:
MOV [Dii.DIST],'F'
JMP .j:
.jN_hN:CALL .NNNN:
JMP .j_h:
.jO@VSIB@DATAd@T32:
CALL .OOOO:
CALL .T32:
CALL .DATAd:
CALL .VSIB:
JMP .j:
.jO@VSIB@DATAq@T64:
CALL .OOOO:
CALL .T64:
CALL .DATAq:
CALL .VSIB:
JMP .j:
.jO@VSIB@T32:
CALL .OOOO:
CALL .T32:
CALL .VSIB:
JMP .j:
.jO@VSIB@T64:
CALL .OOOO:
CALL .T64:
CALL .VSIB:
JMP .j:
.jO_hO:CALL .OOOO:
JMP .j_h:
.jO_hO@DATAd:
CALL .OOOO:
CALL .DATAd:
JMP .j_h:
.jO_hO@DATAd@T32:
CALL .OOOO:
CALL .DATAd:
CALL .T32:
JMP .j_h:
.jO_hO@DATAq:
CALL .OOOO:
CALL .DATAq:
JMP .j_h:
.jO_hO@DATAq@T64:
CALL .OOOO:
CALL .DATAq:
CALL .T64:
JMP .j_h:
.jO_hO@FVM:
CALL .OOOO:
CALL .FVM:
JMP .j_h:
.jO_hO@HVM:
CALL .OOOO:
CALL .HVM:
JMP .j_h:
.jO_hO@MFV32:
CALL .OOOO:
CALL .MFV32:
JMP .j_h:
.jO_hO@MFV64:
CALL .OOOO:
CALL .MFV64:
JMP .j_h:
.jO_hO@MFVM:
CALL .OOOO:
CALL .MFVM:
JMP .j_h:
.jO_hO@OVM:
CALL .OOOO:
CALL .OVM:
JMP .j_h:
.jO_hO@QVM:
CALL .OOOO:
CALL .QVM:
JMP .j_h:
.jO_hO@T16:
CALL .OOOO:
CALL .T16:
JMP .j_h:
.jO_hO@T32:
CALL .OOOO:
CALL .T32:
JMP .j_h:
.jO_hO@T64:
CALL .OOOO:
CALL .T64:
JMP .j_h:
.jO_hO@T8:
CALL .OOOO:
CALL .T8:
JMP .j_h:
.jO_hO@VSIB@T32:
CALL .T32:
CALL .VSIB:
JMP .j_h:
.jO_hO@VSIB@T64:
CALL .T64:
CALL .VSIB:
JMP .j_h:
.jO_hO_ib:
CALL .OOOO:
JMP .j_h_i:
.jO_hO_ib@DATAd:
CALL .OOOO:
CALL .DATAd:
JMP .j_h_i:
.jO_hO_ib@DATAd@T32:
CALL .OOOO:
CALL .DATAd:
CALL .T32:
JMP .j_h_i:
.jO_hO_ib@DATAd@T64:
CALL .OOOO:
CALL .DATAd:
CALL .T64:
JMP .j_h_i:
.jO_hO_ib@FVM:
CALL .OOOO:
CALL .FVM:
JMP .j_h_i:
.jO_hO_ib@HVM:
CALL .OOOO:
CALL .HVM:
JMP .j_h_i:
.jO_hO_ib@T128:
CALL .OOOO:
CALL .T128:
JMP .j_h_i:
.jO_hO_ib@T256:
CALL .OOOO:
CALL .T256:
JMP .j_h_i:
.jO_hR@DATAd:
CALL .ROOO:
CALL .DATAd:
JMP .j_h:
.jO_hR@DATAd@T32:
CALL .ROOO:
CALL .DATAd:
CALL .T32:
JMP .j_h:
.jO_hR@DATAq:
CALL .ROOO:
CALL .DATAq:
JMP .j_h:
.jO_hR@DATAq@T64:
CALL .ROOO:
CALL .DATAq:
CALL .T64:
JMP .j_h:
.jO_ib:CALL .OOOO:
JMP .j_i:
.jO_vO_hO:
CALL .OOOO:
JMP .j_v_h:
.jR:JMP .j:
.jR@DATAa:
CALL ModifyDefaultWidth
CALL .DATAa:
.jR@DATAaq:
SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL .DATAa:
CALL .CODEl:
CALL GetModRMReg
MOV [Dii.Operand1],RAX
JMP .Flush
.jR@DATAa@CODEl:
CALL .CODEl:
CALL ModifyDefaultWidth
CALL .DATAa:
CALL GetModRMReg
MOV [Dii.Operand1],RAX
JMP .Flush:
.jR@DATAb:
CALL .DATAb
JMP .j:
.jR@DATAq:
CALL .DATAq:
JMP .j:
.jR@DATAw:
CALL .DATAw:
JMP .j:
.jR@prom64:
CALL .OperWidth32:
SetSt [Dii.Flags],flagProm64
JMP .j:
.jR_hC:
CALL .OperWidth32:
MOV [Dii.Family],'CR'
SetSt [Dii.Flags],flagProm64
CALL .OperWidth32:
JMP .j_h:
.jR_hG:
MOV [Dii.Family],'GR'
SetSt [Dii.Flags],flagProm64
CALL .OperWidth32:
JMP .j_h:
.jR_hO:
CALL .OROO:
JMP .j_h:
.jR_hO@DATAd:
CALL .OROO:
CALL .DATAd:
JMP .j_h:
.jR_hO@DATAd@T32:
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .j_h:
.jR_hO@DATAq:
CALL .OROO:
CALL .DATAq:
JMP .j_h:
.jR_hO@DATAq@T64:
CALL .OROO:
CALL .DATAq:
CALL .T64:
JMP .j_h:
.jR_hO@DATAw:
CALL .OROO:
CALL .DATAw:
JMP .j_h:
.jR_hO@FVM:
CALL .FVM:
CALL .OROO:
CALL .DATAd:
JMP .j_h:
.jR_hO_ib:
CALL .OROO:
JMP .j_h_i:
.jR_hO_ib@DATAa:
CALL .OROO:
CALL .DATAa:
JMP .j_h_i:
.jR_hO_ib@DATAb:
CALL .OROO:
CALL .DATAb:
JMP .j_h_i:
.jR_hO_ib@DATAd:
CALL .OROO:
CALL .DATAd:
JMP .j_h_i:
.jR_hO_ib@DATAd@T32:
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .j_h_i:
.jR_hO_ib@DATAq:
CALL .OROO:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
CALL Imm2
MOV [Dii.Operand3],RCX
JMP .Flush:
.jR_hO_ib@DATAq@T64:
CALL .OROO:
CALL .DATAq:
CALL .T64:
JMP .j_h_i:
.jR_hO_ib@T16:
CALL .OROO:
CALL .T16:
JMP .j_h_i:
.jR_hO_ib@T32:
CALL .OROO:
CALL .T32:
JMP .j_h_i:
.jR_hO_ib@T64:
CALL .OROO:
CALL .T64:
JMP .j_h_i:
.jR_hR:JMP .j_h:
.jR_hR_CL:
LEA RCX,[RegCL]
MOV [Dii.Operand3],RCX
JMP .j_h:
.jR_hR_ib:
JMP .j_h_i:
.jR_hRd:
CALL .OperWidth32:
JMP .j_h:
.jR_hRd@DATAd:
CALL .OperWidth32:
CALL .DATAd:
JMP .j_h:
.jR_hRq:
CALL .OperWidth64:
JMP .j_h:
.jR_hRq@DATAq:
CALL .OperWidth64:
CALL .DATAq:
JMP .j_h:
.jR_i8:
.jR_ib:
JMP .j_i:
.jR_ibse@DATAa@CODEl:
CALL .CODEl:
JMP .j_ibse:
.jR_ib@DATAa:
CALL .DATAa:
JMP .j_i:
.jR_ib@DATAa@CODEl:
CALL .CODEl:
CALL .DATAa:
JMP .j_i:
.jR_ie:
JMP .j_ie:
.jR_ie@DATAa:
CALL .DATAa:
JMP .j_ie:
.jR_ie@DATAa@CODEl:
CALL .CODEl:
CALL .DATAa:
JMP .j_ie:
.jRb: CALL .OperWidth8:
JMP .j:
.jRb@DATAa:
CALL .DATAa:
JMP .j:
.jRb@DATAb:
CALL .OperWidth8:
CALL .DATAb:
JMP .j:
.jRb_hRb:
CALL .OperWidth8
SetSt [Dii.Prefix],pfx66NotUsed
JMP .j_h:
.jRb_i8:
CALL .OperWidth8
JMP .j_i:
.jRb_i8@DATAb:
CALL .DATAb:
.jRd: CALL .OperWidth32
JMP .j:
.jRb_i8@DATAb@CODEl:
CALL .CODEl:
CALL .DATAb:
CALL .OperWidth8:
JMP .j_i:
.jRb_ib:
MOV [Dii.DATA],'B'
CALL .OperWidth8:
JMP .j_ib:
.jRd_hE:
CALL .OperWidth32:
CALL .ERRR:
JMP .j_h:
.jRd_hO@DATAd:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAd:
JMP .j_h:
.jRd_hO@DATAd@T32:
CALL .OperWidth32:
CALL .ORRR:
CALL .DATAd:
CALL .T32:
JMP .j_h:
.jRd_hO_ib@DATAa:
CALL .DATAa:
CALL .OperWidth32
CALL .OROO:
JMP .j_h_i:
.jRd_hO_ib:
CALL .OperWidth32
CALL .OROO:
JMP .j_h_i:
.jRd_hO_ib@DATAb:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAb:
JMP .j_h_i:
.jRd_hO_ib@DATAb@T8:
CALL .T8:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAb:
JMP .j_h_i:
.jRd_hO_ib@DATAd:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAd:
JMP .j_h_i:
.jRd_hO_ib@DATAd@T32:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAd:
CALL .T32:
JMP .j_h_i:
.jRd_hO_ib@DATAd@T64:
CALL .OperWidth32:
CALL .OROO:
CALL .DATAd:
CALL .T64:
JMP .j_h_i:
.jRd_hO_ib@DATAq@T64:
CALL .OperWidth64:
CALL .OROO:
CALL .DATAd:
CALL .T64:
JMP .j_h_i:
.jRd_hO_ib@T16:
CALL .OperWidth32
CALL .OROO:
CALL .T16:
JMP .j_h_i:
.jRd_hO_ib@T32:
CALL .OperWidth32
CALL .OROO:
CALL .T32:
JMP .j_h_i:
.jRd_hO_ib@T8:
CALL .OperWidth32
CALL .OROO:
CALL .T8:
JMP .j_h_i:
.jRd_hRd_vRd@DATAd:
CALL .DATAd:
CALL .OperWidth32
JMP .j_h_v:
.jRd_hU@DATAd:
CALL .URRR:
CALL .OperWidth32:
CALL .DATAd:
JMP .j_h:
.jRd_ib:
CALL .OperWidth32:
JMP .j_i:
.jRe_hR:
MOV AL,OperWidth64
JSt [Dii.Status],stMode64,.jRe6:
MOV AL,OperWidth32
.jRe6:MOV [Dii.OperWidth],AL
JMP .j_h:
.jRe_ie:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
CALL GetOperWidth
MOV [Dii.DATA],AL
SetSt [Dii.Flags],flagImmSignExt
CALL Imm
LEA RAX,[ImmLine]
MOV [Dii.Operand2],RAX
JMP .Flush
.jRe_ie@DATAa:
CALL .DATAa:
JMP .jRe_ie:
.jRe_ie@DATAa@CODEl:
CALL .CODEl:
CALL .DATAa:
JMP .jRe_ie:
.jRe_ie@DATAq:
CALL .DATAq:
JMP .jRe_ie:
.jRM_hR@CODEl:
MOV [Dii.CODE],'L'
JMP .j_h:
.jRM_hS:
CALL .SRRR:
JMP .j_h:
.jRMb:CALL .OperWidth8:
JMP .j:
.jRMb@DATAb:
CALL .OperWidth8:
CALL .DATAb:
JMP .j:
.jRMb_1:
LEA RCX,[="1"]
MOV [Dii.Operand2],RCX
CALL .OperWidth8
CALL .DATAb:
JMP .j:
.jRMb_CL:
LEA RCX,[RegCL]
MOV [Dii.Operand2],RCX
CALL .OperWidth8:
CALL .DATAb:
JMP .j:
.jRMb_hRb@CODEl:
MOV [Dii.CODE],'L'
CALL .OperWidth8:
JMP .j_h:
.jRMb_ib:
CALL .OperWidth8:
JMP .j_i:
.jRMe@DATAa:
CALL ModifyDefaultWidth
CALL .DATAa:
CALL GetModRMReg
MOV [Dii.Operand1],RAX
JMP .Flush:
.jRMe@DISTn:
CALL .DISTn:
SetSt [Dii.Flags],flagProm64
JMP .j:
.jRMe_1:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
LEA RCX,[="1"]
MOV [Dii.Operand2],RCX
CALL .DATAa:
JMP .Flush
.jRMe_CL:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
LEA RCX,[RegCL]
MOV [Dii.Operand2],RCX
CALL .DATAa:
JMP .Flush
.jRMe_ib:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
CALL Imm2
MOV [Dii.Operand2],RCX
CALL .DATAa:
JMP .Flush
.jRMw:
CALL .OperWidth16:
JMP .j:
.jRq: CALL .OperWidth64
JMP .j:
.jRq@DATAq:
CALL .OperWidth64:
CALL .DATAq:
JMP .j:
.jRq_hO@DATAq:
CALL .OperWidth64:
CALL .OROO:
CALL .DATAq:
JMP .j_h:
.jRq_hO@DATAq@T64
CALL .OperWidth64:
CALL .ORRR:
CALL .DATAq:
CALL .T64:
JMP .j_h:
.jRq_hO_ib:
CALL .OperWidth64
CALL .OROO:
JMP .j_h_i:
.jRq_hO_ib@DATAq:
CALL .OperWidth64
CALL .OROO:
CALL ModifyDefaultWidth
CALL GetModRMReg
MOV [Dii.Operand1],RAX
MOV [Dii.Operand2],RDX
CALL Imm2
MOV [Dii.Operand3],RCX
JMP .Flush:
.jRq_hO_ib@DATAq@T64:
CALL .T64:
JMP .jRq_hO_ib@DATAq:
.jRq_hO_ib@T16:
CALL .OperWidth64
CALL .OROO:
CALL .T16:
JMP .j_h_i:
.jRq_hO_ib@T32:
CALL .OperWidth64
CALL .OROO:
CALL .T32:
JMP .j_h_i:
.jRq_hRq_vRq@DATAq:
CALL .DATAq:
CALL .OperWidth64
JMP .j_h_v:
.jRq_hU@DATAq:
CALL .URRR:
CALL .OperWidth64:
CALL .DATAq:
JMP .j_h:
.jRq_ie@DATAq:
CALL .DATAq:
JMP .jRe_ie:
.jRq_ie@DATAq@CODEl:
CALL .CODEl:
JMP .jRq_ie@DATAq:
.jRw_hO@DATAw@T16:
CALL .OROO:
CALL .OperWidth16
CALL .DATAw:
CALL .T16:
JMP .j_h:
.jRw_hRw:
CALL .OperWidth16
JMP .j_h:
.jU_hU:
CALL .UUUU:
JMP .j_h:
.jU_ib:
CALL .UUUU:
JMP .j_i:
.jX_hO@OVM:
CALL .OVM:
CALL .OXOO:
JMP .j_h:
.jX_hO@QVM:
CALL .QVM:
CALL .OXOO:
JMP .j_h:
.jX_hO_ib:CALL .OXOO:
JMP .j_h_i:
.jX_hO_ib@T128:
CALL .T128:
CALL .OXOO:
JMP .j_h_i:
.jXXY_hO@HVM:
CALL .HVM:
MOV [Dii.Family+0],'O'
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .j_h:
.jXXY_hO_ib:
MOV [Dii.Family+0],'O'
CALL .XXY:
MOV [Dii.Family+1],AL
MOV [Dii.DATA],AH
JMP .j_h_i:
.jXXY_hO_ib@HVM:
CALL .HVM
JMP .jXXY_hO_ib:
.jY_hO_ib@T256:
CALL .T256:
CALL .OYOO:
JMP .j_h_i:
.lb_eCX:
MOV [Dii.ImmSize],1
MOV [Dii.DIST],'S'
CALL ImmRel
MOV [Dii.Operand1],RCX
CALL ModifyDefaultWidth
CALL GetCounter
MOV [Dii.Operand2],RCX
JMP .Flush
.le: SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
CALL ModifyDefaultWidth
MOV [Dii.DIST],'N'
MOV CL,4
MOV AL,'D'
MOV AH,'Q'
JSt [Dii.Status],stMode64,.E85:
MOV AH,'D'
CMP [Dii.OperWidth],OperWidth32
JE .E85:
MOV CL,2
MOV AL,'W'
MOV AH,'W'
.E85:MOV [Dii.ImmSize],CL
MOV [Dii.IMM],AL
MOV [Dii.DATA],AH
CALL ImmRel
LEA RAX,[ImmLine]
MOV [Dii.Operand1],RAX
JMP .Flush
.le@x: ; XBEGIN
CALL ModifyDefaultWidth
CALL GetOperWidth:
MOV [Dii.ImmSize],AH
INC R8
CALL ImmRel:
MOV [Dii.Operand1],RCX
JMP .Flush:
.none@DATAa:
SetSt [Dii.Prefix],pfx67NotUsed+pfxREXNotUsed
SetSt [Dii.Flags],flagProm64
CALL ModifyDefaultWidth
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.Pb_Tb: ; CMPS
CALL .OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
.Pe_Te:
CALL ModifyDefaultWidth
CALL GetStringRegs
XCHG RAX,RCX
JMP .dX5:
.Rb_ib:
MOV [Dii.OperWidth],OperWidth8
.Re_ie:
SetSt [Dii.Prefix],pfx67NotUsed
MOV CL,0000_0111b
AND CL,DL
OR [Dii.BaseNr],CL
MOV CL,[Dii.BaseNr]
CALL ModifyDefaultWidth
CALL GetRegByCL
MOV [Dii.Operand1],RSI
CALL Imm
MOV [Dii.Operand2],RCX
JMP .Flush
.Tb_AL: ; STOS
CALL .OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
JMP .Te_eAX:
.Tb_DX: ; INS
CALL .OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
JMP .Te_DX:
.Tb_Pb: ; MOVS
CALL .OperWidth8
SetSt [Dii.Prefix],pfxREXNotUsed
JMP .Te_Pe:
.Te_DX:
CALL ModifyDefaultWidth
CALL GetStringRegs
LEA RDX,[RegDX]
MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RDX
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush
.Te_eAX:
CALL ModifyDefaultWidth
CALL GetStringRegs
CALL GetAccum
MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RAX
JMP .Flush:
.Te_Pe:
CALL ModifyDefaultWidth
CALL GetStringRegs
.dX5:MOV [Dii.Operand1],RCX
MOV [Dii.Operand2],RAX
CALL GetOperWidth
MOV [Dii.DATA],AL
JMP .Flush:
.vK_lb@DISTs:
CALL .DISTs:
JMP .v_lb:
.vK_ld@DISTn:
CALL .DISTn:
JMP .v_ld:
.vO_jO_ib:
CALL .OOOO:
JMP .v_j_i:
.vO_jO_ib@FV32:
CALL .OOOO:
CALL .FV32:
JMP .v_j_i:
.vO_jO_ib@FV64:
CALL .OOOO:
CALL .FV64:
JMP .v_j_i:
.vO_jO_ib@FVM:
CALL .FVM:
CALL .OOOO:
JMP .v_j_i:
.vO_jO_ib@T128:
CALL .T128:
JMP .vO_jO_ib:
.vR_jR:
JMP .v_j:
.vR_jR_id:
JMP .v_j_id:
.vRd_jR:
CALL .OperWidth32
JMP .v_j:
.vRd_jR_id:
CALL .OperWidth32:
JMP .v_j_id:
.vRq_jR:
CALL .OperWidth64
JMP .v_j:
.vRq_jR_id:
CALL .OperWidth64:
JMP .v_j_id:
.Flush: ; Dii.Opcode was an instruction (not a prefix). CF=0 tells the parent (Disasm:) to call FlushDii.
CLC
JMP .90:
.NoFlush:; Dii.Opcode was a prefix and no more than 4 prefixes are incorporated yet. CF=1.
STC
.90: RET
ENDP DisTabProc
%IF %^Debug
DebugOutput PROC
StdOutput RSI,Size=RCX
RET
ENDP DebugOutput
%ENDIF
ENDPROGRAM viewdasm
▲Back to the top▲