
Mnemonics = {
0xb: "ADD", 0x10: "PUSH", 0x16: "POP", 0x1b: "OR", 0x1f: "ADC", 0x24: "SBB",
0x29: "AND", 0x2e: "DAA", 0x33: "SUB", 0x38: "DAS", 0x3d: "XOR", 0x42: "AAA",
0x47: "CMP", 0x4c: "AAS", 0x51: "INC", 0x56: "DEC", 0x5b: "PUSHA", 0x62: "POPA",
0x68: "BOUND", 0x6f: "ARPL", 0x75: "IMUL", 0x7b: "INS", 0x80: "OUTS", 0x86: "JO",
0x8a: "JNO", 0x8f: "JB", 0x93: "JAE", 0x98: "JZ", 0x9c: "JNZ", 0xa1: "JBE",
0xa6: "JA", 0xaa: "JS", 0xae: "JNS", 0xb3: "JP", 0xb7: "JNP", 0xbc: "JL", 0xc0: "JGE",
0xc5: "JLE", 0xca: "JG", 0xce: "TEST", 0xd4: "XCHG", 0xda: "MOV", 0xdf: "LEA",
0xe4: "CBW", 0xe9: "CWDE", 0xef: "CDQE", 0xf5: "CWD", 0xfa: "CDQ", 0xff: "CQO",
0x104: "CALL FAR", 0x10e: "PUSHF", 0x115: "POPF", 0x11b: "SAHF", 0x121: "LAHF",
0x127: "MOVS", 0x12d: "CMPS", 0x133: "STOS", 0x139: "LODS", 0x13f: "SCAS",
0x145: "RET", 0x14a: "LES", 0x14f: "LDS", 0x154: "ENTER", 0x15b: "LEAVE", 0x162: "RETF",
0x168: "INT3", 0x16e: "INT", 0x173: "INTO", 0x179: "IRET", 0x17f: "AAM", 0x184: "AAD",
0x189: "SALC", 0x18f: "XLAT", 0x195: "LOOPNZ", 0x19d: "LOOPZ", 0x1a4: "LOOP",
0x1aa: "JCXZ", 0x1b0: "JECXZ", 0x1b7: "JRCXZ", 0x1be: "IN", 0x1c2: "OUT", 0x1c7: "CALL",
0x1cd: "JMP", 0x1d2: "JMP FAR", 0x1db: "INT1", 0x1e1: "HLT", 0x1e6: "CMC",
0x1eb: "CLC", 0x1f0: "STC", 0x1f5: "CLI", 0x1fa: "STI", 0x1ff: "CLD", 0x204: "STD",
0x209: "LAR", 0x20e: "LSL", 0x213: "SYSCALL", 0x21c: "CLTS", 0x222: "SYSRET",
0x22a: "INVD", 0x230: "WBINVD", 0x238: "UD2", 0x23d: "FEMMS", 0x244: "NOP",
0x249: "WRMSR", 0x250: "RDTSC", 0x257: "RDMSR", 0x25e: "RDPMC", 0x265: "SYSENTER",
0x26f: "SYSEXIT", 0x278: "GETSEC", 0x280: "CMOVO", 0x287: "CMOVNO", 0x28f: "CMOVB",
0x296: "CMOVAE", 0x29e: "CMOVZ", 0x2a5: "CMOVNZ", 0x2ad: "CMOVBE", 0x2b5: "CMOVA",
0x2bc: "CMOVS", 0x2c3: "CMOVNS", 0x2cb: "CMOVP", 0x2d2: "CMOVNP", 0x2da: "CMOVL",
0x2e1: "CMOVGE", 0x2e9: "CMOVLE", 0x2f1: "CMOVG", 0x2f8: "SETO", 0x2fe: "SETNO",
0x305: "SETB", 0x30b: "SETAE", 0x312: "SETZ", 0x318: "SETNZ", 0x31f: "SETBE",
0x326: "SETA", 0x32c: "SETS", 0x332: "SETNS", 0x339: "SETP", 0x33f: "SETNP",
0x346: "SETL", 0x34c: "SETGE", 0x353: "SETLE", 0x35a: "SETG", 0x360: "CPUID",
0x367: "BT", 0x36b: "SHLD", 0x371: "RSM", 0x376: "BTS", 0x37b: "SHRD", 0x381: "CMPXCHG",
0x38a: "LSS", 0x38f: "BTR", 0x394: "LFS", 0x399: "LGS", 0x39e: "MOVZX", 0x3a5: "BTC",
0x3aa: "MOVSX", 0x3b1: "XADD", 0x3b7: "MOVNTI", 0x3bf: "BSWAP", 0x3c6: "ROL",
0x3cb: "ROR", 0x3d0: "RCL", 0x3d5: "RCR", 0x3da: "SHL", 0x3df: "SHR", 0x3e4: "SAL",
0x3e9: "SAR", 0x3ee: "XABORT", 0x3f6: "XBEGIN", 0x3fe: "FADD", 0x404: "FMUL",
0x40a: "FCOM", 0x410: "FCOMP", 0x417: "FSUB", 0x41d: "FSUBR", 0x424: "FDIV",
0x42a: "FDIVR", 0x431: "FLD", 0x436: "FST", 0x43b: "FSTP", 0x441: "FLDENV",
0x449: "FLDCW", 0x450: "FXCH", 0x456: "FNOP", 0x45c: "FCHS", 0x462: "FABS",
0x468: "FTST", 0x46e: "FXAM", 0x474: "FLD1", 0x47a: "FLDL2T", 0x482: "FLDL2E",
0x48a: "FLDPI", 0x491: "FLDLG2", 0x499: "FLDLN2", 0x4a1: "FLDZ", 0x4a7: "F2XM1",
0x4ae: "FYL2X", 0x4b5: "FPTAN", 0x4bc: "FPATAN", 0x4c4: "FXTRACT", 0x4cd: "FPREM1",
0x4d5: "FDECSTP", 0x4de: "FINCSTP", 0x4e7: "FPREM", 0x4ee: "FYL2XP1", 0x4f7: "FSQRT",
0x4fe: "FSINCOS", 0x507: "FRNDINT", 0x510: "FSCALE", 0x518: "FSIN", 0x51e: "FCOS",
0x524: "FIADD", 0x52b: "FIMUL", 0x532: "FICOM", 0x539: "FICOMP", 0x541: "FISUB",
0x548: "FISUBR", 0x550: "FIDIV", 0x557: "FIDIVR", 0x55f: "FCMOVB", 0x567: "FCMOVE",
0x56f: "FCMOVBE", 0x578: "FCMOVU", 0x580: "FUCOMPP", 0x589: "FILD", 0x58f: "FISTTP",
0x597: "FIST", 0x59d: "FISTP", 0x5a4: "FCMOVNB", 0x5ad: "FCMOVNE", 0x5b6: "FCMOVNBE",
0x5c0: "FCMOVNU", 0x5c9: "FENI", 0x5cf: "FEDISI", 0x5d7: "FSETPM", 0x5df: "FUCOMI",
0x5e7: "FCOMI", 0x5ee: "FRSTOR", 0x5f6: "FFREE", 0x5fd: "FUCOM", 0x604: "FUCOMP",
0x60c: "FADDP", 0x613: "FMULP", 0x61a: "FCOMPP", 0x622: "FSUBRP", 0x62a: "FSUBP",
0x631: "FDIVRP", 0x639: "FDIVP", 0x640: "FBLD", 0x646: "FBSTP", 0x64d: "FUCOMIP",
0x656: "FCOMIP", 0x65e: "NOT", 0x663: "NEG", 0x668: "MUL", 0x66d: "DIV", 0x672: "IDIV",
0x678: "SLDT", 0x67e: "STR", 0x683: "LLDT", 0x689: "LTR", 0x68e: "VERR", 0x694: "VERW",
0x69a: "SGDT", 0x6a0: "SIDT", 0x6a6: "LGDT", 0x6ac: "LIDT", 0x6b2: "SMSW",
0x6b8: "LMSW", 0x6be: "INVLPG", 0x6c6: "VMCALL", 0x6ce: "VMLAUNCH", 0x6d8: "VMRESUME",
0x6e2: "VMXOFF", 0x6ea: "MONITOR", 0x6f3: "MWAIT", 0x6fa: "CLAC", 0x700: "STAC",
0x706: "XGETBV", 0x70e: "XSETBV", 0x716: "VMFUNC", 0x71e: "XEND", 0x724: "VMRUN",
0x72b: "VMMCALL", 0x734: "VMLOAD", 0x73c: "VMSAVE", 0x744: "STGI", 0x74a: "CLGI",
0x750: "SKINIT", 0x758: "INVLPGA", 0x761: "SWAPGS", 0x769: "RDTSCP", 0x771: "PREFETCH",
0x77b: "PREFETCHW", 0x786: "PI2FW", 0x78d: "PI2FD", 0x794: "PF2IW", 0x79b: "PF2ID",
0x7a2: "PFNACC", 0x7aa: "PFPNACC", 0x7b3: "PFCMPGE", 0x7bc: "PFMIN", 0x7c3: "PFRCP",
0x7ca: "PFRSQRT", 0x7d3: "PFSUB", 0x7da: "PFADD", 0x7e1: "PFCMPGT", 0x7ea: "PFMAX",
0x7f1: "PFRCPIT1", 0x7fb: "PFRSQIT1", 0x805: "PFSUBR", 0x80d: "PFACC", 0x814: "PFCMPEQ",
0x81d: "PFMUL", 0x824: "PFRCPIT2", 0x82e: "PMULHRW", 0x837: "PSWAPD", 0x83f: "PAVGUSB",
0x848: "MOVUPS", 0x850: "MOVUPD", 0x858: "MOVSS", 0x85f: "MOVSD", 0x866: "VMOVUPS",
0x86f: "VMOVUPD", 0x878: "VMOVSS", 0x880: "VMOVSD", 0x888: "MOVHLPS", 0x891: "MOVLPS",
0x899: "MOVLPD", 0x8a1: "MOVSLDUP", 0x8ab: "MOVDDUP", 0x8b4: "VMOVHLPS", 0x8be: "VMOVLPS",
0x8c7: "VMOVLPD", 0x8d0: "VMOVSLDUP", 0x8db: "VMOVDDUP", 0x8e5: "UNPCKLPS",
0x8ef: "UNPCKLPD", 0x8f9: "VUNPCKLPS", 0x904: "VUNPCKLPD", 0x90f: "UNPCKHPS",
0x919: "UNPCKHPD", 0x923: "VUNPCKHPS", 0x92e: "VUNPCKHPD", 0x939: "MOVLHPS",
0x942: "MOVHPS", 0x94a: "MOVHPD", 0x952: "MOVSHDUP", 0x95c: "VMOVLHPS", 0x966: "VMOVHPS",
0x96f: "VMOVHPD", 0x978: "VMOVSHDUP", 0x983: "PREFETCHNTA", 0x990: "PREFETCHT0",
0x99c: "PREFETCHT1", 0x9a8: "PREFETCHT2", 0x9b4: "MOVAPS", 0x9bc: "MOVAPD",
0x9c4: "VMOVAPS", 0x9cd: "VMOVAPD", 0x9d6: "CVTPI2PS", 0x9e0: "CVTPI2PD", 0x9ea: "CVTSI2SS",
0x9f4: "CVTSI2SD", 0x9fe: "VCVTSI2SS", 0xa09: "VCVTSI2SD", 0xa14: "MOVNTPS",
0xa1d: "MOVNTPD", 0xa26: "MOVNTSS", 0xa2f: "MOVNTSD", 0xa38: "VMOVNTPS", 0xa42: "VMOVNTPD",
0xa4c: "CVTTPS2PI", 0xa57: "CVTTPD2PI", 0xa62: "CVTTSS2SI", 0xa6d: "CVTTSD2SI",
0xa78: "VCVTTSS2SI", 0xa84: "VCVTTSD2SI", 0xa90: "CVTPS2PI", 0xa9a: "CVTPD2PI",
0xaa4: "CVTSS2SI", 0xaae: "CVTSD2SI", 0xab8: "VCVTSS2SI", 0xac3: "VCVTSD2SI",
0xace: "UCOMISS", 0xad7: "UCOMISD", 0xae0: "VUCOMISS", 0xaea: "VUCOMISD", 0xaf4: "COMISS",
0xafc: "COMISD", 0xb04: "VCOMISS", 0xb0d: "VCOMISD", 0xb16: "MOVMSKPS", 0xb20: "MOVMSKPD",
0xb2a: "VMOVMSKPS", 0xb35: "VMOVMSKPD", 0xb40: "SQRTPS", 0xb48: "SQRTPD", 0xb50: "SQRTSS",
0xb58: "SQRTSD", 0xb60: "VSQRTPS", 0xb69: "VSQRTPD", 0xb72: "VSQRTSS", 0xb7b: "VSQRTSD",
0xb84: "RSQRTPS", 0xb8d: "RSQRTSS", 0xb96: "VRSQRTPS", 0xba0: "VRSQRTSS", 0xbaa: "RCPPS",
0xbb1: "RCPSS", 0xbb8: "VRCPPS", 0xbc0: "VRCPSS", 0xbc8: "ANDPS", 0xbcf: "ANDPD",
0xbd6: "VANDPS", 0xbde: "VANDPD", 0xbe6: "ANDNPS", 0xbee: "ANDNPD", 0xbf6: "VANDNPS",
0xbff: "VANDNPD", 0xc08: "ORPS", 0xc0e: "ORPD", 0xc14: "VORPS", 0xc1b: "VORPD",
0xc22: "XORPS", 0xc29: "XORPD", 0xc30: "VXORPS", 0xc38: "VXORPD", 0xc40: "ADDPS",
0xc47: "ADDPD", 0xc4e: "ADDSS", 0xc55: "ADDSD", 0xc5c: "VADDPS", 0xc64: "VADDPD",
0xc6c: "VADDSS", 0xc74: "VADDSD", 0xc7c: "MULPS", 0xc83: "MULPD", 0xc8a: "MULSS",
0xc91: "MULSD", 0xc98: "VMULPS", 0xca0: "VMULPD", 0xca8: "VMULSS", 0xcb0: "VMULSD",
0xcb8: "CVTPS2PD", 0xcc2: "CVTPD2PS", 0xccc: "CVTSS2SD", 0xcd6: "CVTSD2SS",
0xce0: "VCVTPS2PD", 0xceb: "VCVTPD2PS", 0xcf6: "VCVTSS2SD", 0xd01: "VCVTSD2SS",
0xd0c: "CVTDQ2PS", 0xd16: "CVTPS2DQ", 0xd20: "CVTTPS2DQ", 0xd2b: "VCVTDQ2PS",
0xd36: "VCVTPS2DQ", 0xd41: "VCVTTPS2DQ", 0xd4d: "SUBPS", 0xd54: "SUBPD", 0xd5b: "SUBSS",
0xd62: "SUBSD", 0xd69: "VSUBPS", 0xd71: "VSUBPD", 0xd79: "VSUBSS", 0xd81: "VSUBSD",
0xd89: "MINPS", 0xd90: "MINPD", 0xd97: "MINSS", 0xd9e: "MINSD", 0xda5: "VMINPS",
0xdad: "VMINPD", 0xdb5: "VMINSS", 0xdbd: "VMINSD", 0xdc5: "DIVPS", 0xdcc: "DIVPD",
0xdd3: "DIVSS", 0xdda: "DIVSD", 0xde1: "VDIVPS", 0xde9: "VDIVPD", 0xdf1: "VDIVSS",
0xdf9: "VDIVSD", 0xe01: "MAXPS", 0xe08: "MAXPD", 0xe0f: "MAXSS", 0xe16: "MAXSD",
0xe1d: "VMAXPS", 0xe25: "VMAXPD", 0xe2d: "VMAXSS", 0xe35: "VMAXSD", 0xe3d: "PUNPCKLBW",
0xe48: "VPUNPCKLBW", 0xe54: "PUNPCKLWD", 0xe5f: "VPUNPCKLWD", 0xe6b: "PUNPCKLDQ",
0xe76: "VPUNPCKLDQ", 0xe82: "PACKSSWB", 0xe8c: "VPACKSSWB", 0xe97: "PCMPGTB",
0xea0: "VPCMPGTB", 0xeaa: "PCMPGTW", 0xeb3: "VPCMPGTW", 0xebd: "PCMPGTD", 0xec6: "VPCMPGTD",
0xed0: "PACKUSWB", 0xeda: "VPACKUSWB", 0xee5: "PUNPCKHBW", 0xef0: "VPUNPCKHBW",
0xefc: "PUNPCKHWD", 0xf07: "VPUNPCKHWD", 0xf13: "PUNPCKHDQ", 0xf1e: "VPUNPCKHDQ",
0xf2a: "PACKSSDW", 0xf34: "VPACKSSDW", 0xf3f: "PUNPCKLQDQ", 0xf4b: "VPUNPCKLQDQ",
0xf58: "PUNPCKHQDQ", 0xf64: "VPUNPCKHQDQ", 0xf71: "MOVD", 0xf77: "MOVQ", 0xf7d: "VMOVD",
0xf84: "VMOVQ", 0xf8b: "MOVDQA", 0xf93: "MOVDQU", 0xf9b: "VMOVDQA", 0xfa4: "VMOVDQU",
0xfad: "PSHUFW", 0xfb5: "PSHUFD", 0xfbd: "PSHUFHW", 0xfc6: "PSHUFLW", 0xfcf: "VPSHUFD",
0xfd8: "VPSHUFHW", 0xfe2: "VPSHUFLW", 0xfec: "PCMPEQB", 0xff5: "VPCMPEQB",
0xfff: "PCMPEQW", 0x1008: "VPCMPEQW", 0x1012: "PCMPEQD", 0x101b: "VPCMPEQD",
0x1025: "EMMS", 0x102b: "VZEROUPPER", 0x1037: "VZEROALL", 0x1041: "VMREAD",
0x1049: "EXTRQ", 0x1050: "INSERTQ", 0x1059: "VMWRITE", 0x1062: "CVTPH2PS",
0x106c: "CVTPS2PH", 0x1076: "HADDPD", 0x107e: "HADDPS", 0x1086: "VHADDPD",
0x108f: "VHADDPS", 0x1098: "HSUBPD", 0x10a0: "HSUBPS", 0x10a8: "VHSUBPD", 0x10b1: "VHSUBPS",
0x10ba: "XSAVE", 0x10c1: "XSAVE64", 0x10ca: "LFENCE", 0x10d2: "XRSTOR", 0x10da: "XRSTOR64",
0x10e4: "MFENCE", 0x10ec: "XSAVEOPT", 0x10f6: "XSAVEOPT64", 0x1102: "SFENCE",
0x110a: "CLFLUSH", 0x1113: "POPCNT", 0x111b: "BSF", 0x1120: "TZCNT", 0x1127: "BSR",
0x112c: "LZCNT", 0x1133: "CMPEQPS", 0x113c: "CMPLTPS", 0x1145: "CMPLEPS", 0x114e: "CMPUNORDPS",
0x115a: "CMPNEQPS", 0x1164: "CMPNLTPS", 0x116e: "CMPNLEPS", 0x1178: "CMPORDPS",
0x1182: "CMPEQPD", 0x118b: "CMPLTPD", 0x1194: "CMPLEPD", 0x119d: "CMPUNORDPD",
0x11a9: "CMPNEQPD", 0x11b3: "CMPNLTPD", 0x11bd: "CMPNLEPD", 0x11c7: "CMPORDPD",
0x11d1: "CMPEQSS", 0x11da: "CMPLTSS", 0x11e3: "CMPLESS", 0x11ec: "CMPUNORDSS",
0x11f8: "CMPNEQSS", 0x1202: "CMPNLTSS", 0x120c: "CMPNLESS", 0x1216: "CMPORDSS",
0x1220: "CMPEQSD", 0x1229: "CMPLTSD", 0x1232: "CMPLESD", 0x123b: "CMPUNORDSD",
0x1247: "CMPNEQSD", 0x1251: "CMPNLTSD", 0x125b: "CMPNLESD", 0x1265: "CMPORDSD",
0x126f: "VCMPEQPS", 0x1279: "VCMPLTPS", 0x1283: "VCMPLEPS", 0x128d: "VCMPUNORDPS",
0x129a: "VCMPNEQPS", 0x12a5: "VCMPNLTPS", 0x12b0: "VCMPNLEPS", 0x12bb: "VCMPORDPS",
0x12c6: "VCMPEQ_UQPS", 0x12d3: "VCMPNGEPS", 0x12de: "VCMPNGTPS", 0x12e9: "VCMPFALSEPS",
0x12f6: "VCMPNEQ_OQPS", 0x1304: "VCMPGEPS", 0x130e: "VCMPGTPS", 0x1318: "VCMPTRUEPS",
0x1324: "VCMPEQ_OSPS", 0x1331: "VCMPLT_OQPS", 0x133e: "VCMPLE_OQPS", 0x134b: "VCMPUNORD_SPS",
0x135a: "VCMPNEQ_USPS", 0x1368: "VCMPNLT_UQPS", 0x1376: "VCMPNLE_UQPS", 0x1384: "VCMPORD_SPS",
0x1391: "VCMPEQ_USPS", 0x139e: "VCMPNGE_UQPS", 0x13ac: "VCMPNGT_UQPS", 0x13ba: "VCMPFALSE_OSPS",
0x13ca: "VCMPNEQ_OSPS", 0x13d8: "VCMPGE_OQPS", 0x13e5: "VCMPGT_OQPS", 0x13f2: "VCMPTRUE_USPS",
0x1401: "VCMPEQPD", 0x140b: "VCMPLTPD", 0x1415: "VCMPLEPD", 0x141f: "VCMPUNORDPD",
0x142c: "VCMPNEQPD", 0x1437: "VCMPNLTPD", 0x1442: "VCMPNLEPD", 0x144d: "VCMPORDPD",
0x1458: "VCMPEQ_UQPD", 0x1465: "VCMPNGEPD", 0x1470: "VCMPNGTPD", 0x147b: "VCMPFALSEPD",
0x1488: "VCMPNEQ_OQPD", 0x1496: "VCMPGEPD", 0x14a0: "VCMPGTPD", 0x14aa: "VCMPTRUEPD",
0x14b6: "VCMPEQ_OSPD", 0x14c3: "VCMPLT_OQPD", 0x14d0: "VCMPLE_OQPD", 0x14dd: "VCMPUNORD_SPD",
0x14ec: "VCMPNEQ_USPD", 0x14fa: "VCMPNLT_UQPD", 0x1508: "VCMPNLE_UQPD", 0x1516: "VCMPORD_SPD",
0x1523: "VCMPEQ_USPD", 0x1530: "VCMPNGE_UQPD", 0x153e: "VCMPNGT_UQPD", 0x154c: "VCMPFALSE_OSPD",
0x155c: "VCMPNEQ_OSPD", 0x156a: "VCMPGE_OQPD", 0x1577: "VCMPGT_OQPD", 0x1584: "VCMPTRUE_USPD",
0x1593: "VCMPEQSS", 0x159d: "VCMPLTSS", 0x15a7: "VCMPLESS", 0x15b1: "VCMPUNORDSS",
0x15be: "VCMPNEQSS", 0x15c9: "VCMPNLTSS", 0x15d4: "VCMPNLESS", 0x15df: "VCMPORDSS",
0x15ea: "VCMPEQ_UQSS", 0x15f7: "VCMPNGESS", 0x1602: "VCMPNGTSS", 0x160d: "VCMPFALSESS",
0x161a: "VCMPNEQ_OQSS", 0x1628: "VCMPGESS", 0x1632: "VCMPGTSS", 0x163c: "VCMPTRUESS",
0x1648: "VCMPEQ_OSSS", 0x1655: "VCMPLT_OQSS", 0x1662: "VCMPLE_OQSS", 0x166f: "VCMPUNORD_SSS",
0x167e: "VCMPNEQ_USSS", 0x168c: "VCMPNLT_UQSS", 0x169a: "VCMPNLE_UQSS", 0x16a8: "VCMPORD_SSS",
0x16b5: "VCMPEQ_USSS", 0x16c2: "VCMPNGE_UQSS", 0x16d0: "VCMPNGT_UQSS", 0x16de: "VCMPFALSE_OSSS",
0x16ee: "VCMPNEQ_OSSS", 0x16fc: "VCMPGE_OQSS", 0x1709: "VCMPGT_OQSS", 0x1716: "VCMPTRUE_USSS",
0x1725: "VCMPEQSD", 0x172f: "VCMPLTSD", 0x1739: "VCMPLESD", 0x1743: "VCMPUNORDSD",
0x1750: "VCMPNEQSD", 0x175b: "VCMPNLTSD", 0x1766: "VCMPNLESD", 0x1771: "VCMPORDSD",
0x177c: "VCMPEQ_UQSD", 0x1789: "VCMPNGESD", 0x1794: "VCMPNGTSD", 0x179f: "VCMPFALSESD",
0x17ac: "VCMPNEQ_OQSD", 0x17ba: "VCMPGESD", 0x17c4: "VCMPGTSD", 0x17ce: "VCMPTRUESD",
0x17da: "VCMPEQ_OSSD", 0x17e7: "VCMPLT_OQSD", 0x17f4: "VCMPLE_OQSD", 0x1801: "VCMPUNORD_SSD",
0x1810: "VCMPNEQ_USSD", 0x181e: "VCMPNLT_UQSD", 0x182c: "VCMPNLE_UQSD", 0x183a: "VCMPORD_SSD",
0x1847: "VCMPEQ_USSD", 0x1854: "VCMPNGE_UQSD", 0x1862: "VCMPNGT_UQSD", 0x1870: "VCMPFALSE_OSSD",
0x1880: "VCMPNEQ_OSSD", 0x188e: "VCMPGE_OQSD", 0x189b: "VCMPGT_OQSD", 0x18a8: "VCMPTRUE_USSD",
0x18b7: "PINSRW", 0x18bf: "VPINSRW", 0x18c8: "PEXTRW", 0x18d0: "VPEXTRW", 0x18d9: "SHUFPS",
0x18e1: "SHUFPD", 0x18e9: "VSHUFPS", 0x18f2: "VSHUFPD", 0x18fb: "CMPXCHG8B",
0x1906: "CMPXCHG16B", 0x1912: "VMPTRST", 0x191b: "ADDSUBPD", 0x1925: "ADDSUBPS",
0x192f: "VADDSUBPD", 0x193a: "VADDSUBPS", 0x1945: "PSRLW", 0x194c: "VPSRLW",
0x1954: "PSRLD", 0x195b: "VPSRLD", 0x1963: "PSRLQ", 0x196a: "VPSRLQ", 0x1972: "PADDQ",
0x1979: "VPADDQ", 0x1981: "PMULLW", 0x1989: "VPMULLW", 0x1992: "MOVQ2DQ", 0x199b: "MOVDQ2Q",
0x19a4: "PMOVMSKB", 0x19ae: "VPMOVMSKB", 0x19b9: "PSUBUSB", 0x19c2: "VPSUBUSB",
0x19cc: "PSUBUSW", 0x19d5: "VPSUBUSW", 0x19df: "PMINUB", 0x19e7: "VPMINUB",
0x19f0: "PAND", 0x19f6: "VPAND", 0x19fd: "PADDUSB", 0x1a06: "VPADDUSW", 0x1a10: "PADDUSW",
0x1a19: "PMAXUB", 0x1a21: "VPMAXUB", 0x1a2a: "PANDN", 0x1a31: "VPANDN", 0x1a39: "PAVGB",
0x1a40: "VPAVGB", 0x1a48: "PSRAW", 0x1a4f: "VPSRAW", 0x1a57: "PSRAD", 0x1a5e: "VPSRAD",
0x1a66: "PAVGW", 0x1a6d: "VPAVGW", 0x1a75: "PMULHUW", 0x1a7e: "VPMULHUW", 0x1a88: "PMULHW",
0x1a90: "VPMULHW", 0x1a99: "CVTTPD2DQ", 0x1aa4: "CVTDQ2PD", 0x1aae: "CVTPD2DQ",
0x1ab8: "VCVTTPD2DQ", 0x1ac4: "VCVTDQ2PD", 0x1acf: "VCVTPD2DQ", 0x1ada: "MOVNTQ",
0x1ae2: "MOVNTDQ", 0x1aeb: "VMOVNTDQ", 0x1af5: "PSUBSB", 0x1afd: "VPSUBSB",
0x1b06: "PSUBSW", 0x1b0e: "VPSUBSW", 0x1b17: "PMINSW", 0x1b1f: "VPMINSW", 0x1b28: "POR",
0x1b2d: "VPOR", 0x1b33: "PADDSB", 0x1b3b: "VPADDSB", 0x1b44: "PADDSW", 0x1b4c: "VPADDSW",
0x1b55: "PMAXSW", 0x1b5d: "VPMAXSW", 0x1b66: "PXOR", 0x1b6c: "VPXOR", 0x1b73: "LDDQU",
0x1b7a: "VLDDQU", 0x1b82: "PSLLW", 0x1b89: "VPSLLW", 0x1b91: "PSLLD", 0x1b98: "VPSLLD",
0x1ba0: "PSLLQ", 0x1ba7: "VPSLLQ", 0x1baf: "PMULUDQ", 0x1bb8: "VPMULUDQ", 0x1bc2: "PMADDWD",
0x1bcb: "VPMADDWD", 0x1bd5: "PSADBW", 0x1bdd: "VPSADBW", 0x1be6: "MASKMOVQ",
0x1bf0: "MASKMOVDQU", 0x1bfc: "VMASKMOVDQU", 0x1c09: "PSUBB", 0x1c10: "VPSUBB",
0x1c18: "PSUBW", 0x1c1f: "VPSUBW", 0x1c27: "PSUBD", 0x1c2e: "VPSUBD", 0x1c36: "PSUBQ",
0x1c3d: "VPSUBQ", 0x1c45: "PADDB", 0x1c4c: "VPADDB", 0x1c54: "PADDW", 0x1c5b: "VPADDW",
0x1c63: "PADDD", 0x1c6a: "VPADDD", 0x1c72: "FNSTENV", 0x1c7b: "FSTENV", 0x1c83: "FNSTCW",
0x1c8b: "FSTCW", 0x1c92: "FNCLEX", 0x1c9a: "FCLEX", 0x1ca1: "FNINIT", 0x1ca9: "FINIT",
0x1cb0: "FNSAVE", 0x1cb8: "FSAVE", 0x1cbf: "FNSTSW", 0x1cc7: "FSTSW", 0x1cce: "PSHUFB",
0x1cd6: "VPSHUFB", 0x1cdf: "PHADDW", 0x1ce7: "VPHADDW", 0x1cf0: "PHADDD", 0x1cf8: "VPHADDD",
0x1d01: "PHADDSW", 0x1d0a: "VPHADDSW", 0x1d14: "PMADDUBSW", 0x1d1f: "VPMADDUBSW",
0x1d2b: "PHSUBW", 0x1d33: "VPHSUBW", 0x1d3c: "PHSUBD", 0x1d44: "VPHSUBD", 0x1d4d: "PHSUBSW",
0x1d56: "VPHSUBSW", 0x1d60: "PSIGNB", 0x1d68: "VPSIGNB", 0x1d71: "PSIGNW",
0x1d79: "VPSIGNW", 0x1d82: "PSIGND", 0x1d8a: "VPSIGND", 0x1d93: "PMULHRSW",
0x1d9d: "VPMULHRSW", 0x1da8: "VPERMILPS", 0x1db3: "VPERMILPD", 0x1dbe: "VTESTPS",
0x1dc7: "VTESTPD", 0x1dd0: "PBLENDVB", 0x1dda: "BLENDVPS", 0x1de4: "BLENDVPD",
0x1dee: "PTEST", 0x1df5: "VPTEST", 0x1dfd: "VBROADCASTSS", 0x1e0b: "VBROADCASTSD",
0x1e19: "VBROADCASTF128", 0x1e29: "PABSB", 0x1e30: "VPABSB", 0x1e38: "PABSW",
0x1e3f: "VPABSW", 0x1e47: "PABSD", 0x1e4e: "VPABSD", 0x1e56: "PMOVSXBW", 0x1e60: "VPMOVSXBW",
0x1e6b: "PMOVSXBD", 0x1e75: "VPMOVSXBD", 0x1e80: "PMOVSXBQ", 0x1e8a: "VPMOVSXBQ",
0x1e95: "PMOVSXWD", 0x1e9f: "VPMOVSXWD", 0x1eaa: "PMOVSXWQ", 0x1eb4: "VPMOVSXWQ",
0x1ebf: "PMOVSXDQ", 0x1ec9: "VPMOVSXDQ", 0x1ed4: "PMULDQ", 0x1edc: "VPMULDQ",
0x1ee5: "PCMPEQQ", 0x1eee: "VPCMPEQQ", 0x1ef8: "MOVNTDQA", 0x1f02: "VMOVNTDQA",
0x1f0d: "PACKUSDW", 0x1f17: "VPACKUSDW", 0x1f22: "VMASKMOVPS", 0x1f2e: "VMASKMOVPD",
0x1f3a: "PMOVZXBW", 0x1f44: "VPMOVZXBW", 0x1f4f: "PMOVZXBD", 0x1f59: "VPMOVZXBD",
0x1f64: "PMOVZXBQ", 0x1f6e: "VPMOVZXBQ", 0x1f79: "PMOVZXWD", 0x1f83: "VPMOVZXWD",
0x1f8e: "PMOVZXWQ", 0x1f98: "VPMOVZXWQ", 0x1fa3: "PMOVZXDQ", 0x1fad: "VPMOVZXDQ",
0x1fb8: "PCMPGTQ", 0x1fc1: "VPCMPGTQ", 0x1fcb: "PMINSB", 0x1fd3: "VPMINSB",
0x1fdc: "PMINSD", 0x1fe4: "VPMINSD", 0x1fed: "PMINUW", 0x1ff5: "VPMINUW", 0x1ffe: "PMINUD",
0x2006: "VPMINUD", 0x200f: "PMAXSB", 0x2017: "VPMAXSB", 0x2020: "PMAXSD", 0x2028: "VPMAXSD",
0x2031: "PMAXUW", 0x2039: "VPMAXUW", 0x2042: "PMAXUD", 0x204a: "VPMAXUD", 0x2053: "PMULLD",
0x205b: "VPMULLD", 0x2064: "PHMINPOSUW", 0x2070: "VPHMINPOSUW", 0x207d: "INVEPT",
0x2085: "INVVPID", 0x208e: "INVPCID", 0x2097: "VFMADDSUB132PS", 0x20a7: "VFMADDSUB132PD",
0x20b7: "VFMSUBADD132PS", 0x20c7: "VFMSUBADD132PD", 0x20d7: "VFMADD132PS",
0x20e4: "VFMADD132PD", 0x20f1: "VFMADD132SS", 0x20fe: "VFMADD132SD", 0x210b: "VFMSUB132PS",
0x2118: "VFMSUB132PD", 0x2125: "VFMSUB132SS", 0x2132: "VFMSUB132SD", 0x213f: "VFNMADD132PS",
0x214d: "VFNMADD132PD", 0x215b: "VFNMADD132SS", 0x2169: "VFNMADD132SD", 0x2177: "VFNMSUB132PS",
0x2185: "VFNMSUB132PD", 0x2193: "VFNMSUB132SS", 0x21a1: "VFNMSUB132SD", 0x21af: "VFMADDSUB213PS",
0x21bf: "VFMADDSUB213PD", 0x21cf: "VFMSUBADD213PS", 0x21df: "VFMSUBADD213PD",
0x21ef: "VFMADD213PS", 0x21fc: "VFMADD213PD", 0x2209: "VFMADD213SS", 0x2216: "VFMADD213SD",
0x2223: "VFMSUB213PS", 0x2230: "VFMSUB213PD", 0x223d: "VFMSUB213SS", 0x224a: "VFMSUB213SD",
0x2257: "VFNMADD213PS", 0x2265: "VFNMADD213PD", 0x2273: "VFNMADD213SS", 0x2281: "VFNMADD213SD",
0x228f: "VFNMSUB213PS", 0x229d: "VFNMSUB213PD", 0x22ab: "VFNMSUB213SS", 0x22b9: "VFNMSUB213SD",
0x22c7: "VFMADDSUB231PS", 0x22d7: "VFMADDSUB231PD", 0x22e7: "VFMSUBADD231PS",
0x22f7: "VFMSUBADD231PD", 0x2307: "VFMADD231PS", 0x2314: "VFMADD231PD", 0x2321: "VFMADD231SS",
0x232e: "VFMADD231SD", 0x233b: "VFMSUB231PS", 0x2348: "VFMSUB231PD", 0x2355: "VFMSUB231SS",
0x2362: "VFMSUB231SD", 0x236f: "VFNMADD231PS", 0x237d: "VFNMADD231PD", 0x238b: "VFNMADD231SS",
0x2399: "VFNMADD231SD", 0x23a7: "VFNMSUB231PS", 0x23b5: "VFNMSUB231PD", 0x23c3: "VFNMSUB231SS",
0x23d1: "VFNMSUB231SD", 0x23df: "AESIMC", 0x23e7: "VAESIMC", 0x23f0: "AESENC",
0x23f8: "VAESENC", 0x2401: "AESENCLAST", 0x240d: "VAESENCLAST", 0x241a: "AESDEC",
0x2422: "VAESDEC", 0x242b: "AESDECLAST", 0x2437: "VAESDECLAST", 0x2444: "MOVBE",
0x244b: "CRC32", 0x2452: "VPERM2F128", 0x245e: "ROUNDPS", 0x2467: "VROUNDPS",
0x2471: "ROUNDPD", 0x247a: "VROUNDPD", 0x2484: "ROUNDSS", 0x248d: "VROUNDSS",
0x2497: "ROUNDSD", 0x24a0: "VROUNDSD", 0x24aa: "BLENDPS", 0x24b3: "VBLENDPS",
0x24bd: "BLENDPD", 0x24c6: "VBLENDPD", 0x24d0: "PBLENDW", 0x24d9: "VPBLENDW",
0x24e3: "PALIGNR", 0x24ec: "VPALIGNR", 0x24f6: "PEXTRB", 0x24fe: "VPEXTRB",
0x2507: "PEXTRD", 0x250f: "PEXTRQ", 0x2517: "VPEXTRD", 0x2520: "VPEXTRQ", 0x2529: "EXTRACTPS",
0x2534: "VEXTRACTPS", 0x2540: "VINSERTF128", 0x254d: "VEXTRACTF128", 0x255b: "PINSRB",
0x2563: "VPINSRB", 0x256c: "INSERTPS", 0x2576: "VINSERTPS", 0x2581: "PINSRD",
0x2589: "PINSRQ", 0x2591: "VPINSRD", 0x259a: "VPINSRQ", 0x25a3: "DPPS", 0x25a9: "VDPPS",
0x25b0: "DPPD", 0x25b6: "VDPPD", 0x25bd: "MPSADBW", 0x25c6: "VMPSADBW", 0x25d0: "PCLMULQDQ",
0x25db: "VPCLMULQDQ", 0x25e7: "VBLENDVPS", 0x25f2: "VBLENDVPD", 0x25fd: "VPBLENDVB",
0x2608: "PCMPESTRM", 0x2613: "VPCMPESTRM", 0x261f: "PCMPESTRI", 0x262a: "VPCMPESTRI",
0x2636: "PCMPISTRM", 0x2641: "VPCMPISTRM", 0x264d: "PCMPISTRI", 0x2658: "VPCMPISTRI",
0x2664: "AESKEYGENASSIST", 0x2675: "VAESKEYGENASSIST", 0x2687: "PSRLDQ", 0x268f: "VPSRLDQ",
0x2698: "PSLLDQ", 0x26a0: "VPSLLDQ", 0x26a9: "FXSAVE", 0x26b1: "FXSAVE64",
0x26bb: "RDFSBASE", 0x26c5: "FXRSTOR", 0x26ce: "FXRSTOR64", 0x26d9: "RDGSBASE",
0x26e3: "LDMXCSR", 0x26ec: "WRFSBASE", 0x26f6: "VLDMXCSR", 0x2700: "STMXCSR",
0x2709: "WRGSBASE", 0x2713: "VSTMXCSR", 0x271d: "VMPTRLD", 0x2726: "VMCLEAR",
0x272f: "VMXON", 0x2736: "MOVSXD", 0x273e: "PAUSE", 0x2745: "WAIT", 0x274b: "RDRAND",
0x2753: "_3DNOW"
}

