Newer
Older
Import / research / XPlat / import / export / opcodes.cpp
@John Ryland John Ryland on 22 Dec 2020 309 KB import NUC files
/****************************    opcodes.cpp    *******************************
* Author:        Agner Fog
* Date created:  2007-02-21 
* Last modified: 2008-08-17
* Project:       objconv
* Module:        opcodes.cpp
* Description:
* Definition of opcode maps used by disassembler
*
* Copyright 2007-2008 GNU General Public License http://www.gnu.org/licenses
*****************************************************************************/


/*************************** Define opcode maps ******************************

Each line in the tables defines an instruction. 
Name is the name of the instruction, possibly without suffix for operand size etc.
Instset defines which instruction set is required.
Prefix defines which prefixes are allowed or required and what they do.
Format defines which scheme the instruction code is modeled after.
Dest is the type of the destination operand.
Source1-4 defines the types of up to 4 source operands.
Link indicates branching into a subpage.
Options is used for various types of additional information.

A line can branch into a subpage if more than one instruction or variant
begins with the same code bytes. Each subpage can branch further to form
a tree structure many levels deep. The first page, OpcodeMap0, is indexed
by the first code byte after any prefixes. The subpages can be indexed by
several different criteria, such as subsequent bytes, various bit-fields,
or by the values of any prefixes that come before the code byte. The
interpretation of an instruction may start at the root, OpcodeMap0, and
follow any branches until the final leaf is found.

Instructions with VEX prefix can use the VEX.mm bits as shortcuts to the
subpages OpcodeMap1, OpcodeMap2 and OpcodeMap4.

The values in the tables do not use names for the constants because each
value would need the combination of several names so that the lines would
be extremely long and very difficult to align in a readable way. The meaning
of the values in each field in the map entries is defined in disasm.h.

OpcodeTables[] is an array of pointers to all the maps.

OpcodeTableLength[] indicates the size of each map.

If a map is incomplete, then the last entry should indicate a default for
the missing entries, i.e. how to display the illegal or unknown instruction
codes.

New entries can be added whenever a new extension to the instruction set is
introduced.

*****************************************************************************/

#include "stdafx.h"

