Added support for instructions with 5 operands

* optimized table structure to support instructions with 5 operands (vpermil2ps, vpermil2pd)
* updated InstructionEditor
This commit is contained in:
flobernd 2016-09-13 05:26:55 +02:00
parent 0cfed163a0
commit 72907c6845
30 changed files with 122643 additions and 123216 deletions

View File

@ -3,9 +3,9 @@ unit formEditorCPUIDFeatureFlags;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, untInstructionEditor, cxOI, Vcl.StdCtrls, System.ImageList,
Vcl.ImgList, cxGraphics, VirtualTrees;
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, System.UITypes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxOI, Vcl.StdCtrls, System.ImageList,
Vcl.ImgList, cxGraphics, VirtualTrees, Zydis.InstructionEditor;
type
TfrmEditorCPUIDFeatureFlags = class(TForm)
@ -23,7 +23,8 @@ type
var Allowed: Boolean);
procedure VirtualTreeViewFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure VirtualTreeViewGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
var ImageIndex: System.UITypes.TImageIndex);
procedure VirtualTreeViewGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
strict private
@ -161,7 +162,7 @@ end;
procedure TfrmEditorCPUIDFeatureFlags.VirtualTreeViewGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
var ImageIndex: Integer);
var ImageIndex: System.UITypes.TImageIndex);
begin
ImageIndex := -1;
if (Kind in [ikNormal, ikSelected]) then

View File

@ -1,199 +0,0 @@
object frmEditorInstructionOperands: TfrmEditorInstructionOperands
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'frmEditorInstructionOperands'
ClientHeight = 462
ClientWidth = 640
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object GroupBox: TGroupBox
AlignWithMargins = True
Left = 3
Top = 420
Width = 634
Height = 39
Margins.Top = 0
Align = alBottom
TabOrder = 0
DesignSize = (
634
39)
object btnCancel: TButton
Left = 514
Top = 7
Width = 112
Height = 25
Anchors = [akTop, akRight]
Caption = 'Cancel'
ImageIndex = 1
ImageMargins.Left = 2
ImageMargins.Top = 2
Images = imgIcons16
TabOrder = 1
OnClick = btnCancelClick
end
object btnApply: TButton
Left = 396
Top = 7
Width = 112
Height = 25
Anchors = [akTop, akRight]
Caption = 'Apply'
ImageIndex = 0
ImageMargins.Left = 2
ImageMargins.Top = 2
Images = imgIcons16
TabOrder = 0
OnClick = btnApplyClick
end
end
object PageControl1: TPageControl
AlignWithMargins = True
Left = 3
Top = 3
Width = 634
Height = 414
ActivePage = TabSheet1
Align = alClient
TabOrder = 1
object TabSheet1: TTabSheet
Caption = 'Instruction Operands'
object GroupBox1: TGroupBox
AlignWithMargins = True
Left = 3
Top = 3
Width = 238
Height = 380
Align = alLeft
TabOrder = 0
end
end
end
object imgIcons16: TcxImageList
FormatVersion = 1
DesignInfo = 1049152
ImageInfo = <
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000000000000000000000000000000000000000001B0000
0033000000330000003300000033000000330000003300000033000000330000
0033000000330000003300000033000000330000001B00000000004B29A00089
49FF008747FF008747FF008747FF008747FF008747FF008747FF008747FF0087
47FF008747FF008747FF008747FF008949FF004B29A000000000008949FF07E4
A4FF07E5A5FF07E4A4FF07E4A4FF07E4A4FF07E4A4FF07E4A4FF07E4A4FF07E4
A4FF07E4A4FF07E4A4FF07E5A5FF07E4A4FF008949FF00000000008747FF13E7
AAFF00DB9BFF00DA9AFF00DA99FF00DA99FF00DA99FF00DA99FF00DA9AFF00DA
9AFF00DA9AFF00DA9AFF00DB9BFF13E7AAFF008747FF00000000008746FF1EE7
AEFF00D699FF00D698FF00D495FF00D391FF00D391FF00D495FF00D698FF00D6
99FF00D699FF00D699FF00D699FF1EE7AEFF008746FF00000000008746FF2AE9
B3FF00D299FF00D095FF00CC8DFFFFFFFFFFFFFFFFFF00CC8DFF00D096FF00D2
99FF00D29AFF00D29AFF00D29AFF2AE9B3FF008746FF00000000008746FF35EA
B7FF00CD96FF00C98DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00C98DFF00CD
96FF00CF99FF00CF9AFF00CF9AFF36EAB8FF008746FF00000000008745FF3EEB
BBFF00C692FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00C4
8DFF00C995FF00CA99FF00CA99FF41ECBDFF008745FF00000000008745FF4BED
BFFF00C393FFFFFFFFFFFFFFFFFF00C08BFF00BF8BFFFFFFFFFFFFFFFFFFFFFF
FFFF00C18EFF00C596FF00C699FF4DEDC0FF008745FF00000000008744FF58EF
C5FF00C197FF00BF93FF00C093FF00C196FF00C196FF00BC8EFFFFFFFFFFFFFF
FFFFFFFFFFFF00BC8EFF00C096FF58EFC5FF008744FF00000000008744FF64F1
CAFF00BE99FF00C099FF00C09AFF00C19BFF00C19AFF00BE97FF00B98EFFFFFF
FFFFFFFFFFFFFFFFFFFF00BA92FF62F0C9FF008744FF00000000008744FF71F2
CFFF00BB99FF00BD9AFF00BE9BFF00BE9BFF00BE9BFF00BE9AFF00BB96FF00B6
8EFFFFFFFFFFFFFFFFFF00B792FF6EF2CDFF008744FF00000000008744FF7BF4
D3FF00B699FF00B89AFF00B99BFF00B99BFF00B99BFF00B99BFF00B89AFF00B7
98FF00B494FF00B493FF00B496FF7AF3D3FF008744FF00000000008744FF86F5
D8FF00B198FF00B299FF00B399FF00B399FF00B399FF00B399FF00B399FF00B2
99FF00B298FF00B297FF00B197FF86F5D8FF008744FF00000000008946FF8AF2
D9FF92F6DEFF93F6DDFF94F6DDFF94F6DDFF94F6DDFF94F6DDFF94F6DDFF94F6
DDFF94F6DDFF93F6DDFF92F6DEFF8AF2D9FF008946FF00000000004B29880089
46FF008743FF008643FF008643FF008643FF008643FF008643FF008643FF0086
43FF008643FF008643FF008743FF008946FF004B298800000000}
end
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000000000
0013000000330000003300000033000000330000003300000033000000330000
0033000000330000003300000033000000330000003300000013000000001117
487E2D3CC0FF2B3BBEFF2A3ABEFF2A3ABEFF2A3ABEFF2A3ABEFF2A3ABEFF2A3A
BEFF2A3ABEFF2A3ABEFF2A3ABEFF2B3BBEFF2D3CC0FF1117487E000000002D3D
C0FF6172FAFF6A7DFFFF697CFFFF6D80FFFF7485FFFF7788FFFF7788FFFF7788
FFFF7485FFFF6D7FFFFF697CFFFF6A7DFFFF6172FAFF2D3DC0FF000000002B3B
BEFF6578FFFF5F73FEFF6F80FFFF7989FFFF5868E6FF3E4ED0FF3F4FD1FF3E4E
D0FF5767E5FF7887FEFF6E7FFFFF5F73FEFF6578FFFF2B3BBEFF000000002B3B
BEFF5D72FFFF697BFEFF7785F8FF3949CAFF1E2A89B70B0F303F07091D26070A
1F552636B9FF5A6FFDFF576CFAFF687AFCFF5D71FFFF2B3BBEFF000000002C3B
BFFF586EFEFF8593FFFF3B4BCAFF0E143F530000000000000000000000332B3A
BDFF5970FEFF546AFBFF7F8FFFFF8290FDFF586EFEFF2C3BBFFF000000002C3C
BFFF536BFCFF707CE7FF1E2A89BB0000000000000000000000332C3BBEFF546B
FBFF5067F8FF8796FFFF3B4BCDFF6D79E5FF536AFCFF2C3CBFFF000000002D3D
BFFF4F68FBFF4E5BD1FF0B0F304500000000000000332C3BBEFF4E66F9FF4A63
F6FF8C99FFFF2737BCFF07091F314D5AD0FF4F68FBFF2D3DBFFF000000002E3D
C0FF4A64F9FF3446CDFF07091D2D000000332D3CBEFF4862F7FF445DF4FF8E9C
FFFF2838BDFF0000000007091D313446CDFF4A64F9FF2E3DC0FF000000002E3D
C0FF4660F7FF3445CCFF080A20552D3CBEFF445DF4FF3F59F1FF929FFFFF2838
BDFF00000000000000000C0F305B3445CDFF4660F7FF2E3DC0FF000000002E3E
C0FF405BF3FF384DDBFF2E3CBCFF3E59F2FF3954EFFF95A2FFFF2838BDFF0000
00000000000000000011222D8AC5384EDCFF405BF3FF2E3EC0FF000000002F3E
C0FF3955F0FF3951EAFF3954EEFF3651EDFF9AA5FFFF2838BDFF000000080000
000D0000002510153F753041C8FF3A53EBFF3A55F0FF2F3EC0FF000000002E3D
BFFF3A54EFFF324DE9FF334DE9FF324DEBFF2A39BCFF070A1F5507091D510B0F
3065212D8AC52F41C8FF314CE4FF324DEBFF3A54EFFF2E3DBFFF000000002B3B
BFFF6A7DFDFF334EE8FF2643E4FF2642E3FF253CD4FF2739C7FF273AC8FF273A
C8FF263DD5FF2743E5FF2643E6FF334EE9FF6A7DFDFF2B3BBFFF000000002B3B
C0FF929DFCFFAAB3FFFFAAB3FFFFAAB3FFFFAAB4FFFFAAB4FFFFAAB4FFFFAAB4
FFFFAAB4FFFFAAB3FFFFAAB3FFFFAAB3FFFF929DFCFF2B3BC0FF000000001117
485E2A3AC0FF2838BFFF2737BEFF2737BEFF2737BEFF2737BFFF2737BFFF2737
BFFF2737BEFF2737BEFF2737BEFF2838BFFF2A3AC0FF1117485E}
end
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000300000
0033000000330000003300000033000000330000003300000033000000330000
00330000002F0000000000000000000000000000000000000000A36B31F2AB6E
31FFAA6B2DFFAA6C2FFFAA6D31FFAA6D31FFAA6D31FFAA6C2FFFAA6B2DFFAB6E
31FFA26A31F10000000000000000000000000000000000000000AB6E31FFEEAF
60FFFFF7DEFFE9A95BFFEAAB5EFFEAAB5FFFEAAB5EFFE9A95AFFFFF7DEFFEEAF
60FFAB6E30FF0000003300000033000000330000003300000023AA6B2DFFFFF6
DDFFFCEDD2FFFCEFD5FFFDF1D9FFFDF0D7FFFCEED4FFFCEDD2FFFCEDD1FFFFF6
DDFFA8692BFFAB6E31FFAA6C2FFFAA6B2DFFAB6E2FFF784F24C0AA6C2EFFE8B0
68FFFDEED4FFDD9C4FFFDEA054FFDD9E52FFFDEFD6FFDA9747FFFCEDD1FFE7AE
67FFA56628FFEEAF62FFEAA95BFFFFF6DCFFF4C180FFAB6D2FFFAA6C2FFFE7B4
72FFFEF1D8FFD99C52FFDBA159FFDBA058FFD99C51FFFDEFD5FFFCEDD2FFE6B2
6FFFA36324FFFFF5DCFFFCEDD2FFFCECCFFFFFF5DAFFA96B2CFFAA6C2FFFE8B7
78FFFEF1D8FFD59A53FFD89F5AFFD89F5BFFD69C56FFDDAD70FFFEEFD5FFE7B5
76FFA46324FFFFF4DBFFE2AC68FFFBEBCEFFF2CC98FFAA6B2CFFAA6C2FFFE7B9
7FFFFFF1D7FFD0954FFFD39B57FFD39B58FFD29A55FFD0954EFFFFF3DAFFE6B9
7FFFA56627FFDDA054FFFDF0D6FFFCECD1FFEEC189FFAA6B2DFFAA6C2EFFE7BB
84FFFEF0D5FFCA8F4AFFCD9552FFD7A668FFE8BF8BFFE8BE89FFE6BC86FFE9BF
8AFFA6672AFFDAA05AFFD4974EFFFDEFD4FFEEC590FFAA6B2DFFAA6C2EFFE5BD
8AFFFDEED2FFFFF1D6FFC58D48FFE6C08EFFBF894FFFA66728FFA56426FFE9C5
94FFA6672AFFD59D58FFD1964FFFFFF2D9FFEECA96FFAA6C2EFFAA6B2CFFE5C0
8EFFFDECD0FFBB813AFFFFF0D5FFECCDA3FFA56526FFDBA25AFFE8C89CFFCFA2
6EFFBF894DFFE9C18DFFE8BF8AFFE6BC86FFE9C08AFFAB6D2FFFAA6B2BFFFFF5
DAFFFDECCEFFFDECCFFFFEEED2FFEBCEA6FFA56322FFE8CAA0FFCEA16EFFB173
31FFE8C390FFC08950FFA66728FFA56426FFEBC695FFAC6E30FFAB6D2EFFE6CB
A3FFFFF5D9FFE2C59AFFE3C69DFFE5C9A1FFE7CCA4FFCDA371FFAE6E2AFFFFF4
DAFFE6C392FFA66627FFDCA35AFFE9CA9EFFD3A773FF754C22AC784E24B0AB6D
2EFFAA6B2BFFAA6B2BFFAA6B2CFFAA6A2AFFA76524FFC79865FFFFF3D7FFFFF0
D4FFE4C396FFA56323FFE9CCA2FFD2A775FF70481FA700000000000000000000
0000000000000000000000000000AD6F31FFE9D0A9FFFFF9DFFFE3C69CFFE3C7
9EFFE6CAA2FFE8CFA7FFD1AA7AFF70471FA70000000000000000000000000000
0000000000000000000000000000774E24AFAB6C2EFFC18E58FFA9692AFFAA6B
2CFFAB6C2EFFAC6D2FFF754B21AC000000000000000000000000}
end>
end
end

View File

@ -1,80 +0,0 @@
unit formEditorInstructionOperands;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, System.ImageList, Vcl.ImgList, cxGraphics,
Vcl.StdCtrls, untInstructionEditor;
type
TfrmEditorInstructionOperands = class(TForm)
GroupBox: TGroupBox;
btnCancel: TButton;
btnApply: TButton;
imgIcons16: TcxImageList;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
GroupBox1: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btnApplyClick(Sender: TObject);
strict private
FApplyChanges: Boolean;
FEditor: TInstructionEditor;
FDefinition: TInstructionDefinition;
strict private
function GetOperands: TInstructionOperands; inline;
procedure SetOperands(const Value: TInstructionOperands); inline;
public
property ApplyChanges: Boolean read FApplyChanges;
property Operands: TInstructionOperands read GetOperands write SetOperands;
end;
var
frmEditorInstructionOperands: TfrmEditorInstructionOperands;
implementation
{$R *.dfm}
{ TfrmEditorInstructionOperands }
procedure TfrmEditorInstructionOperands.btnApplyClick(Sender: TObject);
begin
FApplyChanges := true;
Close;
end;
procedure TfrmEditorInstructionOperands.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TfrmEditorInstructionOperands.FormCreate(Sender: TObject);
begin
FEditor := TInstructionEditor.Create;
FEditor.Reset;
FDefinition := FEditor.CreateDefinition('dummy');
end;
procedure TfrmEditorInstructionOperands.FormDestroy(Sender: TObject);
begin
if (Assigned(FEditor)) then
begin
FEditor.Free;
end;
end;
function TfrmEditorInstructionOperands.GetOperands: TInstructionOperands;
begin
Result := FDefinition.Operands;
end;
procedure TfrmEditorInstructionOperands.SetOperands(const Value: TInstructionOperands);
begin
FDefinition.Operands.Assign(Value);
end;
end.

View File

@ -3,9 +3,9 @@ unit formEditorX86Registers;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, untInstructionEditor, System.ImageList, Vcl.ImgList,
cxGraphics, Vcl.StdCtrls, VirtualTrees;
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
System.UITypes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Zydis.InstructionEditor,
System.ImageList, Vcl.ImgList, cxGraphics, Vcl.StdCtrls, VirtualTrees;
type
TfrmEditorX86Registers = class(TForm)
@ -20,7 +20,8 @@ type
procedure FormCreate(Sender: TObject);
procedure VirtualTreeViewFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure VirtualTreeViewGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
var ImageIndex: System.UITypes.TImageIndex);
procedure VirtualTreeViewGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure VirtualTreeViewCollapsing(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -199,7 +200,7 @@ end;
procedure TfrmEditorX86Registers.VirtualTreeViewGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
var ImageIndex: Integer);
var ImageIndex: System.UITypes.TImageIndex);
var
NodeData: PNodeData;
begin
@ -220,8 +221,8 @@ begin
end;
end;
procedure TfrmEditorX86Registers.VirtualTreeViewGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure TfrmEditorX86Registers.VirtualTreeViewGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
NodeData: PNodeData;
begin