Registers = ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15",
"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D",
"AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W",
"AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH", "R8B", "R9B", "R10B", "R11B", "R12B", "R13B", "R14B", "R15B",
"SPL", "BPL", "SIL", "DIL",
"ES", "CS", "SS", "DS", "FS", "GS",
"RIP",
"ST0", "ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7",
"MM0", "MM1", "MM2", "MM3", "MM4", "MM5", "MM6", "MM7",
"XMM0", "XMM1", "XMM2", "XMM3", "XMM4", "XMM5", "XMM6", "XMM7", "XMM8", "XMM9", "XMM10", "XMM11", "XMM12", "XMM13", "XMM14", "XMM15",
"YMM0", "YMM1", "YMM2", "YMM3", "YMM4", "YMM5", "YMM6", "YMM7", "YMM8", "YMM9", "YMM10", "YMM11", "YMM12", "YMM13", "YMM14", "YMM15",
"CR0", "", "CR2", "CR3", "CR4", "", "", "", "CR8",
"DR0", "DR1", "DR2", "DR3", "", "", "DR6", "DR7"]

RegisterMasks = {
1: "RM_AX", # /* AL, AH, AX, EAX, RAX */
2: "RM_CX", # /* CL, CH, CX, ECX, RCX */
4: "RM_DX", # /* DL, DH, DX, EDX, RDX */
8: "RM_BX", # /* BL, BH, BX, EBX, RBX */
0x10: "RM_SP", # /* SPL, SP, ESP, RSP */
0x20: "RM_BP", # /* BPL, BP, EBP, RBP */
0x40: "RM_SI", # /* SIL, SI, ESI, RSI */
0x80: "RM_DI", # /* DIL, DI, EDI, RDI */
0x100: "RM_FPU", # /* ST(0) - ST(7) */
0x200: "RM_MMX", # /* MM0 - MM7 */
0x400: "RM_SSE", # /* XMM0 - XMM15 */
0x800: "RM_AVX", # /* YMM0 - YMM15 */
0x1000: "RM_CR", # /* CR0, CR2, CR3, CR4, CR8 */
0x2000: "RM_DR", # /* DR0, DR1, DR2, DR3, DR6, DR7 */
0x4000: "RM_R8", # /* R8B, R8W, R8D, R8 */
0x8000: "RM_R9", # /* R9B, R9W, R9D, R9 */
0x10000: "RM_R10", # /* R10B, R10W, R10D, R10 */
0x20000: "RM_R11", # /* R11B, R11W, R11D, R11 */
0x40000: "RM_R12", # /* R12B, R12W, R12D, R12 */
0x80000: "RM_R13", # /* R13B, R13W, R13D, R13 */
0x100000: "RM_R14", # /* R14B, R14W, R14D, R14 */
0x200000: "RM_R15", # /* R15B, R15W, R15D, R15 */
0x400000: "RM_SEG", # /* CS, SS, DS, ES, FS, GS */
}