// Primary opcode map. This is the root of the opcode lookup tree
SOpcodeDef OpcodeMap0[256] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"add",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 00
   {"add",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 01
   {"add",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 02
   {"add",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 03
   {"add",       0x0   , 0x0    , 0x41  , 0xA1  , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 04
   {"add",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 05
   {"push es",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 06
   {"pop  es",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 07
   {"or",        0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 08
   {"or",        0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 09
   {"or",        0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0A
   {"or",        0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0B
   {"or",        0x0   , 0x0    , 0x41  , 0xA1  , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0C
   {"or",        0x0   , 0x1100 , 0x81  , 0xA9  , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 0D
   {"push cs",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0E
   {0,           0x1   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F link to OpcodeMap1
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"adc",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 10
   {"adc",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 11
   {"adc",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 12
   {"adc",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 13
   {"adc",       0x0   , 0x0    , 0x41  , 0xA1  , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 14
   {"adc",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 15
   {"push ss",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 16
   {"pop  ss",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 17
   {"sbb",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 18
   {"sbb",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 19
   {"sbb",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 1A
   {"sbb",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 1B
   {"sbb",       0x0   , 0x0    , 0x41  , 0xA1  , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 1C
   {"sbb",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 1D
   {"push ds",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 1E
   {"pop  ds",   0x8000, 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 1F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"and",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 20
   {"and",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 21
   {"and",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 22
   {"and",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 23
   {"and",       0x0   , 0x0    , 0x41  , 0xA1  , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 24
   {"and",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 25
   {"es:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 26
   {"daa",       0x8000, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 27
   {"sub",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 28
   {"sub",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 29
   {"sub",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 2A
   {"sub",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 2B
   {"sub",       0x0   , 0x0    , 0x41  , 0xA1  , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 2C
   {"sub",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 2D
   {"cs:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 2E
   {"das",       0x8000, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 2F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"xor",       0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 30
   {"xor",       0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 31
   {"xor",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 32
   {"xor",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 33
   {"xor",       0x0   , 0x0    , 0x41  , 0xA1  , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 34
   {"xor",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 35
   {"ss:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 36
   {"aaa",       0x8000, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 37
   {"cmp",       0x0   , 0x0    , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 38
   {"cmp",       0x0   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 39
   {"cmp",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 3A
   {"cmp",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 3B
   {"cmp",       0x0   , 0x0    , 0x41  , 0xA1  , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 3C
   {"cmp",       0x0   , 0x1100 , 0x81  , 0xA9  , 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x84  },    // 3D
   {"ds:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 3E
   {"aas",       0x8000, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 3F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 40
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 41
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 42
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 43
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 44
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 45
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 46
   {"inc",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 47
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 48
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 49
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4A
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4B
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4C
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4D
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4E
   {"dec",       0x8000, 0x100  , 0x3   , 0x1008, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 4F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 50
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 51
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 52
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 53
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 54
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 55
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 56
   {"push",      0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 57
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 58
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 59
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5A
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5B
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5C
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5D
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5E
   {"pop",       0x0   , 0x2102 , 0x3   , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 5F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pusha",     0x8001, 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   },    // 60
   {"popa",      0x8001, 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   },    // 61
   {"bound",     0x8001, 0x106  , 0x12  , 0x1008, 0x2009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 62
   {0,           0x3B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x7   , 0x0   },    // 63 Link to arpl/movsxd
   {"fs:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 64
   {"gs:",       0x0   , 0x0    , 0x8001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 65
   {"operand size:",0x0, 0x0    , 0x8000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66
   {"address size:",0x0, 0x0    , 0x8000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 67
   {"push",      0x0   , 0x2102 , 0x82  , 0x0   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 68 push imm word
   {"imul",      0x1   , 0x1100 , 0x92  , 0x1009, 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x80  },    // 69 imul r,m,iv
   {"push",      0x0   , 0x2102 , 0x42  , 0x0   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 6A push imm byte
   {"imul",      0x1   , 0x1100 , 0x52  , 0x1009, 0x9   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   },    // 6B imul r,m,ib
   {"insb",      0x0   , 0x21   , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 6C insb
   {"ins",       0x0   , 0x121  , 0x1   , 0x20C2, 0xB2  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 6D insw
   {"outsb",     0x0   , 0x21   , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 6E outsb
   {"outs",      0x0   , 0x121  , 0x1   , 0xB2  , 0x20C2, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 6F outs
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"jo",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 70 conditional short jumps
   {"jno",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 71
   {"jc",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 72
   {"jnc",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 73
   {"jz",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 74
   {"jnz",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 75
   {"jbe",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 76
   {"ja",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 77
   {"js",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 78
   {"jns",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 79
   {"jpe",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7A
   {"jpo",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7B
   {"jl",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7C
   {"jge",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7D
   {"jle",       0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7E
   {"jg",        0x0   , 0x88   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 7F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"grp1",      0x1A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 80 link to immediate grp 1
   {"grp1",      0x1B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 81 link to immediate grp 1
   {"grp1",      0x1C  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 82 link to immediate grp 1
   {"grp1",      0x1D  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 83 link to immediate grp 1
   {"test",      0x0   , 0x0    , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 84
   {"test",      0x0   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 85
   {"xchg",      0x0   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x48  },    // 86
   {"xchg",      0x0   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x48  },    // 87
   {"mov",       0x0   , 0x0    , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 88
   {"mov",       0x0   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 89
   {"mov",       0x0   , 0x0    , 0x12  , 0x1001, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 8A
   {"mov",       0x0   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 8B
   {"mov",       0x0   , 0x1100 , 0x13  , 0x9   , 0x91  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 8C mov r16,segreg
   {"lea",       0x0   , 0x1101 , 0x12  , 0x1009, 0x2009, 0x0   , 0x0   , 0x0   , 0x0   , 0xC0  },    // 8D
   {"mov",       0x0   , 0x1100 , 0x12  , 0x91  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 8E mov segreg,r16
   {"pop",       0x28  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 8F Link to group 1A
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"nop",       0x3C  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 90 NOP/Pause. Link to map
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 91 xchg cx,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 92 xchg dx,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 93 xchg bx,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 94 xchg sp,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 95 xchg bp,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 96 xchg si,ax
   {"xchg",      0x0   , 0x1100 , 0x3   , 0x1009, 0xA9  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 97 xchg di,ax
   {"cbw",       0x39  , 0x1100 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 98 Link to map
   {"cwd",       0x3A  , 0x1100 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 99 Link to map
   {"call",      0x8000, 0x182  , 0x200 , 0x85  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x28  },    // 9A call far
   {"fwait",     0x100 , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 9B
   {"pushf",     0x3E  , 0x2100 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 9C Link to map: pushf/d/q
   {"popf",      0x3F  , 0x2100 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 9D Link to map: popf/d/q
   {"sahf",      0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 9E
   {"lahf",      0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 9F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"mov",       0x0   , 0x5    , 0x401 , 0x10A1, 0x2001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // A0 mov al,mem
   {"mov",       0x0   , 0x1105 , 0x401 , 0x10A9, 0x2009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // A1 mov ax,mem
   {"mov",       0x0   , 0x5    , 0x401 , 0x2001, 0x10A1, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // A2 mov mem,al
   {"mov",       0x0   , 0x1105 , 0x401 , 0x2009, 0x10A9, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // A3 mov mem,ax
   {"movs",      0x0   , 0x25   , 0x1   , 0x20C2, 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // A4 movsb
   {"movs",      0x0   , 0x1125 , 0x1   , 0x20C2, 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // A5 movsw
   {"cmps",      0x0   , 0x45   , 0x1   , 0x20C2, 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // A6 cmpsb
   {"cmps",      0x0   , 0x1145 , 0x1   , 0x20C2, 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // A7 cmpsw
   {"test",      0x0   , 0x0    , 0x41  , 0x10A1, 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // A8 test al,ib
   {"test",      0x0   , 0x1100 , 0x81  , 0x10A9, 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // A9 test ax,iw
   {"stos",      0x0   , 0x21   , 0x1   , 0x20C2, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AA stosb
   {"stos",      0x0   , 0x1121 , 0x1   , 0x20C2, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AB stosw
   {"lods",      0x0   , 0x25   , 0x1   , 0x0   , 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AC lodsb
   {"lods",      0x0   , 0x1125 , 0x1   , 0x0   , 0x20C1, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AD lodsw
   {"scas",      0x0   , 0x41   , 0x1   , 0x20C2, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AE scasb
   {"scas",      0x0   , 0x1141 , 0x1   , 0x20C2, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // AF scasw
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B0 mov al,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B1 mov cl,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B2 mov dl,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B3 mov bl,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B4 mov ah,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B5 mov ch,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B6 mov dh,ib
   {"mov",       0x0   , 0x0    , 0x43  , 0x1001, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // B7 mov bh,ib
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // B8 mov ax,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // B9 mov cx,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BA mov dx,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BB mov bx,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BC mov sp,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BD mov bp,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BE mov si,iw
   {"mov",       0x0   , 0x1100 , 0x103 , 0x1009, 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x400 },    // BF mov di,iw
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"grp2",      0x1E  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // C0 link to grp 2
   {"grp2",      0x1F  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // C1 link to grp 2
   {"ret",       0x0   , 0x2182 , 0x22  , 0x0   , 0x12  , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // C2 retn iw
   {"ret",       0x0   , 0x2182 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // C3 retn
   {"les",       0x8000, 0x100  , 0x812 , 0x1009, 0x200C, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C4 les
   {"lds",       0x8000, 0x100  , 0x812 , 0x1009, 0x200C, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C5 lds
   {"mov",       0x2F  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // C6 link to grp 11
   {"mov",       0x30  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // C7 link to grp 11
   {"enter",     0x0   , 0x0    , 0x62  , 0x0   , 0x12  , 0x11  , 0x0   , 0x0   , 0x0   , 0x8   },    // C8
   {"leave",     0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // C9
   {"retf",      0x0   , 0x2182 , 0x22  , 0x0   , 0x12  , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // CA retf iw
   {"retf",      0x0   , 0x2182 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // CB retf
   {"int 3;breakpoint or filler",0,0,2  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x48  },    // CC
   {"int",       0x0   , 0x0    , 0x42  , 0x0   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // CD
   {"into",      0x8000, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // CE
   {0,           0x19  , 0x1100 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // CF link to IRET
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"grp2",      0x20  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // D0 link to grp 2
   {"grp2",      0x21  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // D1 link to grp 2
   {"grp2",      0x22  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // D2 link to grp 2
   {"grp2",      0x23  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // D3 link to grp 2
   {"aam",       0x8000, 0x0    , 0x42  , 0x0   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // D4. Don't show immediate operand if = 10 !
   {"aad",       0x8000, 0x0    , 0x42  , 0x0   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // D5. Don't show immediate operand if = 10 !
   {"salc",      0x8000, 0x0    , 0x4002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // D6 salc (undocumented opcode)
   {"xlat",      0x86  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  , 0x0   },    // D7. Link to xlat
   {"x87 instr", 0x8   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // D8 link to FP grp
   {"x87 instr", 0x9   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // D9 link to FP grp
   {"x87 instr", 0xA   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DA link to FP grp
   {"x87 instr", 0xB   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DB link to FP grp
   {"x87 instr", 0xC   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DC link to FP grp
   {"x87 instr", 0xD   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DD link to FP grp
   {"x87 instr", 0xE   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DE link to FP grp
   {"x87 instr", 0xF   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // DF link to FP grp
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"loopne",    0x0   , 0x80   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // E0
   {"loope",     0x0   , 0x80   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // E1
   {"loop",      0x0   , 0x80   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // E2
   {"j(e/r)cxz", 0x3D  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA   , 0x0   },    // E3 link to map
   {"in",        0x800 , 0x0    , 0x41  , 0xA1  , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // E4 in al,ib
   {"in",        0x800 , 0x100  , 0x41  , 0xA8  , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // E5 in ax,ib
   {"out",       0x800 , 0x0    , 0x41  , 0x32  , 0xA1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // E6 out ib,al
   {"out",       0x800 , 0x100  , 0x41  , 0x32  , 0xA8  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // E7 out ib,ax
   {"call",      0x0   , 0x82   , 0x82  , 0x83  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // E8 call near
   {"jmp",       0x0   , 0x80   , 0x82  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x90  },    // E9 jmp near
   {"jmp",       0x8000, 0x80   , 0x202 , 0x84  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x30  },    // EA jmp far
   {"jmp",       0x0   , 0x80   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // EB jmp short
   {"in",        0x800 , 0x0    , 0x1   , 0xA1  , 0xB2  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // EC in al,dx
   {"in",        0x800 , 0x100  , 0x1   , 0xA8  , 0xB2  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // ED in ax,dx
   {"out",       0x800 , 0x0    , 0x1   , 0xB2  , 0xA1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // EE out dx,al
   {"out",       0x800 , 0x100  , 0x1   , 0xB2  , 0xA8  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // EF out dx,ax
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"lock:",     0x0   , 0x0    , 0x8000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F0 lock prefix
   {"icebp",     0x8000, 0x0    , 0x4002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F1 ICE breakpoint, undocumented opcode
   {"repne:",    0x0   , 0x0    , 0x8000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 repne prefix
   {"repe:",     0x0   , 0x0    , 0x8000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F3 repe  prefix
   {"hlt",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x48  },    // F4
   {"cmc",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F5
   {"grp3",      0x24  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // F6 link to grp 3
   {"grp3",      0x25  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // F7 link to grp 3
   {"clc",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F8
   {"stc",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F9
   {"cli",       0x800 , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // FA
   {"sti",       0x800 , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // FB
   {"cld",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // FC
   {"std",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // FD
   {"grp4",      0x26  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // FE link to grp 4
   {"grp5",      0x27  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   }     // FF link to grp 5
};

// Secondary opcode map for 2-byte opcode. First byte = 0F
// Indexed by second opcode byte
SOpcodeDef OpcodeMap1[256] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"grp6",      0x2A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F 00 link to grp 6; sldt etc.
   {"grp7",      0x2B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // 0F 01 link to grp 7; sgdt etc.
   {0,           0x5E  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F 02 link to lar
   {0,           0x5F  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F 03 link to lsl
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"syscall",   0x5   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F 05
   {"clts",      0x805 , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 06
   {"sysret",    0x805 , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // 0F 07
   {"invd",      0x804 , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 08
   {"wbinvd",    0x804 , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 09
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"ud2",       0x3   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // 0F 0B
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"PREFETCH;AMD only",0x1001,0, 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0D. AMD only. Works as NOP on Intel
   {"FEMS",      0x1001, 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F OE. AMD only
   {0,           0x6   , 0x0    , 0x52  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   , 0x0   },    // 0F 0F. Link to tertiary map for AMD 3DNow instructions
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x40  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // Link to tertiary map: movups, etc.
   {0,           0x41  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // Link to tertiary map: movups, etc.
   {0,           0x42  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // Link to tertiary map: movlps, etc.
   {"movl",      0x11  , 0x10200, 0x13  , 0x2351, 0x124F, 0x0   , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 13 movlps/pd
   {"unpckl",    0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 14 unpcklps/pd
   {"unpckh",    0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 15 unpckhps/pd
   {0,           0x44  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // Link to tertiary map: movhps, etc.
   {"movh",      0x11  , 0x10200, 0x13  , 0x2351, 0x124F, 0x0   , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 17 movhps/pd
   {0,           0x35  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // Link to tertiary map: group 16
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 19. Hint instructions reserved for future use
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 1A. Hint instructions reserved for future use
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 1B. Hint instructions reserved for future use
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 1C. Hint instructions reserved for future use
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 1D. Hint instructions reserved for future use
   {"hint",      0x6   , 0x0    , 0x2012, 0x0   , 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 1E. Hint instructions reserved for future use
   {"nop",       0x6   , 0x0    , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 0F 1F. Multi-byte nop
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"mov",       0x803 , 0x0    , 0x13  , 0x100A, 0x92  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 20. mov r32/64,cr
   {"mov",       0x803 , 0x1000 , 0x13  , 0x1009, 0x93  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 21. mov r32,dr
   {"mov",       0x803 , 0x0    , 0x12  , 0x92  , 0x100A, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 22. mov cr,r32/64
   {"mov",       0x803 , 0x1000 , 0x12  , 0x93  , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 23. mov dr,r32
#if 0 // Opcode 0F 24 has two meanings:
      // 1: mov r32,tr (obsolete, 80386 only)
   {"mov;80386 only",0x803,0x0  , 0x4013, 0x1003, 0x94  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24. mov r32,tr (80386 only)
#else
      // 2: start of 3-byte opcode for AMD SSE5 instructions with DREX byte
   {0,           0x66  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 24. Link to tertiary map for 3-byte opcodes AMD SSE5 with four operands
#endif
   {0,           0x67  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 25. Link to tertiary map for 3-byte opcodes AMD SSE5 with three operands + immediate byte
   {"mov;80386 only",0x803,0    , 0x4012, 0x94  , 0x1003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 26. mov tr,r32 (80386 only)
   {0,           0x803 , 0x0    , 0x4012, 0x1003, 0x1003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 27. illegal
   {"mova",      0x11  , 0x50200, 0x12  , 0x124F, 0x24F,  0x0   , 0x0   , 0x0   , 0x0   , 0x103 },    // 0F 28. movaps/pd
   {"mova",      0x11  , 0x50200, 0x13  , 0x24F , 0x124F, 0x0   , 0x0   , 0x0   , 0x0   , 0x103 },    // 0F 29. movaps/pd
   {0,           0x46  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2A. Link to tertiary map: cvtpi2ps, etc.
   {0,           0x6A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2B. Link to tertiary map: movntps/pd,AMD: also ss/sd
   {0,           0x47  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2C. Link to tertiary map: cvttps2pi, etc.
   {0,           0x48  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2D. Link to tertiary map: cvtps2pi, etc.
   {0,           0x4B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2E. Link to tertiary map: ucomiss/sd
   {0,           0x4C  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 2F. Link to tertiary map: comiss/sd
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"wrmsr",     0x805 , 0x1000 , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 30
   {"rdtsc",     0x5   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F 31
   {"rdmsr",     0x805 , 0x1000 , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F 32
   {"rdpmc",     0x5   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F 33
   {"sysenter",  0x8   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F 34
   {"sysexit;Same name with or without 48h prefix",0x808,0x1000,1,0,0,0,0,0x0   , 0x0   , 0x0   },    // 0F 35
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 36 Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 37 Illegal
   {0,           0x2   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 38. Link to tertiary map for 3-byte opcodes
   {0,           0x3   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 39. Link to tertiary map for 3-byte opcodes
   {0,           0x4   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 3A. Link to tertiary map for 3-byte opcodes
   {0,           0x5   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 3B. Link to tertiary map for 3-byte opcodes
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3C Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3D Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3E Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3F Illegal
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cmovo",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 40. cmov
   {"cmovno",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 41. cmov
   {"cmovc",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 42. cmov
   {"cmovnc",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 43. cmov
   {"cmove",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 44. cmov
   {"cmovne",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 45. cmov
   {"cmovbe",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 46. cmov
   {"cmova",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 47. cmov
   {"cmovs",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 48. cmov
   {"cmovns",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 49. cmov
   {"cmovpe",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4A. cmov
   {"cmovpo",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4B. cmov
   {"cmovl",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4C. cmov
   {"cmovge",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4D. cmov
   {"cmovle",    0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4E  cmov
   {"cmovg",     0x6   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 4F. cmov
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movmsk",    0x11  , 0x51200, 0x12  , 0x1009, 0x124F, 0x0   , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 50. movmskps/pd
   {"sqrt",      0x76  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x9   , 0     },    // 0F 51. Link to sqrtps/pd/ss/sd
   {"rsqrt",     0x77  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x9   , 0     },    // 0F 52. Link to rsqrtps/ss
   {"rcp",       0x78  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x9   , 0     },    // 0F 53. Link to rcpps/ss
   {"and",       0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 54. andps/pd
   {"andn",      0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 55. andnps/pd
   {"or",        0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 56. orps/pd
   {"xor",       0x11  , 0xD0200, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 57. xorps/pd
   {"add",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 58. addps/pd/ss/sd
   {"mul",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 59. mulps/pd/ss/sd
   {0,           0x49  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 5A. Link to cvtps2pd, etc.
   {0,           0x4A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 5B. Link to cvtdq2ps, etc.
   {"sub",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 5C. subps/pd/ss/sd
   {"min",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 5D. minps/pd/ss/sd
   {"div",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 5E. divps/pd/ss/sd
   {"max",       0x11  ,0x290E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F 5F. maxps/pd/ss/sd
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"punpcklbw", 0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 60
   {"punpcklwd", 0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 61
   {"punpckldq", 0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 62
   {"packsswb",  0x7   , 0x90200, 0x19  , 0x1101, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 63
   {"pcmpgtb",   0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 64
   {"pcmpgtw",   0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 65
   {"pcmpgtd",   0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 66
   {"packuswb",  0x7   , 0x90200, 0x19  , 0x1101, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 67
   {"punpckhbw", 0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 68
   {"punpckhwd", 0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 69
   {"punpckhdq", 0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6A
   {"packssdw",  0x7   , 0x90200, 0x19  , 0x1102, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6B
   {"punpcklqdq",0x12  , 0x98200, 0x19  , 0x1404, 0x1404, 0x404 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6C. Not valid without 66 prefix
   {"punpckhqdq",0x12  , 0x98200, 0x19  , 0x1404, 0x1404, 0x404 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6D. Not valid without 66 prefix
   {0,           0x58  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 0F 6E. Link to tertiary map: movd/movq
   {0,           0x4D  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 6F. Link to tertiary map: movq/movdqa/movdqu
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x4F  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 70. Link to tertiary map: pshufw, etc.
   {0,           0x31  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F 71. Link to tertiary map for group 12
   {0,           0x32  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F 72. Link to tertiary map for group 13
   {0,           0x33  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F 73. Link to tertiary map for group 14
   {"pcmpeqb",   0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 74
   {"pcmpeqw",   0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 75
   {"pcmpeqd",   0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 76
   {"emms",      0x79  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0xB   , 0     },    // 0F 77. Link to emms, vzeroupper, vzeroall
   {0,           0x6C  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 78. Link to tertiary map for wmread, insrtq, extrq
   {0,           0x6D  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 79. Link to tertiary map for wmread, insrtq, extrq
   {0,           0x68  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 7A. Link to tertiary map for 3-byte opcodes AMD SSE5: FRCZPS, etc.
   {0,           0x69  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   , 0x0   },    // 0F 7B. Link to tertiary map for 3-byte opcodes AMD SSE5: PROTB, etc.
   {0,           0x5C  , 0xA00  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 7C. Link to tertiary map: hadd
   {0,           0x5D  , 0xA00  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 7D. Link to tertiary map: hsub
   {0,           0x59  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 7E. Link to tertiary map: movd/movq
   {0,           0x4E  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F 7F. Link to tertiary map: movq/movdqa/movdqu
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"jo",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 80
   {"jno",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 81
   {"jc",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 82
   {"jnc",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 83
   {"je",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 84
   {"jne",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 85
   {"jbe",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 86
   {"ja",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 87
   {"js",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 88
   {"jns",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 89
   {"jpe",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8A
   {"jpo",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8B
   {"jl",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8C
   {"jge",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8D
   {"jle",       0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8E
   {"jg",        0x3   , 0x8    , 0x80  , 0x82  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0xA0  },    // 0F 8F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"seto",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 90
   {"setno",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 91
   {"setb",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 92
   {"setae",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 93
   {"sete",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 94
   {"setne",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 95
   {"setbe",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 96
   {"seta",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 97
   {"sets",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 98
   {"setns",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 99 
   {"setpe",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9A
   {"setpo",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9B
   {"setl",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9C
   {"setge",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9D
   {"setle",     0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9E
   {"setg",      0x3   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 9F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"push fs",   0x3   , 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A0
   {"pop  fs",   0x3   , 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A1
   {"cpuid",     0x4   , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F A2
   {"bt",        0x3   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A3
   {"shld",      0x3   , 0x1100 , 0x53  , 0x9   , 0x1009, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A4
   {"shld",      0x3   , 0x1100 , 0x13  , 0x9   , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A5
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A6. Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A7. Illegal
   {"push gs",   0x3   , 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A8
   {"pop  gs",   0x3   , 0x2    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F A9
   {"rsm",       0x803 , 0x0    , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F AA
   {"bts",       0x3   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F AB
   {"shrd",      0x3   , 0x1100 , 0x53  , 0x9   , 0x1009, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F AC
   {"shrd",      0x3   , 0x1100 , 0x13  , 0x9   , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F AD
   {0,           0x34  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   , 0x0   },    // 0F AE. Link to tertiary map for group 15
   {"imul",      0x1   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F AF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cmpxchg",   0x3   , 0x10   , 0x13  , 0x2001, 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B0
   {"cmpxchg",   0x3   , 0x1110 , 0x13  , 0x2009, 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B1
   {"lss",       0x0   , 0x1100 , 0x812 , 0x1009, 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B2 (valid in 64-bit mode)
   {"btr",       0x3   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B3
   {"lfs",       0x0   , 0x1100 , 0x812 , 0x1009, 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B4
   {"lgs",       0x0   , 0x1100 , 0x812 , 0x1009, 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B5
   {"movzx",     0x3   , 0x1100 , 0x12  , 0x1009, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B6
   {"movzx",     0x3   , 0x1100 , 0x12  , 0x1009, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F B7   
   {0,           0x60  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F B8. Link to tertiary map for popcnt, jmpe
   {0,           0x2E  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F B9. Link to tertiary map for group 10: ud1
   {0,           0x2C  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F BA. Link to tertiary map for group 8: bt
   {"btc",       0x3   , 0x1100 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BB
   {"bsf",       0x3   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BC
   {0,           0x6B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F BD. Link to tertiary map for BSR and LZCNT
   {"movsx",     0x3   , 0x1100 , 0x12  , 0x1009, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BE
   {"movsx",     0x3   , 0x1100 , 0x12  , 0x1009, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"xadd",      0x4   , 0x10   , 0x13  , 0x1   , 0x1001, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F C0
   {"xadd",      0x4   , 0x1110 , 0x13  , 0x9   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F C1
   {0,           0x38  , 0x0    , 0x52  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   , 0x0   },    // 0F C2. Link to tertiary map for cmpps etc.
   {"movnti",    0x11  , 0x1000 , 0x13  , 0x2009, 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F C3
   {0,           0x29  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F C4. Link to pinsrw
   {"pextrw",    0x7   , 0x11200, 0x52  , 0x1009, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F C5
   {"shuf",      0x11  , 0xD0200, 0x59  , 0x124F, 0x124F, 0x24F , 0x11  , 0x0   , 0x0   , 0x3   },    // 0F C6
   {0,           0x50  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 0F C7. Link to tertiary map for group 9
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F C8. bswap eax
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F C9. bswap ecx
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CA. bswap edx
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CB. bswap ebx
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CC. bswap esp
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CD. bswap ebp
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CE. bswap esi
   {"bswap",     0x3   , 0x1000 , 0x3   , 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F CF. bswap edi
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x2D  , 0xA00  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F D0. Link to addsubps/pd
   {"psrlw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D1
   {"psrld",     0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D2
   {"psrlq",     0x7   , 0x90200, 0x19  , 0x1104, 0x1104, 0x104 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D3
   {"paddq",     0x12  , 0x90200, 0x19  , 0x1104, 0x1104, 0x104 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D4
   {"pmullw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D5
   {0,           0x53  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F D6. Link to tertiary map for movq2dq etc.
   {"pmovmskb",  0x7   , 0x11200, 0x12  , 0x1009, 0x1150, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D7
   {"psubusb",   0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D8
   {"psubusw",   0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D9
   {"pminub",    0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DA
   {"pand",      0x7   , 0x90200, 0x19  , 0x1150, 0x1150, 0x150 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DB
   {"paddusb",   0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DC
   {"paddusw",   0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DD
   {"pmaxub",    0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DE
   {"pandn",     0x7   , 0x90200, 0x19  , 0x1150, 0x1150, 0x150 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F DF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pavgb",     0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E0
   {"psraw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E1
   {"psrad",     0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E2
   {"pavgw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E3
   {"pmulhuw",   0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E4
   {"pmulhw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E5
   {0,           0x54  , 0xE00  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F E6. Link to tertiary map for cvtpd2dq etc.
   {0,           0x55  , 0x200  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F E7. Link to tertiary map for movntq
   {"psubsb",    0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E8
   {"psubsw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F E9
   {"pminsw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F EA
   {"por",       0x7   , 0x90200, 0x19  , 0x1150, 0x1150, 0x150 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F EB
   {"paddsb",    0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F EC
   {"paddsw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F ED
   {"pmaxsw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F EE
   {"pxor",      0x7   , 0x90200, 0x19  , 0x1150, 0x1150, 0x150 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F EF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x56  , 0x800  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F F0. Link to tertiary map for lddqu
   {"psllw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F1
   {"pslld",     0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F2
   {"psllq",     0x7   , 0x90200, 0x19  , 0x1104, 0x1104, 0x104 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F3
   {"pmuludq",   0x7   , 0x90200, 0x19  , 0x1104, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F4
   {"pmaddwd",   0x7   , 0x90200, 0x19  , 0x1103, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F5
   {"psadbw",    0x7   , 0x90200, 0x19  , 0x1102, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F6
   {0,           0x57  , 0x200  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 0F F7. Link to tertiary map for maskmovq
   {"psubb",     0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F8
   {"psubw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F F9
   {"psubd",     0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F FA
   {"psubq",     0x7   , 0x90200, 0x19  , 0x1104, 0x1104, 0x104 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F FB
   {"paddb",     0x7   , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F FC
   {"paddw",     0x7   , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F FD
   {"paddd",     0x7   , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F FE
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F EF


// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 38
// or VEX encoded with mmmm = 2
// Indexed by third opcode byte
SOpcodeDef OpcodeMap2[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pshufb",    0x14  , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 00
   {"phaddw",    0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 01
   {"phaddd",    0x14  , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 02
   {"phaddsw",   0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 03
   {"pmaddubsw", 0x14  , 0x90200, 0x19  , 0x1102, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 04
   {"phsubw",    0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 05
   {"phsubd",    0x14  , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 06
   {"phsubsw",   0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 07
   {"psignb",    0x14  , 0x90200, 0x19  , 0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 08
   {"psignw",    0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 09
   {"psignd",    0x14  , 0x90200, 0x19  , 0x1103, 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 0A
   {"pmulhrsw",  0x14  , 0x90200, 0x19  , 0x1102, 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 0B
   {"vpermilps", 0x19  , 0xF8200, 0x19  , 0x124B, 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 0C
   {"vpermilpd", 0x19  , 0xF8200, 0x19  , 0x124C, 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 0D
   {"vtestps",   0x19  , 0x78200, 0x12  , 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 0E
   {"vtestpd",   0x19  , 0x78200, 0x12  , 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 0F
   {"pblendvb",  0x15  , 0x8200 , 0x12  , 0x1401, 0x401 , 0xAE  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 10
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 11
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 12
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 13
   {"blendvps",  0x15  , 0x8200 , 0x12  , 0x124B, 0x24B , 0xAE  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 14
   {"blendvpd",  0x15  , 0x8200 , 0x12  , 0x124C, 0x24C , 0xAE  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 15
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 16
   {"ptest",     0x15  , 0x58200, 0x12  , 0x1250, 0x250 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 17. Also in AMD SSE5 instruction set
   {"vbroadcastss",0x19, 0x78200, 0x12  , 0x124B, 0x204B, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 18
   {"vbroadcastsd",0x19,0x178200, 0x12  , 0x154C, 0x204C, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 19
   {"vbroadcastf128",0x19,0x178200,0x12 , 0x154B, 0x244B, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 1A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 1B
   {"pabsb",     0x14  , 0x10200, 0x12  , 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 1C
   {"pabsw",     0x14  , 0x10200, 0x12  , 0x1102, 0x102 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 1D
   {"pabsd",     0x14  , 0x10200, 0x12  , 0x1103, 0x103 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 1E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 1F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x7A  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 20. Link pmovsxbw
   {0,           0x7B  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 21. Link pmovsxbd
   {0,           0x7C  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 22. Link pmovsxbq
   {0,           0x7D  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 23. Link pmovsxwd
   {0,           0x7E  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 24. Link pmovsxwq
   {0,           0x7F  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 25. Link pmovsxdq
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 26
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 27
   {"pmuldq",    0x15  , 0x98200, 0x19  , 0x1404, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 28
   {"pcmpeqq",   0x16  , 0x98200, 0x19  , 0x1404, 0x1404, 0x404 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 29
   {"movntdqa",  0x15  , 0x18200, 0x12  , 0x1450, 0x2450, 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 0F 38 2A
   {"packusdw",  0x15  , 0x98200, 0x19  , 0x1402, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 2B
   {"vmaskmovps",0x19  , 0xF8200, 0x19,   0x124B, 0x124B, 0x224B, 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 2C
   {"vmaskmovpd",0x19  , 0xF8200, 0x19,   0x124C, 0x124C, 0x224C, 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 2D
   {"vmaskmovps",0x19  , 0xF8200, 0x1A,   0x224B, 0x124B, 0x124B, 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 2E
   {"vmaskmovpd",0x19  , 0xF8200, 0x1A,   0x224C, 0x124C, 0x124C, 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 2F

//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x80  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 30. Link pmovzxbv
   {0,           0x81  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 31. Link pmovzxbd
   {0,           0x82  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 32. Link pmovzxbq
   {0,           0x83  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 33. Link pmovzxwd
   {0,           0x84  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 34. Link pmovzxwq
   {0,           0x85  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 0F 38 35. Link pmovzxdq
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 36
   {"pcmpgtq",   0x16  , 0x98200, 0x19  , 0x1404, 0x1404, 0x404 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 37
   {"pminsb",    0x15  , 0x98200, 0x19  , 0x1401, 0x1401, 0x401 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 38
   {"pminsd",    0x15  , 0x98200, 0x19  , 0x1403, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 39
   {"pminuw",    0x15  , 0x98200, 0x19  , 0x1402, 0x1402, 0x402 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3A
   {"pminud",    0x15  , 0x98200, 0x19  , 0x1403, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3B
   {"pmaxsb",    0x15  , 0x98200, 0x19  , 0x1401, 0x1401, 0x401 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3C
   {"pmaxsd",    0x15  , 0x98200, 0x19  , 0x1403, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3D
   {"pmaxuw",    0x15  , 0x98200, 0x19  , 0x1402, 0x1402, 0x402 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3E
   {"pmaxud",    0x15  , 0x98200, 0x19  , 0x1403, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 3F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pmulld",    0x15  , 0x98200, 0x19  , 0x1403, 0x1403, 0x403 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 40
   {"phminposuw",0x15  , 0x18200, 0x12  , 0x1402, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 41
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 42
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 43
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 44
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 45
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 46
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 47
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 48
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 49
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 4F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 50
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 51
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 52
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 53
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 54
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 55
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 56
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 57
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 58
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 59
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 5F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 60
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 61
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 62
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 63
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 64
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 65
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 66
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 67
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 68
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 69
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 6F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 70
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 71
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 72
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 73
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 74
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 75
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 76
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 77
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 78
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 79
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 7F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 80
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 81
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 82
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 83
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 84
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 85
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 86
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 87
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 88
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 89
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 8F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 90
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 91
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 92
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 93
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 94
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 95
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 96
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 97
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 98
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 99
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9A
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9B
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9C
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9D
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9E
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 9F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A0
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A1
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 A9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AA
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AB
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AC
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AD
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AE
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 AF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B0
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B1
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 B9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BA
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BB
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BC
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BD
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BE
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 BF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C0
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C1
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 C9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CA
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CB
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CC
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CD
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CE
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 CF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D0
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D1
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 D9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 DA
   {"aesimc",    0x17  ,0x98200 , 0x19,   0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 DB
   {"aesenc",    0x17  ,0x98200 , 0x19,   0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 DC
   {"aesenclast",0x17  ,0x98200 , 0x19,   0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 DD
   {"aesdec",    0x17  ,0x98200 , 0x19,   0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 DE
   {"aesdeclast",0x17  ,0x98200 , 0x19,   0x1101, 0x1101, 0x101 , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 DF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E0
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E1
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 E9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 EA
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 EB
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 EC
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 ED
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 EE
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 EF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"crc32",     0x16  , 0x9900 , 0x12  , 0x1009, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F0
   {"crc32",     0x65  , 0x9900 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 0F 38 F1. Link to crc32 16/32/64 bit
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F2
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F3
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F4
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F5
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F6
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F7
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F8
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F9
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 FA
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 FB
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 FC
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 FD
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 FE
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 38 FF

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 39
// Not used but reserved by Intel for future extensions
SOpcodeDef OpcodeMap3[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2012, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 39 00

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 3A
// or VEX encoded with mmmm = 3
// Indexed by third opcode byte
SOpcodeDef OpcodeMap4[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 00
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 01
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 02
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 03
   {"vpermilps", 0x19  , 0x78200, 0x52,   0x124B, 0x24B , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 04
   {"vpermilpd", 0x19  , 0x78200, 0x52,   0x124C, 0x24C , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 05
   {"vperm2f128",0x19  ,0x1F8200, 0x59,   0x1550 ,0x1550, 0x550 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 06
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 07
   {"roundps",   0x15  , 0x58200, 0x52  , 0x124B, 0x24B , 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 08. Also in AMD SSE5 instruction set
   {"roundpd",   0x15  , 0x58200, 0x52  , 0x124C, 0x24C , 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 09. Also in AMD SSE5 instruction set
   {"roundss",   0x15  , 0x98200, 0x59  , 0x104B, 0x104B, 0x4B  , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0A. Also in AMD SSE5 instruction set
   {"roundsd",   0x15  , 0x98200, 0x59  , 0x104C, 0x104C, 0x4C  , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0B. Also in AMD SSE5 instruction set
   {"blendps",   0x15  , 0xD8200, 0x59  , 0x124B, 0x124B, 0x24B , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0C
   {"blendpd",   0x15  , 0xD8200, 0x59  , 0x124C, 0x124C, 0x24C , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0D
   {"pblendw",   0x15  , 0x98200, 0x59  , 0x1402, 0x1402, 0x402 , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0E
   {"palignr",   0x14  , 0x90200, 0x59  , 0x1150, 0x1150, 0x150 , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 0F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 10
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 11
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 12
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 13   
   {0,           0x61  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F 3A 14. Link to pextrb
   {0,           0x62  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F 3A 15. Link to pextrw
   {0,           0x63  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 0F 3A 16. Link to pextrd, pextrq
   {"extractps", 0x15  , 0x19200, 0x53  , 0x9   , 0x124B, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 17
   {"vinsertf128",0x19, 0x1F8200, 0x59  , 0x1550, 0x1550, 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 3A 18
   {"vextractf128",0x19,0x178200, 0x53,   0x450 , 0x1550, 0x31  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 19
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1B
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 1F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x64  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // 0F 3A 20. Link to pinsrb
   {"insertps",  0x15  , 0x98200, 0x59  , 0x144B, 0x144B, 0x4B  , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 21
   {"pinsrd/q",  0x75  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x8   , 0     },    // 0F 3A 22. Link to pinsrd/q
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 23
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 24
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 25
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 26
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 27
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 28
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 29
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2B
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 2F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 30
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 31
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 32
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 33
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 34
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 35
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 36
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 37
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 38
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 39
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3B
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 3F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"dpps",      0x15  , 0xD8200, 0x59  , 0x124B, 0x124B, 0x24B , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 40
   {"dppd",      0x15  , 0x98200, 0x59  , 0x144C, 0x144C, 0x44C , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 41
   {"mpsadbw",   0x15  , 0x98200, 0x59  , 0x1402, 0x1402, 0x401 , 0x31  , 0x0   , 0x0   , 0x2   },    // 0F 3A 42
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 43
   {"pclmulqdq", 0x18  , 0x8200 , 0x52,   0x1404, 0x404 , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 44
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 45
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 46
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 47
   {"vpermil2ps",0x19  , 0xF9200, 0x5C,   0x124B, 0x124B, 0x24B , 0x24B , 0x31  , 0x0   , 0x0   },    // 0F 3A 48
   {"vpermil2pd",0x19  , 0xF9200, 0x5C,   0x124C, 0x124C, 0x24C , 0x24C , 0x31  , 0x0   , 0x0   },    // 0F 3A 49
   {"vblendvps", 0x19  , 0xF8200, 0x5C  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 4A
   {"vblendvpd", 0x19  , 0xF8200, 0x5C  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 4B
   {"vpblendvb", 0x19  , 0xB8200, 0x5C  , 0x1401, 0x1401, 0x401 , 0x401 , 0x0   , 0x0   , 0x0   },    // 0F 3A 4C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 4D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 4E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 4F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 50
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 51
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 52
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 53
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 54
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 55
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 56
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 57
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 58
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 59
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 5A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 5B
   {"vfmaddsubps",0x1A , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 5C
   {"vfmaddsubpd",0x1A , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 5D
   {"vfmsubaddps",0x1A , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 5E
   {"vfmsubaddpd",0x1A , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 5F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pcmpestrm", 0x16  , 0x18200, 0x52  , 0x1401, 0x451 , 0x31  , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 3A 60
   {"pcmpestri", 0x16  , 0x18200, 0x52  , 0x1401, 0x451 , 0x31  , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 3A 61
   {"pcmpistrm", 0x16  , 0x18200, 0x52  , 0x1401, 0x451 , 0x31  , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 3A 62
   {"pcmpistri", 0x16  , 0x18200, 0x52  , 0x1401, 0x451 , 0x31  , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 3A 63
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 64
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 65
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 66
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 67
   {"vfmaddps",  0x1A  , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 68
   {"vfmaddpd",  0x1A  , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 69
   {"vfmaddss",  0x1A  , 0xB9200, 0x5D  , 0x44B , 0x44B , 0x44B , 0x44B , 0x0   , 0x0   , 0x0   },    // 0F 3A 6A
   {"vfmaddsd",  0x1A  , 0xB9200, 0x5D  , 0x44C , 0x44C , 0x44C , 0x44C , 0x0   , 0x0   , 0x0   },    // 0F 3A 6B
   {"vfmsubps",  0x1A  , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 6C
   {"vfmsubpd",  0x1A  , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 6D
   {"vfmsubss",  0x1A  , 0xB9200, 0x5D  , 0x44B , 0x44B , 0x44B , 0x44B , 0x0   , 0x0   , 0x0   },    // 0F 3A 6E
   {"vfmsubsd",  0x1A  , 0xB9200, 0x5D  , 0x44C , 0x44C , 0x44C , 0x44C , 0x0   , 0x0   , 0x0   },    // 0F 3A 6F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 70
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 71
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 72
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 73
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 74
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 75
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 76
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 77
   {"vfnmaddps", 0x1A  , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 78
   {"vfnmaddpd", 0x1A  , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 79
   {"vfnmaddss", 0x1A  , 0xB9200, 0x5D  , 0x44B , 0x44B , 0x44B , 0x44B , 0x0   , 0x0   , 0x0   },    // 0F 3A 7A
   {"vfnmaddsd", 0x1A  , 0xB9200, 0x5D  , 0x44C , 0x44C , 0x44C , 0x44C , 0x0   , 0x0   , 0x0   },    // 0F 3A 7B
   {"vfnmsubps", 0x1A  , 0xF9200, 0x5D  , 0x24B , 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 3A 7C
   {"vfnmsubpd", 0x1A  , 0xF9200, 0x5D  , 0x24C , 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 3A 7D
   {"vfnmsubss", 0x1A  , 0xB9200, 0x5D  , 0x44B , 0x44B , 0x44B , 0x44B , 0x0   , 0x0   , 0x0   },    // 0F 3A 7E
   {"vfnmsubsd", 0x1A  , 0xB9200, 0x5D  , 0x44C , 0x44C , 0x44C , 0x44C , 0x0   , 0x0   , 0x0   },    // 0F 3A 7F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 80
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 81
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 82
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 83
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 84
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 85
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 86
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 87
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 88
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 89
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8B
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 8F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 90
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 91
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 92
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 93
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 94
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 95
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 96
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 97
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 98
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 99
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9A
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9B
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9C
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9D
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9E
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A 9F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A A9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AD
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AE
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A AF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A B9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BD
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BE
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A BF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A C9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CD
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CE
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A CF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A D9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A DA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A DB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A DC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A DD
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A DE
   {"aeskeygenassist",0x17,0x18200,0x52,  0x1101, 0x101 , 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A DF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A E9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A EA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A EB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A EC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A ED
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A EE
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A EF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F0
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F1
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F2
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F3
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F4
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F5
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F6
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F7
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F8
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A F9
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A FA
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A FB
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A FC
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A FD
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 3A FE
   {0,           0x0   , 0x0    , 0x2052, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 3A FF


// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 3B
// Not used but reserved by Intel for future extensions
SOpcodeDef OpcodeMap5[1] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x2000, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 3B 00


// Tertiary opcode map for AMD 3DNow instructions. First two bytes = 0F 0F
// Indexed by immediate byte following operands
SOpcodeDef OpcodeMap6[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 00
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 01
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 02
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 03
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 04
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 05
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 06
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 07
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 08
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 09
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0B
   {"PFI2FW",    0x1001, 0x0    , 0x52  , 0x134B, 0x302 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0C
   {"PI2FD",     0x1001, 0x0    , 0x52  , 0x134B, 0x303 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 0F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 10
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 11
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 12
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 13
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 14
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 15
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 16
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 17
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 18
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 19
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1B
   {"PF2IW",     0x1002, 0x0    , 0x52  , 0x1302, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1C
   {"PF2ID",     0x1001, 0x0    , 0x52  , 0x1303, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 1F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 20
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 21
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 22
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 23
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 24
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 25
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 26
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 27
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 28
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 29
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 2F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 30
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 31
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 32
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 33
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 34
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 35
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 36
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 37
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 38
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 39
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 3F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 40
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 41
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 42
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 43
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 44
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 45
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 46
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 47
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 48
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 49
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 4F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 50
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 51
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 52
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 53
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 54
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 55
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 56
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 57
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 58
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 59
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 5F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 60
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 61
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 62
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 63
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 64
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 65
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 66
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 67
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 68
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 69
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 6F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 70
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 71
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 72
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 73
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 74
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 75
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 76
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 77
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 78
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 79
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7D
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 7F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 80
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 81
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 82
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 83
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 84
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 85
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 86
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 87
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 88
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 89
   {"PFNACC",    0x1002, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8D
   {"PFPNACC",   0x1002, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 8F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"PFCMPGE",   0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 90
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 91
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 92
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 93
   {"PFMIN",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 94
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 95
   {"PFRCP",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 96
   {"PFRSQRT",   0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 97
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 98
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 99
   {"PFSUB",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9A
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9B
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9C
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9D
   {"PFADD",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9E
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op 9F
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"PFCMPGT",   0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A0
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A1
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A2
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A3
   {"PFMAX",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A4
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A5
   {"PFRCPIT1",  0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A6
   {"PFRSQIT1",  0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A7
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A8
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op A9
   {"PFSUBR",    0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AA
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AB
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AC
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AD
   {"PFACC",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AE
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op AF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"PFCMPEQ",   0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B0
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B1
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B2
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B3
   {"PFMUL",     0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B4
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B5
   {"PFRCPIT2",  0x1001, 0x0    , 0x52  , 0x134B, 0x34B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B6
   {"PMULHRW",   0x1001, 0x0    , 0x52  , 0x1302, 0x302 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B7
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B8
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op B9
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BA
   {"PSWAPD",    0x1002, 0x0    , 0x52  , 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BB
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BC
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BD
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BE
   {"PAVGUSB",   0x1001, 0x0    , 0x52  , 0x1301, 0x301 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 0F op BF
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x1001, 0x0    , 0x2052, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 0F op C0


// Secondary opcode map for x87 f.p. instructions. Opcode D8
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMap8[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fadd",      0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fadd m32
   {"fmul",      0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fmul m32
   {"fcom",      0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcom m32
   {"fcomp",     0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcomp m32
   {"fsub",      0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsub m32
   {"fsubr",     0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubr m32
   {"fdiv",      0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdiv m32
   {"fdivr",     0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdivr m32
   {"fadd",      0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fadd st,st(i)
   {"fmul",      0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fmul st,st(i)
   {"fcom",      0x100 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcom st,st(i)
   {"fcomp",     0x100 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcomp st,st(i)
   {"fsub",      0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsub st,st(i)
   {"fsubr",     0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubr st,st(i)
   {"fdiv",      0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdiv st,st(i)
   {"fdivr",     0x100 , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // fdivr st,st(i)

// Secondary opcode map for x87 f.p. instructions. Opcode D9
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMap9[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fld",       0x100 , 0x0    , 0x11  , 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fld m32
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fst",       0x100 , 0x0    , 0x11  , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fst m32
   {"fstp",      0x100 , 0x0    , 0x11  , 0x2043, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fstp m32
   {"fldenv",    0x100 , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fldenv m
   {"fldcw",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fldcw m16
   {"fnstenv",   0x100 , 0x0    , 0x11  , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fnstenv m
   {"fnstcw",    0x100 , 0x0    , 0x11  , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fnstcw m16
   {"fld",       0x100 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fld st(i)
   {"fxch",      0x100 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fxch st(i)
   {"fnop",      0x10  , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x10 fnop
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x11  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x11 fchs etc.
   {0,           0x12  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x12 fld1 etc.
   {0,           0x13  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x13 f2xm1 etc.
   {0,           0x14  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   }};   // Link to tertiary map 0x14 fprem etc.

// Secondary opcode map for x87 f.p. instructions. Opcode DA
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapA[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fiadd",     0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fiadd m32
   {"fimul",     0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fimul m32
   {"ficom",     0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // ficom m32
   {"ficomp",    0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // ficomp m32
   {"fisub",     0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisub m32
   {"fisubr",    0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisubr m32
   {"fidiv",     0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fidiv m32
   {"fidivr",    0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fidivr m32
   {"fcmovb",    0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovb st,st(i)
   {"fcmove",    0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovb st,st(i)
   {"fcmovbe",   0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovbe st,st(i)
   {"fcmovu",    0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovbe st,st(i)
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x15  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x15 fucompp
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Secondary opcode map for x87 f.p. instructions. Opcode DB
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapB[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fild",      0x100 , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fild m32
   {"fisttp",    0x13  , 0x0    , 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisttp m32
   {"fist",      0x100 , 0x0    , 0x11  , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fist m32
   {"fistp",     0x100 , 0x0    , 0x11  , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fistp m32
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fld",       0x100 , 0x0    , 0x11  , 0x0   , 0x2045, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fld m80
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fstp",      0x100 , 0x0    , 0x11  , 0x2045, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fst m80
   {"fcmovnb",   0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovnb st,st(i)
   {"fcmovne",   0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovne st,st(i)
   {"fcmovnbe",  0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovnbe st,st(i)
   {"fcmovnu",   0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fcmovnu st,st(i)
   {0,           0x16  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x16 fclex etc.
   {"fucomi",    0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fucomi st,st(i)
   {"fcomi",     0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcomi st,st(i)
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Secondary opcode map for x87 f.p. instructions. Opcode DC
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapC[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fadd",      0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fadd m64
   {"fmul",      0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fmul m64
   {"fcom",      0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcom m64
   {"fcomp",     0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcomp m64
   {"fsub",      0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsub m64
   {"fsubr",     0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubr m64
   {"fdiv",      0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdiv m64
   {"fdivr",     0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdivr m64
   {"fadd",      0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fadd st(i),st
   {"fmul",      0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fmul st(i),st
   {0,           0x0   , 0x0    , 0x4011, 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fsubr",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubr st(i),st
   {"fsub",      0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsub st(i),st
   {"fdivr",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdivr st(i),st
   {"fdiv",      0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // fdiv st(i),st

// Secondary opcode map for x87 f.p. instructions. Opcode DD
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapD[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fld",       0x100 , 0x0    , 0x11  , 0x0   , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fld m64
   {"fisttp",    0x13  , 0x0    , 0x11  , 0x2004, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisttp m64
   {"fst",       0x100 , 0x0    , 0x11  , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fst m64
   {"fstp",      0x100 , 0x0    , 0x11  , 0x2044, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fstp m64
   {"frstor",    0x100 , 0x0    , 0x11  , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // frstor 108 bytes
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fnsave",    0x100 , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fnsave 108 bytes
   {"fnstsw",    0x100 , 0x0    , 0x11  , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fstsw m16
   {"ffree",     0x100 , 0x0    , 0x11  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // ffree st(i)
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fst",       0x100 , 0x0    , 0x11  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fst st(i)
   {"fstp",      0x100 , 0x0    , 0x11  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fstp st(i)
   {"fucom",     0x101 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fucom st(i)
   {"fucomp",    0x101 , 0x0    , 0x11  , 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fucomp st(i)
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Secondary opcode map for x87 f.p. instructions. Opcode DE
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapE[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fiadd",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fiadd m16
   {"fimul",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fimul m16
   {"ficom",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // ficom m16
   {"ficomp",    0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // ficomp m16
   {"fisub",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisub m16
   {"fisubr",    0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisubr m16
   {"fidiv",     0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fidiv m16
   {"fidivr",    0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fidivr m16
   {"faddp",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // faddp st(i),st
   {"fmulp",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fmulp st(i),st
   {0,           0x0   , 0x0    , 0x4011, 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x17  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x17 fcompp
   {"fsubrp",    0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubrp st(i),st (Yes, the order is illogical here)
   {"fsubp",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fsubp st(i),st
   {"fdivrp",    0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fdivrp st(i),st
   {"fdivp",     0x100 , 0x0    , 0x11  , 0x1040, 0xAF  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // fdivp st(i),st

// Secondary opcode map for x87 f.p. instructions. Opcode DF
// Indexed by reg bits and mod == 3
SOpcodeDef OpcodeMapF[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fild",      0x100 , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fild m16
   {"fisttp",    0x13  , 0x0    , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fisttp m16
   {"fist",      0x100 , 0x0    , 0x11  , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fist m16
   {"fistp",     0x100 , 0x0    , 0x11  , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fistp m16
   {"fbld",      0x100 , 0x0    , 0x11  , 0x0   , 0x2005, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fbld m80
   {"fild",      0x100 , 0x0    , 0x11  , 0x0   , 0x2004, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fild m64
   {"fbstp",     0x100 , 0x0    , 0x11  , 0x2005, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fbstp m80
   {"fistp",     0x100 , 0x0    , 0x11  , 0x2004, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fistp m64
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x18  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // Link to tertiary map 0x18 fnstsw ax
   {"fucomip",   0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fucomp st,st(i)
   {"fcomip",    0x6   , 0x0    , 0x11  , 0xAF  , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // fcomp st,st(i)
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x1040, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. D9 / reg = 010
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap10[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fnop",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // fnop
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // the rest is illegal

// Tertiary opcode map for f.p. D9 / reg = 100
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap11[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fchs",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fchs
   {"fabs",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fabs
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"ftst",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // ftst
   {"fxam",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fxam
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. D9 / reg = 101
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap12[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fld1",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // fld1
   {"fldl2t",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fldl2e",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fldpi",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fldlg2",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fldln2",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fldz",      0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. D9 / reg = 110
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap13[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"f2xm1",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // f2xm1
   {"fyl2x",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fptan",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fpatan",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fxtract",   0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fprem1",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fdecstp",   0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fincstp",   0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 

// Tertiary opcode map for f.p. D9 / reg = 111
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap14[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fprem",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fyl2xp1",   0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fsqrt",     0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fsincos",   0x101 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"frndint",   0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fscale",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fsin",      0x101 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fcos",      0x101 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 

// Tertiary opcode map for f.p. DA / reg = 101
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap15[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fucompp",   0x101 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. DB / reg = 100
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap16[5] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fnclex",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"fninit",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. DE / reg = 011
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap17[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"fcompp",    0x100 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // 
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for f.p. DF / reg = 100
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap18[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fnstsw",    0x100 , 0x0    , 0x10  , 0xA2  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Secondary opcode map for IRET. Opcode byte = 0xCF
// Indexed by operand size
SOpcodeDef OpcodeMap19[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"iret",      0x0   , 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // CF
   {"iretd",     0x0   , 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  },    // CF
   {"iretq",     0x0   , 0x1102 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x10  }};   // CF

// Secondary opcode map for immediate group 1. Opcode byte = 0x80
// Indexed by reg bits = 0 - 7
SOpcodeDef OpcodeMap1A[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"add",       0x0   , 0x10   , 0x51  , 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /0
   {"or",        0x0   , 0x10   , 0x51  , 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /1
   {"adc",       0x0   , 0x10   , 0x51  , 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /2
   {"sbb",       0x0   , 0x10   , 0x51  , 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /3
   {"and",       0x0   , 0x10   , 0x51  , 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /4
   {"sub",       0x0   , 0x10   , 0x51  , 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /5
   {"xor",       0x0   , 0x10   , 0x51  , 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 80 /6
   {"cmp",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   }};   // 80 /7

// Secondary opcode map for immediate group 1. Opcode byte = 0x81
// Indexed by reg bits = 0 - 7
SOpcodeDef OpcodeMap1B[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"add",       0x0   , 0x1110 , 0x91  , 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /0
   {"or",        0x0   , 0x1110 , 0x91  , 0x9   , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /1
   {"adc",       0x0   , 0x1110 , 0x91  , 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /2
   {"sbb",       0x0   , 0x1110 , 0x91  , 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /3
   {"and",       0x0   , 0x1110 , 0x91  , 0x9   , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /4
   {"sub",       0x0   , 0x1110 , 0x91  , 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /5
   {"xor",       0x0   , 0x1110 , 0x91  , 0x9   , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // 81 /6
   {"cmp",       0x0   , 0x1100 , 0x91  , 0x9   , 0x19  , 0x0   , 0x0   , 0x0   , 0x0   , 0x84  }};   // 81 /7

// Secondary opcode map for immediate group 1. Opcode byte = 0x82.
// Undocumented opcode. Signed byte instructions do the same as unsigned byte instructions at 0x80
SOpcodeDef OpcodeMap1C[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"add",       0x8000, 0x10   , 0x4051, 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /0
   {"or",        0x8000, 0x10   , 0x4051, 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /1
   {"adc",       0x8000, 0x10   , 0x4051, 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /2
   {"sbb",       0x8000, 0x10   , 0x4051, 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /3
   {"and",       0x8000, 0x10   , 0x4051, 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /4
   {"sub",       0x8000, 0x10   , 0x4051, 0x1   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /5
   {"xor",       0x8000, 0x10   , 0x4051, 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 82 /6
   {"cmp",       0x8000, 0x0    , 0x4051, 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   }};   // 82 /7

// Secondary opcode map for immediate group 1. Opcode byte = 0x83
// Indexed by reg bits = 0 - 7
SOpcodeDef OpcodeMap1D[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"add",       0x0   , 0x1110 , 0x51  , 0x9   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /0
   {"or",        0x0   , 0x1110 , 0x51  , 0x9   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /1
   {"adc",       0x0   , 0x1110 , 0x51  , 0x9   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /2
   {"sbb",       0x0   , 0x1110 , 0x51  , 0x9   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /3
   {"and",       0x0   , 0x1110 , 0x51  , 0x9   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /4
   {"sub",       0x0   , 0x1110 , 0x51  , 0x9   , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /5
   {"xor",       0x0   , 0x1110 , 0x51  , 0x9   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 83 /6
   {"cmp",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   }};   // 83 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xC0
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap1E[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /0 rol byte ptr r/m,ib
   {"ror",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /1
   {"rcl",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /2
   {"rcr",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /3
   {"shl",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /4
   {"shr",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /5
   {"sal",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C0 /6
   {"sar",       0x0   , 0x0    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C0 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xC1
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap1F[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /0 rol word ptr r/m,ib
   {"ror",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /1
   {"rcl",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /2
   {"rcr",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /3
   {"shl",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /4
   {"shr",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /5
   {"sal",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C1 /6
   {"sar",       0x0   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C1 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xD0
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap20[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /0 rol byte ptr r/m,1
   {"ror",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /1
   {"rcl",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /2
   {"rcr",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /3
   {"shl",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /4
   {"shr",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /5
   {"sal",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /6
   {"sar",       0x0   , 0x0    , 0x11  , 0x1   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C2 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xD1
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap21[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /0 rol word ptr r/m,1
   {"ror",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /1
   {"rcl",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /2
   {"rcr",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /3
   {"shl",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /4
   {"shr",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /5
   {"sal",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /6
   {"sar",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB1  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C3 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xD2
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap22[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /0 rol byte ptr r/m,cl
   {"ror",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /1
   {"rcl",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /2
   {"rcr",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /3
   {"shl",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /4
   {"shr",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /5
   {"sal",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C2 /6
   {"sar",       0x0   , 0x0    , 0x11  , 0x1   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C2 /7

// Secondary opcode map for shift group 2. Opcode byte = 0xD3
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap23[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"rol",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /0 rol word ptr r/m,cl
   {"ror",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /1
   {"rcl",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /2
   {"rcr",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /3
   {"shl",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /4
   {"shr",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /5
   {"sal",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C3 /6
   {"sar",       0x0   , 0x1100 , 0x11  , 0x9   , 0xB3  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C3 /7

// Secondary opcode map for group 3. Opcode byte = 0xF6
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap24[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"test",      0x0   , 0x0    , 0x51  , 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // test rm8,ib
   {"test",      0x0   , 0x0    , 0x4051, 0x1   , 0x31  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // test rm8,ib. undocumented
   {"not",       0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // not rm8
   {"neg",       0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // neg rm8
   {"mul",       0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // mul rm8
   {"imul",      0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // imul rm8
   {"div",       0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // div rm8
   {"idiv",      0x0   , 0x0    , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   }};   // idiv rm8

// Secondary opcode map for group 3. Opcode byte = 0xF7
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap25[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"test",      0x0   , 0x1100 , 0x91  , 0x9   , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // test rm,i
   {"test",      0x0   , 0x1100 , 0x4091, 0x9   , 0x39  , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // test rm,i. undocumented
   {"not",       0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // not rm
   {"neg",       0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // neg rm
   {"mul",       0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // mul rm
   {"imul",      0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // imul rm
   {"div",       0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // div rm
   {"idiv",      0x0   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   }};   // idiv rm

// Secondary opcode map for group 4. Opcode byte = 0xFE
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap26[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"inc",       0x0   , 0x10   , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // inc rm8
   {"dec",       0x0   , 0x10   , 0x11  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // dec rm8
   {0,           0x0   , 0x0    , 0x4011, 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal opcode

// Secondary opcode map for group 5. Opcode byte = 0xFF
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap27[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"inc",       0x0   , 0x1110 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // inc rm
   {"dec",       0x0   , 0x1110 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x80  },    // dec rm
   {"call",      0x0   , 0x2182 , 0x11  , 0xC   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // call indirect rm
   {"call",      0x0   , 0x1102 , 0x811 , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x28  },    // call indirect far
   {"jmp",       0x0   , 0x2180 , 0x11  , 0xB   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x14  },    // jmp indirect rm
   {"jmp",       0x0   , 0x1100 , 0x811 , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x30  },    // jmp indirect far
   {"push",      0x0   , 0x2102 , 0x11  , 0xA   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x4   },    // push rm
   {0,           0x0   , 0x0    , 0x4011, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal opcode

// Secondary opcode map for immediate group 1A. Opcode byte = 0x8F
// Indexed by reg bits = 0 - 7. Values != 0 are discouraged
SOpcodeDef OpcodeMap28[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pop",       0x0   , 0x2102 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 8F
   {"pop",       0x0   , 0x2102 , 0x4011, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 8F

// Tertiary opcode map for pinsrw. Opcode byte = 0F C4
// Indexed by mod bits 0 register vs. memory operand
SOpcodeDef OpcodeMap29[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pinsrw",    0x7   , 0x91200, 0x59  , 0x1102, 0x1102, 0x2002, 0x11  , 0x0   , 0x0   , 0x2   },    // 0F C4 mem16
   {"pinsrw",    0x7   , 0x91200, 0x59  , 0x1102, 0x1102, 0x1009, 0x11  , 0x0   , 0x0   , 0x2   }};   // 0F C4 register

// Tertiary opcode map for group 6. Opcode byte = 0F 00
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap2A[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"sldt",      0x2   , 0x1100 , 0x11  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"str",       0x802 , 0x100  , 0x11  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"lldt",      0x802 , 0x2000 , 0x11  , 0x0   , 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"ltr",       0x802 , 0x0    , 0x11  , 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"verr",      0x802 , 0x0    , 0x11  , 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"verw",      0x802 , 0x0    , 0x11  , 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for group 7. Opcode byte = 0F 01
// Indexed by reg bits = 0 - 7 and mod = 11b. 
SOpcodeDef OpcodeMap2B[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"sgdt",      0x802 , 0x1100 , 0x11  , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"sidt",      0x802 , 0x1100 , 0x11  , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"lgdt",      0x802 , 0x1100 , 0x11  , 0x0   , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"lidt",      0x802 , 0x1100 , 0x11  , 0x0   , 0x200D, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"smsw",      0x2   , 0x0    , 0x11  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"lmsw",      0x802 , 0x0    , 0x11  , 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"invlpg",    0x4   , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x36  , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // link to quarternary map, vmcall etc.
   {0,           0x37  , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x5   , 0x0   },    // link to quarternary map, monitor, mwait
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"smsw",      0x2   , 0x1100 , 0x11  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x4011, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"lmsw",      0x802 , 0x0    , 0x11  , 0x0   , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"swapgs",    0x800 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // instruction set unknown

// Secondary opcode map for group 8. Opcode byte = 0F BA: bt
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap2C[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x51  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x51  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x51  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x51  , 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"bt",        0x3   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"bts",       0x3   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"btr",       0x3   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"btc",       0x3   , 0x1100 , 0x51  , 0x9   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 

// Secondary opcode map for addsub. Opcode byte = 0F D0
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap2D[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"addsub",    0x13  , 0xD0000, 0x4019, 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F D0. undefined
   {"addsubpd",  0x13  , 0xD0200, 0x19  , 0x124C, 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F D0. addsubpd
   {"addsubps",  0x13  , 0xD0800, 0x19  , 0x124B, 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F D0. addsubps
   {"addsub",    0x13  , 0xD0400, 0x4019, 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F D0. undefined

// Secondary opcode map for group 10. Opcode byte = 0F B9
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap2E[1] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"ud1",       0x0   , 0x0    , 0x4012, 0x1009, 0x6   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Invalid opcode, possibly used for emulation

// Secondary opcode map for mov group 11. Opcode byte = 0xC6
// Indexed by reg bits = 0 - 7. Values != 0 are discouraged
SOpcodeDef OpcodeMap2F[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"mov",       0x0   , 0x5    , 0x51  , 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C6 mov m,ib
   {"mov",       0x0   , 0x5    , 0x4051, 0x1   , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C6

// Secondary opcode map for mov group 11. Opcode byte = 0xC7
// Indexed by reg bits = 0 - 7. Values != 0 are discouraged
SOpcodeDef OpcodeMap30[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"mov",       0x0   , 0x1105 , 0x91  , 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // C7 mov m,iw
   {"mov",       0x0   , 0x5    , 0x4091, 0x9   , 0x29  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // C7

// Secondary opcode map for group 12. Opcode byte = 0F 71
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap31[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {0,           0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"psrlw",     0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"psraw",     0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"psllw",     0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x7   , 0x90200, 0x58  , 0x1102, 0x1102, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   }};    // Illegal

// Secondary opcode map for group 13. Opcode byte = 0F 72
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap32[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"psrld",     0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"psrad",     0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Illegal
   {"pslld",     0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   }};    // Illegal

// Secondary opcode map for group 14. Opcode byte = 0F 73
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap33[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {"psrlq",     0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {"psrldq",    0x12  , 0x98200, 0x58  , 0x1404, 0x1404, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     // Not valid without 66 prefix
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {"psllq",     0x12  , 0x90200, 0x58  , 0x1103, 0x1103, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },     //
   {"pslldq",    0x12  , 0x98200, 0x58  , 0x1404, 0x1404, 0x11  , 0x0   , 0x0   , 0x0   , 0x2   }};    // Not valid without 66 prefix

// Secondary opcode map for group 15. Opcode byte = 0F AE
// Indexed by reg bits = 0 - 7 and mod = 3 
SOpcodeDef OpcodeMap34[16] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fxsave",    0x11  , 0x0    , 0x11  , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // 0
   {"fxrstor",   0x11  , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },     // 1
   {"ldmxcsr",   0x11  , 0x10000, 0x11  , 0x0   , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },     // 2
   {"stmxcsr",   0x11  , 0x10000, 0x11  , 0x2003, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },     // 3
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {"clflush",   0x12  , 0x0    , 0x11  , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // 7
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // Illegal
   {"lfence",    0x12  , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // 1-5
   {"mfence",    0x12  , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },     // 1-6
   {"sfence",    0x12  , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};    // 1-7

// Secondary opcode map for group 16. Opcode byte = 0F 18
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap35[5] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"prefetchnta",0x13  , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 18 /0
   {"prefetcht0",0x13  , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 18 /1
   {"prefetcht1",0x13  , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 18 /2
   {"prefetcht2",0x13  , 0x0    , 0x11  , 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 18 /3
   {"prefetch",  0x13  , 0x0    , 0x4011, 0x0   , 0x2006, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 18 /4+ illegal

// Quarternary opcode map for group 7. 0F 01 reg = 0
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap36[6] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // illegal
   {"vmcall",    0x813 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // Intel processor only?
   {"vmlaunch",  0x813 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // Intel processor only?
   {"vmresume",  0x813 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Intel processor only?
   {"vmxoff",    0x813 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Intel processor only?
   {0,           0x0   , 0x0    , 0x4010, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Quarternary opcode map for group 7. 0F 01 reg = 1
// Indexed by rm bits of mod/reg/rm byte
SOpcodeDef OpcodeMap37[5] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"monitor",   0x813 , 0x4    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"mwait",     0x813 , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x0   , 0x0    , 0x10  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // illegal

// Tertiary opcode map for floating point cmpps/pd instructions. First two bytes = 0F C2
// Indexed by immediate byte following operands = 0 - 7
SOpcodeDef OpcodeMap38[9] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cmpeq",     0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 00: cmpeqps/pd
   {"cmplt",     0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 01: 
   {"cmple",     0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 02: 
   {"cmpunord",  0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 03: 
   {"cmpneq",    0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 04: 
   {"cmpnlt",    0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 05: 
   {"cmpnle",    0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 06: 
   {"cmpord",    0x12  ,0xD0E00 , 0x59  , 0x124F, 0x24F , 0x24F , 0x0   , 0x0   , 0x0   , 0x3   },    // 0F C2 op 07: 
   {"cmp",       0x12  ,0xD0E00 , 0x4059, 0x124F, 0x24F , 0x24F , 0x11  , 0x0   , 0x0   , 0x3   }};   // 0F C2 op > 7: cmpps/pd, imm

// Secondary opcode map for cbw/cwde/cdqe. Opcode byte = 0x98
// Indexed by operand size = 16, 32, 64
SOpcodeDef OpcodeMap39[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cbw",       0x0   , 0x100  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 98
   {"cwde",      0x0   , 0x100  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 98
   {"cdqe",      0x4000, 0x1000 , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   }};   // 98

// Secondary opcode map for cwd/cdq/cqo. Opcode byte = 0x99
// Indexed by operand size = 16, 32, 64
SOpcodeDef OpcodeMap3A[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cwd",       0x0   , 0x100  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 99
   {"cdq",       0x0   , 0x100  , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 99
   {"cqo",       0x4000, 0x1000 , 0x1   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   }};   // 99


// Secondary opcode map for arpl/movsxd. Opcode byte = 0x63
// Indexed by mode = 16, 32, 64
SOpcodeDef OpcodeMap3B[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"arpl",      0x8802, 0x0    , 0x13  , 0x2   , 0x1002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 63
   {"arpl",      0x8802, 0x0    , 0x13  , 0x2   , 0x1002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 63
   {"movsxd",    0x4000, 0x1000 , 0x12  , 0x1009, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 63

// Secondary opcode map for nop/pause. Opcode byte = 0x90
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap3C[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"nop",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 90
   {"nop",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // 66 90
   {"nop",       0x0   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x40  },    // F2 90
   {"pause",     0x0   , 0x400  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 90. (No instset indicated because backwards compatible)

// Secondary opcode map for jcxz. Opcode byte = 0xE3
// Indexed by address size
SOpcodeDef OpcodeMap3D[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"jcxz",      0x0   , 0x81   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // E3
   {"jecxz",     0x0   , 0x81   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },
   {"jrcxz",     0x4000, 0x81   , 0x42  , 0x81  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};

// Secondary opcode map for pushf/d/q. Opcode byte = 0x9C
// Indexed by operand size
SOpcodeDef OpcodeMap3E[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pushf",     0x0   , 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 9C pushf
   {"pushf",     0x0   , 0x2102 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   },    // 9C pushf/d/q
   {"pushf",     0x0   , 0x2102 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   }};   // 9C pushf/d/q

// Secondary opcode map for poof/d/q. Opcode byte = 0x9D
// Indexed by operand size
SOpcodeDef OpcodeMap3F[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"popf",      0x0   , 0x102  , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 9D popf
   {"popf",      0x0   , 0x2102 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   },    // 9D popf/d/q
   {"popf",      0x0   , 0x2102 , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x1   }};   // 9D popf/d/q

// Tertiary opcode map for movups etc. Opcode byte = 0F 10
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap40[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movups",    0x11  , 0x50000, 0x12  , 0x1251, 0x251 , 0x0   , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 10
   {"movupd",    0x12  , 0x50200, 0x12  , 0x1251, 0x251 , 0x0   , 0x0   , 0x0   , 0x0   , 0x202 },    // 66 0F 10
   {"movsd",     0x71  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 3     , 0     },    // F2 0F 10 Link for memory/register
   {"movss",     0x72  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 3     , 0     }};   // F3 0F 10 Link for memory/register

// Tertiary opcode map for movups etc. Opcode byte = 0F 11
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap41[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movups",    0x11  , 0x50000, 0x13  , 0x451 , 0x124B, 0x0   , 0x0   , 0x0   , 0x0   , 0x202 },    // 0F 11
   {"movupd",    0x12  , 0x50200, 0x13  , 0x451 , 0x124C, 0x0   , 0x0   , 0x0   , 0x0   , 0x202 },    // 66 0F 11
   {"movsd",     0x73  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 3     , 0     },    // F2 0F 11 Link for memory/register
   {"movss",     0x74  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 3     , 0     }};   // F3 0F 11 Link for memory/register

// Tertiary opcode map for movlps etc. Opcode byte = 0F 12
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap42[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x43  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // Link to quarternary map
   {"movlpd",    0x12  , 0x90200, 0x19  , 0x124C, 0x124C, 0x2351, 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 12
   {"movddup",   0x70  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0xB   , 0     },    // F2 0F 12
   {"movsldup",  0x13  , 0x50400, 0x12  , 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 12

// Quarternary opcode map for movlps and movhlps. Opcode byte = 0F 12
// Indexed by mod bits
SOpcodeDef OpcodeMap43[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movlps",    0x11  , 0x90000, 0x19  , 0x144B, 0x144B, 0x2351, 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 12 (mem)
   {"movhlps",   0x11  , 0x90000, 0x19  , 0x144B, 0x144B, 0x144B, 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 12 (reg)

// Tertiary opcode map for movlps etc. Opcode byte = 0F 16
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap44[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x45  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   },    // Link to quarternary map
   {"movhpd",    0x12  , 0x90200, 0x19  , 0x124C, 0x124C, 0x204C, 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 16
   {0,           0x13  , 0x800  , 0x4012, 0x124C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 16
   {"movshdup",  0x13  , 0x50400, 0x12  , 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 16

// Quarternary opcode map for movhps and movlhps. Opcode byte = 0F 16
// Indexed by mod bits
SOpcodeDef OpcodeMap45[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movhps",    0x11  , 0x90000, 0x19  , 0x124B, 0x124B, 0x2351, 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 12 (mem)
   {"movlhps",   0x11  , 0x90000, 0x19  , 0x124B, 0x124B, 0x124B, 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 12 (reg)

// Tertiary opcode map for cvtpi2ps etc. Opcode byte = 0F 2A
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap46[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cvtpi2ps",  0x11  , 0x0    , 0x12  , 0x124B, 0x303 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 2A
   {"cvtpi2pd",  0x12  , 0x200  , 0x12  , 0x124C, 0x303 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F 2A
   {"cvtsi2sd",  0x12  , 0x91800, 0x19  , 0x104C, 0x104C, 0x9   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 2A
   {"cvtsi2ss",  0x12  , 0x91400, 0x19  , 0x104B, 0x104B, 0x9   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 2A

// Tertiary opcode map for cvttps2pi etc. Opcode byte = 0F 2C
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap47[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cvttps2pi", 0x11  , 0x0    , 0x12  , 0x1303, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 2C
   {"cvttpd2pi", 0x12  , 0x200  , 0x12  , 0x1303, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F 2C
   {"cvttsd2si", 0x12  , 0x11800, 0x12  , 0x1009, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 2C
   {"cvttss2si", 0x12  , 0x11400, 0x12  , 0x1009, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 2C

// Tertiary opcode map for cvtps2pi etc. Opcode byte = 0F 2D
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap48[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cvtps2pi",  0x11  , 0x0    , 0x12  , 0x1303, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 2D
   {"cvtpd2pi",  0x12  , 0x200  , 0x12  , 0x1303, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F 2D
   {"cvtsd2si",  0x12  , 0x11800, 0x12  , 0x1009, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 2D
   {"cvtss2si",  0x12  , 0x11400, 0x12  , 0x1009, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 2D

// Tertiary opcode map for cvtps2pd etc. Opcode byte = 0F 5A
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap49[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cvtps2pd",  0x12  , 0x50000, 0x12  , 0x124C, 0x44B , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 5A
   {"cvtpd2ps",  0x12  , 0x50200, 0x12  , 0x144B, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 5A
   {"cvtsd2ss",  0x12  , 0x90800, 0x19  , 0x104B, 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 5A
   {"cvtss2sd",  0x12  , 0x90400, 0x19  , 0x104C, 0x104C, 0x4B  , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 5A

// Tertiary opcode map for cvtdq2ps etc. Opcode byte = 0F 5B
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4A[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cvtdq2ps",  0x12  , 0x50000, 0x12  , 0x124B, 0x203 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 5B
   {"cvtps2dq",  0x12  , 0x50200, 0x12  , 0x1203, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 5B
   {0,           0x12  , 0x800  , 0x4012, 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 5B. Illegal
   {"cvttps2dq", 0x12  , 0x50400, 0x12  , 0x1203, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 5B

// Tertiary opcode map for ucomiss/sd etc. Opcode byte = 0F 2E
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4B[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"ucomiss",   0x11  , 0x10200, 0x12  , 0x124B, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   },    // 0F 2E. ucomiss
   {"ucomisd",   0x11  , 0x10200, 0x12  , 0x124C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   },    // 66 0F 2E. ucomisd
   {0,           0x0   , 0x0    , 0x12  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Tertiary opcode map for comiss/sd etc. Opcode byte = 0F 2F
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4C[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"comiss",    0x11  , 0x10200, 0x12  , 0x124B, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   },    // 0F 2F. comiss
   {"comisd",    0x11  , 0x10200, 0x12  , 0x124C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x6   },    // 66 0F 2F. comisd
   {0,           0x0   , 0x0    , 0x12  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Tertiary opcode map for movq/movdqa/movdqu. Opcode byte = 0F 6F
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4D[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movq",      0x7   , 0x0    , 0x12  , 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 6F
   {"movdqa",    0x12  , 0x50100, 0x12  , 0x1250, 0x250 , 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 66 0F 6F
   {0,           0x7   , 0x800  , 0x4012, 0x1351, 0x351 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 6F. Illegal
   {"movdqu",    0x12  , 0x50400, 0x12  , 0x1250, 0x251 , 0x0   , 0x0   , 0x0   , 0x0   , 0x202 }};   // F3 0F 6F

// Tertiary opcode map for movq/movdqa/movdqu. Opcode byte = 0F 7F
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4E[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movq",      0x7   , 0x0    , 0x13  , 0x351 , 0x1351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7F
   {"movdqa",    0x12  , 0x50100, 0x13  , 0x250 , 0x1250, 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 66 0F 7F
   {0,           0x7   , 0x800  , 0x4013, 0x351 , 0x1351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 7F. Illegal
   {"movdqu",    0x12  , 0x50400, 0x13  , 0x251 , 0x1250, 0x0   , 0x0   , 0x0   , 0x0   , 0x202 }};   // F3 0F 7F

// Tertiary opcode map for pshufw etc. Opcode byte = 0F 70
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap4F[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pshufw",    0x7   , 0x0    , 0x52  , 0x1302, 0x302 , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 70
   {"pshufd",    0x12  , 0x10100, 0x52  , 0x1403, 0x403 , 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 70
   {"pshuflw",   0x12  , 0x10800, 0x52  , 0x1402, 0x402 , 0x11  , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 70
   {"pshufhw",   0x12  , 0x10400, 0x52  , 0x1402, 0x402 , 0x11  , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 70

// Tertiary opcode map for group 9. Opcode byte = 0F C7
// Indexed by reg bits = 0 - 7. 
SOpcodeDef OpcodeMap50[8] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0. Illegal
   {0,           0x51  , 0x1010 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 1. Link to quarternary map: cmpxchg8b
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x52  , 0x600  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x9   , 0x0   },    // 6. Link to quarternary map: vmptrld
   {"vmptrst",   0x813 , 0x0    , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 7

// Quarternary opcode map for cmpxchg8b. Opcode byte = 0F C7 /1
// Indexed by operand size: 16, 32, 64
SOpcodeDef OpcodeMap51[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"cmpxchg8b", 0x5   , 0x1010 , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"cmpxchg8b", 0x5   , 0x1010 , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"cmpxchg16b",0x5   , 0x1010 , 0x11  , 0x2450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};

// Quarternary opcode map for cmpxchg8b. Opcode byte = 0F C7 /6
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap52[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"vmptrld",   0x813 , 0x0    , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"vmclear",   0x813 , 0x200  , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {0,           0x813 , 0x800  , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"vmxon",     0x813 , 0x400  , 0x11  , 0x2351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};

// Quarternary opcode map for movdq2q etc. Opcode byte = 0F D6
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap53[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"movq",      0x6F  , 0      , 0     , 0     , 0     , 0     , 0     , 0     , 0x3   , 0     },    // 66: Link to movq m64,xmm / movq xmm,xmm
   {"movdq2q",   0x12  , 0x800  , 0x12  , 0x1351, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2
   {"movq2dq",   0x12  , 0x400  , 0x12  , 0x1450, 0x1351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3

// Quarternary opcode map for cvtpd2dq etc. Opcode byte = 0F E6
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap54[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {"cvttpd2dq", 0x12  , 0x50200, 0x12  , 0x1403, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 66
   {"cvtpd2dq",  0x12  , 0x50800, 0x12  , 0x1403, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2
   {"cvtdq2pd",  0x12  , 0x50400, 0x12  , 0x124C, 0x403 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3

// Quarternary opcode map for movntq etc. Opcode byte = 0F E7
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap55[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movntq",    0x11  , 0x0    , 0x13  , 0x2351, 0x1351, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"movntdq",   0x12  , 0x50200, 0x13  , 0x2250, 0x1250, 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Quarternary opcode map for lddqu. Opcode byte = 0F F0
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap56[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // Illegal
   {0,           0x0   , 0x200  , 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 
   {"lddqu",     0x13  , 0x58800, 0x12  , 0x1250, 0x251,  0x0   , 0x0   , 0x0   , 0x0   , 0x202 },    //
   {0,           0x0   , 0x400  , 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Quarternary opcode map for maskmovq. Opcode byte = 0F F7
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap57[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"maskmovq",  0x7   , 0x5    , 0x12  , 0x1351, 0x1351, 0x0   , 0x0   , 0x0   , 0x0   , 0x20  },    // 
   {"maskmovdqu",0x12  , 0x18205, 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x22  },    //
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x2450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // Illegal

// Tertiary opcode map for movd/movq. Opcode byte = 0F 6E
// Indexed by operand size 16/32/64
// First two lines are identical because operand size is determined only by REX.W prefix,
// while 66 prefix determines mmx or xmm register
SOpcodeDef OpcodeMap58[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movd",      0x7   , 0x11200, 0x12  , 0x1103, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6E
   {"movd",      0x7   , 0x11200, 0x12  , 0x1103, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 6E
   {"movq;Name varies: movd",0x4000,0x11200,0x12,0x1104,0x4,0x0 , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 6E. Name varies: movd or movq, though the operand is 64 bits

// Tertiary opcode map for movd/movq. Opcode byte = 0F 7E
// Indexed by prefix: none/66/F2/F3
SOpcodeDef OpcodeMap59[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x5A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 0F 7E. Link to map 5A. Name depends on REX.W prefix
   {0,           0x5A  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   , 0x0   },    // 66 0F 7E. Link to map 5A. Name depends on REX.W prefix
   {0,           0x7   , 0x0    , 0x4013, 0x3   , 0x1103, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 7E. Doesn't exist
   {0,           0x5B  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x3   , 0x0   }};   // F3 0F 7E. Link to map 5B. movq xmm,xmm/m64

// Quarternary opcode map for movd/movq. Opcode byte = 66 0F 7E
// Indexed by operand size 16/32/64
// First two lines are identical because operand size is determined only by REX.W prefix,
// while 66 prefix determines mmx or xmm register
SOpcodeDef OpcodeMap5A[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movd",      0x7   , 0x11200, 0x13  , 0x3   , 0x1103, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 7E
   {"movd",      0x7   , 0x11200, 0x13  , 0x3   , 0x1103, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 7E
   {"movq;Name varies: movd",0x4000,0x11200,0x13,0x4,0x1104,0x0 , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 7E. Name varies: movd or movq, though the operand is 64 bits

// Quarternary opcode map for movq xmm,xmm/m64. Opcode byte = F3 0F 7E
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap5B[2] = {
   {"movq",      0x12  , 0x10400, 0x12  , 0x1404, 0x4   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F3 0F 7E. movq xmm,m64
   {"movq",      0x12  , 0x10400, 0x12  , 0x1404, 0x404 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 7E. movq xmm,xmm

// Tertiary opcode map for haddps/pd etc. Opcode byte = 0F 7C
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap5C[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4012, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7C
   {"haddpd",    0x13  , 0xD0A00, 0x19  , 0x124C, 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 7C
   {"haddps",    0x13  , 0xD0A00, 0x19  , 0x124B, 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 7C
   {0,           0x0   , 0x0    , 0x4012, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F 7C

// Tertiary opcode map for hsubps/pd etc. Opcode byte = 0F 7D
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap5D[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x4012, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7D
   {"hsubpd",    0x13  , 0xD0A00, 0x19  , 0x124C, 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 7D
   {"hsubps",    0x13  , 0xD0A00, 0x19  , 0x124B, 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 7D
   {0,           0x0   , 0x0    , 0x4012, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F 7D

// Tertiary opcode map for lar. Opcode byte = 0F 02
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap5E[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"lar",       0x802 , 0x1100 , 0x12  , 0x1009, 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 02 memory
   {"lar",       0x802 , 0x1100 , 0x12  , 0x1009, 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 02 register

// Tertiary opcode map for lsl. Opcode byte = 0F 03
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap5F[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"lsl",       0x802 , 0x1100 , 0x12  , 0x1009, 0x2002, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 03 memory
   {"lsl",       0x802 , 0x1100 , 0x12  , 0x1009, 0x1009, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 03 register

// Tertiary opcode map for popcnt. Opcode byte = 0F B8
// Indexed by prefixes (none, 66, F2, F3)
SOpcodeDef OpcodeMap60[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"jmpe;Itanium only",0,0     , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // 0F B8
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F B8
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F B8
   {"popcnt",    0x16  , 0x1500 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F B8

// Quarternary opcode map for pextrb. Opcode byte = 0F 3A 14
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap61[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pextrb",    0x15  , 0x18200, 0x53  , 0x2001, 0x1401, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 14 memory
   {"pextrb",    0x15  , 0x19200, 0x53  , 0x1009, 0x1401, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 3A 14 register

// Quarternary opcode map for pextrw. Opcode byte = 0F 3A 15
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap62[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pextrw",    0x15  , 0x19200, 0x53  , 0x2001, 0x1402, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 15 memory
   {"pextrw",    0x15  , 0x19200, 0x53  , 0x1009, 0x1402, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 3A 15 register

// Quarternary opcode map for pextrd/q. Opcode byte = 0F 3A 16
// Indexed by operand size (16, 32, 64)
SOpcodeDef OpcodeMap63[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pextrd",    0x15  , 0x18200, 0x53  , 0x3   , 0x1403, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 16 pextrd
   {"pextrd",    0x15  , 0x18200, 0x53  , 0x3   , 0x1403, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 3A 16 pextrd
   {"pextrq",    0x15  , 0x19200, 0x53  , 0x4   , 0x1404, 0x31  , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 3A 16 pextrq

// Quarternary opcode map for pinsrb. Opcode byte = 0F 3A 20
// Indexed by memory vs. register operand
SOpcodeDef OpcodeMap64[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pinsrb",    0x15  , 0x98200, 0x59  , 0x1401, 0x1401, 0x2001, 0x31  , 0x0   , 0x0   , 0x2   },   // 0F 3A 20 memory 8
   {"pinsrb",    0x15  , 0x98200, 0x59  , 0x1401, 0x1401, 0x1003, 0x31  , 0x0   , 0x0   , 0x2   }};  // 0F 3A 20 register 32

// Quarternary opcode map for crc32. Opcode byte = 0F 38 F1
// Indexed by operand size (16, 32, 64)
SOpcodeDef OpcodeMap65[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"crc32",     0x16  , 0x9900 , 0x12  , 0x1003, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F1
   {"crc32",     0x16  , 0x9900 , 0x12  , 0x1003, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 38 F1
   {"crc32",     0x16  , 0x9900 , 0x12  , 0x1004, 0x4   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 38 F1

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 24
// Indexed by third opcode byte
// AMD SSE5 instructions with three or four operands
SOpcodeDef OpcodeMap66[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"fmaddps",   0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 00
   {"fmaddpd",   0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 01
   {"fmaddss",   0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 02
   {"fmaddsd",   0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 03
   {"fmaddps",   0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 04
   {"fmaddpd",   0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 05
   {"fmaddss",   0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 06
   {"fmaddsd",   0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 07

   {"fmsubps",   0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 08
   {"fmsubpd",   0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 09
   {"fmsubss",   0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 0A
   {"fmsubsd",   0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 0B
   {"fmsubps",   0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 0C
   {"fmsubpd",   0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 0D
   {"fmsubss",   0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 0E
   {"fmsubsd",   0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 0F

   {"fnmaddps",  0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 10
   {"fnmaddpd",  0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 11
   {"fnmaddss",  0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 12
   {"fnmaddsd",  0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 13
   {"fnmaddps",  0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 14
   {"fnmaddpd",  0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 15
   {"fnmaddss",  0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 16
   {"fnmaddsd",  0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 17

   {"fnmsubps",  0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 18
   {"fnmsubpd",  0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 19
   {"fnmsubss",  0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 1A
   {"fnmsubsd",  0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 1B
   {"fnmsubps",  0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 1C
   {"fnmsubpd",  0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 1D
   {"fnmsubss",  0x1005, 0x0    , 0x15  , 0x104B, 0x4B  , 0x4B  , 0x4B  , 0x0   , 0x0   , 0x0   },    // 0F 24 1E
   {"fnmsubsd",  0x1005, 0x0    , 0x15  , 0x104C, 0x4C  , 0x4C  , 0x4C  , 0x0   , 0x0   , 0x0   },    // 0F 24 1F

   {"permps",    0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 20
   {"permpd",    0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 21
   {"pcmov",     0x1005, 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 22
   {"pperm",     0x1005, 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 23
   {"permps",    0x1005, 0x0    , 0x15  , 0x124B, 0x24B , 0x24B , 0x24B , 0x0   , 0x0   , 0x0   },    // 0F 24 24
   {"permpd",    0x1005, 0x0    , 0x15  , 0x124C, 0x24C , 0x24C , 0x24C , 0x0   , 0x0   , 0x0   },    // 0F 24 25
   {"pcmov",     0x1005, 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 26
   {"pperm",     0x1005, 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 27

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 28
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 29
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 2F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 30
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 31
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 32
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 33
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 34
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 35
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 36
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 37
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 38
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 39
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 3F

   {"protb",     0x1005, 0x0    , 0x14  , 0x1401, 0x401 , 0x401 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 40
   {"protw",     0x1005, 0x0    , 0x14  , 0x1402, 0x402 , 0x402 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 41
   {"protd",     0x1005, 0x0    , 0x14  , 0x1403, 0x403 , 0x403 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 42
   {"protq",     0x1005, 0x0    , 0x14  , 0x1404, 0x404 , 0x404 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 43
   {"pshlb",     0x1005, 0x0    , 0x14  , 0x1401, 0x401 , 0x401 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 44
   {"pshlw",     0x1005, 0x0    , 0x14  , 0x1402, 0x402 , 0x402 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 45
   {"pshld",     0x1005, 0x0    , 0x14  , 0x1403, 0x403 , 0x403 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 46
   {"pshlq",     0x1005, 0x0    , 0x14  , 0x1404, 0x404 , 0x404 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 47
   {"pshab",     0x1005, 0x0    , 0x14  , 0x1401, 0x401 , 0x401 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 48
   {"pshaw",     0x1005, 0x0    , 0x14  , 0x1402, 0x402 , 0x402 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 49
   {"pshad",     0x1005, 0x0    , 0x14  , 0x1403, 0x403 , 0x403 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 4A
   {"pshaq",     0x1005, 0x0    , 0x14  , 0x1404, 0x404 , 0x404 , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 24 4B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 4C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 4D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 4E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 4F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 50
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 51
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 52
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 53
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 54
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 55
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 56
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 57
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 58
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 59
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 5F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 60
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 61
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 62
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 63
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 64
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 65
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 66
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 67
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 68
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 69
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 6F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 70
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 71
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 72
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 73
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 74
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 75
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 76
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 77
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 78
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 79
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7D
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7E
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 7F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 80
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 81
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 82
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 83
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 84
   {"pmacssww",  0x1005, 0x0    , 0x15  , 0x1402, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 85
   {"pmacsswd",  0x1005, 0x0    , 0x15  , 0x1403, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 86
   {"pmacssdql", 0x1005, 0x0    , 0x15  , 0x1404, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 87
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 88
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 89
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 8A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 8B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 8C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 8D
   {"pmacssdd",  0x1005, 0x0    , 0x15  , 0x1403, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 8E
   {"pmacssdqh", 0x1005, 0x0    , 0x15  , 0x1404, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 8F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 90
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 91
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 92
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 93
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 94
   {"pmacsww",   0x1005, 0x0    , 0x15  , 0x1402, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 95
   {"pmacswd",   0x1005, 0x0    , 0x15  , 0x1403, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 96
   {"pmacsdql",  0x1005, 0x0    , 0x15  , 0x1404, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 97
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 98
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 99
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 9A
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 9B
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 9C
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 9D
   {"pmacsdd",   0x1005, 0x0    , 0x15  , 0x1403, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 9E
   {"pmacsdqh",  0x1005, 0x0    , 0x15  , 0x1404, 0x403 , 0x403 , 0x403 , 0x0   , 0x0   , 0x0   },    // 0F 24 9F

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A0
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A1
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A2
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A3
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A4
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A5
   {"pmadcsswd", 0x1005, 0x0    , 0x15  , 0x1403, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 A6
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A7
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A8
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 A9
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AA
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AB
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AC
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AD
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AE
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 AF

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B0
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B1
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B2
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B3
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B4
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B5
   {"pmadcswd",  0x1005, 0x0    , 0x15  , 0x1403, 0x402 , 0x402 , 0x402 , 0x0   , 0x0   , 0x0   },    // 0F 24 B6
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B7
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B8
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 B9
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BA
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BB
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BC
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BD
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BE
   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   },    // 0F 24 BF

   {0,           0x0   , 0x0    , 0x15  , 0x1450, 0x450 , 0x450 , 0x450 , 0x0   , 0x0   , 0x0   }};   // 0F 24 C0+. Reserved for future opcodes

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 25
// Indexed by third opcode byte
// AMD SSE5 instructions with three operands + immediate byte
SOpcodeDef OpcodeMap67[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 00
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 01
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 02
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 03
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 04
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 05
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 06
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 07
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 08
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 09
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0B
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0C
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0D
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0E
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 0F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 10
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 11
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 12
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 13
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 14
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 15
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 16
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 17
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 18
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 19
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1B
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1C
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1D
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1E
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 1F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 20
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 21
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 22
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 23
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 24
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 25
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 26
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 27
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 28
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 29
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2B
   {"comps",     0x1005, 0x0    , 0x54  , 0x124B, 0x24B , 0x24B , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2C
   {"compd",     0x1005, 0x0    , 0x54  , 0x124C, 0x24C , 0x24C , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2D
   {"comss",     0x1005, 0x0    , 0x54  , 0x104B, 0x4B  , 0x4B  , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2E
   {"comsd",     0x1005, 0x0    , 0x54  , 0x104C, 0x4C  , 0x4C  , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 2F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 30
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 31
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 32
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 33
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 34
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 35
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 36
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 37
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 38
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 39
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3B
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3C
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3D
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3E
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 3F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 40
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 41
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 42
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 43
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 44
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 45
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 46
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 47
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 48
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 49
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4B
   {"pcomb",     0x1005, 0x0    , 0x54  , 0x1401, 0x401 , 0x401 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4C
   {"pcomw",     0x1005, 0x0    , 0x54  , 0x1402, 0x402 , 0x402 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4D
   {"pcomd",     0x1005, 0x0    , 0x54  , 0x1403, 0x403 , 0x403 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4E
   {"pcomq",     0x1005, 0x0    , 0x54  , 0x1404, 0x404 , 0x404 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 4F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 50
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 51
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 52
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 53
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 54
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 55
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 56
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 57
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 58
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 59
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5B
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5C
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5D
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5E
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 5F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 60
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 61
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 62
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 63
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 64
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 65
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 66
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 67
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 68
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 69
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6A
   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6B
   {"pcomub",    0x1005, 0x0    , 0x54  , 0x1401, 0x401 , 0x401 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6C
   {"pcomuw",    0x1005, 0x0    , 0x54  , 0x1402, 0x402 , 0x402 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6D
   {"pcomud",    0x1005, 0x0    , 0x54  , 0x1403, 0x403 , 0x403 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6E
   {"pcomuq",    0x1005, 0x0    , 0x54  , 0x1404, 0x404 , 0x404 , 0x31  , 0x0   , 0x0   , 0x0   },    // 0F 25 6F

   {0,           0x0   , 0x0    , 0x54  , 0x1450, 0x450 , 0x450 , 0x31  , 0x0   , 0x0   , 0x0   }};   // 0F 25 70+. Reserved for future opcodes

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 7A
// Indexed by third opcode byte
// AMD SSE5 instructions with two operands
SOpcodeDef OpcodeMap68[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 00
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 01
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 02
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 03
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 04
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 05
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 06
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 07
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 08
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 09
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0A
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 0F

   {"frczps",    0x1005, 0x0    , 0x12  , 0x124B, 0x24B , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 10
   {"frczpd",    0x1005, 0x0    , 0x12  , 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 11
   {"frczss",    0x1005, 0x0    , 0x12  , 0x104B, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 12
   {"frczsd",    0x1005, 0x0    , 0x12  , 0x104C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 13
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 14
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 15
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 16
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 17
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 18
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 19
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1A
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 1F

   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 20
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 21
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 22
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 23
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 24
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 25
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 26
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 27
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 28
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 29
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2A
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 2F

   {"cvtph2ps",  0x1005, 0x0    , 0x12  , 0x124B, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 30
   {"cvtps2ph",  0x1005, 0x0    , 0x13  , 0x402,  0x124B, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 31
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 32
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 33
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 34
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 35
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 36
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 37
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 38
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 39
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3A
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 3F

   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 40
   {"phaddbw",   0x1005, 0x0    , 0x12  , 0x1402, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 41
   {"phaddbd",   0x1005, 0x0    , 0x12  , 0x1403, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 42
   {"phaddbq",   0x1005, 0x0    , 0x12  , 0x1404, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 43
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 44
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 45
   {"phaddwd",   0x1005, 0x0    , 0x12  , 0x1403, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 46
   {"phaddwq",   0x1005, 0x0    , 0x12  , 0x1404, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 47
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 48
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 49
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4A
   {"phadddq",   0x1005, 0x0    , 0x12  , 0x1404, 0x403 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 4F

   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 50
   {"phaddubw",  0x1005, 0x0    , 0x12  , 0x1402, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 51
   {"phaddubd",  0x1005, 0x0    , 0x12  , 0x1403, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 52
   {"phaddubq",  0x1005, 0x0    , 0x12  , 0x1404, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 53
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 54
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 55
   {"phadduwd",  0x1005, 0x0    , 0x12  , 0x1403, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 56
   {"phadduwq",  0x1005, 0x0    , 0x12  , 0x1404, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 57
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 58
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 59
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5A
   {"phaddudq",  0x1005, 0x0    , 0x12  , 0x1404, 0x403 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 5F

   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 60
   {"phsubbw",   0x1005, 0x0    , 0x12  , 0x1402, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 61
   {"phsubwd",   0x1005, 0x0    , 0x12  , 0x1403, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 62
   {"phsubdq",   0x1005, 0x0    , 0x12  , 0x1404, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 63
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 64
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 65
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 66
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 67
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 68
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 69
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6A
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6B
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6C
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6D
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6E
   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 6F

   {0,           0x0   , 0x0    , 0x12  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 7A ??

// Tertiary opcode map for 3-byte opcode. First two bytes = 0F 7B
// Indexed by third opcode byte
// AMD SSE5 instructions with two operands and an immediate byte operand
SOpcodeDef OpcodeMap69[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 00
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 01
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 02
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 03
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 04
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 05
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 06
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 07
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 08
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 09
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0A
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0B
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0C
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0D
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0E
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 0F

   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 10
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 11
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 12
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 13
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 14
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 15
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 16
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 17
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 18
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 19
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1A
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1B
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1C
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1D
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1E
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 1F

   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 20
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 21
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 22
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 23
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 24
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 25
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 26
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 27
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 28
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 29
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2A
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2B
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2C
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2D
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2E
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 2F

   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 30
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 31
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 32
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 33
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 34
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 35
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 36
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 37
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 38
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 39
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3A
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3B
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3C
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3D
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3E
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 3F

   {"protb"  ,   0x1005, 0x0    , 0x52  , 0x1401, 0x401 , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 40
   {"protw"  ,   0x1005, 0x0    , 0x52  , 0x1402, 0x402 , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 41
   {"protd"  ,   0x1005, 0x0    , 0x52  , 0x1403, 0x403 , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 42
   {"protq"  ,   0x1005, 0x0    , 0x52  , 0x1404, 0x404 , 0x21  , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7A 43
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 44
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 45
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 46
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 47
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 48
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 49
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4A
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4B
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4C
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4D
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4E
   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 7B 4F

   {0,           0x0   , 0x0    , 0x52  , 0x1450, 0x450 , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // 0F 7B 50+


// Tertiary opcode map for movnt. Opcode byte = 0F 2B
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap6A[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movntps",   0x11  , 0x50000, 0x13  , 0x224B, 0x124B, 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 0F 2B. movntps
   {"movntpd",   0x12  , 0x50200, 0x13  , 0x224C, 0x124C, 0x0   , 0x0   , 0x0   , 0x0   , 0x102 },    // 66 0F 2B. movntpd
   {"movntsd",   0x1004, 0x800  , 0x13  , 0x204C, 0x104C, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 2B. movntsd (AMD only)
   {"movntss",   0x1004, 0x400  , 0x13  , 0x204B, 0x104B, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F 2B. movntss (AMD only)

// Tertiary opcode map for bsr and lzcnt. Opcode byte = 0F BD
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap6B[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"bsr",       0x3   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BD. bsr
   {"bsr",       0x3   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BD. not allowed
   {"bsr",       0x3   , 0x1100 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F BD. not allowed
   {"lzcnt",     0x1004, 0x1500 , 0x12  , 0x1009, 0x9   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F BD. AMD LZCNT

// Tertiary opcode map for vmread, insrtw, extrq. Opcode byte = 0F 78
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap6C[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"vmread",    0x813 , 0x1000 , 0x13  , 0x4   , 0x1004, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 78. vmread              
   {0,           0x6E  , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // 66 0F 78. link to map 6E: extrq xmm,xmm (AMD SSE4a)
   {"insrtq",    0x1004, 0x800  , 0x32  , 0x1450, 0x1450, 0x11  , 0x11  , 0x0   , 0x0   , 0x0   },    // F2 0F 78. insrtq xmm,xmm,i,i (AMD SSE4a)
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F 78. 

// Tertiary opcode map for vmwrite, insrtw, extrq. Opcode byte = 0F 79
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap6D[4] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"vmwrite",   0x813 , 0x1000 , 0x12  , 0x1004, 0x4   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 79. vmwrite
   {"extrq",     0x1004, 0x200  , 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F 79. link to map 6E: extrq xmm,xmm (AMD SSE4a)
   {"insrtq",    0x1004, 0x800  , 0x12  , 0x1450, 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // F2 0F 79. insrtq xmm,xmm (AMD SSE4a)
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // F3 0F 79. 

// Quarternary opcode map for extrq. Opcode byte = 66 0F 78
// Indexed by reg bits = 0 - 7
SOpcodeDef OpcodeMap6E[] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"extrq",     0x1004, 0x200  , 0x31  , 0x1450, 0x11  , 0x11  , 0x0   , 0x0   , 0x0   , 0x0   },    // 66 0F 78. extrq xmm,i,i (AMD SSE4a)
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // reg bits must be 0

// Submap for movq xmm/m64,xmm. Opcode byte = 66 0F D6
// Indexed by memory vs. register operand
   SOpcodeDef OpcodeMap6F[2] = {
   {"movq",      0x12  , 0x10200, 0x13  , 0x4   , 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // movq m64,xmm
   {"movq",      0x12  , 0x10200, 0x13  , 0x450 , 0x1450, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // movq xmm,xmm

// Submap for movddup. Opcode byte = 66 0F D6
// Indexed by VEX.L
SOpcodeDef OpcodeMap70[3] = {
   {"movddup",   0x13  , 0x00800, 0x12  , 0x124C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // no VEX prefix
   {"vmovddup",  0x19  , 0x50800, 0x12  , 0x124C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // VEX.L = 0
   {"vmovddup",  0x19  , 0x50800, 0x12  , 0x124C, 0x24C , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // VEX.L = 1

// Submap for movsd. Opcode byte = F2 0F 10
// Indexed by memory/register operand
SOpcodeDef OpcodeMap71[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"movsd",     0x12  , 0x10800, 0x12  , 0x104C, 0x4C  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 10 mem
   {"movsd",     0x12  , 0x90800, 0x19  , 0x104C, 0x104C, 0x104C, 0x0   , 0x0   , 0x0   , 0x2   }};   // F2 0F 10 reg

// Submap for movss. Opcode byte = F3 0F 10
// Indexed by memory/register operand
SOpcodeDef OpcodeMap72[2] = {
   {"movss",     0x12  , 0x10400,  0x12  , 0x104B, 0x4B  , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F3 0F 10 mem
   {"movss",     0x12  , 0x90400,  0x19  , 0x104B, 0x104B, 0x104B, 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 10 reg

// Submap for movsd. Opcode byte = F2 0F 11
// Indexed by memory/register operand
SOpcodeDef OpcodeMap73[2] = {
   {"movsd",     0x12  , 0x10800, 0x13  , 0x4C  , 0x104C, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 11 mem
   {"movsd",     0x12  , 0x90800, 0x19  , 0x104C, 0x104C, 0x104C, 0x0   , 0x0   , 0x0   , 0x2   }};   // F2 0F 11 reg

// Submap for movss. Opcode byte = F3 0F 11
// Indexed by memory/register operand
SOpcodeDef OpcodeMap74[2] = {
   {"movss",     0x12  , 0x10400, 0x13  , 0x4B  , 0x104B, 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // F3 0F 11 mem
   {"movss",     0x12  , 0x90400, 0x19  , 0x104B, 0x104B, 0x104B, 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 11 reg

// Submap for pinsrd/pinsrq. Opcode byte = 0F 3A 22
// Indexed by operand size
SOpcodeDef OpcodeMap75[3] = {
   {"pinsrd",    0x15  , 0x99200, 0x59  , 0x1403, 0x1403, 0x3   , 0x11  , 0x0   , 0x0   , 0x2   },    // (16 bit). 66 prefix actually is 32 bits
   {"pinsrd",    0x15  , 0x99200, 0x59  , 0x1403, 0x1403, 0x3   , 0x11  , 0x0   , 0x0   , 0x2   },    // 32 bit
   {"pinsrq",    0x15  , 0x99200, 0x59  , 0x1404, 0x1404, 0x4   , 0x11  , 0x0   , 0x0   , 0x2   }};   // 64 bit. REX.W prefix

// Submap for sqrtps/pd/sd/ss. Opcode byte = 0F 51
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap76[4] = {
   {"sqrtps",    0x11  , 0x50E00, 0x12  , 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    //    0F 51. sqrtps
   {"sqrtpd",    0x11  , 0x50E00, 0x12  , 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 66 0F 51. sqrtpd
   {"sqrtsd",    0x11  , 0x90E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   },    // F2 0F 51. sqrtsd
   {"sqrtss",    0x11  , 0x90E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 51. sqrtss

// Submap for rsqrtps/ss. Opcode byte = 0F 52
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap77[4] = {
   {"rsqrtps",   0x11  , 0x50E00, 0x12  , 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 52. rsqrtps
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // illegal
   {"rsqrtss",   0x11  , 0x90E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 52. rsqrtss

// Submap for rcpps/ss. Opcode byte = 0F 53
// Indexed by prefix = none, 66, F2, F3
SOpcodeDef OpcodeMap78[4] = {
   {"rcpps",     0x11  , 0x50E00, 0x12  , 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 53. rcpps
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // illegal
   {0,           0x0   , 0x0    , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   , 0x0   },    // illegal
   {"rcpss",     0x11  , 0x90E00, 0x19  , 0x124F, 0x124F, 0x24F , 0x0   , 0x0   , 0x0   , 0x2   }};   // F3 0F 53. rcpss

// Submap for emms/vzeroupper/vzeroall. Opcode byte = 0F 77
// Indexed by VEX prefix and VEX.L
SOpcodeDef OpcodeMap79[3] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"emms",      0x7   , 0x0    , 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // 0F 77
   {"vzeroupper",0x19  , 0x10000, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   },    // VEX 0F 77, L=0
   {"vzeroall",  0x19  , 0x50000, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   , 0x0   }};   // VEX 0F 77, L=1

// Submap for pmovsxbw. Opcode byte = 0F 38 20. Indexed by memory/register operand
SOpcodeDef OpcodeMap7A[2] = {
//  name         instset prefix   format  dest.   source1 source2 source3 source4 link    options
   {"pmovsxbw",  0x15  , 0x18200, 0x12  , 0x1402, 0x301 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 20 mem
   {"pmovsxbw",  0x15  , 0x18200, 0x12  , 0x1402, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 20 reg

// Submap for pmovsxbd. Opcode byte = 0F 38 21. Indexed by memory/register operand
SOpcodeDef OpcodeMap7B[2] = {
   {"pmovsxbd",  0x15  , 0x18200, 0x12  , 0x1403, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 21 mem
   {"pmovsxbd",  0x15  , 0x18200, 0x12  , 0x1403, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 21 reg

// Submap for pmovsxbq. Opcode byte = 0F 38 22. Indexed by memory/register operand
SOpcodeDef OpcodeMap7C[2] = {
   {"pmovsxbq",  0x15  , 0x18200, 0x12  , 0x1404, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 22 mem
   {"pmovsxbq",  0x15  , 0x18200, 0x12  , 0x1404, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 22 reg

// Submap for pmovsxwd. Opcode byte = 0F 38 23. Indexed by memory/register operand
SOpcodeDef OpcodeMap7D[2] = {
   {"pmovsxwd",  0x15  , 0x18200, 0x12  , 0x1403, 0x302 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 23 mem
   {"pmovsxwd",  0x15  , 0x18200, 0x12  , 0x1403, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 23 reg

// Submap for pmovsxwq. Opcode byte = 0F 38 24. Indexed by memory/register operand
SOpcodeDef OpcodeMap7E[2] = {
   {"pmovsxwq",  0x15  , 0x18200, 0x12  , 0x1404, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 24 mem
   {"pmovsxwq",  0x15  , 0x18200, 0x12  , 0x1404, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 24 reg

// Submap for pmovsxdq. Opcode byte = 0F 38 25. Indexed by memory/register operand
SOpcodeDef OpcodeMap7F[2] = {
   {"pmovsxdq",  0x15  , 0x18200, 0x12  , 0x1404, 0x303 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 25 mem
   {"pmovsxdq",  0x15  , 0x18200, 0x12  , 0x1404, 0x403 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 25 reg

// Submap for pmovzxbw. Opcode byte = 0F 38 30. Indexed by memory/register operand
SOpcodeDef OpcodeMap80[2] = {
   {"pmovzxbw",  0x15  , 0x18200, 0x12  , 0x1402, 0x301 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 30 mem
   {"pmovzxbw",  0x15  , 0x18200, 0x12  , 0x1402, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 30 reg

// Submap for pmovzxbd. Opcode byte = 0F 38 31. Indexed by memory/register operand
SOpcodeDef OpcodeMap81[2] = {
   {"pmovzxbd",  0x15  , 0x18200, 0x12  , 0x1403, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 31 mem
   {"pmovzxbd",  0x15  , 0x18200, 0x12  , 0x1403, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 31 reg

// Submap for pmovzxbq. Opcode byte = 0F 38 32. Indexed by memory/register operand
SOpcodeDef OpcodeMap82[2] = {
   {"pmovzxbq",  0x15  , 0x18200, 0x12  , 0x1404, 0x2   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 32 mem
   {"pmovzxbq",  0x15  , 0x18200, 0x12  , 0x1404, 0x401 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 32 reg

// Submap for pmovzxwd. Opcode byte = 0F 38 33. Indexed by memory/register operand
SOpcodeDef OpcodeMap83[2] = {
   {"pmovzxwd",  0x15  , 0x18200, 0x12  , 0x1403, 0x302 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 33 mem
   {"pmovzxwd",  0x15  , 0x18200, 0x12  , 0x1403, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 33 reg

// Submap for pmovzxwq. Opcode byte = 0F 38 34. Indexed by memory/register operand
SOpcodeDef OpcodeMap84[2] = {
   {"pmovzxwq",  0x15  , 0x18200, 0x12  , 0x1404, 0x3   , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 34 mem
   {"pmovzxwq",  0x15  , 0x18200, 0x12  , 0x1404, 0x402 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 34 reg

// Submap for pmovzxwq. Opcode byte = 0F 38 35. Indexed by memory/register operand
SOpcodeDef OpcodeMap85[2] = {
   {"pmovzxdq",  0x15  , 0x18200, 0x12  , 0x1404, 0x303 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   },    // 0F 38 35 mem
   {"pmovzxdq",  0x15  , 0x18200, 0x12  , 0x1404, 0x403 , 0x0   , 0x0   , 0x0   , 0x0   , 0x2   }};   // 0F 38 35 reg

// Submap for xlat. Opcode byte = D7. Indexed by assembly syntax: 0=MASM, 1=NASM/YASM, 2=GAS
SOpcodeDef OpcodeMap86[3] = {
   {"xlat",      0x0   , 0x5    , 0x1   , 0x0   , 0x20C0, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // D7
   {"xlatb",     0x0   , 0x5    , 0x1   , 0x0   , 0x20C0, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   },    // D7
   {"xlat",      0x0   , 0x5    , 0x1   , 0x0   , 0x20C0, 0x0   , 0x0   , 0x0   , 0x0   , 0x8   }};   // D7



/************** Make pointers to all opcode maps ***************************/
const SOpcodeDef * const OpcodeTables[] = {    
   OpcodeMap0,  OpcodeMap1,  OpcodeMap2,  OpcodeMap3, 
   OpcodeMap4,  OpcodeMap5,  OpcodeMap6,  0,
   OpcodeMap8,  OpcodeMap9,  OpcodeMapA,  OpcodeMapB, 
   OpcodeMapC,  OpcodeMapD,  OpcodeMapE,  OpcodeMapF, 
   OpcodeMap10, OpcodeMap11, OpcodeMap12, OpcodeMap13,
   OpcodeMap14, OpcodeMap15, OpcodeMap16, OpcodeMap17,
   OpcodeMap18, OpcodeMap19, OpcodeMap1A, OpcodeMap1B,
   OpcodeMap1C, OpcodeMap1D, OpcodeMap1E, OpcodeMap1F,
   OpcodeMap20, OpcodeMap21, OpcodeMap22, OpcodeMap23,
   OpcodeMap24, OpcodeMap25, OpcodeMap26, OpcodeMap27,
   OpcodeMap28, OpcodeMap29, OpcodeMap2A, OpcodeMap2B,
   OpcodeMap2C, OpcodeMap2D, OpcodeMap2E, OpcodeMap2F,
   OpcodeMap30, OpcodeMap31, OpcodeMap32, OpcodeMap33,
   OpcodeMap34, OpcodeMap35, OpcodeMap36, OpcodeMap37,
   OpcodeMap38, OpcodeMap39, OpcodeMap3A, OpcodeMap3B,
   OpcodeMap3C, OpcodeMap3D, OpcodeMap3E, OpcodeMap3F,
   OpcodeMap40, OpcodeMap41, OpcodeMap42, OpcodeMap43,
   OpcodeMap44, OpcodeMap45, OpcodeMap46, OpcodeMap47,
   OpcodeMap48, OpcodeMap49, OpcodeMap4A, OpcodeMap4B, 
   OpcodeMap4C, OpcodeMap4D, OpcodeMap4E, OpcodeMap4F,
   OpcodeMap50, OpcodeMap51, OpcodeMap52, OpcodeMap53,
   OpcodeMap54, OpcodeMap55, OpcodeMap56, OpcodeMap57,
   OpcodeMap58, OpcodeMap59, OpcodeMap5A, OpcodeMap5B,
   OpcodeMap5C, OpcodeMap5D, OpcodeMap5E, OpcodeMap5F,
   OpcodeMap60, OpcodeMap61, OpcodeMap62, OpcodeMap63,
   OpcodeMap64, OpcodeMap65, OpcodeMap66, OpcodeMap67,
   OpcodeMap68, OpcodeMap69, OpcodeMap6A, OpcodeMap6B,
   OpcodeMap6C, OpcodeMap6D, OpcodeMap6E, OpcodeMap6F, 
   OpcodeMap70, OpcodeMap71, OpcodeMap72, OpcodeMap73,
   OpcodeMap74, OpcodeMap75, OpcodeMap76, OpcodeMap77, 
   OpcodeMap78, OpcodeMap79, OpcodeMap7A, OpcodeMap7B, 
   OpcodeMap7C, OpcodeMap7D, OpcodeMap7E, OpcodeMap7F, 
   OpcodeMap80, OpcodeMap81, OpcodeMap82, OpcodeMap83, 
   OpcodeMap84, OpcodeMap85, OpcodeMap86
};

// size of each table pointed to by OpcodeTables[]
const uint32 OpcodeTableLength[] = {    
   TableSize(OpcodeMap0),  TableSize(OpcodeMap1),  TableSize(OpcodeMap2),  TableSize(OpcodeMap3), 
   TableSize(OpcodeMap4),  TableSize(OpcodeMap5),  TableSize(OpcodeMap6),  0,
   TableSize(OpcodeMap8),  TableSize(OpcodeMap9),  TableSize(OpcodeMapA),  TableSize(OpcodeMapB), 
   TableSize(OpcodeMapC),  TableSize(OpcodeMapD),  TableSize(OpcodeMapE),  TableSize(OpcodeMapF),
   TableSize(OpcodeMap10), TableSize(OpcodeMap11), TableSize(OpcodeMap12), TableSize(OpcodeMap13),
   TableSize(OpcodeMap14), TableSize(OpcodeMap15), TableSize(OpcodeMap16), TableSize(OpcodeMap17),
   TableSize(OpcodeMap18), TableSize(OpcodeMap19), TableSize(OpcodeMap1A), TableSize(OpcodeMap1B),
   TableSize(OpcodeMap1C), TableSize(OpcodeMap1D), TableSize(OpcodeMap1E), TableSize(OpcodeMap1F),
   TableSize(OpcodeMap20), TableSize(OpcodeMap21), TableSize(OpcodeMap22), TableSize(OpcodeMap23),
   TableSize(OpcodeMap24), TableSize(OpcodeMap25), TableSize(OpcodeMap26), TableSize(OpcodeMap27),
   TableSize(OpcodeMap28), TableSize(OpcodeMap29), TableSize(OpcodeMap2A), TableSize(OpcodeMap2B),
   TableSize(OpcodeMap2C), TableSize(OpcodeMap2D), TableSize(OpcodeMap2E), TableSize(OpcodeMap2F),
   TableSize(OpcodeMap30), TableSize(OpcodeMap31), TableSize(OpcodeMap32), TableSize(OpcodeMap33),
   TableSize(OpcodeMap34), TableSize(OpcodeMap35), TableSize(OpcodeMap36), TableSize(OpcodeMap37),
   TableSize(OpcodeMap38), TableSize(OpcodeMap39), TableSize(OpcodeMap3A), TableSize(OpcodeMap3B),
   TableSize(OpcodeMap3C), TableSize(OpcodeMap3D), TableSize(OpcodeMap3E), TableSize(OpcodeMap3F), 
   TableSize(OpcodeMap40), TableSize(OpcodeMap41), TableSize(OpcodeMap42), TableSize(OpcodeMap43),
   TableSize(OpcodeMap44), TableSize(OpcodeMap45), TableSize(OpcodeMap46), TableSize(OpcodeMap47),
   TableSize(OpcodeMap48), TableSize(OpcodeMap49), TableSize(OpcodeMap4A), TableSize(OpcodeMap4B), 
   TableSize(OpcodeMap4C), TableSize(OpcodeMap4D), TableSize(OpcodeMap4E), TableSize(OpcodeMap4F),
   TableSize(OpcodeMap50), TableSize(OpcodeMap51), TableSize(OpcodeMap52), TableSize(OpcodeMap53),
   TableSize(OpcodeMap54), TableSize(OpcodeMap55), TableSize(OpcodeMap56), TableSize(OpcodeMap57),
   TableSize(OpcodeMap58), TableSize(OpcodeMap59), TableSize(OpcodeMap5A), TableSize(OpcodeMap5B), 
   TableSize(OpcodeMap5C), TableSize(OpcodeMap5D), TableSize(OpcodeMap5E), TableSize(OpcodeMap5F), 
   TableSize(OpcodeMap60), TableSize(OpcodeMap61), TableSize(OpcodeMap62), TableSize(OpcodeMap63), 
   TableSize(OpcodeMap64), TableSize(OpcodeMap65), TableSize(OpcodeMap66), TableSize(OpcodeMap67),
   TableSize(OpcodeMap68), TableSize(OpcodeMap69), TableSize(OpcodeMap6A), TableSize(OpcodeMap6B),
   TableSize(OpcodeMap6C), TableSize(OpcodeMap6D), TableSize(OpcodeMap6E), TableSize(OpcodeMap6F),
   TableSize(OpcodeMap70), TableSize(OpcodeMap71), TableSize(OpcodeMap72), TableSize(OpcodeMap73),
   TableSize(OpcodeMap74), TableSize(OpcodeMap75), TableSize(OpcodeMap76), TableSize(OpcodeMap77),
   TableSize(OpcodeMap78), TableSize(OpcodeMap79), TableSize(OpcodeMap7A), TableSize(OpcodeMap7B), 
   TableSize(OpcodeMap7C), TableSize(OpcodeMap7D), TableSize(OpcodeMap7E), TableSize(OpcodeMap7F),
   TableSize(OpcodeMap80), TableSize(OpcodeMap81), TableSize(OpcodeMap82), TableSize(OpcodeMap83),
   TableSize(OpcodeMap84), TableSize(OpcodeMap85), TableSize(OpcodeMap86)
};

// number of entries in OpcodeTables
const uint32 NumOpcodeTables1 = TableSize(OpcodeTables);         
const uint32 NumOpcodeTables2 = TableSize(OpcodeTableLength);         

// Index to start pages, depending on VEX.mmmm bits
SOpcodeDef const * OpcodeStartPage[] = {
   OpcodeMap0,                         // One byte opcode
   OpcodeMap1,                         // 0F    escape or mmmm = 1
   OpcodeMap2,                         // 0F 38 escape or mmmm = 2
   OpcodeMap4};                        // 0f 3A escape or mmmm = 3

// Number of entries in OpcodeStartPage
const uint32 NumOpcodeStartPage = TableSize(OpcodeStartPage);


// Define register names

// Names of 8 bit registers
const char * RegisterNames8[8] = {
   "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh" };

// Names of 8 bit registers with REX prefix
const char * RegisterNames8x[16] = {
   "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil",
   "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"  };

// Names of 16 bit registers
const char * RegisterNames16[16] = {
   "ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
   "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w" };
      
// Names of 32 bit registers
const char * RegisterNames32[16] = {
   "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
   "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" };
      
// Names of 64 bit registers
const char * RegisterNames64[16] = {
   "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
   "r8",  "r9",  "r10", "r11", "r12", "r13", "r14", "r15" };
      
// Names of segment registers
const char * RegisterNamesSeg[8] = {
   "es", "cs", "ss", "ds", "fs", "gs", "hs?", "is?" }; // Last two are illegal or undocumented

// Names of control registers
const char * RegisterNamesCR[16] = {
   "cr0", "cr1 ?", "cr2", "cr3", "cr4", "cr5 ?", "cr6 ?", "cr7 ?",
   "cr8", "cr9 ?", "cr10 ?", "cr11 ?", "cr12 ?", "cr13 ?", "cr14 ?", "cr15 ?" }; // Those with ? are illegal