View File

@ -2,9 +2,9 @@ object frmGenerator: TfrmGenerator
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'Generator'
ClientHeight = 371
ClientWidth = 544
Caption = 'Code Generator'
ClientHeight = 204
ClientWidth = 449
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@ -13,23 +13,22 @@ object frmGenerator: TfrmGenerator
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object GroupBox: TGroupBox
AlignWithMargins = True
Left = 3
Top = 329
Width = 538
Top = 162
Width = 443
Height = 39
Margins.Top = 0
Align = alBottom
TabOrder = 0
DesignSize = (
538
443
39)
object btnClose: TButton
Left = 418
Left = 323
Top = 7
Width = 112
Height = 25
@ -43,7 +42,7 @@ object frmGenerator: TfrmGenerator
OnClick = btnCloseClick
end
object btnGenerate: TButton
Left = 300
Left = 205
Top = 7
Width = 112
Height = 25
@ -57,46 +56,74 @@ object frmGenerator: TfrmGenerator
OnClick = btnGenerateClick
end
end
object TreeView: TVirtualStringTree
object PageControl1: TPageControl
AlignWithMargins = True
Left = 3
Top = 3
Width = 538
Height = 323
Width = 443
Height = 156
ActivePage = TabSheet1
Align = alClient
Header.AutoSizeIndex = 0
Header.Font.Charset = DEFAULT_CHARSET
Header.Font.Color = clWindowText
Header.Font.Height = -11
Header.Font.Name = 'Tahoma'
Header.Font.Style = []
Header.Options = [hoAutoResize, hoVisible]
Images = imgTreeView
TabOrder = 1
TreeOptions.MiscOptions = [toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick]
TreeOptions.PaintOptions = [toHideFocusRect, toShowButtons, toShowDropmark, toShowHorzGridLines, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toFullVertGridLines, toAlwaysHideSelection, toUseBlendedSelection]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnBeforeCellPaint = TreeViewBeforeCellPaint
OnCollapsing = TreeViewCollapsing
OnFreeNode = TreeViewFreeNode
OnGetText = TreeViewGetText
OnGetImageIndex = TreeViewGetImageIndex
Columns = <
item
Position = 0
Width = 384
WideText = 'Name'
object TabSheet1: TTabSheet
Caption = 'Code Generator'
object GroupBox1: TGroupBox
AlignWithMargins = True
Left = 3
Top = 3
Width = 429
Height = 122
Align = alClient
TabOrder = 0
DesignSize = (
429
122)
object Label1: TLabel
Left = 16
Top = 16
Width = 73
Height = 13
Caption = 'Total Progress:'
end
object Label2: TLabel
Left = 16
Top = 64
Width = 92
Height = 13
Caption = 'Current Operation:'
end
object lblOperationName: TLabel
Left = 114
Top = 64
Width = 3
Height = 13
end
object pbTotalProgress: TProgressBar
Left = 16
Top = 35
Width = 398
Height = 17
Anchors = [akLeft, akTop, akRight]
ParentShowHint = False
ShowHint = False
TabOrder = 0
end
object pbCurrentOperation: TProgressBar
Left = 16
Top = 83
Width = 398
Height = 17
Anchors = [akLeft, akTop, akRight]
ParentShowHint = False
ShowHint = False
TabOrder = 1
end
end
end
item
Alignment = taRightJustify
Position = 1
Width = 150
WideText = 'Value'
end>
end
object imgIcons16: TcxImageList
FormatVersion = 1
DesignInfo = 2097208
DesignInfo = 524392
ImageInfo = <
item
Image.Data = {
@ -173,157 +200,4 @@ object frmGenerator: TfrmGenerator
BFFF2737BEFF2737BEFF2737BEFF2838BFFF2A3AC0FF1117485E}
end>
end
object imgTreeView: TcxImageList
FormatVersion = 1
DesignInfo = 2097288
ImageInfo = <
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000300000
0033000000330000003300000033000000330000003300000033000000330000
00330000003300000033000000330000002F00000000000000004190C6F24398
D2FF4094D0FF3E92CFFF3E92CEFF3F92CEFF3F92CEFF3F92CEFF3F92CEFF3F92
CEFF3F92CEFF3F92CEFF3F93CFFF3D8BC2F00000000E000000004499D2FF3F94
D0FFABFBFFFF9BF3FFFF92F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1FFFF93F1
FFFF93F1FFFF93F1FFFFA6F8FFFF65B8E3FF122A3A5F000000004398D2FF4FA6
D9FF8EDAF5FFA2EEFFFF82E5FEFF84E5FEFF84E5FEFF85E6FEFF85E6FEFF85E6
FEFF85E6FEFF84E6FEFF96EBFFFF8CD8F5FF296088B8000000004296D1FF6BBE
E8FF6DBDE6FFBBF2FFFF75DEFDFF77DEFCFF78DEFCFF7BDFFCFF7DDFFCFF7DDF
FCFF7DDFFCFF7CDFFCFF80E0FDFFADF0FFFF4D9DD3FF0000000E4095D0FF8AD7
F5FF44A1D8FFDDFDFFFFDAFAFFFFDBFAFFFFDEFAFFFF74DCFCFF76DBFAFF75DA
FAFF74DAFAFF74DAFAFF72D9FAFFA1E8FFFF7CBFE6FF12293A5E3E94D0FFABF0
FFFF449DD6FF368CCBFF368CCBFF368CCBFF378BCBFF5CBEEAFF6FD9FBFF6AD6
FAFF68D5F9FF67D4F9FF66D4F9FF82DEFCFFAAE0F6FF296088B93D92CFFFB9F4
FFFF73DBFBFF6BCCF2FF6CCDF3FF6CCEF3FF6DCEF3FF479CD4FF56BAE9FFDAF8
FFFFD7F6FFFFD6F6FFFFD5F6FFFFD5F7FFFFDBFCFFFF3E94D0FF3C92CFFFC0F3
FFFF71DAFBFF74DBFBFF75DBFCFF75DBFCFF76DCFCFF73DAFAFF449CD4FF378C
CBFF368CCBFF358CCCFF348DCCFF3890CEFF3D94D0FF3E8CC2EB3B92CFFFCAF6
FFFF69D5F9FF6CD5F9FF6BD5F9FF69D5F9FF69D5FAFF6AD7FBFF68D4FAFF5EC7
F1FF5EC7F2FF5DC8F2FFB4E3F8FF3D94D0FF1A3B5269000000003B92CFFFD5F7
FFFF60D1F9FF61D0F8FFB4EBFDFFD9F6FFFFDAF8FFFFDAF8FFFFDBF9FFFFDCFA
FFFFDCFAFFFFDCFBFFFFE0FFFFFF3E95D0FF0E1F2A33000000003D94D0FFDCFC
FFFFD8F7FFFFD8F7FFFFDBFAFFFF358ECDFF3991CEFF3A92CFFF3A92CFFF3A92
CFFF3A92CFFF3B92CFFF3D94D0FF3880B1D700000000000000002E6991B03D94
D0FF3A92CFFF3A92CFFF3D94D0FF367CACD20000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000}
end
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001E00000033000000330000
00330000001E0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001E3B3B3BAC636363FF626263FF6363
63FF3B3B3BAC0000001E00000000000000000000000000000000000000000000
00000000000000000000000000003B3B3BAC6F6E6EFF95918FFF989492FF9591
8FFF6F6E6EFF3B3B3BAC00000000000000000000000000000000000000000000
0000000000000000000000000000636464FF858381FF878481FF868381FF8784
81FF858381FF636464FF00000000000000000000000000000000000000000000
0000000000000000000000000000626363FF8E8C8BFF767371FF767371FF7673
71FF8E8C8BFF626363FF00000000000000000000000000000000000000000000
0000000000000000000000000000626363FFA7A5A5FF7D7B7AFF787675FF7D7B
7AFFA7A5A5FF626363FF00000000000000000000000000000000000000000000
00000000000000000000000000003B3B3B976F6E6EFFA6A5A4FFA9A8A9FFA6A5
A4FF6D6E6EFF3B3B3B9700000000000000000000000000000000000000000000
0000000000000000000000000000000000003B3B3B97626262FF616161FF6262
62FF3B3B3B970000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000}
end
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000024000000330000
002F000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000005F31C100C684FF007D
41ED000000290000000000000000000000000000000000000000000000000000
00000000000000000024000000330000003300000033008847FF00E4A6FF00BE
80FF006F3BD90000002100000000000000000000000000000000000000000000
000000000000005F31C1008A48FF008847FF008746FF008847FF00D9A1FF00D8
A0FF00BC80FF005A2FB900000022000000000000000000000000000000000000
000000000000008947FF43E8C2FF00D7A0FF00D7A0FF00D59FFF00D09CFF00D0
9CFF00D39FFF00B981FF005D32BD000000000000000000000000000000000000
000000000000008845FF6FE8D0FF00C899FF00C899FF00C899FF00C797FF00C8
98FF00CA9AFF63E6CDFF008A47FF000000000000000000000000000000000000
000000000000008946FF99F0E4FF4FE9D5FF51E8D4FF4DE6D1FF94E8D8FF00C3
97FF60E0C7FF00B281FF005E31AC000000000000000000000000000000000000
000000000000005F32B2008946FF008744FF008642FF008847FF82E4D6FF5ADA
C4FF00AD7FFF005A2EA700000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000008847FF7AE4D8FF00AA
7FFF006F39CF0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000005F32B200AA85FF007E
40E9000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000}
end
item
Image.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001E00000033000000330000
00330000001E0000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001E6E4F11ACB78319FFB68218FFB783
19FF6E4F11AC0000001E00000000000000000000000000000000000000000000
00000000000000000000000000006E4F11ACC5922FFFEDC074FFF1C47AFFEDC0
74FFC5922FFF6E4F11AC00000000000000000000000000000000000000000000
0000000000000000000000000000B7841AFFEAB45CFFE9B45CFFE8B35BFFE9B4
5CFFEAB45CFFB7841AFF00000000000000000000000000000000000000000000
0000000000000000000000000000B78219FFEBB964FFE3A641FFE3A641FFE3A6
41FFEBB964FFB78219FF00000000000000000000000000000000000000000000
0000000000000000000000000000B78319FFEEC684FFE5AA49FFE2A641FFE5AA
49FFEEC684FFB78319FF00000000000000000000000000000000000000000000
00000000000000000000000000006E4F1197C6922EFFECC482FFEFC886FFECC4
82FFC6912CFF6E4F119700000000000000000000000000000000000000000000
0000000000000000000000000000000000006E4F1197B78319FFB68217FFB783
19FF6E4F11970000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000}
end>
end
end

View File

