1 module capstone.x86;
2 
3 extern (C):
4 
5 /* Capstone Disassembly Engine */
6 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
7 
8 /// Calculate relative address for X86-64, given cs_insn structure
9 extern (D) auto X86_REL_ADDR(T)(auto ref T insn)
10 {
11     return (insn.detail.x86.operands[0].type == x86_op_type.X86_OP_IMM) ? cast(ulong) insn.detail.x86.operands[0].imm : ((insn.address + insn.size) + cast(ulong) insn.detail.x86.disp);
12 }
13 
14 /// X86 registers
15 enum x86_reg
16 {
17     X86_REG_INVALID = 0,
18     X86_REG_AH = 1,
19     X86_REG_AL = 2,
20     X86_REG_AX = 3,
21     X86_REG_BH = 4,
22     X86_REG_BL = 5,
23     X86_REG_BP = 6,
24     X86_REG_BPL = 7,
25     X86_REG_BX = 8,
26     X86_REG_CH = 9,
27     X86_REG_CL = 10,
28     X86_REG_CS = 11,
29     X86_REG_CX = 12,
30     X86_REG_DH = 13,
31     X86_REG_DI = 14,
32     X86_REG_DIL = 15,
33     X86_REG_DL = 16,
34     X86_REG_DS = 17,
35     X86_REG_DX = 18,
36     X86_REG_EAX = 19,
37     X86_REG_EBP = 20,
38     X86_REG_EBX = 21,
39     X86_REG_ECX = 22,
40     X86_REG_EDI = 23,
41     X86_REG_EDX = 24,
42     X86_REG_EFLAGS = 25,
43     X86_REG_EIP = 26,
44     X86_REG_EIZ = 27,
45     X86_REG_ES = 28,
46     X86_REG_ESI = 29,
47     X86_REG_ESP = 30,
48     X86_REG_FPSW = 31,
49     X86_REG_FS = 32,
50     X86_REG_GS = 33,
51     X86_REG_IP = 34,
52     X86_REG_RAX = 35,
53     X86_REG_RBP = 36,
54     X86_REG_RBX = 37,
55     X86_REG_RCX = 38,
56     X86_REG_RDI = 39,
57     X86_REG_RDX = 40,
58     X86_REG_RIP = 41,
59     X86_REG_RIZ = 42,
60     X86_REG_RSI = 43,
61     X86_REG_RSP = 44,
62     X86_REG_SI = 45,
63     X86_REG_SIL = 46,
64     X86_REG_SP = 47,
65     X86_REG_SPL = 48,
66     X86_REG_SS = 49,
67     X86_REG_CR0 = 50,
68     X86_REG_CR1 = 51,
69     X86_REG_CR2 = 52,
70     X86_REG_CR3 = 53,
71     X86_REG_CR4 = 54,
72     X86_REG_CR5 = 55,
73     X86_REG_CR6 = 56,
74     X86_REG_CR7 = 57,
75     X86_REG_CR8 = 58,
76     X86_REG_CR9 = 59,
77     X86_REG_CR10 = 60,
78     X86_REG_CR11 = 61,
79     X86_REG_CR12 = 62,
80     X86_REG_CR13 = 63,
81     X86_REG_CR14 = 64,
82     X86_REG_CR15 = 65,
83     X86_REG_DR0 = 66,
84     X86_REG_DR1 = 67,
85     X86_REG_DR2 = 68,
86     X86_REG_DR3 = 69,
87     X86_REG_DR4 = 70,
88     X86_REG_DR5 = 71,
89     X86_REG_DR6 = 72,
90     X86_REG_DR7 = 73,
91     X86_REG_DR8 = 74,
92     X86_REG_DR9 = 75,
93     X86_REG_DR10 = 76,
94     X86_REG_DR11 = 77,
95     X86_REG_DR12 = 78,
96     X86_REG_DR13 = 79,
97     X86_REG_DR14 = 80,
98     X86_REG_DR15 = 81,
99     X86_REG_FP0 = 82,
100     X86_REG_FP1 = 83,
101     X86_REG_FP2 = 84,
102     X86_REG_FP3 = 85,
103     X86_REG_FP4 = 86,
104     X86_REG_FP5 = 87,
105     X86_REG_FP6 = 88,
106     X86_REG_FP7 = 89,
107     X86_REG_K0 = 90,
108     X86_REG_K1 = 91,
109     X86_REG_K2 = 92,
110     X86_REG_K3 = 93,
111     X86_REG_K4 = 94,
112     X86_REG_K5 = 95,
113     X86_REG_K6 = 96,
114     X86_REG_K7 = 97,
115     X86_REG_MM0 = 98,
116     X86_REG_MM1 = 99,
117     X86_REG_MM2 = 100,
118     X86_REG_MM3 = 101,
119     X86_REG_MM4 = 102,
120     X86_REG_MM5 = 103,
121     X86_REG_MM6 = 104,
122     X86_REG_MM7 = 105,
123     X86_REG_R8 = 106,
124     X86_REG_R9 = 107,
125     X86_REG_R10 = 108,
126     X86_REG_R11 = 109,
127     X86_REG_R12 = 110,
128     X86_REG_R13 = 111,
129     X86_REG_R14 = 112,
130     X86_REG_R15 = 113,
131     X86_REG_ST0 = 114,
132     X86_REG_ST1 = 115,
133     X86_REG_ST2 = 116,
134     X86_REG_ST3 = 117,
135     X86_REG_ST4 = 118,
136     X86_REG_ST5 = 119,
137     X86_REG_ST6 = 120,
138     X86_REG_ST7 = 121,
139     X86_REG_XMM0 = 122,
140     X86_REG_XMM1 = 123,
141     X86_REG_XMM2 = 124,
142     X86_REG_XMM3 = 125,
143     X86_REG_XMM4 = 126,
144     X86_REG_XMM5 = 127,
145     X86_REG_XMM6 = 128,
146     X86_REG_XMM7 = 129,
147     X86_REG_XMM8 = 130,
148     X86_REG_XMM9 = 131,
149     X86_REG_XMM10 = 132,
150     X86_REG_XMM11 = 133,
151     X86_REG_XMM12 = 134,
152     X86_REG_XMM13 = 135,
153     X86_REG_XMM14 = 136,
154     X86_REG_XMM15 = 137,
155     X86_REG_XMM16 = 138,
156     X86_REG_XMM17 = 139,
157     X86_REG_XMM18 = 140,
158     X86_REG_XMM19 = 141,
159     X86_REG_XMM20 = 142,
160     X86_REG_XMM21 = 143,
161     X86_REG_XMM22 = 144,
162     X86_REG_XMM23 = 145,
163     X86_REG_XMM24 = 146,
164     X86_REG_XMM25 = 147,
165     X86_REG_XMM26 = 148,
166     X86_REG_XMM27 = 149,
167     X86_REG_XMM28 = 150,
168     X86_REG_XMM29 = 151,
169     X86_REG_XMM30 = 152,
170     X86_REG_XMM31 = 153,
171     X86_REG_YMM0 = 154,
172     X86_REG_YMM1 = 155,
173     X86_REG_YMM2 = 156,
174     X86_REG_YMM3 = 157,
175     X86_REG_YMM4 = 158,
176     X86_REG_YMM5 = 159,
177     X86_REG_YMM6 = 160,
178     X86_REG_YMM7 = 161,
179     X86_REG_YMM8 = 162,
180     X86_REG_YMM9 = 163,
181     X86_REG_YMM10 = 164,
182     X86_REG_YMM11 = 165,
183     X86_REG_YMM12 = 166,
184     X86_REG_YMM13 = 167,
185     X86_REG_YMM14 = 168,
186     X86_REG_YMM15 = 169,
187     X86_REG_YMM16 = 170,
188     X86_REG_YMM17 = 171,
189     X86_REG_YMM18 = 172,
190     X86_REG_YMM19 = 173,
191     X86_REG_YMM20 = 174,
192     X86_REG_YMM21 = 175,
193     X86_REG_YMM22 = 176,
194     X86_REG_YMM23 = 177,
195     X86_REG_YMM24 = 178,
196     X86_REG_YMM25 = 179,
197     X86_REG_YMM26 = 180,
198     X86_REG_YMM27 = 181,
199     X86_REG_YMM28 = 182,
200     X86_REG_YMM29 = 183,
201     X86_REG_YMM30 = 184,
202     X86_REG_YMM31 = 185,
203     X86_REG_ZMM0 = 186,
204     X86_REG_ZMM1 = 187,
205     X86_REG_ZMM2 = 188,
206     X86_REG_ZMM3 = 189,
207     X86_REG_ZMM4 = 190,
208     X86_REG_ZMM5 = 191,
209     X86_REG_ZMM6 = 192,
210     X86_REG_ZMM7 = 193,
211     X86_REG_ZMM8 = 194,
212     X86_REG_ZMM9 = 195,
213     X86_REG_ZMM10 = 196,
214     X86_REG_ZMM11 = 197,
215     X86_REG_ZMM12 = 198,
216     X86_REG_ZMM13 = 199,
217     X86_REG_ZMM14 = 200,
218     X86_REG_ZMM15 = 201,
219     X86_REG_ZMM16 = 202,
220     X86_REG_ZMM17 = 203,
221     X86_REG_ZMM18 = 204,
222     X86_REG_ZMM19 = 205,
223     X86_REG_ZMM20 = 206,
224     X86_REG_ZMM21 = 207,
225     X86_REG_ZMM22 = 208,
226     X86_REG_ZMM23 = 209,
227     X86_REG_ZMM24 = 210,
228     X86_REG_ZMM25 = 211,
229     X86_REG_ZMM26 = 212,
230     X86_REG_ZMM27 = 213,
231     X86_REG_ZMM28 = 214,
232     X86_REG_ZMM29 = 215,
233     X86_REG_ZMM30 = 216,
234     X86_REG_ZMM31 = 217,
235     X86_REG_R8B = 218,
236     X86_REG_R9B = 219,
237     X86_REG_R10B = 220,
238     X86_REG_R11B = 221,
239     X86_REG_R12B = 222,
240     X86_REG_R13B = 223,
241     X86_REG_R14B = 224,
242     X86_REG_R15B = 225,
243     X86_REG_R8D = 226,
244     X86_REG_R9D = 227,
245     X86_REG_R10D = 228,
246     X86_REG_R11D = 229,
247     X86_REG_R12D = 230,
248     X86_REG_R13D = 231,
249     X86_REG_R14D = 232,
250     X86_REG_R15D = 233,
251     X86_REG_R8W = 234,
252     X86_REG_R9W = 235,
253     X86_REG_R10W = 236,
254     X86_REG_R11W = 237,
255     X86_REG_R12W = 238,
256     X86_REG_R13W = 239,
257     X86_REG_R14W = 240,
258     X86_REG_R15W = 241,
259 
260     X86_REG_ENDING = 242 // <-- mark the end of the list of registers
261 }
262 
263 // Sub-flags of EFLAGS
264 enum X86_EFLAGS_MODIFY_AF = 1UL << 0;
265 enum X86_EFLAGS_MODIFY_CF = 1UL << 1;
266 enum X86_EFLAGS_MODIFY_SF = 1UL << 2;
267 enum X86_EFLAGS_MODIFY_ZF = 1UL << 3;
268 enum X86_EFLAGS_MODIFY_PF = 1UL << 4;
269 enum X86_EFLAGS_MODIFY_OF = 1UL << 5;
270 enum X86_EFLAGS_MODIFY_TF = 1UL << 6;
271 enum X86_EFLAGS_MODIFY_IF = 1UL << 7;
272 enum X86_EFLAGS_MODIFY_DF = 1UL << 8;
273 enum X86_EFLAGS_MODIFY_NT = 1UL << 9;
274 enum X86_EFLAGS_MODIFY_RF = 1UL << 10;
275 enum X86_EFLAGS_PRIOR_OF = 1UL << 11;
276 enum X86_EFLAGS_PRIOR_SF = 1UL << 12;
277 enum X86_EFLAGS_PRIOR_ZF = 1UL << 13;
278 enum X86_EFLAGS_PRIOR_AF = 1UL << 14;
279 enum X86_EFLAGS_PRIOR_PF = 1UL << 15;
280 enum X86_EFLAGS_PRIOR_CF = 1UL << 16;
281 enum X86_EFLAGS_PRIOR_TF = 1UL << 17;
282 enum X86_EFLAGS_PRIOR_IF = 1UL << 18;
283 enum X86_EFLAGS_PRIOR_DF = 1UL << 19;
284 enum X86_EFLAGS_PRIOR_NT = 1UL << 20;
285 enum X86_EFLAGS_RESET_OF = 1UL << 21;
286 enum X86_EFLAGS_RESET_CF = 1UL << 22;
287 enum X86_EFLAGS_RESET_DF = 1UL << 23;
288 enum X86_EFLAGS_RESET_IF = 1UL << 24;
289 enum X86_EFLAGS_RESET_SF = 1UL << 25;
290 enum X86_EFLAGS_RESET_AF = 1UL << 26;
291 enum X86_EFLAGS_RESET_TF = 1UL << 27;
292 enum X86_EFLAGS_RESET_NT = 1UL << 28;
293 enum X86_EFLAGS_RESET_PF = 1UL << 29;
294 enum X86_EFLAGS_SET_CF = 1UL << 30;
295 enum X86_EFLAGS_SET_DF = 1UL << 31;
296 enum X86_EFLAGS_SET_IF = 1UL << 32;
297 enum X86_EFLAGS_TEST_OF = 1UL << 33;
298 enum X86_EFLAGS_TEST_SF = 1UL << 34;
299 enum X86_EFLAGS_TEST_ZF = 1UL << 35;
300 enum X86_EFLAGS_TEST_PF = 1UL << 36;
301 enum X86_EFLAGS_TEST_CF = 1UL << 37;
302 enum X86_EFLAGS_TEST_NT = 1UL << 38;
303 enum X86_EFLAGS_TEST_DF = 1UL << 39;
304 enum X86_EFLAGS_UNDEFINED_OF = 1UL << 40;
305 enum X86_EFLAGS_UNDEFINED_SF = 1UL << 41;
306 enum X86_EFLAGS_UNDEFINED_ZF = 1UL << 42;
307 enum X86_EFLAGS_UNDEFINED_PF = 1UL << 43;
308 enum X86_EFLAGS_UNDEFINED_AF = 1UL << 44;
309 enum X86_EFLAGS_UNDEFINED_CF = 1UL << 45;
310 enum X86_EFLAGS_RESET_RF = 1UL << 46;
311 enum X86_EFLAGS_TEST_RF = 1UL << 47;
312 enum X86_EFLAGS_TEST_IF = 1UL << 48;
313 enum X86_EFLAGS_TEST_TF = 1UL << 49;
314 enum X86_EFLAGS_TEST_AF = 1UL << 50;
315 enum X86_EFLAGS_RESET_ZF = 1UL << 51;
316 enum X86_EFLAGS_SET_OF = 1UL << 52;
317 enum X86_EFLAGS_SET_SF = 1UL << 53;
318 enum X86_EFLAGS_SET_ZF = 1UL << 54;
319 enum X86_EFLAGS_SET_AF = 1UL << 55;
320 enum X86_EFLAGS_SET_PF = 1UL << 56;
321 enum X86_EFLAGS_RESET_0F = 1UL << 57;
322 enum X86_EFLAGS_RESET_AC = 1UL << 58;
323 
324 enum X86_FPU_FLAGS_MODIFY_C0 = 1UL << 0;
325 enum X86_FPU_FLAGS_MODIFY_C1 = 1UL << 1;
326 enum X86_FPU_FLAGS_MODIFY_C2 = 1UL << 2;
327 enum X86_FPU_FLAGS_MODIFY_C3 = 1UL << 3;
328 enum X86_FPU_FLAGS_RESET_C0 = 1UL << 4;
329 enum X86_FPU_FLAGS_RESET_C1 = 1UL << 5;
330 enum X86_FPU_FLAGS_RESET_C2 = 1UL << 6;
331 enum X86_FPU_FLAGS_RESET_C3 = 1UL << 7;
332 enum X86_FPU_FLAGS_SET_C0 = 1UL << 8;
333 enum X86_FPU_FLAGS_SET_C1 = 1UL << 9;
334 enum X86_FPU_FLAGS_SET_C2 = 1UL << 10;
335 enum X86_FPU_FLAGS_SET_C3 = 1UL << 11;
336 enum X86_FPU_FLAGS_UNDEFINED_C0 = 1UL << 12;
337 enum X86_FPU_FLAGS_UNDEFINED_C1 = 1UL << 13;
338 enum X86_FPU_FLAGS_UNDEFINED_C2 = 1UL << 14;
339 enum X86_FPU_FLAGS_UNDEFINED_C3 = 1UL << 15;
340 enum X86_FPU_FLAGS_TEST_C0 = 1UL << 16;
341 enum X86_FPU_FLAGS_TEST_C1 = 1UL << 17;
342 enum X86_FPU_FLAGS_TEST_C2 = 1UL << 18;
343 enum X86_FPU_FLAGS_TEST_C3 = 1UL << 19;
344 
345 /// Operand type for instruction's operands
346 enum x86_op_type
347 {
348     X86_OP_INVALID = 0, ///< = CS_OP_INVALID (Uninitialized).
349     X86_OP_REG = 1, ///< = CS_OP_REG (Register operand).
350     X86_OP_IMM = 2, ///< = CS_OP_IMM (Immediate operand).
351     X86_OP_MEM = 3 ///< = CS_OP_MEM (Memory operand).
352 }
353 
354 /// XOP Code Condition type
355 enum x86_xop_cc
356 {
357     X86_XOP_CC_INVALID = 0, ///< Uninitialized.
358     X86_XOP_CC_LT = 1,
359     X86_XOP_CC_LE = 2,
360     X86_XOP_CC_GT = 3,
361     X86_XOP_CC_GE = 4,
362     X86_XOP_CC_EQ = 5,
363     X86_XOP_CC_NEQ = 6,
364     X86_XOP_CC_FALSE = 7,
365     X86_XOP_CC_TRUE = 8
366 }
367 
368 /// AVX broadcast type
369 enum x86_avx_bcast
370 {
371     X86_AVX_BCAST_INVALID = 0, ///< Uninitialized.
372     X86_AVX_BCAST_2 = 1, ///< AVX512 broadcast type {1to2}
373     X86_AVX_BCAST_4 = 2, ///< AVX512 broadcast type {1to4}
374     X86_AVX_BCAST_8 = 3, ///< AVX512 broadcast type {1to8}
375     X86_AVX_BCAST_16 = 4 ///< AVX512 broadcast type {1to16}
376 }
377 
378 /// SSE Code Condition type
379 enum x86_sse_cc
380 {
381     X86_SSE_CC_INVALID = 0, ///< Uninitialized.
382     X86_SSE_CC_EQ = 1,
383     X86_SSE_CC_LT = 2,
384     X86_SSE_CC_LE = 3,
385     X86_SSE_CC_UNORD = 4,
386     X86_SSE_CC_NEQ = 5,
387     X86_SSE_CC_NLT = 6,
388     X86_SSE_CC_NLE = 7,
389     X86_SSE_CC_ORD = 8
390 }
391 
392 /// AVX Code Condition type
393 enum x86_avx_cc
394 {
395     X86_AVX_CC_INVALID = 0, ///< Uninitialized.
396     X86_AVX_CC_EQ = 1,
397     X86_AVX_CC_LT = 2,
398     X86_AVX_CC_LE = 3,
399     X86_AVX_CC_UNORD = 4,
400     X86_AVX_CC_NEQ = 5,
401     X86_AVX_CC_NLT = 6,
402     X86_AVX_CC_NLE = 7,
403     X86_AVX_CC_ORD = 8,
404     X86_AVX_CC_EQ_UQ = 9,
405     X86_AVX_CC_NGE = 10,
406     X86_AVX_CC_NGT = 11,
407     X86_AVX_CC_FALSE = 12,
408     X86_AVX_CC_NEQ_OQ = 13,
409     X86_AVX_CC_GE = 14,
410     X86_AVX_CC_GT = 15,
411     X86_AVX_CC_TRUE = 16,
412     X86_AVX_CC_EQ_OS = 17,
413     X86_AVX_CC_LT_OQ = 18,
414     X86_AVX_CC_LE_OQ = 19,
415     X86_AVX_CC_UNORD_S = 20,
416     X86_AVX_CC_NEQ_US = 21,
417     X86_AVX_CC_NLT_UQ = 22,
418     X86_AVX_CC_NLE_UQ = 23,
419     X86_AVX_CC_ORD_S = 24,
420     X86_AVX_CC_EQ_US = 25,
421     X86_AVX_CC_NGE_UQ = 26,
422     X86_AVX_CC_NGT_UQ = 27,
423     X86_AVX_CC_FALSE_OS = 28,
424     X86_AVX_CC_NEQ_OS = 29,
425     X86_AVX_CC_GE_OQ = 30,
426     X86_AVX_CC_GT_OQ = 31,
427     X86_AVX_CC_TRUE_US = 32
428 }
429 
430 /// AVX static rounding mode type
431 enum x86_avx_rm
432 {
433     X86_AVX_RM_INVALID = 0, ///< Uninitialized.
434     X86_AVX_RM_RN = 1, ///< Round to nearest
435     X86_AVX_RM_RD = 2, ///< Round down
436     X86_AVX_RM_RU = 3, ///< Round up
437     X86_AVX_RM_RZ = 4 ///< Round toward zero
438 }
439 
440 /// Instruction prefixes - to be used in cs_x86.prefix[]
441 enum x86_prefix
442 {
443     X86_PREFIX_LOCK = 0xf0, ///< lock (cs_x86.prefix[0]
444     X86_PREFIX_REP = 0xf3, ///< rep (cs_x86.prefix[0]
445     X86_PREFIX_REPE = 0xf3, ///< repe/repz (cs_x86.prefix[0]
446     X86_PREFIX_REPNE = 0xf2, ///< repne/repnz (cs_x86.prefix[0]
447 
448     X86_PREFIX_CS = 0x2e, ///< segment override CS (cs_x86.prefix[1]
449     X86_PREFIX_SS = 0x36, ///< segment override SS (cs_x86.prefix[1]
450     X86_PREFIX_DS = 0x3e, ///< segment override DS (cs_x86.prefix[1]
451     X86_PREFIX_ES = 0x26, ///< segment override ES (cs_x86.prefix[1]
452     X86_PREFIX_FS = 0x64, ///< segment override FS (cs_x86.prefix[1]
453     X86_PREFIX_GS = 0x65, ///< segment override GS (cs_x86.prefix[1]
454 
455     X86_PREFIX_OPSIZE = 0x66, ///< operand-size override (cs_x86.prefix[2]
456     X86_PREFIX_ADDRSIZE = 0x67 ///< address-size override (cs_x86.prefix[3]
457 }
458 
459 /// Instruction's operand referring to memory
460 /// This is associated with X86_OP_MEM operand type above
461 struct x86_op_mem
462 {
463     x86_reg segment; ///< segment register (or X86_REG_INVALID if irrelevant)
464     x86_reg base; ///< base register (or X86_REG_INVALID if irrelevant)
465     x86_reg index; ///< index register (or X86_REG_INVALID if irrelevant)
466     int scale; ///< scale for index register
467     long disp; ///< displacement value
468 }
469 
470 /// Instruction operand
471 struct cs_x86_op
472 {
473     x86_op_type type; ///< operand type
474     union
475     {
476         x86_reg reg; ///< register value for REG operand
477         long imm; ///< immediate value for IMM operand
478         x86_op_mem mem; ///< base/index/scale/disp value for MEM operand
479     }
480 
481     /// size of this operand (in bytes).
482     ubyte size;
483 
484     /// How is this operand accessed? (READ, WRITE or READ|WRITE)
485     /// This field is combined of cs_ac_type.
486     /// NOTE: this field is irrelevant if engine is compiled in DIET mode.
487     ubyte access;
488 
489     /// AVX broadcast type, or 0 if irrelevant
490     x86_avx_bcast avx_bcast;
491 
492     /// AVX zero opmask {z}
493     bool avx_zero_opmask;
494 }
495 
496 struct cs_x86_encoding
497 {
498     /// ModR/M offset, or 0 when irrelevant
499     ubyte modrm_offset;
500 
501     /// Displacement offset, or 0 when irrelevant.
502     ubyte disp_offset;
503     ubyte disp_size;
504 
505     /// Immediate offset, or 0 when irrelevant.
506     ubyte imm_offset;
507     ubyte imm_size;
508 }
509 
510 /// Instruction structure
511 struct cs_x86
512 {
513     /// Instruction prefix, which can be up to 4 bytes.
514     /// A prefix byte gets value 0 when irrelevant.
515     /// prefix[0] indicates REP/REPNE/LOCK prefix (See X86_PREFIX_REP/REPNE/LOCK above)
516     /// prefix[1] indicates segment override (irrelevant for x86_64):
517     /// See X86_PREFIX_CS/SS/DS/ES/FS/GS above.
518     /// prefix[2] indicates operand-size override (X86_PREFIX_OPSIZE)
519     /// prefix[3] indicates address-size override (X86_PREFIX_ADDRSIZE)
520     ubyte[4] prefix;
521 
522     /// Instruction opcode, which can be from 1 to 4 bytes in size.
523     /// This contains VEX opcode as well.
524     /// An trailing opcode byte gets value 0 when irrelevant.
525     ubyte[4] opcode;
526 
527     /// REX prefix: only a non-zero value is relevant for x86_64
528     ubyte rex;
529 
530     /// Address size, which can be overridden with above prefix[5].
531     ubyte addr_size;
532 
533     /// ModR/M byte
534     ubyte modrm;
535 
536     /// SIB value, or 0 when irrelevant.
537     ubyte sib;
538 
539     /// Displacement value, valid if encoding.disp_offset != 0
540     long disp;
541 
542     /// SIB index register, or X86_REG_INVALID when irrelevant.
543     x86_reg sib_index;
544     /// SIB scale, only applicable if sib_index is valid.
545     byte sib_scale;
546     /// SIB base register, or X86_REG_INVALID when irrelevant.
547     x86_reg sib_base;
548 
549     /// XOP Code Condition
550     x86_xop_cc xop_cc;
551 
552     /// SSE Code Condition
553     x86_sse_cc sse_cc;
554 
555     /// AVX Code Condition
556     x86_avx_cc avx_cc;
557 
558     /// AVX Suppress all Exception
559     bool avx_sae;
560 
561     /// AVX static rounding mode
562     x86_avx_rm avx_rm;
563 
564     union
565     {
566         /// EFLAGS updated by this instruction.
567         /// This can be formed from OR combination of X86_EFLAGS_* symbols in x86.h
568         ulong eflags;
569         /// FPU_FLAGS updated by this instruction.
570         /// This can be formed from OR combination of X86_FPU_FLAGS_* symbols in x86.h
571         ulong fpu_flags;
572     }
573 
574     /// Number of operands of this instruction,
575     /// or 0 when instruction has no operand.
576     ubyte op_count;
577 
578     cs_x86_op[8] operands; ///< operands for this instruction.
579 
580     cs_x86_encoding encoding; ///< encoding information
581 }
582 
583 /// X86 instructions
584 enum x86_insn
585 {
586     X86_INS_INVALID = 0,
587 
588     X86_INS_AAA = 1,
589     X86_INS_AAD = 2,
590     X86_INS_AAM = 3,
591     X86_INS_AAS = 4,
592     X86_INS_FABS = 5,
593     X86_INS_ADC = 6,
594     X86_INS_ADCX = 7,
595     X86_INS_ADD = 8,
596     X86_INS_ADDPD = 9,
597     X86_INS_ADDPS = 10,
598     X86_INS_ADDSD = 11,
599     X86_INS_ADDSS = 12,
600     X86_INS_ADDSUBPD = 13,
601     X86_INS_ADDSUBPS = 14,
602     X86_INS_FADD = 15,
603     X86_INS_FIADD = 16,
604     X86_INS_FADDP = 17,
605     X86_INS_ADOX = 18,
606     X86_INS_AESDECLAST = 19,
607     X86_INS_AESDEC = 20,
608     X86_INS_AESENCLAST = 21,
609     X86_INS_AESENC = 22,
610     X86_INS_AESIMC = 23,
611     X86_INS_AESKEYGENASSIST = 24,
612     X86_INS_AND = 25,
613     X86_INS_ANDN = 26,
614     X86_INS_ANDNPD = 27,
615     X86_INS_ANDNPS = 28,
616     X86_INS_ANDPD = 29,
617     X86_INS_ANDPS = 30,
618     X86_INS_ARPL = 31,
619     X86_INS_BEXTR = 32,
620     X86_INS_BLCFILL = 33,
621     X86_INS_BLCI = 34,
622     X86_INS_BLCIC = 35,
623     X86_INS_BLCMSK = 36,
624     X86_INS_BLCS = 37,
625     X86_INS_BLENDPD = 38,
626     X86_INS_BLENDPS = 39,
627     X86_INS_BLENDVPD = 40,
628     X86_INS_BLENDVPS = 41,
629     X86_INS_BLSFILL = 42,
630     X86_INS_BLSI = 43,
631     X86_INS_BLSIC = 44,
632     X86_INS_BLSMSK = 45,
633     X86_INS_BLSR = 46,
634     X86_INS_BOUND = 47,
635     X86_INS_BSF = 48,
636     X86_INS_BSR = 49,
637     X86_INS_BSWAP = 50,
638     X86_INS_BT = 51,
639     X86_INS_BTC = 52,
640     X86_INS_BTR = 53,
641     X86_INS_BTS = 54,
642     X86_INS_BZHI = 55,
643     X86_INS_CALL = 56,
644     X86_INS_CBW = 57,
645     X86_INS_CDQ = 58,
646     X86_INS_CDQE = 59,
647     X86_INS_FCHS = 60,
648     X86_INS_CLAC = 61,
649     X86_INS_CLC = 62,
650     X86_INS_CLD = 63,
651     X86_INS_CLFLUSH = 64,
652     X86_INS_CLFLUSHOPT = 65,
653     X86_INS_CLGI = 66,
654     X86_INS_CLI = 67,
655     X86_INS_CLTS = 68,
656     X86_INS_CLWB = 69,
657     X86_INS_CMC = 70,
658     X86_INS_CMOVA = 71,
659     X86_INS_CMOVAE = 72,
660     X86_INS_CMOVB = 73,
661     X86_INS_CMOVBE = 74,
662     X86_INS_FCMOVBE = 75,
663     X86_INS_FCMOVB = 76,
664     X86_INS_CMOVE = 77,
665     X86_INS_FCMOVE = 78,
666     X86_INS_CMOVG = 79,
667     X86_INS_CMOVGE = 80,
668     X86_INS_CMOVL = 81,
669     X86_INS_CMOVLE = 82,
670     X86_INS_FCMOVNBE = 83,
671     X86_INS_FCMOVNB = 84,
672     X86_INS_CMOVNE = 85,
673     X86_INS_FCMOVNE = 86,
674     X86_INS_CMOVNO = 87,
675     X86_INS_CMOVNP = 88,
676     X86_INS_FCMOVNU = 89,
677     X86_INS_CMOVNS = 90,
678     X86_INS_CMOVO = 91,
679     X86_INS_CMOVP = 92,
680     X86_INS_FCMOVU = 93,
681     X86_INS_CMOVS = 94,
682     X86_INS_CMP = 95,
683     X86_INS_CMPSB = 96,
684     X86_INS_CMPSQ = 97,
685     X86_INS_CMPSW = 98,
686     X86_INS_CMPXCHG16B = 99,
687     X86_INS_CMPXCHG = 100,
688     X86_INS_CMPXCHG8B = 101,
689     X86_INS_COMISD = 102,
690     X86_INS_COMISS = 103,
691     X86_INS_FCOMP = 104,
692     X86_INS_FCOMIP = 105,
693     X86_INS_FCOMI = 106,
694     X86_INS_FCOM = 107,
695     X86_INS_FCOS = 108,
696     X86_INS_CPUID = 109,
697     X86_INS_CQO = 110,
698     X86_INS_CRC32 = 111,
699     X86_INS_CVTDQ2PD = 112,
700     X86_INS_CVTDQ2PS = 113,
701     X86_INS_CVTPD2DQ = 114,
702     X86_INS_CVTPD2PS = 115,
703     X86_INS_CVTPS2DQ = 116,
704     X86_INS_CVTPS2PD = 117,
705     X86_INS_CVTSD2SI = 118,
706     X86_INS_CVTSD2SS = 119,
707     X86_INS_CVTSI2SD = 120,
708     X86_INS_CVTSI2SS = 121,
709     X86_INS_CVTSS2SD = 122,
710     X86_INS_CVTSS2SI = 123,
711     X86_INS_CVTTPD2DQ = 124,
712     X86_INS_CVTTPS2DQ = 125,
713     X86_INS_CVTTSD2SI = 126,
714     X86_INS_CVTTSS2SI = 127,
715     X86_INS_CWD = 128,
716     X86_INS_CWDE = 129,
717     X86_INS_DAA = 130,
718     X86_INS_DAS = 131,
719     X86_INS_DATA16 = 132,
720     X86_INS_DEC = 133,
721     X86_INS_DIV = 134,
722     X86_INS_DIVPD = 135,
723     X86_INS_DIVPS = 136,
724     X86_INS_FDIVR = 137,
725     X86_INS_FIDIVR = 138,
726     X86_INS_FDIVRP = 139,
727     X86_INS_DIVSD = 140,
728     X86_INS_DIVSS = 141,
729     X86_INS_FDIV = 142,
730     X86_INS_FIDIV = 143,
731     X86_INS_FDIVP = 144,
732     X86_INS_DPPD = 145,
733     X86_INS_DPPS = 146,
734     X86_INS_RET = 147,
735     X86_INS_ENCLS = 148,
736     X86_INS_ENCLU = 149,
737     X86_INS_ENTER = 150,
738     X86_INS_EXTRACTPS = 151,
739     X86_INS_EXTRQ = 152,
740     X86_INS_F2XM1 = 153,
741     X86_INS_LCALL = 154,
742     X86_INS_LJMP = 155,
743     X86_INS_FBLD = 156,
744     X86_INS_FBSTP = 157,
745     X86_INS_FCOMPP = 158,
746     X86_INS_FDECSTP = 159,
747     X86_INS_FEMMS = 160,
748     X86_INS_FFREE = 161,
749     X86_INS_FICOM = 162,
750     X86_INS_FICOMP = 163,
751     X86_INS_FINCSTP = 164,
752     X86_INS_FLDCW = 165,
753     X86_INS_FLDENV = 166,
754     X86_INS_FLDL2E = 167,
755     X86_INS_FLDL2T = 168,
756     X86_INS_FLDLG2 = 169,
757     X86_INS_FLDLN2 = 170,
758     X86_INS_FLDPI = 171,
759     X86_INS_FNCLEX = 172,
760     X86_INS_FNINIT = 173,
761     X86_INS_FNOP = 174,
762     X86_INS_FNSTCW = 175,
763     X86_INS_FNSTSW = 176,
764     X86_INS_FPATAN = 177,
765     X86_INS_FPREM = 178,
766     X86_INS_FPREM1 = 179,
767     X86_INS_FPTAN = 180,
768     X86_INS_FFREEP = 181,
769     X86_INS_FRNDINT = 182,
770     X86_INS_FRSTOR = 183,
771     X86_INS_FNSAVE = 184,
772     X86_INS_FSCALE = 185,
773     X86_INS_FSETPM = 186,
774     X86_INS_FSINCOS = 187,
775     X86_INS_FNSTENV = 188,
776     X86_INS_FXAM = 189,
777     X86_INS_FXRSTOR = 190,
778     X86_INS_FXRSTOR64 = 191,
779     X86_INS_FXSAVE = 192,
780     X86_INS_FXSAVE64 = 193,
781     X86_INS_FXTRACT = 194,
782     X86_INS_FYL2X = 195,
783     X86_INS_FYL2XP1 = 196,
784     X86_INS_MOVAPD = 197,
785     X86_INS_MOVAPS = 198,
786     X86_INS_ORPD = 199,
787     X86_INS_ORPS = 200,
788     X86_INS_VMOVAPD = 201,
789     X86_INS_VMOVAPS = 202,
790     X86_INS_XORPD = 203,
791     X86_INS_XORPS = 204,
792     X86_INS_GETSEC = 205,
793     X86_INS_HADDPD = 206,
794     X86_INS_HADDPS = 207,
795     X86_INS_HLT = 208,
796     X86_INS_HSUBPD = 209,
797     X86_INS_HSUBPS = 210,
798     X86_INS_IDIV = 211,
799     X86_INS_FILD = 212,
800     X86_INS_IMUL = 213,
801     X86_INS_IN = 214,
802     X86_INS_INC = 215,
803     X86_INS_INSB = 216,
804     X86_INS_INSERTPS = 217,
805     X86_INS_INSERTQ = 218,
806     X86_INS_INSD = 219,
807     X86_INS_INSW = 220,
808     X86_INS_INT = 221,
809     X86_INS_INT1 = 222,
810     X86_INS_INT3 = 223,
811     X86_INS_INTO = 224,
812     X86_INS_INVD = 225,
813     X86_INS_INVEPT = 226,
814     X86_INS_INVLPG = 227,
815     X86_INS_INVLPGA = 228,
816     X86_INS_INVPCID = 229,
817     X86_INS_INVVPID = 230,
818     X86_INS_IRET = 231,
819     X86_INS_IRETD = 232,
820     X86_INS_IRETQ = 233,
821     X86_INS_FISTTP = 234,
822     X86_INS_FIST = 235,
823     X86_INS_FISTP = 236,
824     X86_INS_UCOMISD = 237,
825     X86_INS_UCOMISS = 238,
826     X86_INS_VCOMISD = 239,
827     X86_INS_VCOMISS = 240,
828     X86_INS_VCVTSD2SS = 241,
829     X86_INS_VCVTSI2SD = 242,
830     X86_INS_VCVTSI2SS = 243,
831     X86_INS_VCVTSS2SD = 244,
832     X86_INS_VCVTTSD2SI = 245,
833     X86_INS_VCVTTSD2USI = 246,
834     X86_INS_VCVTTSS2SI = 247,
835     X86_INS_VCVTTSS2USI = 248,
836     X86_INS_VCVTUSI2SD = 249,
837     X86_INS_VCVTUSI2SS = 250,
838     X86_INS_VUCOMISD = 251,
839     X86_INS_VUCOMISS = 252,
840     X86_INS_JAE = 253,
841     X86_INS_JA = 254,
842     X86_INS_JBE = 255,
843     X86_INS_JB = 256,
844     X86_INS_JCXZ = 257,
845     X86_INS_JECXZ = 258,
846     X86_INS_JE = 259,
847     X86_INS_JGE = 260,
848     X86_INS_JG = 261,
849     X86_INS_JLE = 262,
850     X86_INS_JL = 263,
851     X86_INS_JMP = 264,
852     X86_INS_JNE = 265,
853     X86_INS_JNO = 266,
854     X86_INS_JNP = 267,
855     X86_INS_JNS = 268,
856     X86_INS_JO = 269,
857     X86_INS_JP = 270,
858     X86_INS_JRCXZ = 271,
859     X86_INS_JS = 272,
860     X86_INS_KANDB = 273,
861     X86_INS_KANDD = 274,
862     X86_INS_KANDNB = 275,
863     X86_INS_KANDND = 276,
864     X86_INS_KANDNQ = 277,
865     X86_INS_KANDNW = 278,
866     X86_INS_KANDQ = 279,
867     X86_INS_KANDW = 280,
868     X86_INS_KMOVB = 281,
869     X86_INS_KMOVD = 282,
870     X86_INS_KMOVQ = 283,
871     X86_INS_KMOVW = 284,
872     X86_INS_KNOTB = 285,
873     X86_INS_KNOTD = 286,
874     X86_INS_KNOTQ = 287,
875     X86_INS_KNOTW = 288,
876     X86_INS_KORB = 289,
877     X86_INS_KORD = 290,
878     X86_INS_KORQ = 291,
879     X86_INS_KORTESTB = 292,
880     X86_INS_KORTESTD = 293,
881     X86_INS_KORTESTQ = 294,
882     X86_INS_KORTESTW = 295,
883     X86_INS_KORW = 296,
884     X86_INS_KSHIFTLB = 297,
885     X86_INS_KSHIFTLD = 298,
886     X86_INS_KSHIFTLQ = 299,
887     X86_INS_KSHIFTLW = 300,
888     X86_INS_KSHIFTRB = 301,
889     X86_INS_KSHIFTRD = 302,
890     X86_INS_KSHIFTRQ = 303,
891     X86_INS_KSHIFTRW = 304,
892     X86_INS_KUNPCKBW = 305,
893     X86_INS_KXNORB = 306,
894     X86_INS_KXNORD = 307,
895     X86_INS_KXNORQ = 308,
896     X86_INS_KXNORW = 309,
897     X86_INS_KXORB = 310,
898     X86_INS_KXORD = 311,
899     X86_INS_KXORQ = 312,
900     X86_INS_KXORW = 313,
901     X86_INS_LAHF = 314,
902     X86_INS_LAR = 315,
903     X86_INS_LDDQU = 316,
904     X86_INS_LDMXCSR = 317,
905     X86_INS_LDS = 318,
906     X86_INS_FLDZ = 319,
907     X86_INS_FLD1 = 320,
908     X86_INS_FLD = 321,
909     X86_INS_LEA = 322,
910     X86_INS_LEAVE = 323,
911     X86_INS_LES = 324,
912     X86_INS_LFENCE = 325,
913     X86_INS_LFS = 326,
914     X86_INS_LGDT = 327,
915     X86_INS_LGS = 328,
916     X86_INS_LIDT = 329,
917     X86_INS_LLDT = 330,
918     X86_INS_LMSW = 331,
919     X86_INS_OR = 332,
920     X86_INS_SUB = 333,
921     X86_INS_XOR = 334,
922     X86_INS_LODSB = 335,
923     X86_INS_LODSD = 336,
924     X86_INS_LODSQ = 337,
925     X86_INS_LODSW = 338,
926     X86_INS_LOOP = 339,
927     X86_INS_LOOPE = 340,
928     X86_INS_LOOPNE = 341,
929     X86_INS_RETF = 342,
930     X86_INS_RETFQ = 343,
931     X86_INS_LSL = 344,
932     X86_INS_LSS = 345,
933     X86_INS_LTR = 346,
934     X86_INS_XADD = 347,
935     X86_INS_LZCNT = 348,
936     X86_INS_MASKMOVDQU = 349,
937     X86_INS_MAXPD = 350,
938     X86_INS_MAXPS = 351,
939     X86_INS_MAXSD = 352,
940     X86_INS_MAXSS = 353,
941     X86_INS_MFENCE = 354,
942     X86_INS_MINPD = 355,
943     X86_INS_MINPS = 356,
944     X86_INS_MINSD = 357,
945     X86_INS_MINSS = 358,
946     X86_INS_CVTPD2PI = 359,
947     X86_INS_CVTPI2PD = 360,
948     X86_INS_CVTPI2PS = 361,
949     X86_INS_CVTPS2PI = 362,
950     X86_INS_CVTTPD2PI = 363,
951     X86_INS_CVTTPS2PI = 364,
952     X86_INS_EMMS = 365,
953     X86_INS_MASKMOVQ = 366,
954     X86_INS_MOVD = 367,
955     X86_INS_MOVDQ2Q = 368,
956     X86_INS_MOVNTQ = 369,
957     X86_INS_MOVQ2DQ = 370,
958     X86_INS_MOVQ = 371,
959     X86_INS_PABSB = 372,
960     X86_INS_PABSD = 373,
961     X86_INS_PABSW = 374,
962     X86_INS_PACKSSDW = 375,
963     X86_INS_PACKSSWB = 376,
964     X86_INS_PACKUSWB = 377,
965     X86_INS_PADDB = 378,
966     X86_INS_PADDD = 379,
967     X86_INS_PADDQ = 380,
968     X86_INS_PADDSB = 381,
969     X86_INS_PADDSW = 382,
970     X86_INS_PADDUSB = 383,
971     X86_INS_PADDUSW = 384,
972     X86_INS_PADDW = 385,
973     X86_INS_PALIGNR = 386,
974     X86_INS_PANDN = 387,
975     X86_INS_PAND = 388,
976     X86_INS_PAVGB = 389,
977     X86_INS_PAVGW = 390,
978     X86_INS_PCMPEQB = 391,
979     X86_INS_PCMPEQD = 392,
980     X86_INS_PCMPEQW = 393,
981     X86_INS_PCMPGTB = 394,
982     X86_INS_PCMPGTD = 395,
983     X86_INS_PCMPGTW = 396,
984     X86_INS_PEXTRW = 397,
985     X86_INS_PHADDSW = 398,
986     X86_INS_PHADDW = 399,
987     X86_INS_PHADDD = 400,
988     X86_INS_PHSUBD = 401,
989     X86_INS_PHSUBSW = 402,
990     X86_INS_PHSUBW = 403,
991     X86_INS_PINSRW = 404,
992     X86_INS_PMADDUBSW = 405,
993     X86_INS_PMADDWD = 406,
994     X86_INS_PMAXSW = 407,
995     X86_INS_PMAXUB = 408,
996     X86_INS_PMINSW = 409,
997     X86_INS_PMINUB = 410,
998     X86_INS_PMOVMSKB = 411,
999     X86_INS_PMULHRSW = 412,
1000     X86_INS_PMULHUW = 413,
1001     X86_INS_PMULHW = 414,
1002     X86_INS_PMULLW = 415,
1003     X86_INS_PMULUDQ = 416,
1004     X86_INS_POR = 417,
1005     X86_INS_PSADBW = 418,
1006     X86_INS_PSHUFB = 419,
1007     X86_INS_PSHUFW = 420,
1008     X86_INS_PSIGNB = 421,
1009     X86_INS_PSIGND = 422,
1010     X86_INS_PSIGNW = 423,
1011     X86_INS_PSLLD = 424,
1012     X86_INS_PSLLQ = 425,
1013     X86_INS_PSLLW = 426,
1014     X86_INS_PSRAD = 427,
1015     X86_INS_PSRAW = 428,
1016     X86_INS_PSRLD = 429,
1017     X86_INS_PSRLQ = 430,
1018     X86_INS_PSRLW = 431,
1019     X86_INS_PSUBB = 432,
1020     X86_INS_PSUBD = 433,
1021     X86_INS_PSUBQ = 434,
1022     X86_INS_PSUBSB = 435,
1023     X86_INS_PSUBSW = 436,
1024     X86_INS_PSUBUSB = 437,
1025     X86_INS_PSUBUSW = 438,
1026     X86_INS_PSUBW = 439,
1027     X86_INS_PUNPCKHBW = 440,
1028     X86_INS_PUNPCKHDQ = 441,
1029     X86_INS_PUNPCKHWD = 442,
1030     X86_INS_PUNPCKLBW = 443,
1031     X86_INS_PUNPCKLDQ = 444,
1032     X86_INS_PUNPCKLWD = 445,
1033     X86_INS_PXOR = 446,
1034     X86_INS_MONITOR = 447,
1035     X86_INS_MONTMUL = 448,
1036     X86_INS_MOV = 449,
1037     X86_INS_MOVABS = 450,
1038     X86_INS_MOVBE = 451,
1039     X86_INS_MOVDDUP = 452,
1040     X86_INS_MOVDQA = 453,
1041     X86_INS_MOVDQU = 454,
1042     X86_INS_MOVHLPS = 455,
1043     X86_INS_MOVHPD = 456,
1044     X86_INS_MOVHPS = 457,
1045     X86_INS_MOVLHPS = 458,
1046     X86_INS_MOVLPD = 459,
1047     X86_INS_MOVLPS = 460,
1048     X86_INS_MOVMSKPD = 461,
1049     X86_INS_MOVMSKPS = 462,
1050     X86_INS_MOVNTDQA = 463,
1051     X86_INS_MOVNTDQ = 464,
1052     X86_INS_MOVNTI = 465,
1053     X86_INS_MOVNTPD = 466,
1054     X86_INS_MOVNTPS = 467,
1055     X86_INS_MOVNTSD = 468,
1056     X86_INS_MOVNTSS = 469,
1057     X86_INS_MOVSB = 470,
1058     X86_INS_MOVSD = 471,
1059     X86_INS_MOVSHDUP = 472,
1060     X86_INS_MOVSLDUP = 473,
1061     X86_INS_MOVSQ = 474,
1062     X86_INS_MOVSS = 475,
1063     X86_INS_MOVSW = 476,
1064     X86_INS_MOVSX = 477,
1065     X86_INS_MOVSXD = 478,
1066     X86_INS_MOVUPD = 479,
1067     X86_INS_MOVUPS = 480,
1068     X86_INS_MOVZX = 481,
1069     X86_INS_MPSADBW = 482,
1070     X86_INS_MUL = 483,
1071     X86_INS_MULPD = 484,
1072     X86_INS_MULPS = 485,
1073     X86_INS_MULSD = 486,
1074     X86_INS_MULSS = 487,
1075     X86_INS_MULX = 488,
1076     X86_INS_FMUL = 489,
1077     X86_INS_FIMUL = 490,
1078     X86_INS_FMULP = 491,
1079     X86_INS_MWAIT = 492,
1080     X86_INS_NEG = 493,
1081     X86_INS_NOP = 494,
1082     X86_INS_NOT = 495,
1083     X86_INS_OUT = 496,
1084     X86_INS_OUTSB = 497,
1085     X86_INS_OUTSD = 498,
1086     X86_INS_OUTSW = 499,
1087     X86_INS_PACKUSDW = 500,
1088     X86_INS_PAUSE = 501,
1089     X86_INS_PAVGUSB = 502,
1090     X86_INS_PBLENDVB = 503,
1091     X86_INS_PBLENDW = 504,
1092     X86_INS_PCLMULQDQ = 505,
1093     X86_INS_PCMPEQQ = 506,
1094     X86_INS_PCMPESTRI = 507,
1095     X86_INS_PCMPESTRM = 508,
1096     X86_INS_PCMPGTQ = 509,
1097     X86_INS_PCMPISTRI = 510,
1098     X86_INS_PCMPISTRM = 511,
1099     X86_INS_PCOMMIT = 512,
1100     X86_INS_PDEP = 513,
1101     X86_INS_PEXT = 514,
1102     X86_INS_PEXTRB = 515,
1103     X86_INS_PEXTRD = 516,
1104     X86_INS_PEXTRQ = 517,
1105     X86_INS_PF2ID = 518,
1106     X86_INS_PF2IW = 519,
1107     X86_INS_PFACC = 520,
1108     X86_INS_PFADD = 521,
1109     X86_INS_PFCMPEQ = 522,
1110     X86_INS_PFCMPGE = 523,
1111     X86_INS_PFCMPGT = 524,
1112     X86_INS_PFMAX = 525,
1113     X86_INS_PFMIN = 526,
1114     X86_INS_PFMUL = 527,
1115     X86_INS_PFNACC = 528,
1116     X86_INS_PFPNACC = 529,
1117     X86_INS_PFRCPIT1 = 530,
1118     X86_INS_PFRCPIT2 = 531,
1119     X86_INS_PFRCP = 532,
1120     X86_INS_PFRSQIT1 = 533,
1121     X86_INS_PFRSQRT = 534,
1122     X86_INS_PFSUBR = 535,
1123     X86_INS_PFSUB = 536,
1124     X86_INS_PHMINPOSUW = 537,
1125     X86_INS_PI2FD = 538,
1126     X86_INS_PI2FW = 539,
1127     X86_INS_PINSRB = 540,
1128     X86_INS_PINSRD = 541,
1129     X86_INS_PINSRQ = 542,
1130     X86_INS_PMAXSB = 543,
1131     X86_INS_PMAXSD = 544,
1132     X86_INS_PMAXUD = 545,
1133     X86_INS_PMAXUW = 546,
1134     X86_INS_PMINSB = 547,
1135     X86_INS_PMINSD = 548,
1136     X86_INS_PMINUD = 549,
1137     X86_INS_PMINUW = 550,
1138     X86_INS_PMOVSXBD = 551,
1139     X86_INS_PMOVSXBQ = 552,
1140     X86_INS_PMOVSXBW = 553,
1141     X86_INS_PMOVSXDQ = 554,
1142     X86_INS_PMOVSXWD = 555,
1143     X86_INS_PMOVSXWQ = 556,
1144     X86_INS_PMOVZXBD = 557,
1145     X86_INS_PMOVZXBQ = 558,
1146     X86_INS_PMOVZXBW = 559,
1147     X86_INS_PMOVZXDQ = 560,
1148     X86_INS_PMOVZXWD = 561,
1149     X86_INS_PMOVZXWQ = 562,
1150     X86_INS_PMULDQ = 563,
1151     X86_INS_PMULHRW = 564,
1152     X86_INS_PMULLD = 565,
1153     X86_INS_POP = 566,
1154     X86_INS_POPAW = 567,
1155     X86_INS_POPAL = 568,
1156     X86_INS_POPCNT = 569,
1157     X86_INS_POPF = 570,
1158     X86_INS_POPFD = 571,
1159     X86_INS_POPFQ = 572,
1160     X86_INS_PREFETCH = 573,
1161     X86_INS_PREFETCHNTA = 574,
1162     X86_INS_PREFETCHT0 = 575,
1163     X86_INS_PREFETCHT1 = 576,
1164     X86_INS_PREFETCHT2 = 577,
1165     X86_INS_PREFETCHW = 578,
1166     X86_INS_PSHUFD = 579,
1167     X86_INS_PSHUFHW = 580,
1168     X86_INS_PSHUFLW = 581,
1169     X86_INS_PSLLDQ = 582,
1170     X86_INS_PSRLDQ = 583,
1171     X86_INS_PSWAPD = 584,
1172     X86_INS_PTEST = 585,
1173     X86_INS_PUNPCKHQDQ = 586,
1174     X86_INS_PUNPCKLQDQ = 587,
1175     X86_INS_PUSH = 588,
1176     X86_INS_PUSHAW = 589,
1177     X86_INS_PUSHAL = 590,
1178     X86_INS_PUSHF = 591,
1179     X86_INS_PUSHFD = 592,
1180     X86_INS_PUSHFQ = 593,
1181     X86_INS_RCL = 594,
1182     X86_INS_RCPPS = 595,
1183     X86_INS_RCPSS = 596,
1184     X86_INS_RCR = 597,
1185     X86_INS_RDFSBASE = 598,
1186     X86_INS_RDGSBASE = 599,
1187     X86_INS_RDMSR = 600,
1188     X86_INS_RDPMC = 601,
1189     X86_INS_RDRAND = 602,
1190     X86_INS_RDSEED = 603,
1191     X86_INS_RDTSC = 604,
1192     X86_INS_RDTSCP = 605,
1193     X86_INS_ROL = 606,
1194     X86_INS_ROR = 607,
1195     X86_INS_RORX = 608,
1196     X86_INS_ROUNDPD = 609,
1197     X86_INS_ROUNDPS = 610,
1198     X86_INS_ROUNDSD = 611,
1199     X86_INS_ROUNDSS = 612,
1200     X86_INS_RSM = 613,
1201     X86_INS_RSQRTPS = 614,
1202     X86_INS_RSQRTSS = 615,
1203     X86_INS_SAHF = 616,
1204     X86_INS_SAL = 617,
1205     X86_INS_SALC = 618,
1206     X86_INS_SAR = 619,
1207     X86_INS_SARX = 620,
1208     X86_INS_SBB = 621,
1209     X86_INS_SCASB = 622,
1210     X86_INS_SCASD = 623,
1211     X86_INS_SCASQ = 624,
1212     X86_INS_SCASW = 625,
1213     X86_INS_SETAE = 626,
1214     X86_INS_SETA = 627,
1215     X86_INS_SETBE = 628,
1216     X86_INS_SETB = 629,
1217     X86_INS_SETE = 630,
1218     X86_INS_SETGE = 631,
1219     X86_INS_SETG = 632,
1220     X86_INS_SETLE = 633,
1221     X86_INS_SETL = 634,
1222     X86_INS_SETNE = 635,
1223     X86_INS_SETNO = 636,
1224     X86_INS_SETNP = 637,
1225     X86_INS_SETNS = 638,
1226     X86_INS_SETO = 639,
1227     X86_INS_SETP = 640,
1228     X86_INS_SETS = 641,
1229     X86_INS_SFENCE = 642,
1230     X86_INS_SGDT = 643,
1231     X86_INS_SHA1MSG1 = 644,
1232     X86_INS_SHA1MSG2 = 645,
1233     X86_INS_SHA1NEXTE = 646,
1234     X86_INS_SHA1RNDS4 = 647,
1235     X86_INS_SHA256MSG1 = 648,
1236     X86_INS_SHA256MSG2 = 649,
1237     X86_INS_SHA256RNDS2 = 650,
1238     X86_INS_SHL = 651,
1239     X86_INS_SHLD = 652,
1240     X86_INS_SHLX = 653,
1241     X86_INS_SHR = 654,
1242     X86_INS_SHRD = 655,
1243     X86_INS_SHRX = 656,
1244     X86_INS_SHUFPD = 657,
1245     X86_INS_SHUFPS = 658,
1246     X86_INS_SIDT = 659,
1247     X86_INS_FSIN = 660,
1248     X86_INS_SKINIT = 661,
1249     X86_INS_SLDT = 662,
1250     X86_INS_SMSW = 663,
1251     X86_INS_SQRTPD = 664,
1252     X86_INS_SQRTPS = 665,
1253     X86_INS_SQRTSD = 666,
1254     X86_INS_SQRTSS = 667,
1255     X86_INS_FSQRT = 668,
1256     X86_INS_STAC = 669,
1257     X86_INS_STC = 670,
1258     X86_INS_STD = 671,
1259     X86_INS_STGI = 672,
1260     X86_INS_STI = 673,
1261     X86_INS_STMXCSR = 674,
1262     X86_INS_STOSB = 675,
1263     X86_INS_STOSD = 676,
1264     X86_INS_STOSQ = 677,
1265     X86_INS_STOSW = 678,
1266     X86_INS_STR = 679,
1267     X86_INS_FST = 680,
1268     X86_INS_FSTP = 681,
1269     X86_INS_FSTPNCE = 682,
1270     X86_INS_FXCH = 683,
1271     X86_INS_SUBPD = 684,
1272     X86_INS_SUBPS = 685,
1273     X86_INS_FSUBR = 686,
1274     X86_INS_FISUBR = 687,
1275     X86_INS_FSUBRP = 688,
1276     X86_INS_SUBSD = 689,
1277     X86_INS_SUBSS = 690,
1278     X86_INS_FSUB = 691,
1279     X86_INS_FISUB = 692,
1280     X86_INS_FSUBP = 693,
1281     X86_INS_SWAPGS = 694,
1282     X86_INS_SYSCALL = 695,
1283     X86_INS_SYSENTER = 696,
1284     X86_INS_SYSEXIT = 697,
1285     X86_INS_SYSRET = 698,
1286     X86_INS_T1MSKC = 699,
1287     X86_INS_TEST = 700,
1288     X86_INS_UD2 = 701,
1289     X86_INS_FTST = 702,
1290     X86_INS_TZCNT = 703,
1291     X86_INS_TZMSK = 704,
1292     X86_INS_FUCOMIP = 705,
1293     X86_INS_FUCOMI = 706,
1294     X86_INS_FUCOMPP = 707,
1295     X86_INS_FUCOMP = 708,
1296     X86_INS_FUCOM = 709,
1297     X86_INS_UD2B = 710,
1298     X86_INS_UNPCKHPD = 711,
1299     X86_INS_UNPCKHPS = 712,
1300     X86_INS_UNPCKLPD = 713,
1301     X86_INS_UNPCKLPS = 714,
1302     X86_INS_VADDPD = 715,
1303     X86_INS_VADDPS = 716,
1304     X86_INS_VADDSD = 717,
1305     X86_INS_VADDSS = 718,
1306     X86_INS_VADDSUBPD = 719,
1307     X86_INS_VADDSUBPS = 720,
1308     X86_INS_VAESDECLAST = 721,
1309     X86_INS_VAESDEC = 722,
1310     X86_INS_VAESENCLAST = 723,
1311     X86_INS_VAESENC = 724,
1312     X86_INS_VAESIMC = 725,
1313     X86_INS_VAESKEYGENASSIST = 726,
1314     X86_INS_VALIGND = 727,
1315     X86_INS_VALIGNQ = 728,
1316     X86_INS_VANDNPD = 729,
1317     X86_INS_VANDNPS = 730,
1318     X86_INS_VANDPD = 731,
1319     X86_INS_VANDPS = 732,
1320     X86_INS_VBLENDMPD = 733,
1321     X86_INS_VBLENDMPS = 734,
1322     X86_INS_VBLENDPD = 735,
1323     X86_INS_VBLENDPS = 736,
1324     X86_INS_VBLENDVPD = 737,
1325     X86_INS_VBLENDVPS = 738,
1326     X86_INS_VBROADCASTF128 = 739,
1327     X86_INS_VBROADCASTI32X4 = 740,
1328     X86_INS_VBROADCASTI64X4 = 741,
1329     X86_INS_VBROADCASTSD = 742,
1330     X86_INS_VBROADCASTSS = 743,
1331     X86_INS_VCOMPRESSPD = 744,
1332     X86_INS_VCOMPRESSPS = 745,
1333     X86_INS_VCVTDQ2PD = 746,
1334     X86_INS_VCVTDQ2PS = 747,
1335     X86_INS_VCVTPD2DQX = 748,
1336     X86_INS_VCVTPD2DQ = 749,
1337     X86_INS_VCVTPD2PSX = 750,
1338     X86_INS_VCVTPD2PS = 751,
1339     X86_INS_VCVTPD2UDQ = 752,
1340     X86_INS_VCVTPH2PS = 753,
1341     X86_INS_VCVTPS2DQ = 754,
1342     X86_INS_VCVTPS2PD = 755,
1343     X86_INS_VCVTPS2PH = 756,
1344     X86_INS_VCVTPS2UDQ = 757,
1345     X86_INS_VCVTSD2SI = 758,
1346     X86_INS_VCVTSD2USI = 759,
1347     X86_INS_VCVTSS2SI = 760,
1348     X86_INS_VCVTSS2USI = 761,
1349     X86_INS_VCVTTPD2DQX = 762,
1350     X86_INS_VCVTTPD2DQ = 763,
1351     X86_INS_VCVTTPD2UDQ = 764,
1352     X86_INS_VCVTTPS2DQ = 765,
1353     X86_INS_VCVTTPS2UDQ = 766,
1354     X86_INS_VCVTUDQ2PD = 767,
1355     X86_INS_VCVTUDQ2PS = 768,
1356     X86_INS_VDIVPD = 769,
1357     X86_INS_VDIVPS = 770,
1358     X86_INS_VDIVSD = 771,
1359     X86_INS_VDIVSS = 772,
1360     X86_INS_VDPPD = 773,
1361     X86_INS_VDPPS = 774,
1362     X86_INS_VERR = 775,
1363     X86_INS_VERW = 776,
1364     X86_INS_VEXP2PD = 777,
1365     X86_INS_VEXP2PS = 778,
1366     X86_INS_VEXPANDPD = 779,
1367     X86_INS_VEXPANDPS = 780,
1368     X86_INS_VEXTRACTF128 = 781,
1369     X86_INS_VEXTRACTF32X4 = 782,
1370     X86_INS_VEXTRACTF64X4 = 783,
1371     X86_INS_VEXTRACTI128 = 784,
1372     X86_INS_VEXTRACTI32X4 = 785,
1373     X86_INS_VEXTRACTI64X4 = 786,
1374     X86_INS_VEXTRACTPS = 787,
1375     X86_INS_VFMADD132PD = 788,
1376     X86_INS_VFMADD132PS = 789,
1377     X86_INS_VFMADDPD = 790,
1378     X86_INS_VFMADD213PD = 791,
1379     X86_INS_VFMADD231PD = 792,
1380     X86_INS_VFMADDPS = 793,
1381     X86_INS_VFMADD213PS = 794,
1382     X86_INS_VFMADD231PS = 795,
1383     X86_INS_VFMADDSD = 796,
1384     X86_INS_VFMADD213SD = 797,
1385     X86_INS_VFMADD132SD = 798,
1386     X86_INS_VFMADD231SD = 799,
1387     X86_INS_VFMADDSS = 800,
1388     X86_INS_VFMADD213SS = 801,
1389     X86_INS_VFMADD132SS = 802,
1390     X86_INS_VFMADD231SS = 803,
1391     X86_INS_VFMADDSUB132PD = 804,
1392     X86_INS_VFMADDSUB132PS = 805,
1393     X86_INS_VFMADDSUBPD = 806,
1394     X86_INS_VFMADDSUB213PD = 807,
1395     X86_INS_VFMADDSUB231PD = 808,
1396     X86_INS_VFMADDSUBPS = 809,
1397     X86_INS_VFMADDSUB213PS = 810,
1398     X86_INS_VFMADDSUB231PS = 811,
1399     X86_INS_VFMSUB132PD = 812,
1400     X86_INS_VFMSUB132PS = 813,
1401     X86_INS_VFMSUBADD132PD = 814,
1402     X86_INS_VFMSUBADD132PS = 815,
1403     X86_INS_VFMSUBADDPD = 816,
1404     X86_INS_VFMSUBADD213PD = 817,
1405     X86_INS_VFMSUBADD231PD = 818,
1406     X86_INS_VFMSUBADDPS = 819,
1407     X86_INS_VFMSUBADD213PS = 820,
1408     X86_INS_VFMSUBADD231PS = 821,
1409     X86_INS_VFMSUBPD = 822,
1410     X86_INS_VFMSUB213PD = 823,
1411     X86_INS_VFMSUB231PD = 824,
1412     X86_INS_VFMSUBPS = 825,
1413     X86_INS_VFMSUB213PS = 826,
1414     X86_INS_VFMSUB231PS = 827,
1415     X86_INS_VFMSUBSD = 828,
1416     X86_INS_VFMSUB213SD = 829,
1417     X86_INS_VFMSUB132SD = 830,
1418     X86_INS_VFMSUB231SD = 831,
1419     X86_INS_VFMSUBSS = 832,
1420     X86_INS_VFMSUB213SS = 833,
1421     X86_INS_VFMSUB132SS = 834,
1422     X86_INS_VFMSUB231SS = 835,
1423     X86_INS_VFNMADD132PD = 836,
1424     X86_INS_VFNMADD132PS = 837,
1425     X86_INS_VFNMADDPD = 838,
1426     X86_INS_VFNMADD213PD = 839,
1427     X86_INS_VFNMADD231PD = 840,
1428     X86_INS_VFNMADDPS = 841,
1429     X86_INS_VFNMADD213PS = 842,
1430     X86_INS_VFNMADD231PS = 843,
1431     X86_INS_VFNMADDSD = 844,
1432     X86_INS_VFNMADD213SD = 845,
1433     X86_INS_VFNMADD132SD = 846,
1434     X86_INS_VFNMADD231SD = 847,
1435     X86_INS_VFNMADDSS = 848,
1436     X86_INS_VFNMADD213SS = 849,
1437     X86_INS_VFNMADD132SS = 850,
1438     X86_INS_VFNMADD231SS = 851,
1439     X86_INS_VFNMSUB132PD = 852,
1440     X86_INS_VFNMSUB132PS = 853,
1441     X86_INS_VFNMSUBPD = 854,
1442     X86_INS_VFNMSUB213PD = 855,
1443     X86_INS_VFNMSUB231PD = 856,
1444     X86_INS_VFNMSUBPS = 857,
1445     X86_INS_VFNMSUB213PS = 858,
1446     X86_INS_VFNMSUB231PS = 859,
1447     X86_INS_VFNMSUBSD = 860,
1448     X86_INS_VFNMSUB213SD = 861,
1449     X86_INS_VFNMSUB132SD = 862,
1450     X86_INS_VFNMSUB231SD = 863,
1451     X86_INS_VFNMSUBSS = 864,
1452     X86_INS_VFNMSUB213SS = 865,
1453     X86_INS_VFNMSUB132SS = 866,
1454     X86_INS_VFNMSUB231SS = 867,
1455     X86_INS_VFRCZPD = 868,
1456     X86_INS_VFRCZPS = 869,
1457     X86_INS_VFRCZSD = 870,
1458     X86_INS_VFRCZSS = 871,
1459     X86_INS_VORPD = 872,
1460     X86_INS_VORPS = 873,
1461     X86_INS_VXORPD = 874,
1462     X86_INS_VXORPS = 875,
1463     X86_INS_VGATHERDPD = 876,
1464     X86_INS_VGATHERDPS = 877,
1465     X86_INS_VGATHERPF0DPD = 878,
1466     X86_INS_VGATHERPF0DPS = 879,
1467     X86_INS_VGATHERPF0QPD = 880,
1468     X86_INS_VGATHERPF0QPS = 881,
1469     X86_INS_VGATHERPF1DPD = 882,
1470     X86_INS_VGATHERPF1DPS = 883,
1471     X86_INS_VGATHERPF1QPD = 884,
1472     X86_INS_VGATHERPF1QPS = 885,
1473     X86_INS_VGATHERQPD = 886,
1474     X86_INS_VGATHERQPS = 887,
1475     X86_INS_VHADDPD = 888,
1476     X86_INS_VHADDPS = 889,
1477     X86_INS_VHSUBPD = 890,
1478     X86_INS_VHSUBPS = 891,
1479     X86_INS_VINSERTF128 = 892,
1480     X86_INS_VINSERTF32X4 = 893,
1481     X86_INS_VINSERTF32X8 = 894,
1482     X86_INS_VINSERTF64X2 = 895,
1483     X86_INS_VINSERTF64X4 = 896,
1484     X86_INS_VINSERTI128 = 897,
1485     X86_INS_VINSERTI32X4 = 898,
1486     X86_INS_VINSERTI32X8 = 899,
1487     X86_INS_VINSERTI64X2 = 900,
1488     X86_INS_VINSERTI64X4 = 901,
1489     X86_INS_VINSERTPS = 902,
1490     X86_INS_VLDDQU = 903,
1491     X86_INS_VLDMXCSR = 904,
1492     X86_INS_VMASKMOVDQU = 905,
1493     X86_INS_VMASKMOVPD = 906,
1494     X86_INS_VMASKMOVPS = 907,
1495     X86_INS_VMAXPD = 908,
1496     X86_INS_VMAXPS = 909,
1497     X86_INS_VMAXSD = 910,
1498     X86_INS_VMAXSS = 911,
1499     X86_INS_VMCALL = 912,
1500     X86_INS_VMCLEAR = 913,
1501     X86_INS_VMFUNC = 914,
1502     X86_INS_VMINPD = 915,
1503     X86_INS_VMINPS = 916,
1504     X86_INS_VMINSD = 917,
1505     X86_INS_VMINSS = 918,
1506     X86_INS_VMLAUNCH = 919,
1507     X86_INS_VMLOAD = 920,
1508     X86_INS_VMMCALL = 921,
1509     X86_INS_VMOVQ = 922,
1510     X86_INS_VMOVDDUP = 923,
1511     X86_INS_VMOVD = 924,
1512     X86_INS_VMOVDQA32 = 925,
1513     X86_INS_VMOVDQA64 = 926,
1514     X86_INS_VMOVDQA = 927,
1515     X86_INS_VMOVDQU16 = 928,
1516     X86_INS_VMOVDQU32 = 929,
1517     X86_INS_VMOVDQU64 = 930,
1518     X86_INS_VMOVDQU8 = 931,
1519     X86_INS_VMOVDQU = 932,
1520     X86_INS_VMOVHLPS = 933,
1521     X86_INS_VMOVHPD = 934,
1522     X86_INS_VMOVHPS = 935,
1523     X86_INS_VMOVLHPS = 936,
1524     X86_INS_VMOVLPD = 937,
1525     X86_INS_VMOVLPS = 938,
1526     X86_INS_VMOVMSKPD = 939,
1527     X86_INS_VMOVMSKPS = 940,
1528     X86_INS_VMOVNTDQA = 941,
1529     X86_INS_VMOVNTDQ = 942,
1530     X86_INS_VMOVNTPD = 943,
1531     X86_INS_VMOVNTPS = 944,
1532     X86_INS_VMOVSD = 945,
1533     X86_INS_VMOVSHDUP = 946,
1534     X86_INS_VMOVSLDUP = 947,
1535     X86_INS_VMOVSS = 948,
1536     X86_INS_VMOVUPD = 949,
1537     X86_INS_VMOVUPS = 950,
1538     X86_INS_VMPSADBW = 951,
1539     X86_INS_VMPTRLD = 952,
1540     X86_INS_VMPTRST = 953,
1541     X86_INS_VMREAD = 954,
1542     X86_INS_VMRESUME = 955,
1543     X86_INS_VMRUN = 956,
1544     X86_INS_VMSAVE = 957,
1545     X86_INS_VMULPD = 958,
1546     X86_INS_VMULPS = 959,
1547     X86_INS_VMULSD = 960,
1548     X86_INS_VMULSS = 961,
1549     X86_INS_VMWRITE = 962,
1550     X86_INS_VMXOFF = 963,
1551     X86_INS_VMXON = 964,
1552     X86_INS_VPABSB = 965,
1553     X86_INS_VPABSD = 966,
1554     X86_INS_VPABSQ = 967,
1555     X86_INS_VPABSW = 968,
1556     X86_INS_VPACKSSDW = 969,
1557     X86_INS_VPACKSSWB = 970,
1558     X86_INS_VPACKUSDW = 971,
1559     X86_INS_VPACKUSWB = 972,
1560     X86_INS_VPADDB = 973,
1561     X86_INS_VPADDD = 974,
1562     X86_INS_VPADDQ = 975,
1563     X86_INS_VPADDSB = 976,
1564     X86_INS_VPADDSW = 977,
1565     X86_INS_VPADDUSB = 978,
1566     X86_INS_VPADDUSW = 979,
1567     X86_INS_VPADDW = 980,
1568     X86_INS_VPALIGNR = 981,
1569     X86_INS_VPANDD = 982,
1570     X86_INS_VPANDND = 983,
1571     X86_INS_VPANDNQ = 984,
1572     X86_INS_VPANDN = 985,
1573     X86_INS_VPANDQ = 986,
1574     X86_INS_VPAND = 987,
1575     X86_INS_VPAVGB = 988,
1576     X86_INS_VPAVGW = 989,
1577     X86_INS_VPBLENDD = 990,
1578     X86_INS_VPBLENDMB = 991,
1579     X86_INS_VPBLENDMD = 992,
1580     X86_INS_VPBLENDMQ = 993,
1581     X86_INS_VPBLENDMW = 994,
1582     X86_INS_VPBLENDVB = 995,
1583     X86_INS_VPBLENDW = 996,
1584     X86_INS_VPBROADCASTB = 997,
1585     X86_INS_VPBROADCASTD = 998,
1586     X86_INS_VPBROADCASTMB2Q = 999,
1587     X86_INS_VPBROADCASTMW2D = 1000,
1588     X86_INS_VPBROADCASTQ = 1001,
1589     X86_INS_VPBROADCASTW = 1002,
1590     X86_INS_VPCLMULQDQ = 1003,
1591     X86_INS_VPCMOV = 1004,
1592     X86_INS_VPCMPB = 1005,
1593     X86_INS_VPCMPD = 1006,
1594     X86_INS_VPCMPEQB = 1007,
1595     X86_INS_VPCMPEQD = 1008,
1596     X86_INS_VPCMPEQQ = 1009,
1597     X86_INS_VPCMPEQW = 1010,
1598     X86_INS_VPCMPESTRI = 1011,
1599     X86_INS_VPCMPESTRM = 1012,
1600     X86_INS_VPCMPGTB = 1013,
1601     X86_INS_VPCMPGTD = 1014,
1602     X86_INS_VPCMPGTQ = 1015,
1603     X86_INS_VPCMPGTW = 1016,
1604     X86_INS_VPCMPISTRI = 1017,
1605     X86_INS_VPCMPISTRM = 1018,
1606     X86_INS_VPCMPQ = 1019,
1607     X86_INS_VPCMPUB = 1020,
1608     X86_INS_VPCMPUD = 1021,
1609     X86_INS_VPCMPUQ = 1022,
1610     X86_INS_VPCMPUW = 1023,
1611     X86_INS_VPCMPW = 1024,
1612     X86_INS_VPCOMB = 1025,
1613     X86_INS_VPCOMD = 1026,
1614     X86_INS_VPCOMPRESSD = 1027,
1615     X86_INS_VPCOMPRESSQ = 1028,
1616     X86_INS_VPCOMQ = 1029,
1617     X86_INS_VPCOMUB = 1030,
1618     X86_INS_VPCOMUD = 1031,
1619     X86_INS_VPCOMUQ = 1032,
1620     X86_INS_VPCOMUW = 1033,
1621     X86_INS_VPCOMW = 1034,
1622     X86_INS_VPCONFLICTD = 1035,
1623     X86_INS_VPCONFLICTQ = 1036,
1624     X86_INS_VPERM2F128 = 1037,
1625     X86_INS_VPERM2I128 = 1038,
1626     X86_INS_VPERMD = 1039,
1627     X86_INS_VPERMI2D = 1040,
1628     X86_INS_VPERMI2PD = 1041,
1629     X86_INS_VPERMI2PS = 1042,
1630     X86_INS_VPERMI2Q = 1043,
1631     X86_INS_VPERMIL2PD = 1044,
1632     X86_INS_VPERMIL2PS = 1045,
1633     X86_INS_VPERMILPD = 1046,
1634     X86_INS_VPERMILPS = 1047,
1635     X86_INS_VPERMPD = 1048,
1636     X86_INS_VPERMPS = 1049,
1637     X86_INS_VPERMQ = 1050,
1638     X86_INS_VPERMT2D = 1051,
1639     X86_INS_VPERMT2PD = 1052,
1640     X86_INS_VPERMT2PS = 1053,
1641     X86_INS_VPERMT2Q = 1054,
1642     X86_INS_VPEXPANDD = 1055,
1643     X86_INS_VPEXPANDQ = 1056,
1644     X86_INS_VPEXTRB = 1057,
1645     X86_INS_VPEXTRD = 1058,
1646     X86_INS_VPEXTRQ = 1059,
1647     X86_INS_VPEXTRW = 1060,
1648     X86_INS_VPGATHERDD = 1061,
1649     X86_INS_VPGATHERDQ = 1062,
1650     X86_INS_VPGATHERQD = 1063,
1651     X86_INS_VPGATHERQQ = 1064,
1652     X86_INS_VPHADDBD = 1065,
1653     X86_INS_VPHADDBQ = 1066,
1654     X86_INS_VPHADDBW = 1067,
1655     X86_INS_VPHADDDQ = 1068,
1656     X86_INS_VPHADDD = 1069,
1657     X86_INS_VPHADDSW = 1070,
1658     X86_INS_VPHADDUBD = 1071,
1659     X86_INS_VPHADDUBQ = 1072,
1660     X86_INS_VPHADDUBW = 1073,
1661     X86_INS_VPHADDUDQ = 1074,
1662     X86_INS_VPHADDUWD = 1075,
1663     X86_INS_VPHADDUWQ = 1076,
1664     X86_INS_VPHADDWD = 1077,
1665     X86_INS_VPHADDWQ = 1078,
1666     X86_INS_VPHADDW = 1079,
1667     X86_INS_VPHMINPOSUW = 1080,
1668     X86_INS_VPHSUBBW = 1081,
1669     X86_INS_VPHSUBDQ = 1082,
1670     X86_INS_VPHSUBD = 1083,
1671     X86_INS_VPHSUBSW = 1084,
1672     X86_INS_VPHSUBWD = 1085,
1673     X86_INS_VPHSUBW = 1086,
1674     X86_INS_VPINSRB = 1087,
1675     X86_INS_VPINSRD = 1088,
1676     X86_INS_VPINSRQ = 1089,
1677     X86_INS_VPINSRW = 1090,
1678     X86_INS_VPLZCNTD = 1091,
1679     X86_INS_VPLZCNTQ = 1092,
1680     X86_INS_VPMACSDD = 1093,
1681     X86_INS_VPMACSDQH = 1094,
1682     X86_INS_VPMACSDQL = 1095,
1683     X86_INS_VPMACSSDD = 1096,
1684     X86_INS_VPMACSSDQH = 1097,
1685     X86_INS_VPMACSSDQL = 1098,
1686     X86_INS_VPMACSSWD = 1099,
1687     X86_INS_VPMACSSWW = 1100,
1688     X86_INS_VPMACSWD = 1101,
1689     X86_INS_VPMACSWW = 1102,
1690     X86_INS_VPMADCSSWD = 1103,
1691     X86_INS_VPMADCSWD = 1104,
1692     X86_INS_VPMADDUBSW = 1105,
1693     X86_INS_VPMADDWD = 1106,
1694     X86_INS_VPMASKMOVD = 1107,
1695     X86_INS_VPMASKMOVQ = 1108,
1696     X86_INS_VPMAXSB = 1109,
1697     X86_INS_VPMAXSD = 1110,
1698     X86_INS_VPMAXSQ = 1111,
1699     X86_INS_VPMAXSW = 1112,
1700     X86_INS_VPMAXUB = 1113,
1701     X86_INS_VPMAXUD = 1114,
1702     X86_INS_VPMAXUQ = 1115,
1703     X86_INS_VPMAXUW = 1116,
1704     X86_INS_VPMINSB = 1117,
1705     X86_INS_VPMINSD = 1118,
1706     X86_INS_VPMINSQ = 1119,
1707     X86_INS_VPMINSW = 1120,
1708     X86_INS_VPMINUB = 1121,
1709     X86_INS_VPMINUD = 1122,
1710     X86_INS_VPMINUQ = 1123,
1711     X86_INS_VPMINUW = 1124,
1712     X86_INS_VPMOVDB = 1125,
1713     X86_INS_VPMOVDW = 1126,
1714     X86_INS_VPMOVM2B = 1127,
1715     X86_INS_VPMOVM2D = 1128,
1716     X86_INS_VPMOVM2Q = 1129,
1717     X86_INS_VPMOVM2W = 1130,
1718     X86_INS_VPMOVMSKB = 1131,
1719     X86_INS_VPMOVQB = 1132,
1720     X86_INS_VPMOVQD = 1133,
1721     X86_INS_VPMOVQW = 1134,
1722     X86_INS_VPMOVSDB = 1135,
1723     X86_INS_VPMOVSDW = 1136,
1724     X86_INS_VPMOVSQB = 1137,
1725     X86_INS_VPMOVSQD = 1138,
1726     X86_INS_VPMOVSQW = 1139,
1727     X86_INS_VPMOVSXBD = 1140,
1728     X86_INS_VPMOVSXBQ = 1141,
1729     X86_INS_VPMOVSXBW = 1142,
1730     X86_INS_VPMOVSXDQ = 1143,
1731     X86_INS_VPMOVSXWD = 1144,
1732     X86_INS_VPMOVSXWQ = 1145,
1733     X86_INS_VPMOVUSDB = 1146,
1734     X86_INS_VPMOVUSDW = 1147,
1735     X86_INS_VPMOVUSQB = 1148,
1736     X86_INS_VPMOVUSQD = 1149,
1737     X86_INS_VPMOVUSQW = 1150,
1738     X86_INS_VPMOVZXBD = 1151,
1739     X86_INS_VPMOVZXBQ = 1152,
1740     X86_INS_VPMOVZXBW = 1153,
1741     X86_INS_VPMOVZXDQ = 1154,
1742     X86_INS_VPMOVZXWD = 1155,
1743     X86_INS_VPMOVZXWQ = 1156,
1744     X86_INS_VPMULDQ = 1157,
1745     X86_INS_VPMULHRSW = 1158,
1746     X86_INS_VPMULHUW = 1159,
1747     X86_INS_VPMULHW = 1160,
1748     X86_INS_VPMULLD = 1161,
1749     X86_INS_VPMULLQ = 1162,
1750     X86_INS_VPMULLW = 1163,
1751     X86_INS_VPMULUDQ = 1164,
1752     X86_INS_VPORD = 1165,
1753     X86_INS_VPORQ = 1166,
1754     X86_INS_VPOR = 1167,
1755     X86_INS_VPPERM = 1168,
1756     X86_INS_VPROTB = 1169,
1757     X86_INS_VPROTD = 1170,
1758     X86_INS_VPROTQ = 1171,
1759     X86_INS_VPROTW = 1172,
1760     X86_INS_VPSADBW = 1173,
1761     X86_INS_VPSCATTERDD = 1174,
1762     X86_INS_VPSCATTERDQ = 1175,
1763     X86_INS_VPSCATTERQD = 1176,
1764     X86_INS_VPSCATTERQQ = 1177,
1765     X86_INS_VPSHAB = 1178,
1766     X86_INS_VPSHAD = 1179,
1767     X86_INS_VPSHAQ = 1180,
1768     X86_INS_VPSHAW = 1181,
1769     X86_INS_VPSHLB = 1182,
1770     X86_INS_VPSHLD = 1183,
1771     X86_INS_VPSHLQ = 1184,
1772     X86_INS_VPSHLW = 1185,
1773     X86_INS_VPSHUFB = 1186,
1774     X86_INS_VPSHUFD = 1187,
1775     X86_INS_VPSHUFHW = 1188,
1776     X86_INS_VPSHUFLW = 1189,
1777     X86_INS_VPSIGNB = 1190,
1778     X86_INS_VPSIGND = 1191,
1779     X86_INS_VPSIGNW = 1192,
1780     X86_INS_VPSLLDQ = 1193,
1781     X86_INS_VPSLLD = 1194,
1782     X86_INS_VPSLLQ = 1195,
1783     X86_INS_VPSLLVD = 1196,
1784     X86_INS_VPSLLVQ = 1197,
1785     X86_INS_VPSLLW = 1198,
1786     X86_INS_VPSRAD = 1199,
1787     X86_INS_VPSRAQ = 1200,
1788     X86_INS_VPSRAVD = 1201,
1789     X86_INS_VPSRAVQ = 1202,
1790     X86_INS_VPSRAW = 1203,
1791     X86_INS_VPSRLDQ = 1204,
1792     X86_INS_VPSRLD = 1205,
1793     X86_INS_VPSRLQ = 1206,
1794     X86_INS_VPSRLVD = 1207,
1795     X86_INS_VPSRLVQ = 1208,
1796     X86_INS_VPSRLW = 1209,
1797     X86_INS_VPSUBB = 1210,
1798     X86_INS_VPSUBD = 1211,
1799     X86_INS_VPSUBQ = 1212,
1800     X86_INS_VPSUBSB = 1213,
1801     X86_INS_VPSUBSW = 1214,
1802     X86_INS_VPSUBUSB = 1215,
1803     X86_INS_VPSUBUSW = 1216,
1804     X86_INS_VPSUBW = 1217,
1805     X86_INS_VPTESTMD = 1218,
1806     X86_INS_VPTESTMQ = 1219,
1807     X86_INS_VPTESTNMD = 1220,
1808     X86_INS_VPTESTNMQ = 1221,
1809     X86_INS_VPTEST = 1222,
1810     X86_INS_VPUNPCKHBW = 1223,
1811     X86_INS_VPUNPCKHDQ = 1224,
1812     X86_INS_VPUNPCKHQDQ = 1225,
1813     X86_INS_VPUNPCKHWD = 1226,
1814     X86_INS_VPUNPCKLBW = 1227,
1815     X86_INS_VPUNPCKLDQ = 1228,
1816     X86_INS_VPUNPCKLQDQ = 1229,
1817     X86_INS_VPUNPCKLWD = 1230,
1818     X86_INS_VPXORD = 1231,
1819     X86_INS_VPXORQ = 1232,
1820     X86_INS_VPXOR = 1233,
1821     X86_INS_VRCP14PD = 1234,
1822     X86_INS_VRCP14PS = 1235,
1823     X86_INS_VRCP14SD = 1236,
1824     X86_INS_VRCP14SS = 1237,
1825     X86_INS_VRCP28PD = 1238,
1826     X86_INS_VRCP28PS = 1239,
1827     X86_INS_VRCP28SD = 1240,
1828     X86_INS_VRCP28SS = 1241,
1829     X86_INS_VRCPPS = 1242,
1830     X86_INS_VRCPSS = 1243,
1831     X86_INS_VRNDSCALEPD = 1244,
1832     X86_INS_VRNDSCALEPS = 1245,
1833     X86_INS_VRNDSCALESD = 1246,
1834     X86_INS_VRNDSCALESS = 1247,
1835     X86_INS_VROUNDPD = 1248,
1836     X86_INS_VROUNDPS = 1249,
1837     X86_INS_VROUNDSD = 1250,
1838     X86_INS_VROUNDSS = 1251,
1839     X86_INS_VRSQRT14PD = 1252,
1840     X86_INS_VRSQRT14PS = 1253,
1841     X86_INS_VRSQRT14SD = 1254,
1842     X86_INS_VRSQRT14SS = 1255,
1843     X86_INS_VRSQRT28PD = 1256,
1844     X86_INS_VRSQRT28PS = 1257,
1845     X86_INS_VRSQRT28SD = 1258,
1846     X86_INS_VRSQRT28SS = 1259,
1847     X86_INS_VRSQRTPS = 1260,
1848     X86_INS_VRSQRTSS = 1261,
1849     X86_INS_VSCATTERDPD = 1262,
1850     X86_INS_VSCATTERDPS = 1263,
1851     X86_INS_VSCATTERPF0DPD = 1264,
1852     X86_INS_VSCATTERPF0DPS = 1265,
1853     X86_INS_VSCATTERPF0QPD = 1266,
1854     X86_INS_VSCATTERPF0QPS = 1267,
1855     X86_INS_VSCATTERPF1DPD = 1268,
1856     X86_INS_VSCATTERPF1DPS = 1269,
1857     X86_INS_VSCATTERPF1QPD = 1270,
1858     X86_INS_VSCATTERPF1QPS = 1271,
1859     X86_INS_VSCATTERQPD = 1272,
1860     X86_INS_VSCATTERQPS = 1273,
1861     X86_INS_VSHUFPD = 1274,
1862     X86_INS_VSHUFPS = 1275,
1863     X86_INS_VSQRTPD = 1276,
1864     X86_INS_VSQRTPS = 1277,
1865     X86_INS_VSQRTSD = 1278,
1866     X86_INS_VSQRTSS = 1279,
1867     X86_INS_VSTMXCSR = 1280,
1868     X86_INS_VSUBPD = 1281,
1869     X86_INS_VSUBPS = 1282,
1870     X86_INS_VSUBSD = 1283,
1871     X86_INS_VSUBSS = 1284,
1872     X86_INS_VTESTPD = 1285,
1873     X86_INS_VTESTPS = 1286,
1874     X86_INS_VUNPCKHPD = 1287,
1875     X86_INS_VUNPCKHPS = 1288,
1876     X86_INS_VUNPCKLPD = 1289,
1877     X86_INS_VUNPCKLPS = 1290,
1878     X86_INS_VZEROALL = 1291,
1879     X86_INS_VZEROUPPER = 1292,
1880     X86_INS_WAIT = 1293,
1881     X86_INS_WBINVD = 1294,
1882     X86_INS_WRFSBASE = 1295,
1883     X86_INS_WRGSBASE = 1296,
1884     X86_INS_WRMSR = 1297,
1885     X86_INS_XABORT = 1298,
1886     X86_INS_XACQUIRE = 1299,
1887     X86_INS_XBEGIN = 1300,
1888     X86_INS_XCHG = 1301,
1889     X86_INS_XCRYPTCBC = 1302,
1890     X86_INS_XCRYPTCFB = 1303,
1891     X86_INS_XCRYPTCTR = 1304,
1892     X86_INS_XCRYPTECB = 1305,
1893     X86_INS_XCRYPTOFB = 1306,
1894     X86_INS_XEND = 1307,
1895     X86_INS_XGETBV = 1308,
1896     X86_INS_XLATB = 1309,
1897     X86_INS_XRELEASE = 1310,
1898     X86_INS_XRSTOR = 1311,
1899     X86_INS_XRSTOR64 = 1312,
1900     X86_INS_XRSTORS = 1313,
1901     X86_INS_XRSTORS64 = 1314,
1902     X86_INS_XSAVE = 1315,
1903     X86_INS_XSAVE64 = 1316,
1904     X86_INS_XSAVEC = 1317,
1905     X86_INS_XSAVEC64 = 1318,
1906     X86_INS_XSAVEOPT = 1319,
1907     X86_INS_XSAVEOPT64 = 1320,
1908     X86_INS_XSAVES = 1321,
1909     X86_INS_XSAVES64 = 1322,
1910     X86_INS_XSETBV = 1323,
1911     X86_INS_XSHA1 = 1324,
1912     X86_INS_XSHA256 = 1325,
1913     X86_INS_XSTORE = 1326,
1914     X86_INS_XTEST = 1327,
1915     X86_INS_FDISI8087_NOP = 1328,
1916     X86_INS_FENI8087_NOP = 1329,
1917 
1918     // pseudo instructions
1919     X86_INS_CMPSS = 1330,
1920     X86_INS_CMPEQSS = 1331,
1921     X86_INS_CMPLTSS = 1332,
1922     X86_INS_CMPLESS = 1333,
1923     X86_INS_CMPUNORDSS = 1334,
1924     X86_INS_CMPNEQSS = 1335,
1925     X86_INS_CMPNLTSS = 1336,
1926     X86_INS_CMPNLESS = 1337,
1927     X86_INS_CMPORDSS = 1338,
1928 
1929     X86_INS_CMPSD = 1339,
1930     X86_INS_CMPEQSD = 1340,
1931     X86_INS_CMPLTSD = 1341,
1932     X86_INS_CMPLESD = 1342,
1933     X86_INS_CMPUNORDSD = 1343,
1934     X86_INS_CMPNEQSD = 1344,
1935     X86_INS_CMPNLTSD = 1345,
1936     X86_INS_CMPNLESD = 1346,
1937     X86_INS_CMPORDSD = 1347,
1938 
1939     X86_INS_CMPPS = 1348,
1940     X86_INS_CMPEQPS = 1349,
1941     X86_INS_CMPLTPS = 1350,
1942     X86_INS_CMPLEPS = 1351,
1943     X86_INS_CMPUNORDPS = 1352,
1944     X86_INS_CMPNEQPS = 1353,
1945     X86_INS_CMPNLTPS = 1354,
1946     X86_INS_CMPNLEPS = 1355,
1947     X86_INS_CMPORDPS = 1356,
1948 
1949     X86_INS_CMPPD = 1357,
1950     X86_INS_CMPEQPD = 1358,
1951     X86_INS_CMPLTPD = 1359,
1952     X86_INS_CMPLEPD = 1360,
1953     X86_INS_CMPUNORDPD = 1361,
1954     X86_INS_CMPNEQPD = 1362,
1955     X86_INS_CMPNLTPD = 1363,
1956     X86_INS_CMPNLEPD = 1364,
1957     X86_INS_CMPORDPD = 1365,
1958 
1959     X86_INS_VCMPSS = 1366,
1960     X86_INS_VCMPEQSS = 1367,
1961     X86_INS_VCMPLTSS = 1368,
1962     X86_INS_VCMPLESS = 1369,
1963     X86_INS_VCMPUNORDSS = 1370,
1964     X86_INS_VCMPNEQSS = 1371,
1965     X86_INS_VCMPNLTSS = 1372,
1966     X86_INS_VCMPNLESS = 1373,
1967     X86_INS_VCMPORDSS = 1374,
1968     X86_INS_VCMPEQ_UQSS = 1375,
1969     X86_INS_VCMPNGESS = 1376,
1970     X86_INS_VCMPNGTSS = 1377,
1971     X86_INS_VCMPFALSESS = 1378,
1972     X86_INS_VCMPNEQ_OQSS = 1379,
1973     X86_INS_VCMPGESS = 1380,
1974     X86_INS_VCMPGTSS = 1381,
1975     X86_INS_VCMPTRUESS = 1382,
1976     X86_INS_VCMPEQ_OSSS = 1383,
1977     X86_INS_VCMPLT_OQSS = 1384,
1978     X86_INS_VCMPLE_OQSS = 1385,
1979     X86_INS_VCMPUNORD_SSS = 1386,
1980     X86_INS_VCMPNEQ_USSS = 1387,
1981     X86_INS_VCMPNLT_UQSS = 1388,
1982     X86_INS_VCMPNLE_UQSS = 1389,
1983     X86_INS_VCMPORD_SSS = 1390,
1984     X86_INS_VCMPEQ_USSS = 1391,
1985     X86_INS_VCMPNGE_UQSS = 1392,
1986     X86_INS_VCMPNGT_UQSS = 1393,
1987     X86_INS_VCMPFALSE_OSSS = 1394,
1988     X86_INS_VCMPNEQ_OSSS = 1395,
1989     X86_INS_VCMPGE_OQSS = 1396,
1990     X86_INS_VCMPGT_OQSS = 1397,
1991     X86_INS_VCMPTRUE_USSS = 1398,
1992 
1993     X86_INS_VCMPSD = 1399,
1994     X86_INS_VCMPEQSD = 1400,
1995     X86_INS_VCMPLTSD = 1401,
1996     X86_INS_VCMPLESD = 1402,
1997     X86_INS_VCMPUNORDSD = 1403,
1998     X86_INS_VCMPNEQSD = 1404,
1999     X86_INS_VCMPNLTSD = 1405,
2000     X86_INS_VCMPNLESD = 1406,
2001     X86_INS_VCMPORDSD = 1407,
2002     X86_INS_VCMPEQ_UQSD = 1408,
2003     X86_INS_VCMPNGESD = 1409,
2004     X86_INS_VCMPNGTSD = 1410,
2005     X86_INS_VCMPFALSESD = 1411,
2006     X86_INS_VCMPNEQ_OQSD = 1412,
2007     X86_INS_VCMPGESD = 1413,
2008     X86_INS_VCMPGTSD = 1414,
2009     X86_INS_VCMPTRUESD = 1415,
2010     X86_INS_VCMPEQ_OSSD = 1416,
2011     X86_INS_VCMPLT_OQSD = 1417,
2012     X86_INS_VCMPLE_OQSD = 1418,
2013     X86_INS_VCMPUNORD_SSD = 1419,
2014     X86_INS_VCMPNEQ_USSD = 1420,
2015     X86_INS_VCMPNLT_UQSD = 1421,
2016     X86_INS_VCMPNLE_UQSD = 1422,
2017     X86_INS_VCMPORD_SSD = 1423,
2018     X86_INS_VCMPEQ_USSD = 1424,
2019     X86_INS_VCMPNGE_UQSD = 1425,
2020     X86_INS_VCMPNGT_UQSD = 1426,
2021     X86_INS_VCMPFALSE_OSSD = 1427,
2022     X86_INS_VCMPNEQ_OSSD = 1428,
2023     X86_INS_VCMPGE_OQSD = 1429,
2024     X86_INS_VCMPGT_OQSD = 1430,
2025     X86_INS_VCMPTRUE_USSD = 1431,
2026 
2027     X86_INS_VCMPPS = 1432,
2028     X86_INS_VCMPEQPS = 1433,
2029     X86_INS_VCMPLTPS = 1434,
2030     X86_INS_VCMPLEPS = 1435,
2031     X86_INS_VCMPUNORDPS = 1436,
2032     X86_INS_VCMPNEQPS = 1437,
2033     X86_INS_VCMPNLTPS = 1438,
2034     X86_INS_VCMPNLEPS = 1439,
2035     X86_INS_VCMPORDPS = 1440,
2036     X86_INS_VCMPEQ_UQPS = 1441,
2037     X86_INS_VCMPNGEPS = 1442,
2038     X86_INS_VCMPNGTPS = 1443,
2039     X86_INS_VCMPFALSEPS = 1444,
2040     X86_INS_VCMPNEQ_OQPS = 1445,
2041     X86_INS_VCMPGEPS = 1446,
2042     X86_INS_VCMPGTPS = 1447,
2043     X86_INS_VCMPTRUEPS = 1448,
2044     X86_INS_VCMPEQ_OSPS = 1449,
2045     X86_INS_VCMPLT_OQPS = 1450,
2046     X86_INS_VCMPLE_OQPS = 1451,
2047     X86_INS_VCMPUNORD_SPS = 1452,
2048     X86_INS_VCMPNEQ_USPS = 1453,
2049     X86_INS_VCMPNLT_UQPS = 1454,
2050     X86_INS_VCMPNLE_UQPS = 1455,
2051     X86_INS_VCMPORD_SPS = 1456,
2052     X86_INS_VCMPEQ_USPS = 1457,
2053     X86_INS_VCMPNGE_UQPS = 1458,
2054     X86_INS_VCMPNGT_UQPS = 1459,
2055     X86_INS_VCMPFALSE_OSPS = 1460,
2056     X86_INS_VCMPNEQ_OSPS = 1461,
2057     X86_INS_VCMPGE_OQPS = 1462,
2058     X86_INS_VCMPGT_OQPS = 1463,
2059     X86_INS_VCMPTRUE_USPS = 1464,
2060 
2061     X86_INS_VCMPPD = 1465,
2062     X86_INS_VCMPEQPD = 1466,
2063     X86_INS_VCMPLTPD = 1467,
2064     X86_INS_VCMPLEPD = 1468,
2065     X86_INS_VCMPUNORDPD = 1469,
2066     X86_INS_VCMPNEQPD = 1470,
2067     X86_INS_VCMPNLTPD = 1471,
2068     X86_INS_VCMPNLEPD = 1472,
2069     X86_INS_VCMPORDPD = 1473,
2070     X86_INS_VCMPEQ_UQPD = 1474,
2071     X86_INS_VCMPNGEPD = 1475,
2072     X86_INS_VCMPNGTPD = 1476,
2073     X86_INS_VCMPFALSEPD = 1477,
2074     X86_INS_VCMPNEQ_OQPD = 1478,
2075     X86_INS_VCMPGEPD = 1479,
2076     X86_INS_VCMPGTPD = 1480,
2077     X86_INS_VCMPTRUEPD = 1481,
2078     X86_INS_VCMPEQ_OSPD = 1482,
2079     X86_INS_VCMPLT_OQPD = 1483,
2080     X86_INS_VCMPLE_OQPD = 1484,
2081     X86_INS_VCMPUNORD_SPD = 1485,
2082     X86_INS_VCMPNEQ_USPD = 1486,
2083     X86_INS_VCMPNLT_UQPD = 1487,
2084     X86_INS_VCMPNLE_UQPD = 1488,
2085     X86_INS_VCMPORD_SPD = 1489,
2086     X86_INS_VCMPEQ_USPD = 1490,
2087     X86_INS_VCMPNGE_UQPD = 1491,
2088     X86_INS_VCMPNGT_UQPD = 1492,
2089     X86_INS_VCMPFALSE_OSPD = 1493,
2090     X86_INS_VCMPNEQ_OSPD = 1494,
2091     X86_INS_VCMPGE_OQPD = 1495,
2092     X86_INS_VCMPGT_OQPD = 1496,
2093     X86_INS_VCMPTRUE_USPD = 1497,
2094 
2095     X86_INS_UD0 = 1498,
2096     X86_INS_ENDBR32 = 1499,
2097     X86_INS_ENDBR64 = 1500,
2098 
2099     X86_INS_ENDING = 1501 // mark the end of the list of insn
2100 }
2101 
2102 /// Group of X86 instructions
2103 enum x86_insn_group
2104 {
2105     X86_GRP_INVALID = 0, ///< = CS_GRP_INVALID
2106 
2107     // Generic groups
2108     // all jump instructions (conditional+direct+indirect jumps)
2109     X86_GRP_JUMP = 1, ///< = CS_GRP_JUMP
2110     // all call instructions
2111     X86_GRP_CALL = 2, ///< = CS_GRP_CALL
2112     // all return instructions
2113     X86_GRP_RET = 3, ///< = CS_GRP_RET
2114     // all interrupt instructions (int+syscall)
2115     X86_GRP_INT = 4, ///< = CS_GRP_INT
2116     // all interrupt return instructions
2117     X86_GRP_IRET = 5, ///< = CS_GRP_IRET
2118     // all privileged instructions
2119     X86_GRP_PRIVILEGE = 6, ///< = CS_GRP_PRIVILEGE
2120     // all relative branching instructions
2121     X86_GRP_BRANCH_RELATIVE = 7, ///< = CS_GRP_BRANCH_RELATIVE
2122 
2123     // Architecture-specific groups
2124     X86_GRP_VM = 128, ///< all virtualization instructions (VT-x + AMD-V)
2125     X86_GRP_3DNOW = 129,
2126     X86_GRP_AES = 130,
2127     X86_GRP_ADX = 131,
2128     X86_GRP_AVX = 132,
2129     X86_GRP_AVX2 = 133,
2130     X86_GRP_AVX512 = 134,
2131     X86_GRP_BMI = 135,
2132     X86_GRP_BMI2 = 136,
2133     X86_GRP_CMOV = 137,
2134     X86_GRP_F16C = 138,
2135     X86_GRP_FMA = 139,
2136     X86_GRP_FMA4 = 140,
2137     X86_GRP_FSGSBASE = 141,
2138     X86_GRP_HLE = 142,
2139     X86_GRP_MMX = 143,
2140     X86_GRP_MODE32 = 144,
2141     X86_GRP_MODE64 = 145,
2142     X86_GRP_RTM = 146,
2143     X86_GRP_SHA = 147,
2144     X86_GRP_SSE1 = 148,
2145     X86_GRP_SSE2 = 149,
2146     X86_GRP_SSE3 = 150,
2147     X86_GRP_SSE41 = 151,
2148     X86_GRP_SSE42 = 152,
2149     X86_GRP_SSE4A = 153,
2150     X86_GRP_SSSE3 = 154,
2151     X86_GRP_PCLMUL = 155,
2152     X86_GRP_XOP = 156,
2153     X86_GRP_CDI = 157,
2154     X86_GRP_ERI = 158,
2155     X86_GRP_TBM = 159,
2156     X86_GRP_16BITMODE = 160,
2157     X86_GRP_NOT64BITMODE = 161,
2158     X86_GRP_SGX = 162,
2159     X86_GRP_DQI = 163,
2160     X86_GRP_BWI = 164,
2161     X86_GRP_PFI = 165,
2162     X86_GRP_VLX = 166,
2163     X86_GRP_SMAP = 167,
2164     X86_GRP_NOVLX = 168,
2165     X86_GRP_FPU = 169,
2166 
2167     X86_GRP_ENDING = 170
2168 }