@ -4,8 +4,8 @@ interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees, System.ImageList, Vcl.ImgList, cxGraphics,
Vcl.StdCtrls, untInstructionEditor;
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.ImageList, Vcl.ImgList, cxGraphics, Vcl.StdCtrls,
Vcl.ComCtrls, Zydis.InstructionEditor;
type
TfrmGenerator = class(TForm)
@ -13,30 +13,21 @@ type
btnClose: TButton;
btnGenerate: TButton;
imgIcons16: TcxImageList;
TreeView: TVirtualStringTree;
imgTreeView: TcxImageList;
procedure FormCreate(Sender: TObject);
procedure TreeViewCollapsing(Sender: TBaseVirtualTree; Node: PVirtualNode;
var Allowed: Boolean);
procedure TreeViewFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure TreeViewGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
procedure TreeViewGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: string);
PageControl1: TPageControl;
TabSheet1: TTabSheet;
GroupBox1: TGroupBox;
pbTotalProgress: TProgressBar;
Label1: TLabel;
pbCurrentOperation: TProgressBar;
Label2: TLabel;
lblOperationName: TLabel;
procedure btnCloseClick(Sender: TObject);
procedure btnGenerateClick(Sender: TObject);
procedure TreeViewBeforeCellPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect;
var ContentRect: TRect);
strict private
FEditor: TInstructionEditor;
FProgressNodeTotal: PVirtualNode;
FProgressNode: array[TGeneratorWorkOperation] of PVirtualNode;
FInfoNode: array[0..6] of PVirtualNode;
FCurrentOperation: TGeneratorWorkOperation;
strict private
procedure GeneratorWorkStart(Sender: TObject; Operation: TGeneratorWorkOperation; MinWorkCount,
MaxWorkCount: Integer);
procedure GeneratorWorkStart(Sender: TObject; const OperationName: String;
OperationCount, OperationNumber: Integer; MinWorkCount, MaxWorkCount: Integer);
procedure GeneratorWork(Sender: TObject; WorkCount: Integer);
procedure GeneratorWorkEnd(Sender: TObject);
public
@ -49,67 +40,10 @@ var
implementation
uses
untHelperClasses;
Zydis.CodeGenerator, untHelperClasses;
{$R *.dfm}
type
TGeneratorNodeType = (ntCategory, ntSpacer, ntOperation, ntValue);
PGeneratorNodeData = ^TGeneratorNodeData;
TGeneratorNodeData = record
public
NodeType: TGeneratorNodeType;
Text: String;
ProgressActive: Boolean;
ProgressMax: Integer;
ProgressUpdateStep: Integer;
Progress: Double;
Value: String;
public
procedure ProgressInit(MaxWorkCount: Integer; MinWorkCount: Integer); inline;
procedure ProgressUpdate(NewProgress: Double); inline;
procedure WorkCountUpdate(WorkCount: Integer); inline;
function IsProgressUpdateStep(WorkCount: Integer): Boolean; inline;
end;
{ TGeneratorNodeData }
function TGeneratorNodeData.IsProgressUpdateStep(WorkCount: Integer): Boolean;
begin
Assert(NodeType = ntOperation);
Result := ((WorkCount mod ProgressUpdateStep) = 0);
end;
procedure TGeneratorNodeData.ProgressInit(MaxWorkCount, MinWorkCount: Integer);
begin
Assert(NodeType = ntOperation);
ProgressMax := (MaxWorkCount - MinWorkCount);
ProgressUpdateStep := Round(ProgressMax / 100) + 1;
end;
procedure TGeneratorNodeData.ProgressUpdate(NewProgress: Double);
var
Format: TFormatSettings;
begin
Assert(NodeType = ntOperation);
Progress := NewProgress;
Format.DecimalSeparator := '.';
Value := FormatFloat('0.00', Progress * 100, Format) + '%';
end;
procedure TGeneratorNodeData.WorkCountUpdate(WorkCount: Integer);
begin
Assert(NodeType = ntOperation);
if (ProgressMax = 0) then
begin
ProgressUpdate(1.0);
end else
begin
ProgressUpdate(WorkCount / ProgressMax);
end;
end;
{ TfrmGenerator }
procedure TfrmGenerator.btnCloseClick(Sender: TObject);
@ -118,278 +52,65 @@ begin
end;
procedure TfrmGenerator.btnGenerateClick(Sender: TObject);
procedure SetInfoNodeValue(Node: PVirtualNode; const Value: String);
var
NodeData: PGeneratorNodeData;
Generator: TCodeGenerator;
Statistics: TCodeGeneratorStatistics;
begin
NodeData := TreeView.GetNodeData(Node);
NodeData^.Value := Value;
end;
var
Generator: TTableGenerator;
Node: PVirtualNode;
NodeData: PGeneratorNodeData;
I: Integer;
begin
TreeView.BeginUpdate;
try
for Node in FProgressNode do
begin
NodeData := TreeView.GetNodeData(Node);
NodeData^.ProgressActive := false;
NodeData^.ProgressUpdate(0);
end;
NodeData := TreeView.GetNodeData(FProgressNodeTotal);
NodeData^.ProgressActive := false;
NodeData^.ProgressUpdate(0);
finally
TreeView.EndUpdate;
end;
Generator := TTableGenerator.Create;
pbTotalProgress.Min := 0;
pbTotalProgress.Max := 0;
pbTotalProgress.Position := 0;
Generator := TCodeGenerator.Create;
try
Generator.OnWorkStart := GeneratorWorkStart;
Generator.OnWork := GeneratorWork;
Generator.OnWorkEnd := GeneratorWorkEnd;
Generator.GenerateFiles(FEditor,
'D:\Verteron Development\GitHub\zyan-disassembler-engine old\include\Zydis\Internal\');
TreeView.BeginUpdate;
try
for I := Low(FInfoNode) to High(FInfoNode) do
begin
case I of
0: SetInfoNodeValue(FInfoNode[I], IntToStr(Generator.Statistics.FilterCount));
1: SetInfoNodeValue(FInfoNode[I], IntToStr(Generator.Statistics.DefinitionCount));
2: SetInfoNodeValue(FInfoNode[I], IntToStr(Generator.Statistics.MnemonicCount));
3: SetInfoNodeValue(FInfoNode[I], TSizeFormatter.Format(Generator.Statistics.FilterSize));
4: SetInfoNodeValue(FInfoNode[I],
TSizeFormatter.Format(Generator.Statistics.DefinitionSize));
5: SetInfoNodeValue(FInfoNode[I],
TSizeFormatter.Format(Generator.Statistics.MnemonicSize));
6: SetInfoNodeValue(FInfoNode[I], TSizeFormatter.Format(Generator.Statistics.FilterSize
+ Generator.Statistics.DefinitionSize + Generator.Statistics.MnemonicSize));
end;
end;
finally
TreeView.EndUpdate;
end;
Application.ProcessMessages;
Generator.GenerateCode(
FEditor, 'D:\Verteron Development\GitHub\zyan-disassembler-engine\', Statistics);
// TODO: Display statistics
finally
Generator.Free;
end;
end;
procedure TfrmGenerator.FormCreate(Sender: TObject);
function AddNodeData(Parent: PVirtualNode; NodeType: TGeneratorNodeType; const Text: String;
const Value: String = ''): PVirtualNode;
var
NodeData: PGeneratorNodeData;
begin
Result := TreeView.AddChild(Parent);
NodeData := TreeView.GetNodeData(Result);
if (Assigned(NodeData)) then
begin
NodeData^.NodeType := NodeType;
NodeData^.Text := Text;
case NodeType of
ntOperation:
begin
NodeData^.ProgressActive := false;
NodeData^.ProgressUpdate(0);
end;
ntValue:
NodeData^.Value := Value;
end;
end;
end;
var
Category: PVirtualNode;
begin
TreeView.NodeDataSize := SizeOf(TGeneratorNodeData);
TreeView.BeginUpdate;
try
Category := AddNodeData(nil, ntCategory, 'Progress');
FProgressNode[woIndexingDefinitions] :=
AddNodeData(Category, ntOperation, 'Indexing definitions');
FProgressNode[woIndexingFilters] :=
AddNodeData(Category, ntOperation, 'Indexing filters');
FProgressNode[woGeneratingFilterFiles] :=
AddNodeData(Category, ntOperation, 'Generating filter files');
FProgressNode[woGeneratingDefinitionFiles] :=
AddNodeData(Category, ntOperation, 'Generating definition files');
FProgressNode[woGeneratingMnemonicFiles] :=
AddNodeData(Category, ntOperation, 'Generating mnemonic files');
FProgressNodeTotal :=
AddNodeData(Category, ntOperation, 'Total progress');
TreeView.Expanded[Category] := true;
AddNodeData(nil, ntSpacer, '');
Category := AddNodeData(nil, ntCategory, 'Statistics');
FInfoNode[0] := AddNodeData(Category, ntValue, 'Filter Count', '-');
FInfoNode[1] := AddNodeData(Category, ntValue, 'Definition Count', '-');
FInfoNode[2] := AddNodeData(Category, ntValue, 'Mnemonic Count', '-');
FInfoNode[3] := AddNodeData(Category, ntValue, 'Filter Size', '-');
FInfoNode[4] := AddNodeData(Category, ntValue, 'Definition Size', '-');
FInfoNode[5] := AddNodeData(Category, ntValue, 'MnemonicSize', '-');
FInfoNode[6] := AddNodeData(Category, ntValue, 'TotalSize', '-');
TreeView.Expanded[Category] := true;
finally
TreeView.EndUpdate;
end;
end;
procedure TfrmGenerator.GeneratorWork(Sender: TObject; WorkCount: Integer);
var
Node: PVirtualNode;
NodeData: PGeneratorNodeData;
ProgressTotal: Double;
begin
NodeData := TreeView.GetNodeData(FProgressNode[FCurrentOperation]);
NodeData^.WorkCountUpdate(WorkCount);
if (NodeData^.IsProgressUpdateStep(WorkCount)) then
pbTotalProgress.Position := pbTotalProgress.Max - pbCurrentOperation.Max + WorkCount;
pbCurrentOperation.Position := WorkCount;
if ((WorkCount mod pbCurrentOperation.Tag) = 0) then
begin
TreeView.RepaintNode(FProgressNode[FCurrentOperation]);
ProgressTotal := 0;
for Node in FProgressNode do
begin
NodeData := TreeView.GetNodeData(Node);
ProgressTotal := ProgressTotal + NodeData^.Progress;
end;
NodeData := TreeView.GetNodeData(FProgressNodeTotal);
NodeData^.ProgressUpdate(ProgressTotal / Length(FProgressNode));
TreeView.RepaintNode(FProgressNodeTotal);
Application.ProcessMessages;
end;
end;
procedure TfrmGenerator.GeneratorWorkEnd(Sender: TObject);
var
NodeData: PGeneratorNodeData;
begin
NodeData := TreeView.GetNodeData(FProgressNode[FCurrentOperation]);
NodeData^.ProgressActive := false;
NodeData^.ProgressUpdate(1);
TreeView.RepaintNode(FProgressNode[FCurrentOperation]);
NodeData := TreeView.GetNodeData(FProgressNodeTotal);
if (FCurrentOperation = High(TGeneratorWorkOperation)) then
begin
NodeData^.ProgressActive := false;
end;
NodeData^.ProgressUpdate((Integer(FCurrentOperation) + 1) / Length(FProgressNode));
TreeView.RepaintNode(FProgressNodeTotal);
lblOperationName.Caption := '';
pbTotalProgress.Position := pbTotalProgress.Max;
pbCurrentOperation.Position := pbCurrentOperation.Max;
Application.ProcessMessages;
end;
procedure TfrmGenerator.GeneratorWorkStart(Sender: TObject; Operation: TGeneratorWorkOperation;
MinWorkCount, MaxWorkCount: Integer);
var
NodeData: PGeneratorNodeData;
procedure TfrmGenerator.GeneratorWorkStart(Sender: TObject; const OperationName: String;
OperationCount, OperationNumber: Integer; MinWorkCount, MaxWorkCount: Integer);
begin
FCurrentOperation := Operation;
NodeData := TreeView.GetNodeData(FProgressNode[Operation]);
NodeData^.ProgressInit(MaxWorkCount, MinWorkCount);
NodeData^.ProgressActive := true;
TreeView.RepaintNode(FProgressNode[FCurrentOperation]);
NodeData := TreeView.GetNodeData(FProgressNodeTotal);
if (FCurrentOperation = Low(TGeneratorWorkOperation)) then
lblOperationName.Caption := OperationName;
pbTotalProgress.Position := pbTotalProgress.Max;
pbTotalProgress.Min := pbTotalProgress.Min + MinWorkCount;
pbTotalProgress.Max := pbTotalProgress.Max + MaxWorkCount;
pbCurrentOperation.Position := MinWorkCount;
pbCurrentOperation.Min := MinWorkCount;
pbCurrentOperation.Max := MaxWorkCount;
if ((MaxWorkCount - MinWorkCount) > 1000) then
begin
NodeData^.ProgressActive := true;
TreeView.RepaintNode(FProgressNodeTotal);
end;
end;
procedure TfrmGenerator.TreeViewBeforeCellPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect;
var ContentRect: TRect);
var
NodeData: PGeneratorNodeData;
ProgressWidth: Integer;
pbCurrentOperation.Tag := 100;
end else if ((MaxWorkCount - MinWorkCount) > 100) then
begin
if (Column = 1) then
begin
NodeData := Sender.GetNodeData(Node);
if (Assigned(NodeData) and (NodeData^.NodeType = ntOperation) and
(NodeData^.Progress <> 1) and (NodeData^.Progress <> 0)) then
begin
TargetCanvas.Pen.Color := $0000A162;
TargetCanvas.Brush.Color := $0055F2B5;
TargetCanvas.Rectangle(CellRect.Left, CellRect.Top, CellRect.Right,
CellRect.Bottom - CellRect.Top);
TargetCanvas.Pen.Color := $0000A162;
TargetCanvas.Brush.Color := $000FE18E;
ProgressWidth := Round(NodeData^.Progress * (CellRect.Right - CellRect.Left));
TargetCanvas.Rectangle(CellRect.Left, CellRect.Top, CellRect.Left + ProgressWidth,
CellRect.Bottom - CellRect.Top);
end;
end;
end;
procedure TfrmGenerator.TreeViewCollapsing(Sender: TBaseVirtualTree; Node: PVirtualNode;
var Allowed: Boolean);
begin
Allowed := false;
end;
procedure TfrmGenerator.TreeViewFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
NodeData: PGeneratorNodeData;
begin
NodeData := Sender.GetNodeData(Node);
if (Assigned(NodeData)) then
begin
Finalize(NodeData^);
end;
end;
procedure TfrmGenerator.TreeViewGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
var
NodeData: PGeneratorNodeData;
begin
ImageIndex := -1;
if (Column = 0) and (Kind in [ikNormal, ikSelected]) then
begin
NodeData := Sender.GetNodeData(Node);
if (Assigned(NodeData)) then
begin
case NodeData^.NodeType of
ntCategory:
ImageIndex := 0;
ntOperation:
begin
if (NodeData^.ProgressActive) then
begin
ImageIndex := 2;
pbCurrentOperation.Tag := 10;
end else
begin
ImageIndex := 1;
end;
end;
ntValue:
ImageIndex := 3;
end;
end;
end;
end;
procedure TfrmGenerator.TreeViewGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
NodeData: PGeneratorNodeData;
begin
CellText := '';
NodeData := Sender.GetNodeData(Node);
if (Assigned(NodeData)) then
begin
if (NodeData^.NodeType in [ntCategory, ntOperation, ntValue]) then
begin
case Column of
0: CellText := NodeData^.Text;
1: CellText := NodeData^.Value;
end;
end;
pbCurrentOperation.Tag := 1;
end;
Application.ProcessMessages;
end;
end.

View File

@ -2,8 +2,8 @@ object frmMain: TfrmMain
Left = 0
Top = 0
Caption = 'InstructionEditor'
ClientHeight = 761
ClientWidth = 1084
ClientHeight = 961
ClientWidth = 1384
Color = clBtnFace
Constraints.MinHeight = 800
Constraints.MinWidth = 1100
@ -23,7 +23,7 @@ object frmMain: TfrmMain
object Ribbon: TdxRibbon
Left = 0
Top = 0
Width = 1084
Width = 1384
Height = 127
BarManager = BarManager
Style = rs2010
@ -58,8 +58,8 @@ object frmMain: TfrmMain
end
object StatusBar: TdxRibbonStatusBar
Left = 0
Top = 736
Width = 1084
Top = 936
Width = 1384
Height = 25
Panels = <
item
@ -100,13 +100,13 @@ object frmMain: TfrmMain
Left = 364
Top = 127
Width = 3
Height = 609
Height = 809
end
object pnlInspector: TPanel
Left = 0
Top = 127
Width = 364
Height = 609
Height = 809
Align = alLeft
BevelOuter = bvNone
TabOrder = 3
@ -114,16 +114,16 @@ object frmMain: TfrmMain
Left = 0
Top = 0
Width = 364
Height = 609
Height = 809
Align = alClient
DockingType = 5
OriginalWidth = 364
OriginalHeight = 609
OriginalHeight = 809
object LayoutDockSite: TdxLayoutDockSite
Left = 0
Top = 0
Width = 364
Height = 609
Height = 809
DockingType = 0
OriginalWidth = 300
OriginalHeight = 200
@ -132,7 +132,7 @@ object frmMain: TfrmMain
Left = 0
Top = 0
Width = 364
Height = 609
Height = 809
ActiveChildIndex = -1
AllowFloating = False
AutoHide = False
@ -146,7 +146,7 @@ object frmMain: TfrmMain
Left = 0
Top = 0
Width = 364
Height = 431
Height = 531
AllowFloating = False
AutoHide = False
Caption = 'Property Inspector'
@ -157,12 +157,12 @@ object frmMain: TfrmMain
TabsProperties.CustomButtons.Buttons = <>
DockingType = 2
OriginalWidth = 350
OriginalHeight = 431
OriginalHeight = 531
object Inspector: TcxRTTIInspector
Left = 0
Top = 0
Width = 350
Height = 396
Height = 496
Align = alClient
Constraints.MinWidth = 350
LookAndFeel.NativeStyle = False
@ -176,30 +176,12 @@ object frmMain: TfrmMain
OnItemChanged = InspectorItemChanged
Version = 1
end
object Button1: TButton
Left = 279
Top = -5
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 136
Top = 104
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 2
OnClick = Button2Click
end
end
object pnlPropertyInformation: TdxDockPanel
Left = 0
Top = 431
Top = 531
Width = 364
Height = 178
Height = 278
AllowFloating = False
AutoHide = False
Caption = 'Property Information'
@ -210,13 +192,13 @@ object frmMain: TfrmMain
TabsProperties.CustomButtons.Buttons = <>
DockingType = 2
OriginalWidth = 185
OriginalHeight = 178
OriginalHeight = 278
object lblPropertyInfo: TLabel
AlignWithMargins = True
Left = 3
Top = 3
Width = 344
Height = 137
Height = 237
Align = alClient
Caption = 'No info text available'
Constraints.MinHeight = 120
@ -237,8 +219,8 @@ object frmMain: TfrmMain
object EditorTree: TVirtualStringTree
Left = 367
Top = 127
Width = 717
Height = 609
Width = 1017
Height = 809
Align = alClient
Header.AutoSizeIndex = 0
Header.Font.Charset = DEFAULT_CHARSET
@ -264,7 +246,7 @@ object frmMain: TfrmMain
Columns = <
item
Position = 0
Width = 10
Width = 83
WideText = 'Index'
end
item
@ -300,6 +282,11 @@ object frmMain: TfrmMain
end
item
Position = 7
Width = 90
WideText = 'OP E'
end
item
Position = 8
Width = 150
WideText = 'Comment'
end>
@ -579,9 +566,9 @@ object frmMain: TfrmMain
OnClick = bbDeleteDefinitionClick
end
object lbGenerate: TdxBarLargeButton
Caption = 'Generate C++ Files'
Caption = 'Code Generator'
Category = 0
Hint = 'Generate C++ Files'
Hint = 'Code Generator'
Visible = ivAlways
LargeImageIndex = 5
OnClick = lbGenerateClick

View File

@ -10,7 +10,7 @@ uses
dxRibbonCustomizationForm, dxRibbonSkins, cxStyles, cxEdit, cxInplaceContainer, dxSkinsForm,
dxStatusBar, dxRibbonStatusBar, cxClasses, dxRibbon, dxBar, dxRibbonForm, cxSplitter, cxPC,
dxBarExtItems, dxSkinsdxDockControlPainter, dxDockControl, dxSkinsdxRibbonPainter,
dxGDIPlusClasses, VirtualTrees, untInstructionEditor;
dxGDIPlusClasses, VirtualTrees, Zydis.InstructionEditor;
// TODO: Add support for multi node selection and allow copy / paste / cut / delete of mutiple
// definitions
@ -69,8 +69,6 @@ type
dxBarSeparator4: TdxBarSeparator;
bbExpandLeaf: TdxBarButton;
bbCollapseLeaf: TdxBarButton;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormDestroy(Sender: TObject);
@ -104,11 +102,9 @@ type
Y: Integer);
procedure bbExpandLeafClick(Sender: TObject);
procedure bbCollapseLeafClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure EditorTreeGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: TImageIndex);
var Ghosted: Boolean; var ImageIndex: System.UITypes.TImageIndex);
strict private
FEditor: TInstructionEditor;
FUpdating: Boolean;
@ -788,7 +784,7 @@ end;
procedure TfrmMain.EditorTreeGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: TImageIndex);
var Ghosted: Boolean; var ImageIndex: System.UITypes.TImageIndex);
var
NodeData: PEditorNodeData;
begin
@ -889,7 +885,8 @@ begin
4: CellText := NodeData^.Definition.Operands.OperandB.GetDescription(true);
5: CellText := NodeData^.Definition.Operands.OperandC.GetDescription(true);
6: CellText := NodeData^.Definition.Operands.OperandD.GetDescription(true);
7: CellText := NodeData^.Definition.Comment;
7: CellText := NodeData^.Definition.Operands.OperandE.GetDescription(true);
8: CellText := NodeData^.Definition.Comment;
end;
end;
end;
@ -909,15 +906,9 @@ begin
if (Assigned(NodeData) and (NodeData^.NodeType = ntInstructionDefinition)) then
begin
S := '';
for I := 0 to 3 do
for I := 0 to NodeData^.Definition.Operands.OperandCount - 1 do
begin
O := nil;
case I of
0: O := NodeData^.Definition.Operands.OperandA;
1: O := NodeData^.Definition.Operands.OperandB;
2: O := NodeData^.Definition.Operands.OperandC;
3: O := NodeData^.Definition.Operands.OperandD;
end;
O := NodeData^.Definition.Operands.Operands[I];
S := S + IntToStr(Integer(O.OperandType)) + ',' + IntToStr(Integer(O.Encoding)) + ',' +
IntToStr(Integer(O.AccessMode)) + ',';
end;
@ -936,25 +927,24 @@ begin
if (Assigned(NodeData) and (NodeData^.NodeType = ntInstructionDefinition)) then
begin
A := Clipboard.AsText.Split([',']);
if (Length(A) >= 12) then
if (Length(A) >= 15) then
begin
I := 0;
J := 0;
while (J < 4) do
NodeData^.Definition.BeginUpdate;
try
while (J < 5) do
begin
O := nil;
case J of
0: O := NodeData^.Definition.Operands.OperandA;
1: O := NodeData^.Definition.Operands.OperandB;
2: O := NodeData^.Definition.Operands.OperandC;
3: O := NodeData^.Definition.Operands.OperandD;
end;
O := NodeData^.Definition.Operands.Operands[J];
O.OperandType := TOperandType(StrToInt(A[I]));
O.Encoding := TOperandEncoding(StrToInt(A[I + 1]));
O.AccessMode := TOperandAccessMode(StrToInt(A[I + 2]));
Inc(I, 3);
Inc(J);
end;
finally
NodeData^.Definition.EndUpdate;
end;
end;
end;
end;
@ -1070,355 +1060,6 @@ begin
ExpandAllNodes(true);
end;
procedure TfrmMain.Button1Click(Sender: TObject);
procedure DeleteDuplicates(T: TInstructionFilter);
var
L: TList<TInstructionDefinition>;
D: TInstructionDefinition;
I, J: Integer;
B: Boolean;
begin
if (T is TDefinitionContainer) then
begin
L := TList<TInstructionDefinition>.Create;
try
for I := (T as TDefinitionContainer).DefinitionCount - 1 downto 0 do
begin
D := (T as TDefinitionContainer).Definitions[I];
B := true;
for J := 0 to L.Count - 1 do
begin
if ((D.Mnemonic = L[J].Mnemonic) and D.Operands.Equals(L[J].Operands) and
D.CPUID.Equals(L[J].CPUID) and (D.EVEXCD8Scale = L[J].EVEXCD8Scale)) then
begin
L[J].Flags := L[J].Flags + D.Flags;
D.Free;
B := false;
Break;
end;
end;
if (B) then L.Add(D);
end;
finally
L.Free;
end;
end else
begin
for I := 0 to T.Capacity - 1 do
begin
if Assigned(T.Items[I]) then
begin
DeleteDuplicates(T.Items[I]);
end;
end;
end;
end;
var
I, J, K, RegCount, MemIndex: Integer;
S: String;
A: TArray<String>;
D: TInstructionDefinition;
O: TInstructionOperand;
begin
FEditor.BeginUpdate;
for I := 0 to FEditor.DefinitionCount - 1 do
begin
D := FEditor.Definitions[I];
if (D.Encoding <> ieEVEX) then Continue;
S := D.Comment;
J := 1;
while (J < Length(S)) and (S[J] <> ' ') do Inc(J);
Delete(S, 1, J);
A := S.Split([',']);
for J := Low(A) to High(A) do
begin
A[J] := Trim(A[J]);
end;
S := A[High(A)];
J := 1;
while (J < Length(S)) and (S[J] <> ' ') do Inc(J);
Delete(S, J, Length(S));
A[High(A)] := S;
if (A[High(A)][1] = '(') then SetLength(A, Length(A) - 1);
RegCount := 0;
MemIndex := -1;
D.BeginUpdate;
for J := Low(A) to High(A) do
begin
O := nil;
case J of
0: O := D.Operands.OperandA;
1: O := D.Operands.OperandB;
2: O := D.Operands.OperandC;
3: O := D.Operands.OperandD;
end;
if (Pos('{1to', A[J]) > 0) then D.Flags := D.Flags + [ifHasEVEXBC];
if (Pos('{sae}', A[J]) > 0) then D.Flags := D.Flags + [ifHasEVEXSAE];
if (Pos('VK1', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK2', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK4', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK8', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK16', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK32', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('VK64', A[J]) > 0) then O.OperandType := optMSKR;
if (Pos('GR8', A[J]) > 0) then O.OperandType := optGPR8;
if (Pos('GR16', A[J]) > 0) then O.OperandType := optGPR16;
if (Pos('GR32', A[J]) > 0) then O.OperandType := optGPR32;
if (Pos('GR64', A[J]) > 0) then O.OperandType := optGPR64;
if (Pos('8mem', A[J]) > 0) then O.OperandType := optMem8;
if (Pos('16mem', A[J]) > 0) then O.OperandType := optMem16;
if (Pos('32mem', A[J]) > 0) then
begin
if (Pos('{1to2}', A[J]) > 0) then O.OperandType := optMem32Bcst2 else
if (Pos('{1to4}', A[J]) > 0) then O.OperandType := optMem32Bcst4 else
if (Pos('{1to8}', A[J]) > 0) then O.OperandType := optMem32Bcst8 else
if (Pos('{1to16}', A[J]) > 0) then O.OperandType := optMem32Bcst16 else
O.OperandType := optMem32;
end;
if (Pos('64mem', A[J]) > 0) then
begin
if (Pos('{1to2}', A[J]) > 0) then O.OperandType := optMem64Bcst2 else
if (Pos('{1to4}', A[J]) > 0) then O.OperandType := optMem64Bcst4 else
if (Pos('{1to8}', A[J]) > 0) then O.OperandType := optMem64Bcst8 else
if (Pos('{1to16}', A[J]) > 0) then O.OperandType := optMem64Bcst16 else
O.OperandType := optMem64;
end;
if (Pos('VR128', A[J]) > 0) then O.OperandType := optVR128;
if (Pos('VR256', A[J]) > 0) then O.OperandType := optVR256;
if (Pos('VR512', A[J]) > 0) then O.OperandType := optVR512;
if (Pos('128mem', A[J]) > 0) then O.OperandType := optMem128;
if (Pos('256mem', A[J]) > 0) then O.OperandType := optMem256;
if (Pos('512mem', A[J]) > 0) then O.OperandType := optMem512;
if (Pos('vx32', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vx64', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vx128', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vx256', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vx512', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vy32', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vy64', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vy128', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vy256', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vy512', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vz32', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vz64', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vz128', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vz256', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('vz512', A[J]) > 0) then O.Encoding := opeNone;
if (Pos('imm8', A[J]) > 0) then O.OperandType := optImm8;
if (Pos('imm8u', A[J]) > 0) then O.OperandType := optImm8U;
if (Pos('u8imm', A[J]) > 0) then O.OperandType := optImm8U;
if (O.Encoding = opeModrmRm) then
begin
MemIndex := J;
if (D.EVEXCD8Scale <> 0) then
begin
case D.EvexCD8Scale of
1: O.Encoding := opeModrmRmCD1;
2: O.Encoding := opeModrmRmCD2;
4: O.Encoding := opeModrmRmCD4;
8: O.Encoding := opeModrmRmCD8;
16: O.Encoding := opeModrmRmCD16;
32: O.Encoding := opeModrmRmCD32;
64: O.Encoding := opeModrmRmCD64;
end;
end;
end;
if (O.Encoding = opeModrmReg) then Inc(RegCount);
end;
D.Operands.OperandA.AccessMode := opaWrite;
if (RegCount = 3) or ((RegCount = 2) and (MemIndex > -1) and (MemIndex <> 1)) then
begin
D.Operands.OperandB.Encoding := opeVexVVVV;
end;
D.EndUpdate;
end;
DeleteDuplicates(FEditor.RootTable.Items[$62]);
FEditor.EndUpdate;
end;
procedure TfrmMain.Button2Click(Sender: TObject);
function BitsNeeded(N: Integer): Integer;
begin
Result := Floor(log2(n) + 1);
end;
var
Mnemonics: TDictionary<String, Boolean>;
Node: PVirtualNode;
NodeData: PEditorNodeData;
LOPS: TList<TPair<TInstructionOperands, Integer>>;
LCPUID: TList<TPair<TCPUIDFeatureFlagSet, Integer>>;
LEFLAGS: TList<TPair<TX86Flags, Integer>>;
LREGS: TList<TPair<TX86RegisterSet, Integer>>;
I, J, Bits: Integer;
B: Boolean;
POPS: TPair<TInstructionOperands, Integer>;
PCPUID: TPair<TCPUIDFeatureFlagSet, Integer>;
PEFLAGS: TPair<TX86Flags, Integer>;
PREGS: TPair<TX86RegisterSet, Integer>;
begin
Bits := 4; // EVEX Info
Mnemonics := TDictionary<String, Boolean>.Create;
try
Node := EditorTree.GetFirst;
while Assigned(Node) do
begin
NodeData := EditorTree.GetNodeData(Node);
if (NodeData^.NodeType = ntInstructionDefinition) then
begin
if (not Mnemonics.ContainsKey(NodeData^.Definition.Mnemonic)) then
begin
Mnemonics.Add(NodeData^.Definition.Mnemonic, true);
end;
end;
Node := EditorTree.GetNext(Node);
end;
ShowMessage('Mnemonics: ' + IntToStr(Mnemonics.Count) + ' (' + IntToStr(BitsNeeded(Mnemonics.Count)) + ' bit)');
Inc(Bits, BitsNeeded(Mnemonics.Count));
finally
Mnemonics.Free;
end;
LOPS := TList<TPair<TInstructionOperands, Integer>>.Create;
for I := 0 to FEditor.DefinitionCount - 1 do
begin
B := false;
for J := 0 to LOPS.Count - 1 do
begin
if (LOPS[J].Key.Equals(FEditor.Definitions[I].Operands)) then
begin
POPS := LOPS[J];
Inc(POPS.Value);
LOPS[J] := POPS;
B := true;
Break;
end;
end;
if (not B) then
begin
POPS.Key := FEditor.Definitions[I].Operands;
POPS.Value := 1;
LOPS.Add(POPS);
end;
end;
ShowMessage('OPS: ' + IntToStr(LOPS.Count) + ' (' + IntToStr(BitsNeeded(LOPS.Count)) + ' bit)');
Inc(Bits, BitsNeeded(LOPS.Count));
LOPS.Free;
LCPUID := TList<TPair<TCPUIDFeatureFlagSet, Integer>>.Create;
for I := 0 to FEditor.DefinitionCount - 1 do
begin
B := false;
for J := 0 to LOPS.Count - 1 do
begin
if (LCPUID[J].Key = FEditor.Definitions[I].CPUID.FeatureFlags) then
begin
PCPUID := LCPUID[J];
Inc(PCPUID.Value);
LCPUID[J] := PCPUID;
B := true;
Break;
end;
end;
if (not B) then
begin
PCPUID.Key := FEditor.Definitions[I].CPUID.FeatureFlags;
PCPUID.Value := 1;
LCPUID.Add(PCPUID);
end;
end;
ShowMessage('CPUID: ' + IntToStr(LCPUID.Count) + ' (' + IntToStr(BitsNeeded(LCPUID.Count)) + ' bit)');
Inc(Bits, BitsNeeded(LCPUID.Count));
LCPUID.Free;
LEFLAGS := TList<TPair<TX86Flags, Integer>>.Create;
for I := 0 to FEditor.DefinitionCount - 1 do
begin
B := false;
for J := 0 to LOPS.Count - 1 do
begin
if (LEFLAGS[J].Key.Equals(FEditor.Definitions[I].X86Flags)) then
begin
PEFLAGS := LEFLAGS[J];
Inc(PEFLAGS.Value);
LEFLAGS[J] := PEFLAGS;
B := true;
Break;
end;
end;
if (not B) then
begin
PEFLAGS.Key := FEditor.Definitions[I].X86Flags;
PEFLAGS.Value := 1;
LEFLAGS.Add(PEFLAGS);
end;
end;
ShowMessage('EFLAGS: ' + IntToStr(LEFLAGS.Count) + ' (' + IntToStr(BitsNeeded(LEFLAGS.Count)) + ' bit)');
Inc(Bits, BitsNeeded(LEFLAGS.Count));
LEFLAGS.Free;
LREGS := TList<TPair<TX86RegisterSet, Integer>>.Create;
for I := 0 to FEditor.DefinitionCount - 1 do
begin
B := false;
for J := 0 to LOPS.Count - 1 do
begin
if (LREGS[J].Key = FEditor.Definitions[I].ImplicitRead.Registers) then
begin
PREGS := LREGS[J];
Inc(PREGS.Value);
LREGS[J] := PREGS;
B := true;
Break;
end;
end;
if (not B) then
begin
PREGS.Key := FEditor.Definitions[I].ImplicitRead.Registers;
PREGS.Value := 1;
LREGS.Add(PREGS);
end;
B := false;
for J := 0 to LOPS.Count - 1 do
begin
if (LREGS[J].Key = FEditor.Definitions[I].ImplicitWrite.Registers) then
begin
PREGS := LREGS[J];
Inc(PREGS.Value);
LREGS[J] := PREGS;
B := true;
Break;
end;
end;
if (not B) then
begin
PREGS.Key := FEditor.Definitions[I].ImplicitWrite.Registers;
PREGS.Value := 1;
LREGS.Add(PREGS);
end;
end;
ShowMessage('REGS: ' + IntToStr(LREGS.Count) + ' (' + IntToStr(BitsNeeded(LREGS.Count)) + ' bit)');
Inc(Bits, BitsNeeded(LREGS.Count));
LEFLAGS.Free;
ShowMessage('BytesNeeded: ' + IntToStr(Ceil(Bits / 8)) + ' (' + IntToStr(Bits) + ' bits)');
end;
procedure TfrmMain.bbCollapseLeafClick(Sender: TObject);
begin
ExpandLeaf(EditorTree.FocusedNode, false);

View File

@ -3,18 +3,18 @@ program InstructionEditor;
uses
Vcl.Forms,
formMain in 'Forms\formMain.pas' {frmMain},
untInstructionEditor in 'untInstructionEditor.pas',
untInstructionFilters in 'untInstructionFilters.pas',
Zydis.InstructionEditor in 'Zydis.InstructionEditor.pas',
Zydis.InstructionFilters in 'Zydis.InstructionFilters.pas',
untHelperClasses in 'untHelperClasses.pas',
formEditorCPUIDFeatureFlags in 'Forms\Editors\formEditorCPUIDFeatureFlags.pas' {frmEditorCPUIDFeatureFlags},
Vcl.Themes,
Vcl.Styles,
untPropertyHints in 'untPropertyHints.pas',
formCreateDefinition in 'Forms\formCreateDefinition.pas' {frmCreateDefinition},
untPropertyEditors in 'untPropertyEditors.pas',
formEditorX86Registers in 'Forms\Editors\formEditorX86Registers.pas' {frmEditorX86Registers},
formGenerator in 'Forms\formGenerator.pas' {frmGenerator},
formEditorInstructionOperands in 'Forms\Editors\formEditorInstructionOperands.pas' {frmEditorInstructionOperands};
Zydis.CodeGenerator in 'Zydis.CodeGenerator.pas',
untPropertyEditors in 'untPropertyEditors.pas';
{$R *.res}

View File

@ -134,8 +134,8 @@
<Form>frmMain</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="untInstructionEditor.pas"/>
<DCCReference Include="untInstructionFilters.pas"/>
<DCCReference Include="Zydis.InstructionEditor.pas"/>
<DCCReference Include="Zydis.InstructionFilters.pas"/>
<DCCReference Include="untHelperClasses.pas"/>
<DCCReference Include="Forms\Editors\formEditorCPUIDFeatureFlags.pas">
<Form>frmEditorCPUIDFeatureFlags</Form>
@ -146,7 +146,6 @@
<Form>frmCreateDefinition</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="untPropertyEditors.pas"/>
<DCCReference Include="Forms\Editors\formEditorX86Registers.pas">
<Form>frmEditorX86Registers</Form>
<FormType>dfm</FormType>
@ -155,10 +154,8 @@
<Form>frmGenerator</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="Forms\Editors\formEditorInstructionOperands.pas">
<Form>frmEditorInstructionOperands</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="Zydis.CodeGenerator.pas"/>
<DCCReference Include="untPropertyEditors.pas"/>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
unit untInstructionFilters;
unit Zydis.InstructionFilters;
interface
uses
untInstructionEditor;
Zydis.InstructionEditor;
type
TOpcodeFilter = class(TInstructionFilter)

View File

@ -38,18 +38,11 @@ type
function IsDefaultValue: Boolean; override;
end;
TInstructionOperandsProperty = class(TcxClassProperty)
public
procedure Edit; override;
function GetAttributes: TcxPropertyAttributes; override;
end;
implementation
uses
System.SysUtils, System.TypInfo, System.Classes, Vcl.Forms, untInstructionEditor,
untHelperClasses, formEditorCPUIDFeatureFlags, formEditorX86Registers,
formEditorInstructionOperands, cxButtonEdit;
System.SysUtils, System.TypInfo, System.Classes, Vcl.Forms, Zydis.InstructionEditor,
untHelperClasses, formEditorCPUIDFeatureFlags, formEditorX86Registers, cxButtonEdit;
{ TOpcodeByteProperty }
@ -339,40 +332,12 @@ begin
end;
end;
{ TInstructionOperandsProperty }
procedure TInstructionOperandsProperty.Edit;
var
Form: TfrmEditorInstructionOperands;
begin
Form := TfrmEditorInstructionOperands.Create(Application);
try
Form.Caption := GetComponent(0).GetNamePath + '.' + GetName;
Form.Operands := TInstructionOperands(GetOrdValue);
Form.ShowModal;
if (Form.ApplyChanges) then
begin
TInstructionOperands(GetOrdValue).Assign(Form.Operands);
PostChangedNotification;
end;
finally
Form.Free;
end;
end;
function TInstructionOperandsProperty.GetAttributes: TcxPropertyAttributes;
begin
Result := [ipaDialog, ipaSubProperties];
end;
initialization
// Register custom property editor for hexadecimal display of TOpcodeByte values
cxRegisterPropertyEditor(TypeInfo(TOpcodeByte), nil, '', TOpcodeByteProperty);
// Register custom property editors for easy modification of the instruction-operands
cxRegisterPropertyEditor(TypeInfo(TInstructionOperand), nil, '', TInstructionOperandProperty);
cxRegisterPropertyEditor(TypeInfo(TInstructionOperands), nil, '', TInstructionOperandsProperty);
cxRegisterEditPropertiesClass(TInstructionOperandsProperty, TcxButtonEditProperties);
// Delphi does not allow sets > 4 bytes as published values, so we have to use a wrapper class
// and a custom editor

View File

@ -1,350 +0,0 @@
unit untTableGenerator;
interface
uses
System.Classes, System.Generics.Collections, untInstructionEditor;
type
TTableGeneratorInfo = record
public
FilterCount: Integer;
DefinitionCount: Integer;
MnemonicCount: Integer;
FilterSize: Cardinal;
DefinitionSize: Cardinal;
MnemonicSize: Cardinal;
end;
TWorkOperation = (
woIndexingFilters,
woIndexingDefinitions,
woGeneratingFilterFiles,
woGeneratingDefinitionFiles
);
TWorkStartEvent = procedure(Sender: TObject; Operation: TWorkOperation;
MinWorkCount, MaxWorkCount: Integer) of Object;
TWorkEvent = procedure(Sender: TObject; WorkCount: Integer) of Object;
TTableGenerator = class(TObject)
strict private type
TInstructionFilterMap = TObjectDictionary<TInstructionFilterClass, TList<TInstructionFilter>>;
strict private
FFilterMap: TInstructionFilterMap;
FFilterCount: Integer;
FDefinitionCount: Integer;
FMnemonicCount: Integer;
FFilterSize: Cardinal;
FDefinitionSize: Cardinal;
FMnemonicSize: Cardinal;
strict private
FOnWorkStart: TWorkStartEvent;
FOnWork: TWorkEvent;
FOnWorkEnd: TNotifyEvent;
strict private
procedure EditorFilterCreated(Sender: TObject; Filter: TInstructionFilter);
strict private
procedure WorkStart(Operation: TWorkOperation; MinWorkCount, MaxWorkCount: Integer); inline;
procedure Work(WorkCount: Integer); inline;
procedure WorkEnd; inline;
strict private
procedure FinalizeFilterTables(Editor: TInstructionEditor);
function GetNameForTable(FilterClass: TInstructionFilterClass): String; inline;
function GetNameForType(FilterClass: TInstructionFilterClass): String; inline;
procedure GenerateFilterFiles(const OutputDirectory: String;
FilterMap: TInstructionFilterMap; Definitions: TList<TInstructionDefinition>;
FilterCount: Integer);
procedure GenerateDefinitionFiles(const OutputDirectory: String;
Definitions: TList<TInstructionDefinition>);
public
procedure GenerateFiles(Editor: TInstructionEditor; const OutputDirectory: String);
public
property FilterCount: Integer read FFilterCount;
property DefinitionCount: Integer read FDefinitionCount;
property MnemonicCount: Integer read FMnemonicCount;
property FilterSize: Cardinal read FFilterSize;
property DefinitionSize: Cardinal read FDefinitionSize;
property MnemonicSize: Cardinal read FMnemonicSize;
public
property OnWorkStart: TWorkStartEvent read FOnWorkStart write FOnWorkStart;
property OnWork: TWorkEvent read FOnWork write FOnWork;
property OnWorkEnd: TNotifyEvent read FOnWorkEnd write FOnWorkEnd;
end;
implementation
uses
System.SysUtils, System.Generics.Defaults, untInstructionFilters, untHelperClasses;
const
FILENAME_FILTERTABLES = 'InstructionTable.inc';
FILTERARRAY_PREFIX_NAME = 'filter';
FILTERARRAY_PREFIX_TYPENAME = 'ZYDIS_NODETYPE_FILTER_';
FILTERARRAY_ITEMTYPE = 'ZydisInstructionTableNode';
FILTERARRAY_MACRO_INVALID = 'ZYDIS_INVALID';
FILTERARRAY_MACRO_FILTER = 'ZYDIS_FILTER';
FILTERARRAY_MACRO_DEFINITION = 'ZYDIS_DEFINITION';
FILTERARRAY_ITEM_SIZE = 3;
{ TTableGenerator }
procedure TTableGenerator.EditorFilterCreated(Sender: TObject; Filter: TInstructionFilter);
var
List: TList<TInstructionFilter>;
begin
if (Filter.IsDefinitionContainer) or (Filter is TEncodingFilter) then Exit;
if (FFilterMap.ContainsKey(TInstructionFilterClass(Filter.ClassType))) then
begin
List := FFilterMap[TInstructionFilterClass(Filter.ClassType)];
end else
begin
List := TList<TInstructionFilter>.Create;
FFilterMap.Add(TInstructionFilterClass(Filter.ClassType), List);
end;
Filter.Data := Pointer(List.Count);
List.Add(Filter);
Inc(FFilterCount);
if (Filter.NeutralElementType in [netNotAvailable, netValue]) then
begin
Inc(FFilterSize, Filter.GetCapacity * FILTERARRAY_ITEM_SIZE);
end else
begin
Inc(FFilterSize, (Filter.GetCapacity - 1) * FILTERARRAY_ITEM_SIZE);
end;
end;
procedure TTableGenerator.FinalizeFilterTables(Editor: TInstructionEditor);
begin
// Get rid of all encoding-filters as they are only needed in the editor
// Move LES instruction into the first field of the 3-byte vex-filter
Assert(not Assigned(Editor.RootTable.Items[$C4].Items[$03].Items[$00]));
Editor.RootTable.Items[$C4].Items[$03].SetItem($00, Editor.RootTable.Items[$C4].Items[$00]);
// Move LDS instruction into the first field of the 2-byte vex-filter
Assert(not Assigned(Editor.RootTable.Items[$C5].Items[$03].Items[$00]));
Editor.RootTable.Items[$C5].Items[$03].SetItem($00, Editor.RootTable.Items[$C5].Items[$00]);
// Move BOUND instruction into the first field of the evex-filter
Assert(not Assigned(Editor.RootTable.Items[$62].Items[$04].Items[$00]));
Editor.RootTable.Items[$62].Items[$04].SetItem($00, Editor.RootTable.Items[$62].Items[$00]);
// Move POP instruction into the first field of the xop-filter
Assert(not Assigned(Editor.RootTable.Items[$8F].Items[$02].Items[$00]));
Editor.RootTable.Items[$8F].Items[$02].SetItem($00, Editor.RootTable.Items[$8F].Items[$00]);
// Remove the encoding-filter for 3DNow instructions
Editor.RootTable.Items[$0F].SetItem($0F, Editor.RootTable.Items[$0F].Items[$0F].Items[$01]);
// Remove the encoding-filter for 3-byte VEX instructions
Editor.RootTable.SetItem($C4, Editor.RootTable.Items[$C4].Items[$03]);
// Remove the encoding-filter for 2-byte VEX instructions
Editor.RootTable.SetItem($C5, Editor.RootTable.Items[$C5].Items[$03]);
// Remove the encoding-filter for EVEX instructions
Editor.RootTable.SetItem($62, Editor.RootTable.Items[$62].Items[$04]);
// Remove the encoding-filter for XOP instructions
Editor.RootTable.SetItem($8F, Editor.RootTable.Items[$8f].Items[$02]);
end;
procedure TTableGenerator.GenerateDefinitionFiles(const OutputDirectory: String;
Definitions: TList<TInstructionDefinition>);
begin
WorkStart(woGeneratingDefinitionFiles, 0, Definitions.Count);
WorkEnd;
end;
procedure TTableGenerator.GenerateFiles(Editor: TInstructionEditor; const OutputDirectory: String);
var
E: TInstructionEditor;
D: TInstructionDefinition;
I: Integer;
Definitions: TList<TInstructionDefinition>;
Comparison: TComparison<TInstructionDefinition>;
begin
if (not Assigned(Editor.RootTable)) then
begin
raise Exception.Create('The instruction editor does not contain tables.');
end;
if (Editor.RootTable.HasConflicts) then
begin
//raise Exception.Create('The instruction editor has unresolved conflicts.');
end;
FDefinitionCount := Editor.DefinitionCount;
E := TInstructionEditor.Create;
try
E.OnFilterCreated := EditorFilterCreated;
E.BeginUpdate;
try
FFilterMap := TObjectDictionary<TInstructionFilterClass,
TList<TInstructionFilter>>.Create([doOwnsValues]);
try
E.Reset;
// Create filter indizes by copying all definitions to the internal editor instance
WorkStart(woIndexingFilters, 0, Editor.DefinitionCount);
for I := 0 to Editor.DefinitionCount - 1 do
begin
D := E.CreateDefinition('unnamed');
D.Assign(Editor.Definitions[I]);
Work(I + 1);
end;
WorkEnd;
FinalizeFilterTables(E);
Definitions := TList<TInstructionDefinition>.Create;
try
// Create definition indizes and a sorted definition-list
WorkStart(woIndexingDefinitions, 0, E.DefinitionCount * 2);
for I := 0 to E.DefinitionCount - 1 do
begin
Definitions.Add(E.Definitions[I]);
Work(I + 1);
end;
Comparison :=
function(const Left, Right: TInstructionDefinition): Integer
begin
Result := CompareStr(Left.Mnemonic, Right.Mnemonic);
end;
Definitions.Sort(TComparer<TInstructionDefinition>.Construct(Comparison));
for I := 0 to Definitions.Count - 1 do
begin
Definitions[I].Data := Pointer(I);
Work(E.DefinitionCount + I + 1);
end;
WorkEnd;
// Generate files
GenerateFilterFiles(OutputDirectory, FFilterMap, Definitions, E.FilterCount);
GenerateDefinitionFiles(OutputDirectory, Definitions);
finally
Definitions.Free;
end;
finally
FFilterMap.Free;
end;
finally
E.EndUpdate;
end;
finally
E.Free;
end;
end;
procedure TTableGenerator.GenerateFilterFiles(const OutputDirectory: String;
FilterMap: TInstructionFilterMap; Definitions: TList<TInstructionDefinition>;
FilterCount: Integer);
var
WorkCount, IndexShift: Integer;
Buffer: TStringBuffer;
StringList: TStringList;
I, J, K: Integer;
FilterList: TList<TInstructionFilter>;
begin
Buffer := TStringBuffer.Create;
try
WorkCount := 0;
WorkStart(woGeneratingFilterFiles, 0, FilterCount);
for I := Low(InstructionFilterClasses) to High(InstructionFilterClasses) do
begin
IndexShift := 1;
if (InstructionFilterClasses[I].GetNeutralElementType in [netNotAvailable, netValue]) then
begin
IndexShift := 0;
end;
Buffer.AppendLn(Format('const %s %s%s[][%d] = ', [
FILTERARRAY_ITEMTYPE,
FILTERARRAY_PREFIX_NAME, GetNameForTable(InstructionFilterClasses[I]),
Integer(InstructionFilterClasses[I].GetCapacity) - IndexShift]));
Buffer.AppendLn('{');
if (FilterMap.ContainsKey(InstructionFilterClasses[I])) then
begin
FilterList := FilterMap[InstructionFilterClasses[I]];
for J := 0 to FilterList.Count - 1 do
begin
Buffer.AppendLn(' {');
for K := IndexShift to FilterList[J].Capacity - 1 do
begin
Buffer.Append(Format(' /*%.4x*/ ', [K]));
if (not Assigned(FilterList[J].Items[K])) then
begin
Buffer.Append(FILTERARRAY_MACRO_INVALID);
end else if (FilterList[J].Items[K] is TDefinitionContainer) then
begin
Assert((FilterList[J].Items[K] as TDefinitionContainer).DefinitionCount > 0);
Buffer.Append(Format('%s(0x%.4x)', [FILTERARRAY_MACRO_DEFINITION,
Integer((FilterList[J].Items[K] as TDefinitionContainer).Definitions[0].Data)]));
end else
begin
Buffer.Append(Format('%s(%s%s, 0x%.4x)', [FILTERARRAY_MACRO_FILTER,
FILTERARRAY_PREFIX_TYPENAME,
GetNameForType(TInstructionFilterClass(FilterList[J].Items[K].ClassType)),
Integer(FilterList[J].Items[K].Data)]));
end;
if (K < Integer(FilterList[J].Capacity - 1)) then
begin
Buffer.AppendLn(',');
end else
begin
Buffer.AppendLn('');
end;
end;
Buffer.Append(' }');
if (J < FilterList.Count - 1) then
begin
Buffer.AppendLn(',');
end else
begin
Buffer.AppendLn('');
end;
Inc(WorkCount);
Work(WorkCount);
end;
end;
Buffer.AppendLn('};');
if (I < High(InstructionFilterClasses)) then
begin
Buffer.AppendLn('');
end;
end;
WorkEnd;
StringList := TStringList.Create;
try
StringList.Text := Buffer.Value;
StringList.SaveToFile(IncludeTrailingPathDelimiter(OutputDirectory) + FILENAME_FILTERTABLES);
finally
StringList.Free;
end;
finally
Buffer.Free;
end;
end;
function TTableGenerator.GetNameForTable(FilterClass: TInstructionFilterClass): String;
begin
Result := FilterClass.GetDescription;
end;
function TTableGenerator.GetNameForType(FilterClass: TInstructionFilterClass): String;
begin
Result := AnsiUpperCase(FilterClass.GetDescription);
end;
procedure TTableGenerator.Work(WorkCount: Integer);
begin
if (Assigned(FOnWork)) then
begin
FOnWork(Self, WorkCount);
end;
end;
procedure TTableGenerator.WorkEnd;
begin
if (Assigned(FOnWorkEnd)) then
begin
FOnWorkEnd(Self);
end;
end;
procedure TTableGenerator.WorkStart(Operation: TWorkOperation; MinWorkCount, MaxWorkCount: Integer);
begin
if (Assigned(FOnWorkStart)) then
begin
FOnWorkStart(Self, Operation, MinWorkCount, MaxWorkCount);
end;
end;
end.

File diff suppressed because it is too large Load Diff

View File

@ -27,6 +27,7 @@
#ifndef ZYDIS_DEFINES_H
#define ZYDIS_DEFINES_H
#include <assert.h>
#include <ZydisExportConfig.h>
/* ============================================================================================== */

View File

@ -384,6 +384,8 @@ enum ZydisOperandEncodings
ZYDIS_OPERAND_ENCODING_OPCODE,
ZYDIS_OPERAND_ENCODING_VVVV,
ZYDIS_OPERAND_ENCODING_AAA,
ZYDIS_OPERAND_ENCODING_IMM8_LO,
ZYDIS_OPERAND_ENCODING_IMM8_HI,
ZYDIS_OPERAND_ENCODING_IMM8,
ZYDIS_OPERAND_ENCODING_IMM16,
ZYDIS_OPERAND_ENCODING_IMM32,
@ -908,6 +910,9 @@ typedef struct ZydisInstructionInfo_
*/
struct
{
// TODO: Move from this struct to the decoder instance
bool imm8initialized;
uint8_t imm8;
uint8_t w;
uint8_t r;
uint8_t x;

File diff suppressed because it is too large Load Diff

View File

@ -28,7 +28,6 @@
#define ZYDIS_INSTRUCTIONTABLE_H
#include <stdint.h>
#include <assert.h>
#include <Zydis/Defines.h>
#include <Zydis/Mnemonic.h>
#include <Zydis/InstructionInfo.h>
@ -45,6 +44,13 @@ extern "C" {
/* Instruction table */
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Defines the @c ZydisInstructionTableNode datatype.
*/
typedef void* ZydisInstructionTableNode;
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Defines the @c ZydisInstructionTableNodeType datatype.
*/
@ -57,88 +63,94 @@ enum ZydisInstructionTableNodeTypes
{
ZYDIS_NODETYPE_INVALID = 0x00,
/**
* @brief Reference to a concrete instruction definition.
* @brief Reference to an instruction-definition with 0 operands.
*/
ZYDIS_NODETYPE_DEFINITION = 0x01,
ZYDIS_NODETYPE_DEFINITION_0OP = 0x01,
/**
* @brief Reference to an instruction-definition with 1 operands.
*/
ZYDIS_NODETYPE_DEFINITION_1OP = 0x02,
/**
* @brief Reference to an instruction-definition with 2 operands.
*/
ZYDIS_NODETYPE_DEFINITION_2OP = 0x03,
/**
* @brief Reference to an instruction-definition with 3 operands.
*/
ZYDIS_NODETYPE_DEFINITION_3OP = 0x04,
/**
* @brief Reference to an instruction-definition with 4 operands.
*/
ZYDIS_NODETYPE_DEFINITION_4OP = 0x05,
/**
* @brief Reference to an instruction-definition with 5 operands.
*/
ZYDIS_NODETYPE_DEFINITION_5OP = 0x06,
/**
* @brief Reference to an opcode filter.
*/
ZYDIS_NODETYPE_FILTER_OPCODE = 0x02,
ZYDIS_NODETYPE_FILTER_OPCODE = 0x07,
/**
* @brief Reference to an vex-map filter.
*/
ZYDIS_NODETYPE_FILTER_VEX = 0x03,
ZYDIS_NODETYPE_FILTER_VEX = 0x08,
/**
* @brief Reference to an xop-map filter.
*/
ZYDIS_NODETYPE_FILTER_XOP = 0x04,
ZYDIS_NODETYPE_FILTER_XOP = 0x09,
/**
* @brief Reference to an instruction-mode filter.
*/
ZYDIS_NODETYPE_FILTER_MODE = 0x05,
ZYDIS_NODETYPE_FILTER_MODE = 0x0A,
/**
* @brief Reference to a mandatory-prefix filter.
*/
ZYDIS_NODETYPE_FILTER_MANDATORYPREFIX = 0x06,
ZYDIS_NODETYPE_FILTER_MANDATORYPREFIX = 0x0B,
/**
* @brief Reference to a modrm.mod filter.
*/
ZYDIS_NODETYPE_FILTER_MODRMMOD = 0x07,
ZYDIS_NODETYPE_FILTER_MODRMMOD = 0x0C,
/**
* @brief Reference to a modrm.reg filter.
*/
ZYDIS_NODETYPE_FILTER_MODRMREG = 0x08,
ZYDIS_NODETYPE_FILTER_MODRMREG = 0x0D,
/**
* @brief Reference to a modrm.rm filter.
*/
ZYDIS_NODETYPE_FILTER_MODRMRM = 0x09,
ZYDIS_NODETYPE_FILTER_MODRMRM = 0x0E,
/**
* @brief Reference to an operand-size filter.
*/
ZYDIS_NODETYPE_FILTER_OPERANDSIZE = 0x0A,
ZYDIS_NODETYPE_FILTER_OPERANDSIZE = 0x0F,
/**
* @brief Reference to an address-size filter.
*/
ZYDIS_NODETYPE_FILTER_ADDRESSSIZE = 0x0B,
ZYDIS_NODETYPE_FILTER_ADDRESSSIZE = 0x10,
/**
* @brief Reference to an rex/vex/evex.w filter.
*/
ZYDIS_NODETYPE_FILTER_REXW = 0x0C,
ZYDIS_NODETYPE_FILTER_REXW = 0x11,
/**
* @brief Reference to an vex/evex.l filter.
*/
ZYDIS_NODETYPE_FILTER_VEXL = 0x0D,
ZYDIS_NODETYPE_FILTER_VEXL = 0x12,
/**
* @brief Reference to an evex.l' filter.
*/
ZYDIS_NODETYPE_FILTER_EVEXL2 = 0x0E,
ZYDIS_NODETYPE_FILTER_EVEXL2 = 0x13,
/**
* @brief Reference to an evex.b filter.
*/
ZYDIS_NODETYPE_FILTER_EVEXB = 0x0F
ZYDIS_NODETYPE_FILTER_EVEXB = 0x14
};
/* ---------------------------------------------------------------------------------------------- */
#pragma pack (push, 1)
/**
* @brief Defines the @c ZydisInstructionTableNode struct.
* @brief Defines the @c ZydisInstructionTableNodeValue datatype.
*/
typedef struct ZydisInstructionTableNode_
{
/**
* @brief The instruction table node type.
*/
ZydisInstructionTableNodeType type;
/**
* @brief The instruction table node value.
*/
uint16_t value;
} ZydisInstructionTableNode;
#pragma pack (pop)
typedef uint16_t ZydisInstructionTableNodeValue;
/* ---------------------------------------------------------------------------------------------- */
/* Instruction definition */
/* Operand definition */
/* ---------------------------------------------------------------------------------------------- */
/**
@ -233,6 +245,27 @@ enum ZydisSemanticOperandTypes
ZYDIS_SEM_OPERAND_TYPE_ST0
};
/**
* @brief Defines the @c ZydisOperandDefinition struct.
*/
typedef struct ZydisOperandDefinition_
{
/**
* @brief The semantic operand type.
*/
ZydisSemanticOperandType type;
/**
* @brief The operand encoding.
*/
ZydisOperandEncoding encoding;
/**
* @brief The operand access-mode.
*/
ZydisOperandAccess access;
} ZydisOperandDefinition;
/* ---------------------------------------------------------------------------------------------- */
/* Instruction definition */
/* ---------------------------------------------------------------------------------------------- */
/**
@ -251,25 +284,8 @@ enum ZydisEvexBFunctionalities
ZYDIS_EVEXB_FUNCTIONALITY_SAE
};
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Defines the zydis operand definition datatype.
*/
typedef uint16_t ZydisOperandDefinition;
#pragma pack (push, 1)
/**
* @brief Defines the zydis operands definition datatype.
*/
typedef struct ZydisInstructionOperands_
{
ZydisOperandDefinition operands[4];
} ZydisInstructionOperands;
/**
* @brief Defines the zydis instruction definition struct.
* @brief Defines the @c ZydisInstructionDefinition struct.
*/
typedef struct ZydisInstructionDefinition_
{
@ -278,160 +294,24 @@ typedef struct ZydisInstructionDefinition_
*/
ZydisInstructionMnemonic mnemonic;
/**
* @brief The instruction operand.
* @brief The number of used operands.
*/
uint16_t operands;
//ZydisOperandDefinition operands[4];
uint8_t operandCount;
/**
* @brief The operand-definitions.
*/
ZydisOperandDefinition operands[5];
/**
* @brief The evex.b functionality.
*/
ZydisEvexBFunctionality evexBFunctionality;
bool hasEvexAAA;
bool hasEvexZ;
} ZydisInstructionDefinition;
#pragma pack (pop)
/* ---------------------------------------------------------------------------------------------- */
/* ============================================================================================== */
/* Data tables */
/* ============================================================================================== */
/**
* @brief Contains all opcode filters.
*
* Indexed by the numeric value of the opcode.
*/
extern const ZydisInstructionTableNode filterOpcode[][256];
/**
* @brief Contains all vex-map filters.
*
* Index values:
* 0 = LES, LDS or BOUND instruction (default encoding)
* 1 = 0F
* 2 = 0F38
* 3 = 0F3A
* 4 = 66
* 5 = 66_0F
* 6 = 66_0F38
* 7 = 66_0F3A
* 8 = F3
* 9 = F3_0F
* A = F3_0F38
* B = F3_0F3A
* C = F2
* D = F2_0F
* E = F2_0F38
* F = F2_0F3A
*/
extern const ZydisInstructionTableNode filterVEX[][16];
/**
* @brief Contains all xop-map filters.
*
* Index values:
* 0 = POP instruction (default encoding)
* 1 = xop8
* 2 = xop9
* 3 = xopA
*/
extern const ZydisInstructionTableNode filterXOP[][4];
/**
* @brief Contains all instruction-mode filters.
*
* Index values:
* 0 = 64 bit mode required
* 1 = 64 bit mode excluded
*/
extern const ZydisInstructionTableNode filterMode[][2];
/**
* @brief Contains all mandatory-prefix switch tables.
*
* Index values:
* 0 = none
* 1 = 66
* 2 = F3
* 3 = F2
*/
extern const ZydisInstructionTableNode filterMandatoryPrefix[][4];
/**
* @brief Contains all modrm.mod filters.
*
* Index values:
* 0 = [modrm_mod == !11] = memory
* 1 = [modrm_mod == 11] = register
*/
extern const ZydisInstructionTableNode filterModrmMod[][2];
/**
* @brief Contains all modrm.reg filters.
*
* Indexed by the numeric value of the modrm_reg field.
*/
extern const ZydisInstructionTableNode filterModrmReg[][8];
/**
* @brief Contains all modrm.rm filters.
*
* Indexed by the numeric value of the modrm_rm field.
*/
extern const ZydisInstructionTableNode filterModrmRm[][8];
/**
* @brief Contains all operand-size filters.
*
* Index values:
* 0 = 16bit = 0x66 prefix in 32 bit mode
* 1 = 32bit = 0x66 prefix in 16 bit mode
*/
extern const ZydisInstructionTableNode filterOperandSize[][2];
/**
* @brief Contains all address-size filters.
*
* Index values:
* 0 = 16
* 1 = 32
* 2 = 64
*/
extern const ZydisInstructionTableNode filterAddressSize[][3];
/**
* @brief Contains all rex/vex/evex.w filters.
*
* Indexed by the numeric value of the rex/vex/evex.w field.
*/
extern const ZydisInstructionTableNode filterREXW[][2];
/**
* @brief Contains all vex.l filters.
*
* Indexed by the numeric value of the vex/evex.l field.
*/
extern const ZydisInstructionTableNode filterVEXL[][2];
/**
* @brief Contains all evex.l' filters.
*
* Indexed by the numeric value of the evex.l' field.
*/
extern const ZydisInstructionTableNode filterEVEXL2[][2];
/**
* @brief Contains all evex.b filters.
*
* Indexed by the numeric value of the evex.b field.
*/
extern const ZydisInstructionTableNode filterEVEXB[][2];
/**
* @brief Contains all instruction-definitions.
*/
extern const ZydisInstructionDefinition instructionDefinitions[];
/**
* @brief Contains all instruction-operand-definitions.
*/
extern const ZydisInstructionOperands instructionOperands[];
/* ============================================================================================== */
/* Functions */
/* ============================================================================================== */
@ -443,11 +323,8 @@ extern const ZydisInstructionOperands instructionOperands[];
*
* @return The type of the specified instruction table node.
*/
ZYDIS_INLINE ZydisInstructionTableNodeType ZydisInstructionTableGetNodeType(
ZydisInstructionTableNode node)
{
return node.type;
}
ZYDIS_NO_EXPORT ZydisInstructionTableNodeType ZydisInstructionTableGetNodeType(
const ZydisInstructionTableNode node);
/**
* @brief Returns the value of the specified instruction table node.
@ -456,10 +333,8 @@ ZYDIS_INLINE ZydisInstructionTableNodeType ZydisInstructionTableGetNodeType(
*
* @return The value of the specified instruction table node.
*/
ZYDIS_INLINE uint16_t ZydisInstructionTableGetNodeValue(ZydisInstructionTableNode node)
{
return node.value;
}
ZYDIS_NO_EXPORT ZydisInstructionTableNodeValue ZydisInstructionTableGetNodeValue(
const ZydisInstructionTableNode* node);
/* ---------------------------------------------------------------------------------------------- */
@ -468,11 +343,7 @@ ZYDIS_INLINE uint16_t ZydisInstructionTableGetNodeValue(ZydisInstructionTableNod
*
* @return The root node of the instruction table.
*/
ZYDIS_INLINE ZydisInstructionTableNode ZydisInstructionTableGetRootNode()
{
ZydisInstructionTableNode root = { ZYDIS_NODETYPE_FILTER_OPCODE, 0x00000000 };
return root;
}
ZYDIS_NO_EXPORT ZydisInstructionTableNode ZydisInstructionTableGetRootNode();
/**
* @brief Returns the child node of @c parent specified by @c index.
@ -482,61 +353,8 @@ ZYDIS_INLINE ZydisInstructionTableNode ZydisInstructionTableGetRootNode()
*
* @return The specified child node.
*/
ZYDIS_INLINE ZydisInstructionTableNode ZydisInstructionTableGetChildNode(
ZydisInstructionTableNode parent, uint16_t index)
{
ZydisInstructionTableNodeType nodeType = ZydisInstructionTableGetNodeType(parent);
uint16_t tableIndex = ZydisInstructionTableGetNodeValue(parent);
switch (nodeType)
{
case ZYDIS_NODETYPE_FILTER_OPCODE:
ZYDIS_ASSERT(index < 256);
return filterOpcode[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_VEX:
ZYDIS_ASSERT(index < 16);
return filterVEX[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_XOP:
ZYDIS_ASSERT(index < 4);
return filterXOP[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODE:
ZYDIS_ASSERT(index < 3);
return filterMode[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MANDATORYPREFIX:
ZYDIS_ASSERT(index < 4);
return filterMandatoryPrefix[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMMOD:
ZYDIS_ASSERT(index < 2);
return filterModrmMod[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMREG:
ZYDIS_ASSERT(index < 8);
return filterModrmReg[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMRM:
ZYDIS_ASSERT(index < 8);
return filterModrmRm[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_OPERANDSIZE:
ZYDIS_ASSERT(index < 2);
return filterOperandSize[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_ADDRESSSIZE:
ZYDIS_ASSERT(index < 3);
return filterAddressSize[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_REXW:
ZYDIS_ASSERT(index < 2);
return filterREXW[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_VEXL:
ZYDIS_ASSERT(index < 2);
return filterVEXL[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_EVEXL2:
ZYDIS_ASSERT(index < 2);
return filterEVEXL2[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_EVEXB:
ZYDIS_ASSERT(index < 2);
return filterEVEXB[tableIndex][index];
default:
ZYDIS_UNREACHABLE;
}
ZydisInstructionTableNode node = { ZYDIS_NODETYPE_INVALID, 0x00000000 };
return node;
}
ZYDIS_NO_EXPORT ZydisInstructionTableNode ZydisInstructionTableGetChildNode(
const ZydisInstructionTableNode parent, uint16_t index);
/**
* @brief Returns the instruction definition that is linked to the given @c node.
@ -545,85 +363,8 @@ ZYDIS_INLINE ZydisInstructionTableNode ZydisInstructionTableGetChildNode(
*
* @return Pointer to the instruction definition.
*/
ZYDIS_INLINE const ZydisInstructionDefinition* ZydisInstructionDefinitionByNode(
ZydisInstructionTableNode node)
{
ZYDIS_ASSERT(ZydisInstructionTableGetNodeType(node) == ZYDIS_NODETYPE_DEFINITION);
return &instructionDefinitions[ZydisInstructionTableGetNodeValue(node)];
}
/* ---------------------------------------------------------------------------------------------- */
ZYDIS_INLINE ZydisInstructionMnemonic ZydisInstructionDefinitionGetMnemonic(
const ZydisInstructionDefinition* definition)
{
return (definition->mnemonic >> 4) & 0xFFF;
}
ZYDIS_INLINE const ZydisInstructionOperands* ZydisInstructionDefinitionGetOperands(
const ZydisInstructionDefinition* definition)
{
return &instructionOperands[definition->operands];
}
ZYDIS_INLINE ZydisEvexBFunctionality ZydisInstructionDefinitionGetEvexBFunctionality(
const ZydisInstructionDefinition* definition)
{
return (definition->mnemonic >> 2) & 0x03;
}
ZYDIS_INLINE bool ZydisInstructionDefinitionHasEvexAAA(const ZydisInstructionDefinition* definition)
{
return (definition->mnemonic >> 1) & 0x01;
}
ZYDIS_INLINE bool ZydisInstructionDefinitionHasEvexZ(const ZydisInstructionDefinition* definition)
{
return definition->mnemonic & 0x01;
}
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Returns the defined operand-type of the specified operand-definition.
*
* @param definition The operand definition.
*
* @return The defined operand-type of the specified operand-definition.
*/
ZYDIS_INLINE ZydisSemanticOperandType ZydisOperandDefinitionGetType(
ZydisOperandDefinition definition)
{
return ((definition >> 8) & 0xFF);
}
/**
* @brief Returns the operand-encoding of the specified operand-definition.
*
* @param definition The operand definition.
*
* @return The operand-encoding of the specified operand-definition.
*/
ZYDIS_INLINE ZydisOperandEncoding ZydisOperandDefinitionGetEncoding(
ZydisOperandDefinition definition)
{
return ((definition >> 2) & 0x3F);
}
/**
* @brief Returns the access-mode of the specified operand-definition.
*
* @param definition The operand definition.
*
* @return The access-mode of the specified operand-definition.
*/
ZYDIS_INLINE ZydisOperandAccess ZydisOperandDefinitionGetAccessMode(
ZydisOperandDefinition definition)
{
return ((definition >> 0) & 0x03);
}
/* ---------------------------------------------------------------------------------------------- */
ZYDIS_NO_EXPORT ZydisInstructionDefinition ZydisInstructionDefinitionByNode(
const ZydisInstructionTableNode node);
/* ============================================================================================== */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,759 @@
const ZydisInternalOperandDefinition operandDefinitions1[][1] =
{
/*0000*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0001*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0002*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0003*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0004*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0005*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0006*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0007*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_PTR1616, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0008*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_REL32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0009*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1616, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_REL16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*000B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_PTR1632, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*000D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1664, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1632, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0010*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0011*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0012*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0013*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0014*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0015*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0016*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0017*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0018*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0019*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*001A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*001B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*001C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FPR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*001D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM80, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*001E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM224, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*001F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM112, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0020*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0021*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0022*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0023*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0024*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0025*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0026*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0027*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0028*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_REL8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0029*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*002A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*002B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DS, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*002C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*002D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SS, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*002E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*002F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GS, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0030*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0031*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0032*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_ES, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0033*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0034*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0035*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FS, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0036*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0037*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READ) },
/*0038*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READ) },
/*0039*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READ) },
/*003B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CS, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*003C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*003D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*003E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0040*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1632, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0041*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1664, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0042*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0043*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE) },
/*0044*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE) }
};
const ZydisInternalOperandDefinition operandDefinitions2[][2] =
{
/*0000*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0001*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0002*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0003*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0004*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0005*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0006*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0007*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0008*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0009*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*000A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*000B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*000C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*000E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*000F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0010*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0011*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0012*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0013*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0014*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0015*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0016*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0017*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0018*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0019*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*001B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*001C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*001E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0020*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0021*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0022*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0023*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0024*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0025*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0026*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0027*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0028*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0029*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*002A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0030*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0031*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0032*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0033*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0034*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0035*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0036*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0037*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0038*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0039*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*003A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_BNDR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*003B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*003C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*003D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*003E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*003F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0040*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0041*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0042*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0043*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0044*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0045*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0046*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0047*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0048*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0049*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*004A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*004B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*004C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*004D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*004E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*004F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0050*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0051*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0052*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0053*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0054*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0055*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0056*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0057*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0058*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0059*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*005A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*005B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*005D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*005F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0060*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0061*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0062*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0063*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0064*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0065*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0066*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0067*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0068*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0069*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*006C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*006D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*006E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*006F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0070*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0071*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0072*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0073*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0074*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0075*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0076*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0077*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0078*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0079*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*007F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0080*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0081*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0082*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0083*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0084*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0085*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FPR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_ST0, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0086*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_ST0, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FPR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0087*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_ST0, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FPR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0088*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0089*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*008A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*008B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*008C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*008D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*008E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*008F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0090*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0091*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0092*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0093*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0094*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0095*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0096*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0097*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0098*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0099*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*009A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*009B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*009C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*009D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*009E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*009F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1616, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1632, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_M1664, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00AA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00AB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00AC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00AD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00AE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*00AF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*00B0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00B1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00B2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00B3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00B4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00B5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM64, ZYDIS_OPERAND_ACCESS_READ) },
/*00B6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00B7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*00B8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00B9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00BA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00BB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*00BC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00BD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00BE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00BF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*00C0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00C1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00C2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00C3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00C4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*00C5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00C6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00C7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*00C8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00C9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00CA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00CB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00CC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*00CD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00CE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00CF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00D0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00D1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*00D8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00D9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00DA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00DB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00DC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00DD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00DE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00DF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SREG, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00E0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00E1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00E2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00E3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00E4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*00E5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00E6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MOFFS32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00E7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*00E8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00E9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00EA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00EB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00EC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00ED*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00EE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00EF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00F0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00F1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00F2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00F3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*00F4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00F5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00F6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00F7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00F8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*00F9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00FF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0100*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0101*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0102*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0103*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0104*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0105*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0106*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0107*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0108*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0109*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_SRCIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*010A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*010B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*010C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE) },
/*010D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*010E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*010F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0110*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0111*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0112*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0113*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0114*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0115*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0116*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0117*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0118*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0119*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*011A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*011B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*011C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*011D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*011E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*011F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0120*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0121*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0122*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0123*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0124*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0125*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_FIXED1, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0126*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0127*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0128*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0129*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*012A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*012B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*012C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*012D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*012E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*012F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX8, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0130*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX32, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0131*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX64, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0132*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_DSTIDX16, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0133*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0134*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0135*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0136*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0137*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0138*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*0139*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*013A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ) },
/*013B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*013C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*013D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*013E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*013F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0140*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0141*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0142*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0143*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0144*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0145*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0146*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0147*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0148*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0149*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*014A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*014B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*014C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*014D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*014E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*014F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0150*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0151*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*0152*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ) },
/*0153*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0154*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0155*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0156*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ) },
/*0157*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0158*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0159*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*015A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*015B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*015C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*015D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*015E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ) },
/*015F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ) },
/*0160*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0161*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0162*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0163*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0164*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0165*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0166*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0167*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0168*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0169*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*016A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*016B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*016C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*016D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*016E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*016F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0170*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0171*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0172*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0173*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0174*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0175*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0176*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0177*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0178*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0179*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*017A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*017B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*017C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*017D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*017E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*017F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0180*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0181*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0182*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0183*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0184*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0185*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0186*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0187*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0188*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0189*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*018F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0190*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0191*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0192*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0193*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_READ) },
/*0194*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_READ) },
/*0195*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_READ) },
/*0196*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0197*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0198*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0199*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*019A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*019B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*019C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*019D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*019E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*019F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A6*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A7*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A8*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01A9*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AA*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AB*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AC*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AD*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AE*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBZ, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01AF*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBX, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*01B0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*01B1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_AX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*01B2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_RAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*01B3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_EAX, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_OPCODE, ZYDIS_OPERAND_ACCESS_READWRITE) }
};
const ZydisInternalOperandDefinition operandDefinitions3[][3] =
{
/*0000*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0001*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0002*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0003*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0004*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0005*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0006*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*0007*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*0008*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*0009*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*000A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0010*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0011*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0012*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0013*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0014*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0015*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0016*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*0017*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0018*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*0019*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM32, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*001B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM16, ZYDIS_OPERAND_ENCODING_IMM16, ZYDIS_OPERAND_ACCESS_READ) },
/*001C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM64, ZYDIS_OPERAND_ENCODING_IMM32, ZYDIS_OPERAND_ACCESS_READ) },
/*001D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*001F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0020*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0021*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0022*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0023*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0024*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0025*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0026*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0027*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0028*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0029*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0030*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0031*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0032*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0033*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0034*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0035*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0036*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0037*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0038*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0039*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*003A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*003B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_CL, ZYDIS_OPERAND_ENCODING_NONE, ZYDIS_OPERAND_ACCESS_READ) },
/*0040*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0041*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR16, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0042*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0043*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*0044*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0045*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0046*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0047*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0048*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0049*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*004A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*004B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ) },
/*004C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ) },
/*004D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*004E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*004F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0050*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0051*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0052*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0053*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0054*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0055*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0056*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0057*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0058*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0059*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*005C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*005D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*005F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0060*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0061*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0062*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0063*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0064*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0065*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0066*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0067*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0068*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0069*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*006F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0070*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0071*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0072*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0073*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0074*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBY, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0075*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0076*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0077*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBX, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0078*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_VSIBY, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0079*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*007F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0080*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0081*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0082*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0083*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0084*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0085*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0086*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ) },
/*0087*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ) },
/*0088*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0089*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*008A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*008B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*008C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ) },
/*008D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*008E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*008F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ) },
/*0090*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0091*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0092*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0093*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0094*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0095*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0096*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0097*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_VSIBX, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READWRITE) },
/*0098*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*0099*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*009A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ) },
/*009B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*009C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ) },
/*009D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*009E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*009F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A0*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A1*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*00A2*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*00A3*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ) },
/*00A4*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READWRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*00A5*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) }
};
const ZydisInternalOperandDefinition operandDefinitions4[][4] =
{
/*0000*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0001*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0002*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0003*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0004*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0005*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0006*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0007*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0008*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0009*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*000F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*0010*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*0011*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*0012*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*0013*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0014*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0015*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0016*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0017*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0018*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0019*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64_BCST2, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM512, ZYDIS_OPERAND_ENCODING_RM_CD64, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST8, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST16, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32_BCST4, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*001F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0020*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0021*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0022*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MSKR, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0023*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0024*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM_CD8, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0025*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM_CD4, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0026*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0027*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0028*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*0029*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*002C*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ) },
/*002D*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ) },
/*002E*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*002F*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0030*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0031*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0032*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM_CD16, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0033*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0034*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR512, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM_CD32, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0035*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0036*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0037*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_GPR32, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0038*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM8, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*0039*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM64, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003A*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM_CD2, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) },
/*003B*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM16, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8, ZYDIS_OPERAND_ACCESS_READ) }
};
const ZydisInternalOperandDefinition operandDefinitions5[][5] =
{
/*0000*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0001*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0002*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0003*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0004*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0005*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0006*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR128, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_MEM128, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) },
/*0007*/ { ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_REG, ZYDIS_OPERAND_ACCESS_WRITE), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_VVVV, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_IMM8_HI, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_VR256, ZYDIS_OPERAND_ENCODING_RM, ZYDIS_OPERAND_ACCESS_READ), ZYDIS_MAKE_OPERANDDEFINITION(ZYDIS_SEM_OPERAND_TYPE_IMM8U, ZYDIS_OPERAND_ENCODING_IMM8_LO, ZYDIS_OPERAND_ACCESS_READ) }
};

View File

@ -49,7 +49,7 @@ typedef uint16_t ZydisInstructionMnemonic;
*/
enum ZydisInstructionMnemonics
{
#include <Zydis/Internal/Mnemonics.inc>
#include <Zydis/Internal/MnemonicEnum.inc>
};
/* ============================================================================================== */

View File

@ -563,6 +563,13 @@ static ZydisDecoderStatus ZydisDecodeOperandImmediate(ZydisInstructionDecoder* d
switch (physicalSize)
{
case 8:
{
// We have to store a copy of the imm8 value for instructions that encode different operands
// in the lo and hi part of the immediate.
if (info->details.internal.imm8initialized)
{
operand->imm.value.ubyte = info->details.internal.imm8;
} else
{
uint8_t immediate;
ZYDIS_CHECK(ZydisInputNext(decoder, info, &immediate));
@ -573,6 +580,9 @@ static ZydisDecoderStatus ZydisDecodeOperandImmediate(ZydisInstructionDecoder* d
{
operand->imm.value.uqword = immediate;
}
info->details.internal.imm8initialized = true;
info->details.internal.imm8 = operand->imm.value.ubyte;
}
break;
}
case 16:
@ -1059,7 +1069,7 @@ static ZydisDecoderStatus ZydisDecodeOperand(ZydisInstructionDecoder* decoder,
ZYDIS_UNREACHABLE;
}
break;
case ZYDIS_OPERAND_ENCODING_IMM8:
case ZYDIS_OPERAND_ENCODING_IMM8_HI:
ZYDIS_ASSERT((info->encoding == ZYDIS_INSTRUCTION_ENCODING_VEX) ||
(info->encoding == ZYDIS_INSTRUCTION_ENCODING_EVEX) ||
(info->encoding == ZYDIS_INSTRUCTION_ENCODING_XOP));
@ -1308,6 +1318,11 @@ static ZydisDecoderStatus ZydisDecodeOperand(ZydisInstructionDecoder* decoder,
case ZYDIS_SEM_OPERAND_TYPE_IMM64:
switch (encoding)
{
case ZYDIS_OPERAND_ENCODING_IMM8_LO:
ZYDIS_CHECK(
ZydisDecodeOperandImmediate(decoder, info, operand, 8, operand->imm.isSigned));
operand->imm.value.ubyte &= 0x0F;
break;
case ZYDIS_OPERAND_ENCODING_IMM8:
return ZydisDecodeOperandImmediate(decoder, info, operand, 8, operand->imm.isSigned);
case ZYDIS_OPERAND_ENCODING_IMM16:
@ -1474,20 +1489,19 @@ static ZydisDecoderStatus ZydisDecodeOperands(ZydisInstructionDecoder* decoder,
ZYDIS_ASSERT(info);
ZYDIS_ASSERT(definition);
const ZydisInstructionOperands* operands = ZydisInstructionDefinitionGetOperands(definition);
for (int i = 0; i < 4; ++i)
for (int i = 0; i < definition->operandCount; ++i)
{
ZydisSemanticOperandType type = ZydisOperandDefinitionGetType(operands->operands[i]);
ZydisSemanticOperandType type = definition->operands[i].type;
if (type == ZYDIS_SEM_OPERAND_TYPE_UNUSED)
{
break;
}
++info->operandCount;
ZydisInstructionEncoding encoding = ZydisOperandDefinitionGetEncoding(operands->operands[i]);
ZydisInstructionEncoding encoding = definition->operands[i].encoding;
ZydisDecoderStatus status =
ZydisDecodeOperand(decoder, info, &info->operand[i], type, encoding);
info->operand[i].encoding = encoding;
info->operand[i].access = ZydisOperandDefinitionGetAccessMode(operands->operands[i]);
info->operand[i].access = definition->operands[i].access;
if (status != ZYDIS_STATUS_DECODER_SUCCESS)
{
info->flags |= ZYDIS_IFLAG_ERROR_OPERANDS;
@ -2178,11 +2192,16 @@ static ZydisDecoderStatus ZydisDecodeOpcode(ZydisInstructionDecoder* decoder,
info->flags |= ZYDIS_IFLAG_ERROR_INVALID;
return ZYDIS_STATUS_DECODER_INVALID_INSTRUCTION;
}
case ZYDIS_NODETYPE_DEFINITION:
case ZYDIS_NODETYPE_DEFINITION_0OP:
case ZYDIS_NODETYPE_DEFINITION_1OP:
case ZYDIS_NODETYPE_DEFINITION_2OP:
case ZYDIS_NODETYPE_DEFINITION_3OP:
case ZYDIS_NODETYPE_DEFINITION_4OP:
case ZYDIS_NODETYPE_DEFINITION_5OP:
{
const ZydisInstructionDefinition* definition = ZydisInstructionDefinitionByNode(node);
ZYDIS_ASSERT(definition);
info->mnemonic = ZydisInstructionDefinitionGetMnemonic(definition);
const ZydisInstructionDefinition definition = ZydisInstructionDefinitionByNode(node);
//ZYDIS_ASSERT(definition); // TODO: Pointer?
info->mnemonic = definition.mnemonic;
// TODO: Check for (un)accepted prefixes
@ -2219,7 +2238,7 @@ static ZydisDecoderStatus ZydisDecodeOpcode(ZydisInstructionDecoder* decoder,
// Save input-buffer state and decode dummy operands
uint8_t bufferPosRead = decoder->buffer.posRead;
uint8_t length = info->length;
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, definition));
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, &definition)); // TODO: Reference?
// Read actual 3dnow opcode
ZYDIS_CHECK(ZydisInputNext(decoder, info, &info->opcode));
// Restore input-buffer state
@ -2245,35 +2264,31 @@ static ZydisDecoderStatus ZydisDecodeOpcode(ZydisInstructionDecoder* decoder,
node = ZydisInstructionTableGetChildNode(node,
(info->details.modrm.mod == 0x3) ? 1 : 0);
// Decode actual operands and fix the instruction-info
definition = ZydisInstructionDefinitionByNode(node);
ZYDIS_ASSERT(definition);
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, definition));
info->mnemonic = ZydisInstructionDefinitionGetMnemonic(definition);
ZydisInstructionDefinition definition2 = ZydisInstructionDefinitionByNode(node);
//ZYDIS_ASSERT(definition); // TODO: Pointer
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, &definition2)); // TODO: Reference
info->mnemonic = definition2.mnemonic;
ZydisFinalizeInstructionInfo(info);
return ZydisInputNext(decoder, info, &info->opcode);
}
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, definition));
ZYDIS_CHECK(ZydisDecodeOperands(decoder, info, &definition)); // TODO: Reference
ZydisFinalizeInstructionInfo(info);
if (info->encoding == ZYDIS_INSTRUCTION_ENCODING_EVEX)
{
if (ZydisInstructionDefinitionHasEvexAAA(definition))
if (definition.hasEvexAAA && info->details.evex.aaa)
{
if (!info->details.evex.aaa)
{
// TODO: Fatal error?
}
info->avx.maskRegister = ZYDIS_REGISTER_K0 + info->details.evex.aaa;
}
if (ZydisInstructionDefinitionHasEvexZ(definition) && info->details.evex.z)
if (definition.hasEvexZ && info->details.evex.z)
{
info->avx.maskMode = ZYDIS_AVX_MASKMODE_ZERO;
} else
{
info->avx.maskMode = ZYDIS_AVX_MASKMODE_MERGE;
}
switch (ZydisInstructionDefinitionGetEvexBFunctionality(definition))
switch (definition.evexBFunctionality)
{
case ZYDIS_EVEXB_FUNCTIONALITY_BC:
break;
@ -2286,7 +2301,6 @@ static ZydisDecoderStatus ZydisDecodeOpcode(ZydisInstructionDecoder* decoder,
info->avx.broadcast = ZYDIS_AVX_BCSTMODE_INVALID;
}
}
return ZYDIS_STATUS_DECODER_SUCCESS;
}
case ZYDIS_NODETYPE_FILTER_OPCODE:
@ -2336,7 +2350,13 @@ static ZydisDecoderStatus ZydisDecodeOpcode(ZydisInstructionDecoder* decoder,
}
ZYDIS_CHECK(status);
node = ZydisInstructionTableGetChildNode(node, index);
} while((nodeType != ZYDIS_NODETYPE_INVALID) && (nodeType != ZYDIS_NODETYPE_DEFINITION));
} while((nodeType != ZYDIS_NODETYPE_INVALID) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_0OP) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_1OP) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_2OP) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_3OP) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_4OP) &&
(nodeType != ZYDIS_NODETYPE_DEFINITION_5OP));
return ZYDIS_STATUS_DECODER_SUCCESS;
}

View File

@ -470,7 +470,7 @@ static ZydisStatus ZydisFormatterFormatInstructionIntel(ZydisInstructionFormatte
(formatter->flags & ZYDIS_FORMATTER_FLAG_UPPERCASE), mnemonic));
uint16_t typecast = 0;
for (int i = 0; i < 4; ++i)
for (int i = 0; i < 5; ++i)
{
if (info->operand[i].type == ZYDIS_OPERAND_TYPE_UNUSED)
{

View File

@ -24,31 +24,428 @@
***************************************************************************************************/
#include <assert.h>
#include <string.h>
#include <Zydis/Internal/InstructionTable.h>
#define ZYDIS_INVALID { ZYDIS_NODETYPE_INVALID, 0x00000000 }
#define ZYDIS_FILTER(type, id) { type, id }
#define ZYDIS_DEFINITION(id) { ZYDIS_NODETYPE_DEFINITION, id }
/* ============================================================================================== */
/* Data tables */
/* ============================================================================================== */
#include <Zydis/Internal/InstructionTable.inc>
/* ---------------------------------------------------------------------------------------------- */
/* Generated types & Macros */
/* ---------------------------------------------------------------------------------------------- */
// TODO: Auto generate these structs and macros
typedef struct ZydisInternalInstructionTableNode_
{
ZydisInstructionTableNodeType type;
ZydisInstructionTableNodeValue value;
} ZydisInternalInstructionTableNode;
#define ZYDIS_MAKE_INSTRUCTIONTABLENODE(type, value) \
{ type, value }
#define ZYDIS_GET_INSTRUCTIONTABLENODE_TYPE(node) \
node.type
#define ZYDIS_GET_INSTRUCTIONTABLENODE_VALUE(node) \
node.value
typedef struct ZydisInternalOperandDefinition_
{
unsigned int type : 8;
unsigned int encoding : 8;
unsigned int access : 2;
} ZydisInternalOperandDefinition;
#define ZYDIS_MAKE_OPERANDDEFINITION(type, encoding, access) \
{ type, encoding, access }
#define ZYDIS_GET_OPERANDDEFINITION_TYPE(def) \
(ZydisSemanticOperandType)def.type
#define ZYDIS_GET_OPERANDDEFINITION_ENCODING(def) \
(ZydisOperandEncoding)def.encoding
#define ZYDIS_GET_OPERANDDEFINITION_ACCESS(def) \
(ZydisOperandAccess)def.access
typedef struct ZydisInternalInstructionDefinition_
{
unsigned int mnemonic : 11;
unsigned int operandRef : 9;
unsigned int evexBFunctionality : 2;
unsigned int hasEvexAAA : 1;
unsigned int hasEvexZ : 1;
} ZydisInternalInstructionDefinition;
#define ZYDIS_MAKE_INSTRUCTIONDEFINITION(mnemonic, operandRef, evexBFunctionality, hasEvexAAA, hasEvexZ) \
{ mnemonic, operandRef, evexBFunctionality, hasEvexAAA, hasEvexZ }
#define ZYDIS_GET_INSTRUCTIONDEFINITION_MNEMONIC(def) \
(ZydisInstructionMnemonic)def.mnemonic
#define ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF(def) \
def.operandRef
#define ZYDIS_GET_INSTRUCTIONDEFINITION_EVEXBFUNCTIONALITY(def) \
(ZydisEvexBFunctionality)def.evexBFunctionality
#define ZYDIS_GET_INSTRUCTIONDEFINITION_HASEVEXAAA(def) \
def.hasEvexAAA
#define ZYDIS_GET_INSTRUCTIONDEFINITION_HASEVEXZ(def) \
def.hasEvexZ
/* ---------------------------------------------------------------------------------------------- */
/* Forward declarations */
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Contains all opcode filters.
*
* Indexed by the numeric value of the opcode.
*/
extern const ZydisInternalInstructionTableNode filterOpcode[][256];
/**
* @brief Contains all vex-map filters.
*
* Index values:
* 0 = LES, LDS or BOUND instruction (default encoding)
* 1 = 0F
* 2 = 0F38
* 3 = 0F3A
* 4 = 66
* 5 = 66_0F
* 6 = 66_0F38
* 7 = 66_0F3A
* 8 = F3
* 9 = F3_0F
* A = F3_0F38
* B = F3_0F3A
* C = F2
* D = F2_0F
* E = F2_0F38
* F = F2_0F3A
*/
extern const ZydisInternalInstructionTableNode filterVEX[][16];
/**
* @brief Contains all xop-map filters.
*
* Index values:
* 0 = POP instruction (default encoding)
* 1 = xop8
* 2 = xop9
* 3 = xopA
*/
extern const ZydisInternalInstructionTableNode filterXOP[][4];
/**
* @brief Contains all instruction-mode filters.
*
* Index values:
* 0 = 64 bit mode required
* 1 = 64 bit mode excluded
*/
extern const ZydisInternalInstructionTableNode filterMode[][2];
/**
* @brief Contains all mandatory-prefix switch tables.
*
* Index values:
* 0 = none
* 1 = 66
* 2 = F3
* 3 = F2
*/
extern const ZydisInternalInstructionTableNode filterMandatoryPrefix[][4];
/**
* @brief Contains all modrm.mod filters.
*
* Index values:
* 0 = [modrm_mod == !11] = memory
* 1 = [modrm_mod == 11] = register
*/
extern const ZydisInternalInstructionTableNode filterModrmMod[][2];
/**
* @brief Contains all modrm.reg filters.
*
* Indexed by the numeric value of the modrm_reg field.
*/
extern const ZydisInternalInstructionTableNode filterModrmReg[][8];
/**
* @brief Contains all modrm.rm filters.
*
* Indexed by the numeric value of the modrm_rm field.
*/
extern const ZydisInternalInstructionTableNode filterModrmRm[][8];
/**
* @brief Contains all operand-size filters.
*
* Index values:
* 0 = 16bit = 0x66 prefix in 32 bit mode
* 1 = 32bit = 0x66 prefix in 16 bit mode
*/
extern const ZydisInternalInstructionTableNode filterOperandSize[][2];
/**
* @brief Contains all address-size filters.
*
* Index values:
* 0 = 16
* 1 = 32
* 2 = 64
*/
extern const ZydisInternalInstructionTableNode filterAddressSize[][3];
/**
* @brief Contains all rex/vex/evex.w filters.
*
* Indexed by the numeric value of the rex/vex/evex.w field.
*/
extern const ZydisInternalInstructionTableNode filterREXW[][2];
/**
* @brief Contains all vex.l filters.
*
* Indexed by the numeric value of the vex/evex.l field.
*/
extern const ZydisInternalInstructionTableNode filterVEXL[][2];
/**
* @brief Contains all evex.l' filters.
*
* Indexed by the numeric value of the evex.l' field.
*/
extern const ZydisInternalInstructionTableNode filterEVEXL2[][2];
/**
* @brief Contains all evex.b filters.
*
* Indexed by the numeric value of the evex.b field.
*/
extern const ZydisInternalInstructionTableNode filterEVEXB[][2];
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Contains all operand-definitions with 1 operand.
*/
extern const ZydisInternalOperandDefinition operandDefinitions1[][1];
/**
* @brief Contains all operand-definitions with 2 operands.
*/
extern const ZydisInternalOperandDefinition operandDefinitions2[][2];
/**
* @brief Contains all operand-definitions with 3 operands.
*/
extern const ZydisInternalOperandDefinition operandDefinitions3[][3];
/**
* @brief Contains all operand-definitions with 4 operands.
*/
extern const ZydisInternalOperandDefinition operandDefinitions4[][4];
/**
* @brief Contains all operand-definitions with 5 operands.
*/
extern const ZydisInternalOperandDefinition operandDefinitions5[][5];
/* ---------------------------------------------------------------------------------------------- */
/**
* @brief Contains all instruction-definitions.
*/
extern const ZydisInternalInstructionDefinition instructionDefinitions[];
/* ---------------------------------------------------------------------------------------------- */
/* Functions */
/* ---------------------------------------------------------------------------------------------- */
ZydisInstructionTableNodeType ZydisInstructionTableGetNodeType(
const ZydisInstructionTableNode node)
{
return (ZydisInstructionTableNodeType)
ZYDIS_GET_INSTRUCTIONTABLENODE_TYPE((*(ZydisInternalInstructionTableNode*)node));
}
ZydisInstructionTableNodeValue ZydisInstructionTableGetNodeValue(
const ZydisInstructionTableNode* node)
{
return (ZydisInstructionTableNodeValue)
ZYDIS_GET_INSTRUCTIONTABLENODE_VALUE((*(ZydisInternalInstructionTableNode*)node));
}
/* ---------------------------------------------------------------------------------------------- */
ZydisInstructionTableNode ZydisInstructionTableGetRootNode()
{
static const ZydisInternalInstructionTableNode root =
ZYDIS_MAKE_INSTRUCTIONTABLENODE(ZYDIS_NODETYPE_FILTER_OPCODE, 0x00000000);
return (ZydisInstructionTableNode)&root;
}
ZydisInstructionTableNode ZydisInstructionTableGetChildNode(
const ZydisInstructionTableNode parent, uint16_t index)
{
ZydisInstructionTableNodeType nodeType = ZydisInstructionTableGetNodeType(parent);
uint16_t tableIndex = ZydisInstructionTableGetNodeValue(parent);
switch (nodeType)
{
case ZYDIS_NODETYPE_FILTER_OPCODE:
ZYDIS_ASSERT(index < 256);
return (ZydisInstructionTableNode*)&filterOpcode[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_VEX:
ZYDIS_ASSERT(index < 16);
return (ZydisInstructionTableNode*)&filterVEX[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_XOP:
ZYDIS_ASSERT(index < 4);
return (ZydisInstructionTableNode*)&filterXOP[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODE:
ZYDIS_ASSERT(index < 3);
return (ZydisInstructionTableNode*)&filterMode[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MANDATORYPREFIX:
ZYDIS_ASSERT(index < 4);
return (ZydisInstructionTableNode*)&filterMandatoryPrefix[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMMOD:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterModrmMod[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMREG:
ZYDIS_ASSERT(index < 8);
return (ZydisInstructionTableNode*)&filterModrmReg[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_MODRMRM:
ZYDIS_ASSERT(index < 8);
return (ZydisInstructionTableNode*)&filterModrmRm[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_OPERANDSIZE:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterOperandSize[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_ADDRESSSIZE:
ZYDIS_ASSERT(index < 3);
return (ZydisInstructionTableNode*)&filterAddressSize[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_REXW:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterREXW[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_VEXL:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterVEXL[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_EVEXL2:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterEVEXL2[tableIndex][index];
case ZYDIS_NODETYPE_FILTER_EVEXB:
ZYDIS_ASSERT(index < 2);
return (ZydisInstructionTableNode*)&filterEVEXB[tableIndex][index];
default:
ZYDIS_UNREACHABLE;
}
static const ZydisInternalInstructionTableNode invalid =
ZYDIS_MAKE_INSTRUCTIONTABLENODE(ZYDIS_NODETYPE_INVALID, 0x00000000);
return (ZydisInstructionTableNode)&invalid;
}
ZydisInstructionDefinition ZydisInstructionDefinitionByNode(
const ZydisInstructionTableNode node)
{
ZydisInstructionDefinition result;
memset(&result, 0, sizeof(result));
const ZydisInternalInstructionDefinition* definition =
&instructionDefinitions[ZydisInstructionTableGetNodeValue(node)];
result.mnemonic = ZYDIS_GET_INSTRUCTIONDEFINITION_MNEMONIC((*definition));
result.evexBFunctionality = ZYDIS_GET_INSTRUCTIONDEFINITION_EVEXBFUNCTIONALITY((*definition));
result.hasEvexAAA = ZYDIS_GET_INSTRUCTIONDEFINITION_HASEVEXAAA((*definition));
result.hasEvexZ = ZYDIS_GET_INSTRUCTIONDEFINITION_HASEVEXZ((*definition));
const ZydisInternalOperandDefinition* operand = NULL;
switch (ZydisInstructionTableGetNodeType(node))
{
case ZYDIS_NODETYPE_DEFINITION_0OP:
result.operandCount = 0;
break;
case ZYDIS_NODETYPE_DEFINITION_1OP:
result.operandCount = 1;
operand = operandDefinitions1[ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF((*definition))];
break;
case ZYDIS_NODETYPE_DEFINITION_2OP:
result.operandCount = 2;
operand = operandDefinitions2[ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF((*definition))];
break;
case ZYDIS_NODETYPE_DEFINITION_3OP:
result.operandCount = 3;
operand = operandDefinitions3[ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF((*definition))];
break;
case ZYDIS_NODETYPE_DEFINITION_4OP:
result.operandCount = 4;
operand = operandDefinitions4[ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF((*definition))];
break;
case ZYDIS_NODETYPE_DEFINITION_5OP:
result.operandCount = 5;
operand = operandDefinitions5[ZYDIS_GET_INSTRUCTIONDEFINITION_OPERANDREF((*definition))];
break;
default:
ZYDIS_UNREACHABLE;
}
if (result.operandCount > 0)
{
for (int i = 0; i < result.operandCount; ++i)
{
result.operands[i].type = ZYDIS_GET_OPERANDDEFINITION_TYPE((*operand));
result.operands[i].encoding = ZYDIS_GET_OPERANDDEFINITION_ENCODING((*operand));
result.operands[i].access = ZYDIS_GET_OPERANDDEFINITION_ACCESS((*operand));
++operand;
}
}
return result;
}
/* ---------------------------------------------------------------------------------------------- */
/* Main instruction-table */
/* ---------------------------------------------------------------------------------------------- */
#define ZYDIS_INVALID \
ZYDIS_MAKE_INSTRUCTIONTABLENODE(ZYDIS_NODETYPE_INVALID, 0x00000000)
#define ZYDIS_FILTER(type, id) \
{ type, id }
#define ZYDIS_DEFINITION_0OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_0OP, id }
#define ZYDIS_DEFINITION_1OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_1OP, id }
#define ZYDIS_DEFINITION_2OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_2OP, id }
#define ZYDIS_DEFINITION_3OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_3OP, id }
#define ZYDIS_DEFINITION_4OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_4OP, id }
#define ZYDIS_DEFINITION_5OP(id) \
{ ZYDIS_NODETYPE_DEFINITION_5OP, id }
#include <Zydis/Internal/InstructionFilters.inc>
#undef ZYDIS_INVALID
#undef ZYDIS_FILTER
#undef ZYDIS_DEFINITION
#undef ZYDIS_DEFINITION_0OP
#undef ZYDIS_DEFINITION_1OP
#undef ZYDIS_DEFINITION_2OP
#undef ZYDIS_DEFINITION_3OP
#undef ZYDIS_DEFINITION_4OP
#undef ZYDIS_DEFINITION_5OP
#define ZYDIS_MAKE_OPERAND(type, encoding, access) \
(((uint16_t)type) << 8) | ((((uint16_t)encoding) & 0x3F) << 2) | (access & 0x03)
#undef ZYDIS_MAKE_INSTRUCTIONTABLENODE
#define ZYDIS_MAKE_AVX512INFO(hasEvexB, hasEvexAAA, hasEvexZ) \
((((uint8_t)hasEvexB & 0x03) << 2) | (((uint8_t)hasEvexAAA & 0x01) << 1) | (hasEvexZ & 0x01))
/* ---------------------------------------------------------------------------------------------- */
/* Operand definitions */
/* ---------------------------------------------------------------------------------------------- */
//#define ZYDIS_MAKE_DEFINITION(mnemonic, op1, op2, op3, op4, avx512info) \
// { (((uint16_t)mnemonic & 0xFFF) << 4) | (avx512info & 0xF), { op1, op2, op3, op4 } }
#define ZYDIS_MAKE_DEFINITION(mnemonic, operandsId, avx512info) \
{ (((uint16_t)mnemonic & 0xFFF) << 4) | (avx512info & 0xF), operandsId }
#include <Zydis/Internal/OperandDefinitions.inc>
#undef ZYDIS_MAKE_OPERANDDEFINITION
/* ---------------------------------------------------------------------------------------------- */
/* Instruction definitions */
/* ---------------------------------------------------------------------------------------------- */
#include <Zydis/Internal/InstructionDefinitions.inc>
#undef ZYDIS_MAKE_OPERAND
#undef ZYDIS_MAKE_AVX512INFO
#undef ZYDIS_MAKE_DEFINITION
#undef ZYDIS_MAKE_INSTRUCTIONDEFINITION
/* ============================================================================================== */